6 ms·
Hi! Author here. I wrote more about the motivation behind Lunatic if you are interested, check it out: https://kolobara.com/lunatic/index.html#motivation https:
by bkolobara 6y ago
Hi! Author here. I wrote more about the motivation behind Lunatic if you are interested, check it out: https://kolobara.com/lunatic/index.html#motivation https://kolobara.com/lunatic/index.html#motivation
- uglycoyote 6y agoThanks, because from the github page I had no idea what "Actor" meant, though I was interested to know more. Reading the code sample did not give me any better idea what was meant by the word "Actor" It would be great if every github readme had a "motivation" section at the top. Why not link it there?
- bkolobara 6y agoThanks for the suggestion! I have added the link to the Readme.
- uglycoyote 6y agoThat's great. I also got interested to read about Erlang and the original Actor pattern there. In your motivation doc I clicked the Erlang/OTP link to the main Erlang page, but I kind of had the same problem there, of having a hard time finding some light reading introducing the motivation of Erlang. Their documentation section doesn't immediately yield anything that looks like quick reading to understand the motivation or design philosophy. I could not figure out how to navigate https://erlang.org/doc/ https://erlang.org/doc/ to find introductory material. Do you have any pointers to good reading that would introduce the Actor pattern in Erlang?
- scns 6y agohttps://en.wikipedia.org/wiki/Actor_model?wprov=sfla1 https://en.wikipedia.org/wiki/Actor_model?wprov=sfla1
- pdimitar 6y agoYou might be better served if you read Elixir's official tutorials. They explain it (although I'm not sure which of them focused on that aspect; but they are only a few so you should be able to find the needed material easily).
- octopoc 6y agoNice work! How do you pass complex objects between actors in Lunatic? Do you have to pass a byte array, or is there a more sophisticated approach where you don't have to serialize and deserialize each message?
- bkolobara 6y agoThanks! Currently the heaps and stacks of each actor are completely separate and it's impossible to pass anything without copying it. In the future I would like to add an option to share buffers for efficiency reasons.
- nahuel0x 6y agojust a question: how much memory a wasm process in lunatic consumes as minimum?
- bkolobara 6y agoYou need 1 page (4 kb) for the stack at minimum.
- elcritch 6y agoFantastic project! The ability to transform serial compiled languages to run atop an async engine is great. The examples, though, remind me more of Go routines and CSP rather than actors. They appear to be passing channels around to communicate which is very similar to but different than a mailbox open to any other process. Is that just a temporary approach? One of the best aspects of BEAM is OTP and supervision trees (linking processes) alongside flexible process naming. I'm not sure how channels would mesh with that. Granted this looks early stage and maybe you're planning on building mailboxes or process links or similar. Also, you might consider providing support for a binary message passing format like Message Pack or CBOR. Excited to see where Lunatic progresses!