<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, Sep 12, 2017 at 10:10 PM austin aigbe <<a href="mailto:eshikafe@gmail.com">eshikafe@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>Any consideration for implementing the Erlang VM in Rust?</div><div><br></div></div></blockquote></div><div class="gmail_quote"><br></div><div class="gmail_quote">I think the problem is roughly the same as with any other language: A lot of good effort has been sunk into the current VM in C and this makes a switch harder. Rust has ABI compatibility with C in some ways, which makes interoperability simpler, so one could imagine taking some of the more security-oriented parts of the VM and rewriting those in Rust or some other language of the more restrictive kind.</div><div class="gmail_quote"><br></div><div class="gmail_quote">If you want to rewrite all of it, a good approach is to start by making changes to the current VM which makes it smaller:</div><div class="gmail_quote"><br></div><div class="gmail_quote">* Move more work out into NIFs. Reimplement those in Rust</div><div class="gmail_quote">* Coalesce more work on Dirty Schedulers</div><div class="gmail_quote">* Implement Native Processes, so you can start running Rust-native-processes</div><div class="gmail_quote">* Write an AOT or JIT compiler pass. Move ETS into pure Erlang. Move a lot of the BIF optimized functions into pure Erlang.</div><div class="gmail_quote"><br></div><div class="gmail_quote">A smaller core is way easier to replace.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Personally, I'd just throw some more time after concurrent OCaml, and then write a translator from Erlang to OCaml :P</div><div class="gmail_quote"><br></div></div>