Nqp-js update.

nqp-js/rakudo.js is now targeting ECMAScript 6

Scott McWhirter helped a ton with the transitions (as well as with some general cleanup).
Most of the modern browsers now support ECMAScript 6 so I feel it makes sense to target it.
When targeting old ones that don't we can use polyfills and compilers from ECMAScript 6 to 5.

After doing most of the obvious and promising nqp-js optimizations I'm focusing again on getting rakudo.js to work.
Before that I'm cleaning up the nqp-js code base to remove hacks that might shoot us in the back while working on rakudo.js

I removed a bunch of workarounds that weren't needed anymore as well as a bunch of accumulated technical debt.
In the past I was attempted to store native js lexicals for storing lexicals as much as possible even when it meant introducing ugly hack.
It turns out they can't be used in a lot of places anyway because closure in nqp need to be serializable.
That means we might as well pass around contexts directly when necessary and get rid of a whole bunch of hacks.

For cleanup the main remaining is to stop deserializing closures by evaling code at deserialization time as that hinders debugging.
Hopefully one it's done a few mysteries in the output of the profiler will be solved and we can optimize nqp-js some more.
I'll also plan package nqp-js-compiled-to-js in a way that allows it to be installed by npm which should allow a saner rakudo.js build process.

Leave a comment

About Paweł Murias

user-pic This is my JavaScript backend for Rakudo/NQP blog.