Latest developments at Leaning Technologies: August edition

 24.08.2020 -  Carlo Piovesan

July and August have been intense months for our technical team, with work going on the development of Cheerp, CheerpJ and CheerpX.

Cheerp

On the Cheerp side, Yuri kept working to avoid the lowering of 64 bit integer math for the JavaScript backend of Cheerp, allowing even more performance gains for the generated WebAssembly modules (already the first phase showed a 1.8x performance boost, on multiplication- heavy code benchmarks). He is currently working on a complex program-wide transformation, that would allow even more abuse of 64bit integer math for performance gains.

The latest technical update on his work on i64 can be found on our Medium blog . .

On my (Carlo) side, I came back to work after a few weeks off, and am now full on the expansion of Cheerp’s JSExport: a unique feature of Cheerp that allows expressive and powerful integration between compiled code and hand-coded JavaScript. I wrote an introductory piece to JSExport recently on our technical blog.

All these improvements will be packaged for Cheerp’s users in with the upcoming release of Cheerp 2.6 in Q4.

Other work we did could also be found on Cheerp’s Github repo commits list .

CheerpX

Alessandro, our CTO, just published a new article on the Extreme WebAssembly series (Part 1: Extreme WebAssembly 1, pushing browsers to their absolute limits + Part 2: Extreme WebAssembly 2, the sad state of Wasm tail calls ). These articles cover both theory (mainly about tail calls, a post-MVP WebAssembly feature) and practice (a python demo AND a x86 demo) of CheerpX, our x86-to-Wasm VM.

Alessandro also fixed a very peculiar bug in the CheerpX interpreter that strangely enough just shifted some lines of text around (the problem, as with all the good ones, was many abstraction layers underneath), found some bounds on a previous commit could have been relaxed, allowing to skip some expensive run-time checks (hey), and generally kept grinding on CheerpX capabilities and performances.

After internal discussions, we also recently came out with a possible proposal for the WebAssembly standard: Branch Hinting (https://github.com/WebAssembly/design/issues/1363).

CheerpJ

In Leeds, William is secretly working on improving all our CheerpJ’s demos, both on how they are integrated on our new shiny website and improving the general usability. I am especially looking forward to the revamped Java fiddle . Stay tuned.

And the best news for the end: our new hire, Lorenzo, just joined the compiler madness.

He is going back to school (coincidentally school year also just started in Amsterdam): he will get up to speed tackling some detail-oriented CheerpJ bug at first and meanwhile getting a taste of the bigger picture of our Java to HTML5 solution.

Good luck to Lorenzo and welcome to the team!