Not a paper alas, but 6guts.wordpress.com/2017/08/… and 6guts.wordpress.com/2017/09/… are a write-up of where I ended up in MoarVM (various details changed since but the overall approach is about the same today; the speculated idea at the end of the second post has since been implemented).
Very sad news. It was Chris who did most to encourage me to talk about MoarVM at VMIL last year; he was generous with his time, and full of advice and reassurance as I prepared to present MoarVM for the first time in a more academic setting.
I'm heartbroken to share this news about our dear friend and colleague, @ChrisGSeaton.
ALT Screenshot of a message from Shopify's Ruby and Rails Infrastructure team that includes:
Our dear friend and colleague Chris Seaton passed away last Saturday, December 3rd. Chris was an important part of our team at Shopify, and a notable figure in the Ruby community, and we are deeply saddened by our collective loss.
Chris accomplished much in his life. He completed a Ph.D., rose to be Squadron Leader in the British Army Reserve, and started a young family. Chris began the TruffleRuby project in 2013 as an intern at Oracle Labs and stewarded it into a full-fledged Ruby implementation. Chris advanced the state of the art in dynamic language optimization, co-authoring 16 publications, contributing to countless others, and establishing both the Ruby Bibliography archive of Ruby research publications and the Ruby Compiler Survey. For his efforts, he was a Ruby Prize finalist in 2016.
Chris’s papers, essays, and code contributions are currently archived at chrisseaton.com.
At which point maybe that's a working MoarVM build already. No JIT, but at least the other parts of specialization would work still. Then need to work out how it gets at the MoarVM bytecode to run. Some work there.
In my work on MoarVM, I realized that the runtime doesn't need to understand the details of high-level language types, objects, nor dispatch. Those can be implemented in code running atop of the VM.
맞네. 이분 말씀처럼 이전에는 Perl 6로 알려졌지만 Raku로 이름이 바뀌었으니 Raku로 이름을 불러야 하겠다. 적어도 Perl 6(현재 Raku)라고 하던가. 덕분에 Rakudo, MoarVM, Parrot, Pugs 같은 것도 찾아보게 되었다.
x.com/liztormato/status/1576…
I've put a GH issue on App::MoarVM::HeapAnalyzer for not understanding the snapshot format and one on rakudo for saying the thing that is not true in the --help about the filenames.
in the rakudo-provided module Telemetry you will find a sub named "snap" that lets you make heap snapshots (with :heap) whenever you like, which moarperf or App::MoarVM::HeapAnalyzer or i think also Comma will let you look deeply into. This one has boatloads of info, not too obvs
#RakuLang
I have Rakudo version 2019.11 built on MoarVM version 2019.11 implementing Perl 6.d.
Why this line throwing error?
say Date.new('2015-11-24').last-date-in-month;
No such method 'last-date-in-month' for invocant of type 'Date'
wasm
MoarVM
8086tiny
literally any TIL has a VM of sorts
Parrot
CLR
There's a brainfuck interpreter out there and BF has been made a target language for a few compilers on a lark...
Rakudo, NQP, and MoarVM are released under the Artistic License. They are a work of many people, not just me. There is no mechanism by which any entity located in Russia could be forbidden to use them.
I had a couple of slides about it in my VMIL talk reflecting on a decade of MoarVM; see slides 39/40 in jnthn.net/papers/2021-vmil-m… if actually curious. :-)
The latest release of #rakulang IDE Comma Complete can read MoarVM heap snapshots (only snapshot format version 3, which requires a MoarVM built with libzstd), provide some graphs of change over time, and has a snapshot browser. More to come in this area in future releases.
A key point is that the 'raku' compiler itself is a "compiled" #rakulang program, whether MoarVM. JVM or JS, and the 'raku' executable simply arranges for that compiled code to be run on the appropriate backend,
#rakulang is always compiled to whatever backend is being targeted (MoarVM, JVM, JS) prior to the results of that compilation being executed on that backend. In the case of a "script" the result of the compilation is discarded after the execution completes, but libraries remain.