News for hackers. Stuff that matters.
Re:Firefox’s new streaming and tiering compiler by sjrd on Wednesday January 17, 2018 @12:10PM (#16169629)
Nice article.

Although, as always with articles on WebAssembly, it keeps repeating that wasm is faster than JavaScript, without ever mentioning the limitations of wasm wrt. JS (no GC, no interaction with the DOM or with JS libraries besides numbers, etc.). And that means there are zillions of developers who keep being misled in thinking stuff like "Why don't you compile to wasm to make your stuff faster?". That includes absurdities like "We should write a compiler from JavaScript to wasm to make all our JS faster!"

Re:Firefox’s new streaming and tiering compiler by yzmtf2008 on Wednesday January 17, 2018 @12:45PM (#16170002)
No one is saying you should do your whole application in WASM though, it's really just like native extensions in any dynamic language: of course, you're not going to get GC or interaction with dynamic parts of the language in your extension, but the reason might be:

- libraries written in another language, such as SQL.js

- hot spots of an application that can benefit from fast number crunching (e.g., gaming, visualization)

- truly cross-platform at native performance

etc.

I don't think anyone serious enough to use WASM in their application is making the assumption of using wasm will make all your stuff faster. It won't. It's just another performance tool, with its benefits subject to performance methodologies.

Sidebar: Google Doc is an interesting application in this perspective, given they render the entire application in a canvas, and the application itself is probably not written in JS. I'm excited what the future holds for tools like Google Doc.

Re:Firefox’s new streaming and tiering compiler by sjrd on Wednesday January 17, 2018 @02:50PM (#16171146)
I understand all that. I have been writing compilers for more than 10 years, including the compiler of Scala.js. I am not criticizing wasm nor its benefits.

What I profoundly dislike is that such good articles about wasm, written by excellent technical people, all silently ignore that. I am absolutely certain that the authors know all about it, but they don't mention that to their audience, which, for the majority, doesn't know. Therefore, that very silence (not just glossing over, but actual silence) brings misinformation to the masses.

Re:Firefox’s new streaming and tiering compiler by stevemk14ebr on Wednesday January 17, 2018 @12:17PM (#16169688)
I don't think that's absurd at all. WebASM really should be the ASM of the web, everything should be compiled to it. A little pre-compilation of JS to WebASM makes sense to me
Re:Firefox’s new streaming and tiering compiler by white-flame on Wednesday January 17, 2018 @12:38PM (#16169934)
As far as not making sense goes, sorry but your post doesn't make any to me, either.

Why would we possibly return to a manual memory management, raw pointer oriented, assembly language level of abstraction from the much richer and safer abstraction that JS already has? Wasm doesn't even have any notion of Characters or Strings! You really want to return to the days of each project having their own String libraries, because it's all built on top of raw asm?

Webasm is not for JS-style code! You can't have "a little pre-compilation of JS to WebASM", that makes zero sense. We already have the incredibly complex JIT compilation of JS to x64/ARM/etc, which necessarily interacts with the garbage collector, type system, permissions & security, browser debugging/profiling tools, etc, all of which wasm does not have any notion.

Wasm is a raw C-ish sandbox environment for cross-compilation of static languages to expose their behavior to javascript, for straight-line CPU performance in number crunching as in games, software rendering, numerical analysis, compression/decompression, etc.

Re:Firefox’s new streaming and tiering compiler by felipellrocha on Wednesday January 17, 2018 @01:33PM (#16170443)
You don't really write wasm by hand. You use a higher level language that compiles to it. I wouldn't mind using go for the web, for example, if I wanted more performance, and it takes care of all the concerns you mentioned above for you...
Re:Firefox’s new streaming and tiering compiler by rmrfrmrf on Wednesday January 17, 2018 @07:47PM (#16173627)
> Why would we possibly return to a manual memory management, raw pointer oriented, assembly language level of abstraction from the much richer and safer abstraction that JS already has?

Just wait until the JVM and Flash Runtime are ported to wasm. Downloaded and compiled on every page load :).

Re:Firefox’s new streaming and tiering compiler by krapp on Wednesday January 17, 2018 @07:56PM (#16173672)
>Just wait until the JVM and Flash Runtime are ported to wasm. Downloaded and compiled on every page load :).

Why that, instead of caching common components like any other web asset, or even having the browser act as a dependency manager?

There are bound to better solutions than "download and compile on every page load."

Re:Firefox’s new streaming and tiering compiler by adrianN on Thursday January 18, 2018 @01:20AM (#16175116)
Users could for example install plugins into their browser.
Re:Firefox’s new streaming and tiering compiler by pjmlp on Thursday January 18, 2018 @01:25AM (#16175140)
Re:Firefox’s new streaming and tiering compiler by xg15 on Thursday January 18, 2018 @08:26AM (#16176868)
> You really want to return to the days of each project having their own String libraries, because it's all built on top of raw asm?

If C++-to-WASM via clang catches on, I think this is exactly what will happen.

Re:Firefox’s new streaming and tiering compiler by hateduser2 on Wednesday January 17, 2018 @01:35PM (#16170458)
They’re adding all those things to wasm. I think you’re mistaken about the future.
Re:Firefox’s new streaming and tiering compiler by testvox on Friday January 19, 2018 @01:37PM (#16188554)
Can you point me to plans around standardized string encodings in webassembly that is an interesting feature.
Re:Firefox’s new streaming and tiering compiler by sjrd on Wednesday January 17, 2018 @12:19PM (#16169721)
Re:Firefox’s new streaming and tiering compiler by flavio81 on Wednesday January 17, 2018 @12:58PM (#16170114)
>JavaScript, without ever mentioning the limitations of wasm wrt. JS (no GC, no interaction with the DOM or with JS libraries besides numbers, etc.).

DOM will die as soon as the industry moves to one or two good GUI toolkits that run under Webassembly and are way faster to use than the cumbersome present combination of HTML+CSS+CSS preprocessor+JS libs.

Mark my words.

Re:Firefox’s new streaming and tiering compiler by pcwalton on Wednesday January 17, 2018 @05:06PM (#16172473)
I'm nearly certain that this will not be the case. Once you reinvent everything that the DOM does, it's highly unlikely you'll end up faster than the DOM.

Everyone thinks that the rendering engines in browsers are easy to beat in terms of performance. I thought that too, until I implemented one. They are definitely beatable, but not easily, and certainly not with an architecture like that of Qt or GTK.

Re:Firefox’s new streaming and tiering compiler by xg15 on Thursday January 18, 2018 @08:44AM (#16176960)
I'm not so sure. You don't need to reinvent everything that the DOM does as the DOM is is burdened down with all kinds of backwards compatibility concerns and conflicting design philosophies.

E.g., I don't think any sane design of a UI toolkit would include the ability to read and modify the string representation of the UI code at runtime - yet it's a critical feature for the DOM.

Likewise, you wouldn't necessarily need the ability to access and mutate arbitrary nodes of the document tree at any time. (including mutations that might change which CSS selectors apply to a node) E.g., you could only expose higher-level widgets instead or only expose variables that feed into a template. That would allow optimisations which aren't possible with CSS and DOM.

Finally, a WASM toolkit would be shipped with a particular website anyway, so it wouldn't need to be general-purpose.

On the other hand, there is a great incentive for website operators to make their site into a single unparseable blob: Ad-blockers. If every site had it's own internal data representation and internal rendering engine, that would make it almost impossible for ad-blockers to modify certain parts of the site while leaving others intact.

Re:Firefox’s new streaming and tiering compiler by pcwalton on Thursday January 18, 2018 @01:03PM (#16179545)
> You don't need to reinvent everything that the DOM does as the DOM is is burdened down with all kinds of backwards compatibility concerns and conflicting design philosophies.

Those can largely be avoided, and they typically don't cause global performance impacts.

> E.g., I don't think any sane design of a UI toolkit would include the ability to read and modify the string representation of the UI code at runtime - yet it's a critical feature for the DOM.

That isn't a problem. innerHTML is lazily computed from the tree structure: if you don't use it, you don't pay for it.

> Likewise, you wouldn't necessarily need the ability to access and mutate arbitrary nodes of the document tree at any time. (including mutations that might change which CSS selectors apply to a node) E.g., you could only expose higher-level widgets instead or only expose variables that feed into a template.

The main benefit of this would be to eliminate restyling, but cascading is really useful from a design point of view. That's why we've seen native frameworks such as Qt and GTK+ move to style sheets. And if you reinvent restyling, it'll be a ton of work to do better—remember that Servo and Firefox Quantum have a parallel work-stealing implementation of it. I've never seen any native toolkit that even comes close to that amount of performance effort.

Re:Firefox’s new streaming and tiering compiler by xg15 on Thursday January 18, 2018 @01:18PM (#16179718)
> That isn't a problem. innerHTML is lazily computed from the tree structure: if you don't use it, you don't pay for it.

I'm not paying for it, the DOM implementation is - with increased complexity. (E.g., HTML parsing suddenly becomes a time-critical operation because some wiseguy decided to implement animations for his website using setTimeout and innerHTML.)

And they can't drop it because a lot of sites rely on it - however, if you wrote a new, limited-purpose renderer on top of WASM, you could decide to drop it and simplify the implementation without losing much utility.

> And if you reinvent restyling, it'll be a ton of work to do better

But that's kind of my point - if you can control which parts of the tree are exposed and which mutations are valid, you might not need to implement restyling at all. (Or in reduced scope)

I'm not talking about cascading in general, but about how you can make arbitrary changes to the DOM after initial load, which the restyler has to fully support.

Re:Firefox’s new streaming and tiering compiler by pcwalton on Thursday January 18, 2018 @02:38PM (#16180558)
> I'm not paying for it, the DOM implementation is - with increased complexity. (E.g., HTML parsing suddenly becomes a time-critical operation because some wiseguy decided to implement animations for his website using setTimeout and innerHTML.)

We're talking about performance here, not implementation complexity. Besides, it's not a win in terms of complexity if sites ship a limited subset of the Web stack to run on top of the full implementation of the Web stack that's already there.

> But that's kind of my point - if you can control which parts of the tree are exposed and which mutations are valid, you might not need to implement restyling at all. (Or in reduced scope)

Sure, you can improve performance by removing useful features. But I think it'll be a hard sell to front-end developers. Qt and GTK+ didn't add style sheets and restyling for no reason. They added those features because developers demanded them.

Re:Firefox’s new streaming and tiering compiler by xg15 on Friday January 19, 2018 @03:35AM (#16184879)
I think we're talking past each other.

My point is that writing custom UI renderers using canvas and WASM might become a reasonable thing to do. For that you don't need to stick to the web stack at all, you can invent whatever language, API and data model fits your needs. Those can be a lot simpler than the DOM and therefore easier to implement with good performance.

Re:Firefox’s new streaming and tiering compiler by gpm on Wednesday January 17, 2018 @08:39PM (#16173904)
Are there any resources that describe the sort of UI rendering engine you think you would need to beat browsers?
Re:Firefox’s new streaming and tiering compiler by pcwalton on Wednesday January 17, 2018 @08:45PM (#16173937)
I don't think it's really possible to do much better than the next-gen browser architecture (Servo, fully-fleshed-out Quantum) if you support the entire feature set of browsers (once typed CSSOM is a thing, anyway). You can certainly do better in constrained environments, though. For example, Leo Meyerovich is doing really neat things with data viz, where all the elements to be laid out have the same shape and you can take advantage of that to do things like GPU layout.
Re:Firefox’s new streaming and tiering compiler by swsieber on Thursday January 18, 2018 @12:24AM (#16174902)
But if you're making your own UI kit, couldn't you just eschew CSS and the like? I was under the impression that part of the reason browser rendering is such a gnarly process is because of the reflow issues that CSS and HTML layout quirks/changes can cause. I would assume that you can implement a couple of layouts that prevent those sort of pitfalls and thus speed up rendering...

Please correct me (you know a lot, and I'm betting some of my assumptions are wrong).

Re:Firefox’s new streaming and tiering compiler by pcwalton on Thursday January 18, 2018 @02:26AM (#16175347)
Sure, you could get rid of CSS, but in favor of what? You probably need something just like flexbox, and it's not easy to beat an optimized implementation of CSS flexbox in terms of layout performance (especially if parallelized). You could eliminate the restyling step by not having cascading and selector matching, but that hurts productivity and maintainability, which is why you see frameworks like GTK+ moving toward CSS-like styling. There's no free lunch here...
Re:Firefox’s new streaming and tiering compiler by tmzt on Thursday January 18, 2018 @11:54AM (#16178603)
Is there a good way to experiment with exposing native calls from Firefox/Quantum to WASM?

I'm looking into building an extension to build Quantum Display Lists from a WASM vdom.

Re:Firefox’s new streaming and tiering compiler by kowdermeister on Wednesday January 17, 2018 @02:37PM (#16171021)
No, the DOM will stay for a long time, since CSS is actually a really great way to build UI-s.

Last time I checked C/C++ based UI libraries even text selection was a problem. If there were a cross platform way to build UI-s as good and feature rich as a modern browser is now, then it will slowly die.

That's the reason we have so many Electron based apps, because it makes UI building really simple.

Re:Firefox’s new streaming and tiering compiler by pjmlp on Thursday January 18, 2018 @01:29AM (#16175156)
There isn't anything about Electron that I feel it is simple over Delphi, WinForms, JavaFX, Android, Cocoa, Qt, XAML, other than being easier for those that grew with HTML/CSS.
Re:Firefox’s new streaming and tiering compiler by ghettoimp on Thursday January 18, 2018 @06:37AM (#16176348)
Caveat: It's been a long time since I've used GUI toolkits like Gtk+ and QT, so this may be an out-of-date perspective.

What I think of GUI toolkits, I think of lots of imperative code to build out an interface, e.g., "Create a window. Add a vertical box layout. Create button1. Change button1.font to xxx. Change button1.style to bold. Set the minimum height of button1 to 20px. Add button1 to the box. Create button2. Add button2 to the box. Tell the box to grow button2 when it is resized. Create button 3..."

The declarative style of HTML/CSS seems so much better. The grouping of elements becomes apparent just by looking at how they are nested, with no need to keep track of what gets added to what. And CSS gives you a really rich ability to select groups of elements, style them, try out new styles, reuse styles across pages, and so on.

CSS has definitely gotten really complicated. But then, I could never build anything in a GUI toolkit without constantly referencing the API docs to figure out how to do this or that, either...

Re:Firefox’s new streaming and tiering compiler by switchbak on Thursday January 18, 2018 @04:47PM (#16181808)
That certainly used to be the case, but look at something like QML for Qt, and it's typically far more declarative and succinct than (most) HTML, eg: http://doc.qt.io/qt-5/qmlfirststeps.html

I'm not a frontend whiz by any means, but I've always found the widget-centric (GUI) approach fit my mental model better than the HTML centric one.

SPA architectures help, but I find most HTML designers tend to prefer raw HTML to any composed/widget approaches.

CSS (as a concept) is actually quite great, which is why you've seen the older GUI approaches adopt it. Qt itself is also leading more towards a reactive approach where you interact with an abstract data model, and the UI reflects the updates.

Re:Firefox’s new streaming and tiering compiler by pjmlp on Thursday January 18, 2018 @07:32AM (#16176586)
Gtk+ is quite basic compared to RAD UI tooling, even today I wouldn't pick Glade over VB 6 or Delphi.

Qt always had a nice UI designer, with layout managers for responsive UIs, no need for imperative code to build out an interface.

Since version 5 they have QML, a JavaScript like declarative language, quite similar to J3 the first version of JavaFX.

Usually imperative UI code tends to be a thing only among developers that dislike RAD tooling, or game devs using immediate mode UIs.

Re:Firefox’s new streaming and tiering compiler by protomikron on Thursday January 18, 2018 @09:58AM (#16177494)
> Usually imperative UI code tends to be a thing only among developers that dislike RAD tooling, or game devs using immediate mode UIs.

Actually I think that most game UIs (the menus, settings, inventories - not the actual game) are done quite well - maybe immediate mode GUIs have a place outside of gamedev?

Re:Firefox’s new streaming and tiering compiler by rickycook on Wednesday January 17, 2018 @05:15PM (#16172538)
drawing the parallel between electron and gui toolkits probably isn’t right. i think there are lots of things at play here. just for starters:

- abstracts lots of file handling

- js is much easier than most languages to pick up and learn

- js has a large dev base because of the web

- people are well versed in coding for the web, and adding a “native” layer on top of that is actually quite easy

- cross platform c/c++ in general is not so simple even without the GUI

Re:Firefox’s new streaming and tiering compiler by chrismorgan on Thursday January 18, 2018 @12:05AM (#16174835)
We’re nowhere near the point where that would be even vaguely feasible on one crucial point: accessibility.

If you’re talking about rendering everything on a canvas, well, there’s been the occasional discussion about making it a11y-friendly, exposing content in it to screen readers and so forth, but nothing has really happened with it.

Your WebAssembly GUI toolkit is going to be completely invisible to screen readers.

Re:Firefox’s new streaming and tiering compiler by dragonwriter on Wednesday January 17, 2018 @02:05PM (#16170733)
Declarative UI systems that look a lot like HTML+CSS+JS, keep cropping up in other domains besides the web; I think, but for increasing freedom to replace the JS part with some other languages to specify behavior, the basic model will be around for a long time.
Re:Firefox’s new streaming and tiering compiler by kabes on Wednesday January 17, 2018 @08:04PM (#16173723)
You can already replace dom with a canvas renderer. Flipchart does it with a react canvas renderer, but yet it doesn't take off, so why would wasm change that?
Re:Firefox’s new streaming and tiering compiler by mr_toad on Wednesday January 17, 2018 @04:57PM (#16172384)
The DOM will be around as long as the web has documents.
Re:Firefox’s new streaming and tiering compiler by eyko on Wednesday January 17, 2018 @07:13PM (#16173389)
You seem to ignore that even in desktop and mobile, HTML(ish)+CSS(ish)+JS is taking over.
Re:Firefox’s new streaming and tiering compiler by pjmlp on Thursday January 18, 2018 @01:30AM (#16175160)
On mobile surely not.
Re:Firefox’s new streaming and tiering compiler by avaer on Wednesday January 17, 2018 @01:33PM (#16170432)
I'll do you another. If 2D screens ever cease being the main way of interacting with computers, something like a DOM-less WASM will take over consumer computing, and the DOM will get washed away in the process.
Re:Firefox’s new streaming and tiering compiler by dfox on Wednesday January 17, 2018 @02:02PM (#16170695)
Moving from 2D to 3D does not imply that applications will all use immediate mode. And having some standard way of doing retained mode 3D (which is the major feature provided typical 3D game engines and there is no reason why DOM could not be at least partially used as the underlying data model) seems like one of the requirements for that shift to actually happen.
Re:Firefox’s new streaming and tiering compiler by rictic on Wednesday January 17, 2018 @02:39PM (#16171047)
For an example of this model today, take a look at the wonderful A-Frame library for doing 3D scenes, including web VR.
Re:Firefox’s new streaming and tiering compiler by dragonwriter on Wednesday January 17, 2018 @02:06PM (#16170741)
Or something like X3dom will take center stage.
Re:Firefox’s new streaming and tiering compiler by xg15 on Thursday January 18, 2018 @08:32AM (#16176905)
So in the end we really do end up in the alternate future where every website is just a single giant SWF file - except instead of Flash, it's WASM. Hooray! /s
Re:Firefox’s new streaming and tiering compiler by ake1 on Wednesday January 17, 2018 @01:09PM (#16170205)
do you know of any ongoing work?
Re:Firefox’s new streaming and tiering compiler by gigatexal on Wednesday January 17, 2018 @12:13PM (#16169654)
Yeah I read the article too and thought: but what can I do with wasm?
Re:Firefox’s new streaming and tiering compiler by kbumsik on Wednesday January 17, 2018 @12:34PM (#16169880)
You can import C (and many others) libraries without re-implementing it in JS for browsers. In my company's case, we compile C-written libopus almost directly to encode audio streams into Opus on browsers, not on servers. In this way we benefit much less data traffic and server CPU loads.
Re:Firefox’s new streaming and tiering compiler by QAkICoU7IDNkpFu on Wednesday January 17, 2018 @07:54PM (#16173662)
>You can import C (and many others) libraries

This means compiling the lib to wasm, right? At first I was thinking of running JS clientside that imports some C lib somehow, which confused me.

Re:Firefox’s new streaming and tiering compiler by kbumsik on Wednesday January 17, 2018 @09:18PM (#16174108)
Yes. The C lib will be compiled into wasm. You can use the wasm-compiled code in a browser through JS wrappers. So you can say importing C lib on JS client side anyway.

Note that wasm's main objective is to run non-JS code on browsers, not for a faster JS.

Here is the best overview and tutorial I've ever seen in HN , if you are interested: https://news.ycombinator.com/item?id=15958827

Re:Firefox’s new streaming and tiering compiler by gigatexal on Saturday January 20, 2018 @08:54AM (#16193317)
So you could do the same with Cython then, too? Interesting.
Re:Firefox’s new streaming and tiering compiler by kbumsik on Monday January 22, 2018 @03:14AM (#16202745)
I've never experienced with Cython. But if Cython is to compile anPython file into a C file then probably.
Re:Firefox’s new streaming and tiering compiler by icen on Wednesday January 17, 2018 @12:13PM (#16169657)
> That includes absurdities like "We should write a compiler from JavaScript to wasm to make all our JS faster!"

Is this this absurd? Given you can compile WASM whilst streaming, you should really precompile your JS into WASM if you can.

Re:Firefox’s new streaming and tiering compiler by sjrd on Wednesday January 17, 2018 @12:18PM (#16169705)
I can't tell whether you're being sarcastic or not, so I will answer as if you are not.

Yes, it is absurd. Because your wasm that was compiled from JS needs to embed an entire implementation of the dynamic nature of JS. And to make all those dynamic features remotely fast, you cannot just compile them as is. You need to use a JIT to be able to perform speculative optimizations. But then, where's the JIT? Oh, it's built inside your wasm code. And basically you end up shipping a JS interpreter+compiler+JIT as part of your wasm, instead of just the .js code. Parsing and compiling all of that will be much, much worse than parsing the .js code and feed it to the already existing JS interpreter+compiler+JIT that is in the browser.

Re:Firefox’s new streaming and tiering compiler by Yoric on Wednesday January 17, 2018 @12:20PM (#16169726)
On the other hand, you could compile well-behaved subsets of JavaScript into wasm. Kind of what asm.js was doing.

Whether that's useful in practice is an open question, but it's plausible.

Re:Firefox’s new streaming and tiering compiler by jahewson on Wednesday January 17, 2018 @12:31PM (#16169843)
It’s really inaccurate to call that “JavaScript” any more. You’re talking about a subset of JS that would never need to perform a GC! Really just “the subset of JavaScript which also happens to be C”.
Re:Firefox’s new streaming and tiering compiler by sjrd on Wednesday January 17, 2018 @12:26PM (#16169783)
asm.js was not a well-behaved subset of JavaScript. It was a well-behaved subset of assembly that happened to be encoded in JavaScript.

There is virtually no human-written JS code that is amenable to compilation to wasm in a meaningful way. At the very least, you need a (mostly) sound type system to be able to compile to wasm with a positive expected ROI.

The speed of wasm comes in a large part from the fact that it is entirely statically typed, which means we don't need the speculative optimizations (and their deoptimization guards) all over the place.

Re:Firefox’s new streaming and tiering compiler by Zekio on Thursday January 18, 2018 @06:29AM (#16176306)
Wonder if there will ever be a version of typescript that compiles to wasm
Re:Firefox’s new streaming and tiering compiler by jahewson on Wednesday January 17, 2018 @12:41PM (#16169962)
Exactly, plus in a dynamic environment a tracing JIT can outperform AOT compiled code. This is true for both the JVM and .NET CLR, both mature platforms.
Re:Firefox’s new streaming and tiering compiler by hateduser2 on Wednesday January 17, 2018 @01:54PM (#16170612)
They’re adding gc and dom support to wasm
Re:Firefox’s new streaming and tiering compiler by kroltan on Wednesday January 17, 2018 @12:36PM (#16169906)
JS is a garbage-collected language. It would require reimplementing most of the runtime, or be stuck with code that does marshalling for everything and would possibly be slower than plain JS.
Re:Firefox’s new streaming and tiering compiler by pjmlp on Wednesday January 17, 2018 @12:39PM (#16169942)
I don't see lack of GC as limitation, just bring your alongside.

Modern CPUs also don't have hardware GC support. Intel i432 was the last attempt at it.

Interaction with DOM can be achieved with a few imported functions.

Re:Firefox’s new streaming and tiering compiler by cwzwarich on Wednesday January 17, 2018 @12:49PM (#16170043)
> Modern CPUs also don't have hardware GC support. Intel i432 was the last attempt at it.

Intel i432 was far from the last attempt. Besides all of the Lisp HW developed after it, Azul made CPUs in the 2000s with hardware support for GC. Acceleration of concurrent copying collection requires a surprisingly low amount of CPU support.

Re:Firefox’s new streaming and tiering compiler by pjmlp on Wednesday January 17, 2018 @01:36PM (#16170464)
I had my history reversed regarding i432 vs Lisp HW.

You are right I also forgot about Azul, but eventually they dropped it, because it wasn't worthwhile anymore, just like it happened with all other specialized hardware implementations.

Re:Firefox’s new streaming and tiering compiler by dfox on Wednesday January 17, 2018 @02:11PM (#16170778)
Azul (and AFAIK most lisp machines) does not do garbage collection in hardware. In these contexts the "GC HW" involves hardware acceleration of read/write barriers required by concurrent and incremental GCs (which otherwise requires the compiler/JIT to inline implementation of barriers into user code). The reason why Azul can now use stock amd64 CPUs is that they found that you can abuse the MMU to provide exactly this kind of HW accelerated barriers.