P
Pointers Gone Wild
pointersgonewild.com · Personal blog · on HN since 2012
Maxime Chevalier-Boisvert, a compiler researcher, writes about JIT compilers, YJIT, software bugs, and programming projects.
What HN saysHN commenters link it for basic block versioning, the software bugs that cause real-world harm post, and her Turing Drawings project.
88HN people shared it
30linked it in comments
97stories submitted
3.0Kstory points
3 months agolast shared
2012people per year2026
Most-shared posts
- 1They Might Never Tell You It’s Broken5 people · 418 points · first shared 2019 · 211 comments on HN
- 2The Alternative Implementation Problem4 people · 273 points · first shared 2024 · 83 comments on HN
- 3Tile-Based Image Compression (2014)4 people · 2 points · first shared 2014 · discussion on HN
- 4The internet changed my life3 people · 581 points · first shared 2022 · 165 comments on HN
- 5Basic Block Versioning – My Best Result Yet3 people · 81 points · first shared 2015 · 7 comments on HN
- 6YJIT: Building a New JIT Compiler Inside CRuby3 people · 11 points · first shared 2021 · discussion on HN
- 7The Race to Make Humans Obsolete3 people · 10 points · first shared 2024 · 2 comments on HN
- 8Turing Drawings3 people · 3 points · first shared 2020 · 2 comments on HN
- 9Higgs3 people · first shared 2014
- 10Zupiter: A Web-Based Modular Synthesizer2 people · 147 points · first shared 2019 · 25 comments on HN
- 11What Killed Smalltalk?2 people · 107 points · first shared 2015 · 185 comments on HN
- 12JavaScript is the C++ of the Web2 people · 106 points · first shared 2015 · 77 comments on HN
- 13The Need for Stable Foundations in Software Development2 people · 72 points · first shared 2020 · 60 comments on HN
- 14Have Static Languages Won?2 people · 58 points · first shared 2015 · 115 comments on HN
- 15Building a Copying GC for the Plush Programming Language2 people · 34 points · first shared 2025 · 3 comments on HN
What HN people wrote when they linked it
tach4n · 2014-07-03
I may be biased, but this was one of my favorite talks at DConf :3.
You can find the source to higgs on GH: https://github.com/maximecb/Higgs
More info is on Maxime's blog: http://pointersgonewild.wordpress.com/
And our subreddit:
http://www.reddit.com/r/higgsjs/
You can also stop by and say hello in #higgsjs on freenode.
We're looking for contributors of all skill levels if anyone is interested!
spondylosaurus · 2024-01-15
Makes me think back to this great blog post from last year: Software Bugs That Cause Real-World Harm (https://pointersgonewild.com/2023/05/29/software-bugs-that-cause-real-…
avgcorrection · 2022-05-11
You might recognize the author from https://pointersgonewild.com/
carapace · 2022-01-20
I'm getting all verklempt reading this!
- - - -
I just want to add that Maxime is the genius who wrote Turing Drawings, one of my personal all-time favorite uses of the computer ever.
https://maximecb.github.io/Turing-Drawings/
https://pointersgonewild.com/2012/12/31/turing-drawings/
It's worth looking at the code too, IMO. It made me realize that JS could be beautiful.
https://github.com/maximecb/Turing-Drawings
- - - -
You rock Maxime!
big_spammer · 2017-05-14
There are alternatives that make static analysis look like the suboptimal approach.
https://pointersgonewild.com/2015/09/24/basic-block-versioning-my-best…
tachyonbeam · 2016-12-30
I think everyone working on this is well-aware of this problem. It's obvious that there can't be widespread adoption without self-piloting technology. The danger to passengers and people on the ground is much too great, and the burden of getting a pilot license is also too much of an obstacle for most people. There are other considerations such as requirements for frequent routine inspections on flying vehicles, which many people couldn't be trusted to fulfill, which also suggest that a self-driving-uber kind of model is really the right solution.
Shameless plug: my blog post from last year on this topic: https://pointersgonewild.com/2015/09/15/all-hope-is-not-lost-for-flyin…
iheartmemcache · 2015-11-26
The whole reason Flow was invented was because Javascript was un-managable at scale without types. The whole "both" (i.e. gradual typing a la Typed Racket/Clojure/TypeScript) is probably solution. Interestingly the author has an article on that too which is a fairly good read[1].
[1] http://pointersgonewild.com/2012/11/09/static-vs-dynamic-why-not-both/
ANTSANTS · 2014-12-06
I was just reading another article on here about fractal image compression and stumbled across this: http://pointersgonewild.com/2014/01/02/tile-based-image-compression/
written by this woman: https://twitter.com/Love2Code
Maybe you can't generalize the opinions of two people to 50% of the human race?
gwern · 2026-05-09
Query strings break unpredictably, and that alone is enough to ban them by third parties, especially for something as minor as referral tracking.
Example: The Browser is a well known link aggregation paid periodical. I subscribe, and every 1 in 10 or 20 links I clicked, it'd just break outright and I'd have to tediously edit the URL to fix it (assuming the website didn't do a silent ninja URL edit and make it impossible for me to remember what URL I opened possibly days or weeks ago in a tab and potentially fix it). This was annoying enough to bother me regularly, but not enough to figure out a workaround.
Why? ...Because TB was injecting a '?referrer=The_Browser' or something, and the receiving website server got confused by an invalid query and errored out. 'Wow, how careless of The Browser! Are they really so incompetent as to not even check their URLs before mailing an issue out to paying subscribers?'
I wondered the same thing, and I eventually complained to them. It turns out, they did check all their URLs carefully before emailing them out... emphasis on 'before', which meant that they were checking the query-string-free versions, which of course worked fine. (This is a good example of a testing failure due to not testing end-to-end or integration testing: they should have been testing draft emails sent to a testing account, to check for all possible issues like MIME mangling, not just query string shenanigans.)
After that they fixed it by making sure they…
pansa2 · 2025-11-05
> in a language subset you're always encountering things you would have in the full language
Exactly. I once pitched the idea of a Python subset (with a different focus, not performance like SPy), and almost every reaction was "will it support <favourite Python feature / favourite library>".
For example, a new language can build its own solution for array math, or maybe that's not something its users need. OTOH many consider a Python subset to be unacceptable if it doesn't specifically support NumPy.
In the end I came to agree with https://pointersgonewild.com/2024/04/20/the-alternative-implementation…
> positioning your project as an alternative implementation of something is a losing proposition
> don't go trying to create a subset of Python [...] Do your own thing. That way, you can evolve your system at your own pace and in your own direction, without being chained by expectations that your language should have to match the performance, feature set, or library ecosystem of another implementation.
pubg · 2024-05-22
> I am wondering why not take an existing language like python, and compile that to bash?
You'll run into the Alternative Implementation Problem
https://pointersgonewild.com/2024/04/20/the-alternative-implementation…
https://news.ycombinator.com/item?id=40337036 - 10 days ago, 84 comments
Relevant excerpt:
> You may read this and think that the key lesson of this post follows the old adage that “if you can’t beat them, join them”. In some ways, I suppose it does. What I want to say is that if you start a project to try and position yourself as an alternative but better implementation of something, you are likely to find yourself stuck in a spot where you’re always playing catch up and living in the shadow of the canonical implementation.
This concept doesn't exactly map 1:1, but gist seems correct. Who wants to program in a worse and very limited version of Python? Who's going to keep things up to date in e.g. Amber as Python continues to evolve? Not fun.
__max__ · 2020-06-14
Thank you for responding irshadshalu, I sincerely appreciate you taking the time. I agree that HN works in unpredictable ways. I don't know if you were just more lucky than I was, or if people like your app better because the UI looks better. If that's the case, it's interesting to know.
This HN account is new-ish, but the original MusicToy blog post from 2012 is still around [1].
As far as Git goes, I would appreciate it if you had an acknowledgement somewhere that linked to the MusicToy repo[2], or just mentioned in passing in terms of inspirations/predecessors. You obviously have no obligation to do this, but it won't take away from the success of your app if you choose to do so.
I wish you the best of luck in your future endeavors, and may your success encourage you to build more great projects.
[1] https://pointersgonewild.com/2012/04/23/musictoy-music-made-simple/
[2] https://github.com/maximecb/MusicToy
Lerc · 2016-01-16
I have certainly given this a great deal of thought. What is needed? How could we get from here to there?
People have often called for a ByteCode vm. This has been rejected over and over again. Bendan Eich in particular has repeatedly argued against bytecode in ways I found to be quite disingenuous. He has variously used Java to imply one bytecode being unsuitable means all bytecodes are unsuitable, or suggested if you want bytecode to make a bytecode VM in JavaScript (even using DCPU16 as an example), or that it is too late for a new standard, or that. No bytecode would be accepted by all browser makers (which I took to mean 'not on my watch'). I have yet to find the arguments against a bytecode VM to be convincing.
I think it would be well worth making a few different candidate bytecode VMs to give the platform a chance in the field. Such VMs are not hard. In the case of the DCPU16 (A imaginary CPU created for a project Notch was working on) it took less than 48 hours for emulators to appear and just under a week for the first compiler. A VM that occupies a similar space to Javascript has its own particular needs.
In a different direction Maxime Chevalier-Boisvert argues for a Control Flow Graph representation http://pointersgonewild.com/2015/08/02/javascript-is-the-c-of-the-web/ Which if the Webassembly approach is to be taken this does seem more sensible than a AST.
The cooperative multitasking aspect of JavaScript has been a bugbear for all too long. …
maxime_cb · 2026-08-05
Thanks :)
I've made a couple of music apps over the years, including one of the oldest JS music apps on the web, that also does URL encoding: https://pointersgonewild.com/2012/04/23/musictoy-music-made-simple/
But also generally, I was looking at other web-based drum machines, and most of them are either super basic, full of ads, or they have bad cryptic UIs. I also wanted to design a more advanced sequencer with a timeline that would have an intuitive UI to work with.
I built a sequencer in NoiseCraft, a browser-based music programming language I built a few years ago (e.g. https://noisecraft.app/101), but you can't chain pattern in this sequencer, which makes it harder to create longer piece (though people have found workarounds).
MortyWaves · 2025-04-20
And also her article on it https://pointersgonewild.com/2012/12/31/turing-drawings/
zellyn · 2023-07-15
Maxine Chevalier-Boisvert (of note here due to her Basic Block Versioning JIT work and more recently yjit) has been working on similar ideas recently…
https://pointersgonewild.com/2023/02/24/building-a-minimalistic-virtua…
cxr · 2022-11-04
PSA: enable CORS[1] so people can make cross-origin requests without having to run a proxy.
PSA #2: set things up so the author field of your feed includes your email address (e.g. "Alice <[email protected]>") and not just your bare name, so people can more easily get in touch with you without having to click through to the original post and then hunt around for your contact page; otherwise, you might never find out it's broken[2].
1. <https://enable-cors.org>
2. <https://pointersgonewild.com/2019/11/02/they-might-never-tell-you-its-…
ufo · 2021-10-21
More than just the JIT itself, I'm very interested in seeing if this will push Ruby towards making other performance-related inprovements to it's data structures and bytecode format:
https://pointersgonewild.com/2021/06/02/yjit-building-a-new-jit-compil…
duckmysick · 2021-07-04
In my experience it's the other way around - but the difference is not that big anyway. Commercial programs typically imply paid support, which can tease out more details when the user contacts them. The users themselves are also more invested, as they already committed their money.
Open source software faces the same problems about a lack of bug reports. Check out this article and the related HN discussion:
https://pointersgonewild.com/2019/11/02/they-might-never-tell-you-its-…
https://news.ycombinator.com/item?id=21427996
rbehrends · 2017-07-09
Sorry, D's garbage collector is too limited to qualify. It is a stop-the-world, conservative collector with a history of performance problems [1].
And the fact that D development appears to be focusing on @nogc rather than fixing the GC issues also doesn't help.
[1] Such as https://pointersgonewild.com/2014/09/09/ds-garbage-collector-problem/
jermo · 2014-11-15
It's a JavaScript JIT compiler. From the info page [1]:
Some notable features of Higgs include:
- A self-hosted runtime written in extended JavaScript
- Lazy/incremental JIT compilation
Context-driven versioning of basic blocks
- A Foreign Function Interface (FFI) system to interface with C code
- An interactive shell (REPL) with access to low-level primitives.
- A simple module system and a set of useful libraries.
Example usage:
higgs --e "var x = 4; x = x + 5; print(x)"
or
higgs file.js
[1] http://pointersgonewild.wordpress.com/higgs/
grayrest · 2014-11-15
It's a PhD research project. See the project overview page for specifics:
http://pointersgonewild.wordpress.com/higgs/
EvenThisAcronym · 2014-11-15
The Higgs VM is part of Maxime Chevalier's PhD work.You can find her blog here: http://pointersgonewild.wordpress.com/category/higgs/.
simendsjo · 2014-05-26
Not answering your question, but there is a research project implementing a Javascript JIT compiler in D: http://pointersgonewild.wordpress.com/higgs/
mojuba · 2022-05-29
I once, a long time ago, had a similar argument (somewhere online) with a bunch of Java coders. I asked them to create a library for solving quadratic equations. Asking to create a library itself was a trap of course.
Everybody came up with some solver classes in Java, some stateful, some stateless. One guy presented the most monstrous solution with 100+ lines of code where you could individually assign the coefficients, individually modify them, trigger recalculation, get the number of roots, get the roots. That guy was very proud of what he did.
Oh, I found bugs in his code. But that was considered normal. People make mistakes, right?
I showed them a two-line solution with a single function (where you'd try hard to make a mistake) and nobody liked it. I was ridiculed right there, for not solving the problem "properly".
It struck me how someone can overengineer a solution to the simplest problem and be proud of it. I thought at the time this industry is screwed if this is the norm.
In fact probably some 90% of so called library code on GitHub is overenginnered crap. 90% is arbitrary but from my experience every time I look for some solution let's say for some GUI effect on iOS, find a library or a framework, take the source, analyze it, start simplifying it and I end up with a version that is orders of magnitude shorter and can be just copied into my project it's so trivial.
You realize that it was so trivial that there was no need for a library in the first place.
I…
Kranar · 2021-02-17
To get access to a wealth of libraries, support, documentation and tools, that D is sorely lacking in. To be able to use a state of the art garbage collector that provides some degree of guarantee about runtime performance as opposed to D's very poor garbage collector that provides basically no guarantees and is known to sometimes block an application for upwards of dozens of seconds at a time [1].
And most importantly, to be able to use a platform that has pretty strong guarantees about backwards compatibility and that is able to run code from 10 years ago without modification, as opposed to D where even a minor version update can end up breaking D's own standard library.
Certainly D has a niche of users who are very passionate about it and for those guys, all the power to you guys and don't bother listening to me... but for most of us, well after 20 years it really hasn't established itself as a reliable language to use beyond that niche. It's no longer 2005, a time when C++ was stagnating and there was a lot of opportunity for a new programming language to sit some where between Java and C. Instead of being released with a roadmap, some promising libraries and frameworks that establish a clear use case where D could shine, and a license that allowed broader community involvement in the implementation of the language and its standard library, it was released as a proprietary compiler that ended up quickly resulting a very fragmented community with a lot of infighting,…
bmc7505 · 2020-07-20
Hey, thanks for your comment! I'm a big fan of DIY "implementers" like yourself and am happy to hear some of these ideas resounded with you. I come from a similar background, and agree we need better tools for thinking and working with complex software systems.
> I would consider adding to your system is physical units.
Totally agree. This is high up there on my priority list. Kennedy (2006) did some early work on dimension and unit types that I was quite inspired by:
http://typesatwork.imm.dtu.dk/material/TaW_Paper_TypesAtWork_Kennedy.p…
> I independently discovered that physics units (Ohms, inerita, etc.) can be described as a vector.
Interesting! I guess that makes sense. Do you have any links describing this perspective a bit? I would be interested in reading about it.
> I have been undertaking experiments in real-time compiling. Please contact me if you're looking or a co-conspirator!
Sounds cool! One of the things I'm interested in is REPLs and interactive programming environments. Do you have anywhere I can read about this project in more detail?
edit: I noticed you were interested in musical instruments and DSPs. One of my colleagues, Maxime, is also working on synthesizers and music production, which I thought you might be interested in reading about:
https://pointersgonewild.com/2019/10/06/zupiter-a-web-based-modular-sy…
StefanKarpinski · 2015-11-30
Between this post and others like it [1], Maxime Chevalier-Boisvert's ideas sound like they're evolving towards something very much like Julia [2], a dynamic language carefully designed to make ahead-of-time data-flow-based type analysis easy. This analysis allows Julia to achieve performance comparable to C and Fortran. Much of the design involves selecting which aspects of traditional unrestricted dynamism can be given up without compromising usability. For example, function bindings are constant by default, which allows type inference to know with certainty which function object is being called in most function calls. Similarly, since much of the difficulty in optimizing dynamic languages comes from trying to guess the types in arrays/structures/objects, Julia allows programmers to specify these, thereby eliminating this difficulty entirely. More information about Julia's design and implementation can be found here [3].
[1] http://pointersgonewild.com/2012/11/09/static-vs-dynamic-why-not-both/
[2] http://julialang.org/
[3] http://arxiv.org/abs/1209.5145
anigbrowl · 2014-12-05
One of Barnsley's notes with math, a concise algorithm, references, and a rather interesting set of figures: http://www.ams.org/notices/199606/barnsley.pdf via a comment on http://pointersgonewild.com/2014/01/02/tile-based-image-compression/ from HN user Tachyonbeam who has experimented with the technology.
Remember that photo-enhancing scene in Blade Runner? Are you feeling motivated yet? For me the decompression speed and small file size were nice things when I first encourntered the format back in ~1992 but jpegs were already good in that area and it was obvious that the price of storage space and bandwidth would fall (though I continue to be surprised by the progress of technology). So to critics who say it's not competitive on size or speed - quite right, no argument from me.
However, nothing I have seen in the intervening 22 years comes close to FI compression for image enhancement. It's hard to find examples online but trust me, it was this good on everything we threw at it.
Also from the original thread: http://www.verrando.com/pulcini/gp-ifs1.html < windows en/decoder (IFS-BMP) and some other resources, straight outta 1997.
mkaufmann · 2014-11-15
Concerning your critique of the in your opinion overly hard scientific review process. According to her blog the paper was rejected because: "Reviewers at conferences [...] have been very skeptical, and pressed us multiple times to produce some kind of comparison of basic block versioning against tracing."[1] I think this is a very valid concern. When you describe a new scientific approach (Basic Block Versioning) you should compare to the state of the art. Otherwise it is very hard for the reader to judge the merit of the new approach. However I agree with your sentiment that a new approach should not only be judged by performance numbers (there is actually a nice article going deeper on this topic on databasearchitects[2]). But there should at least be a more thorough theoretical discussion than only 3-4 sentences. Benchmarks comparing to existing approaches in this case can help to show pathological cases which might indicate weaknesses of the approach or to empirically demonstrate the feasibility of the new approach.
[1] http://pointersgonewild.wordpress.com/2014/11/14/the-fastest-for-in-lo…
[2] http://databasearchitects.blogspot.de/2014/09/experiments-hurt-review-…
EDIT: Many conferences also allow publishing papers without a deep comparison to exisiting research in the industrial session. This allows demonstrations of interesting implementation variants or system choices
EDIT 2: The review critisim in older blog posts "Conference…