Gave it a try a couple of years ago and it had issues with larger JavaScript bundles (passing a lot of objects on the stack requiring recompiling the entire process with an increased stack size or modifying the threads on which it runs to accommodate - even with that, reasonably deep callstacks would overflow).
I also thought the deterministic GC would mean lower memory usage but it's actually worse than V8 (which has all the intermediate bytecode, and the JIT-ed machine code as well in memory, plus the dangling objects).
Still impressed that someone could write an EcmaScript-compliant engine from scratch, but looks more like a proof of concept (the fact it didn't get any updates in a year doesn't help either).
Well, roughly-HTML, almost-CSS and fairly-but-not-completely-JS. Historically, TIScript was the biggest problem for web compatibility, being very web-incompatible, but even the QuickJS version is already incompatible with the web in a couple of ways. And its fork of CSS doesn’t implement things like Flex and Grid, but rather something proprietary with similar scope, some advantages, some disadvantages, but mostly just different which I would say is generally a bad thing.
which is fine. The goal is to make *cross-platform* Desktop GUIs that is also light weight. I think Sciter can define a subset of html|css|js and provide some syntax checker(e.g. this feature is not supported). For Desktop GUIs we don't need all those web APIs etc. Sciter is super light weight comparing to Electron and Tauri.
You very regularly would like cross-platform desktop apps to work on the web as well, or at least to be able to share significant chunks of code. Given that, the fact that Sciter isn’t actually HTML/CSS/JS but rather a superset of a subset of each becomes very notable: you certainly won’t get total code sharing, and you’ll probably even struggle to get significant UI sharing.
I think sciter is not electronjs per se, it does not do web rendering, instead it uses html/css/js for Desktop(no internet) development, to replace say Qt-based GUIs.
As I recall, the only major advantage of QuickJS is that it can run on machines where v8 couldn't dream of fitting.
Data sizes almost always exceed the size of the code itself. I wouldn't consider it surprising that the IR would fade away into the noise.
V8 can also make tradeoffs that QuickJS probably cannot. For example, v8 internally represents strings as 1-byte latin-1 characters rather than 2-byte UCS-2. This halves memory consumption, but adds a lot of code to the implementation that a microcontroller running QuickJS may not have room for.
It’s really interesting to hear your performance issues with QuickJS there.
I found an opposite sort of performance profile (few small values on the stack, shallow stack size) with lots of calls back and forth between C and JS worked really well. Or, a lot of situations outdid V8 and ChakraCore for me (with JIT disabled). I didn’t dig into the exact reasons why though.
It's possibly related to the size of the JavaScript bundle being used. In my case it was 4Mb of minified JavaScript being evaluated (React Native with a bunch of dependencies).
I also thought the deterministic GC would mean lower memory usage but it's actually worse than V8 (which has all the intermediate bytecode, and the JIT-ed machine code as well in memory, plus the dangling objects).
Still impressed that someone could write an EcmaScript-compliant engine from scratch, but looks more like a proof of concept (the fact it didn't get any updates in a year doesn't help either).