mbrezu / Shovel

Shovel is a bytecode virtual machine that is embeddable, secure and interruptible.
BSD 2-Clause "Simplified" License
77 stars 5 forks source link

Did this project go anywhere after 2014? #9

Open hanoixan opened 3 years ago

hanoixan commented 3 years ago

Miron, just wondering what happened with this project? I've been looking for a language and compiler that has similar features. The closest behavior I could find was Lua+Pluto/Eris, or Java+Rhino+Javascript.

Did you ever do any performance tests on this compared to other bytecode VMs? I've written a C# expression VM that works in a similar fashion (bytecode lookups calling Actions), and I'd expect compiled C# to be about 10-20x faster than the VM.

For what it's worth, I think your take on a simplified Javascript is very clean--nice work.

mbrezu commented 3 years ago

Hi there,

no, not much happening here :-)

I think Shovel is pretty slow, it was always meant as 'interruptible glue', so if anything needed speed, it ended up as C# code.

I guess Shovel is only useful if A) you need something that runs on .NET (might need a bit of resurrecting for .NET core) AND B) you're not exactly happy with writing WF code (I think MS dropped WF for .NET core, there's an UiPath version IIRC).

One of the bigger issues with the Shovel VM is that closure implementation is a very naive (and quick to implement) environment-based solution (a la SICP/PAIP) - which causes a lot of allocation even when you don't need to close over stuff. I remember seeing a lot of time spent in GC :-) and big differences in performance between Mono and .NET due to the fact that the .NET GC was so much faster.