[Discussion] Erlang-style processes in the RTS
I would like to open this ticket in order to concentrate all the discussions I had with several people (and the ones other people had without me) regarding some ideas that the Erlang RTS (ERTS) has implemented through its virtual machine, BEAM:
An Erlang process basically works like an OS process. Each process has its own memory (a mailbox, a heap and a stack) and a process control block (PCB) with information about the process.
All Erlang code execution is done within the context of a process. One Erlang node can have many processes, which can communicate through message passing and signals. Erlang processes can also communicate with processes on other Erlang nodes as long as the nodes are connected.
For reference, please read this section of The BEAM Book: Part I, Chapter 3: Processes
One interesting advantage that we could have from implementing such processes in the RTS is that they all have their own heap, which means that GC passes can be localised on a process, can be done on multiple processes at once, but don't have to handle the entirety of the processes at once.
There are many other interesting things that could benefit us, and I'd love to see them written here.