Support for process aliases and erlang:monitor/3

Open
#1,960 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
erlang
Domain
backend

Research direction

Read the Erlang documentation linked for process aliases, unalias/1, and monitor/3, then inspect AtomVM’s process and monitor implementation to identify the relevant entry points. Determine what support is needed for aliases and monitor/3, and compare the behavior with the OTP gen:call and Elixir Task.async use cases cited in the issue. Done means AtomVM supports the described semantics; the issue does not name specific files or tests.

Written by the indexing model from the issue text.

Description

In short, process aliases make it possible to create a reference that can be used to send messages to a process. The important feature is that when alias is removed, the messages sent via it no longer reach the aliased process. Aliases are used by erlang:monitor/3, which creates a monitor and alias at the same time, and this is used in two important places:

  • OTP's gen:call, to ignore replies after a call timeouts
  • Elixir's Task.async, for Task.ignore and possibly more

Thus, for us it's quite important that AtomVM supports it. As always, happy to contribute and looking forward to your guidance ;)

Dominant language
Erlang
Stars
2.3k
Forks
171
Avg merge
4d 11h
Merged PRs (30d)
20

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from atomvm/AtomVM

All issues in atomvm/AtomVM

Similar issues

More Backend & API Design issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.