Jane Street's 'Incremental' is the trick Goldman called 'Node Purpling' 30 years ago
Jane Street put its internal OCaml library up on GitHub: code that recomputes only the parts of a system a change actually touched. In the thread, a developer who'd spent 13 years at Goldman Sachs said the bank ran the identical graph under that exact name three decades earlier.
On the author's own laptop, firing one updated node costs about 30 nanoseconds, the benchmark for a graph Jane Street now uses to price portfolio risk in real time.
A Notion engineer added that the whole pattern already ships under yet another name, 'signals,' inside Vue, Svelte, Angular, and React tooling. Not everyone was impressed: a quant said he'd built the identical system for his fund seven years ago.
What Incremental actually skips, and why a node costs 30 nanoseconds
Incremental is the OCaml library Jane Street uses internally and put on GitHub, inspired by Umut Acar's research on self-adjusting computation. The pitch: build a computation once, then update it when inputs change without rerunning the whole thing, the same trick a spreadsheet uses when editing one cell recalculates only the formulas that touch it.
The library models a computation as a graph. Var nodes are the inputs a program writes to. Ordinary nodes derive new values with functions like map and bind. Observer nodes mark which outputs the program actually reads. Nothing recomputes until the program calls stabilize, which walks that dependency graph and fires only the nodes downstream of what changed. Jane Street's post introducing the library puts that per-node overhead at roughly 30 nanoseconds, trivial against the alternative and worth paying only when a node's own computation is large by comparison, the way the portfolio-risk math that mixes live market data with a trader's own settings is.
The more interesting move is that this graph can change shape while running. bind lets a node's dependencies depend on another value: average the first length elements of an array, and if length is 7 the computation touches only length and those seven cells, rewiring itself the moment length changes. For arrays with an inverse operator, unordered_array_fold updates in constant time instead of the usual logarithmic cost of a balanced-tree merge. Jane Street's own UI framework, Bonsai, is built on the same graph: it makes constructing a virtual DOM itself incremental, rather than rebuilding the whole tree on every frame the way naive UI code does.
The thread: this already has three other names
The 65-comment thread didn't dispute that Incremental works. It argued about how many times this exact graph has already been built somewhere else. An engineer at Notion laid out the closest living relative:
"This style of reactive programming is quite popular in JavaScript UI frameworks these days under the moniker 'signals' … I believe SolidJS2 uses a height-based algorithm similar to Incremental." — an engineer building Notion's product
He pointed to a TC39 proposal standardizing signals, implementations across Vue, SolidJS, Svelte, Ember and Angular, Mobx and Jotai for React, and Rust's Salsa, the incremental engine inside rust-analyzer.
A different voice went further back than any web framework:
"Goldman took the same approach with instrument pricing ~30 years ago. I recall long discussions about 'Node Purpling' in my ~13 year tenure there." — a developer who spent 13 years at Goldman Sachs
Not everyone was convinced the pattern deserves the name recognition. A quant who'd solved the same problem before OCaml entered the picture, and questioned the language choice on the way out:
"I have built something similar like this for my fund 7 years ago. We were doing parametric optimization on large computational graphs. … my understanding is introspection is kind of a weak spot for the language." — a quant who built a similar graph for his own fund
A developer who solves the same problem daily with C# events and data binding asked the blunter version of the same question: what does a dependency graph in OCaml buy you that one in any other language doesn't.
One idea, rediscovered wherever recomputing everything got too slow
"Over at Feldera, we focus on IVM for SQL, but incremental computing problems show up far and wide: UIs, spreadsheets, control planes, compilers and more." — an engineer at Feldera
Stack the thread up: a Goldman derivatives desk, a hedge fund's risk models, five JavaScript frameworks, a Rust compiler cache, and now a SQL engine. None of them borrowed the idea from Jane Street. Each one hit the same wall on its own and built the same fix. What actually distinguishes Incremental isn't the algorithm behind it, it's that Jane Street is the one that wrote the internal version down, gave it a name, and put it on GitHub instead of leaving it to live quietly inside a trading desk.
Get breakdowns like this every day
The top Hacker News stories, unpacked — by email, Telegram, or RSS.
Oracle's Credit Rating Is Two Notches Too Low for Its $7 Billion Wisconsin Bill
We Energies' tariff for its biggest customers is blunt: any data-center developer rated below single-A-minus by S&P has to post collateral, in cash or a letter of credit. Oracle carries a BBB rating, just cut a notch further to BBB-, so Wisconsin regulators are holding the company to $7 billion in security for a data center it hasn't finished building.