While generated code was the core idea in Synthesis, by way of what Dr. Massalin calls 'quajects', in the case of 'folding' she was referring mainly to finding commonalities with which the calls could be simplified or even eliminated, analogous to the process of simplifying an algebraic equation. By simplifying an operation which would have required multiple layers and multiple system calls, before any of the calls are made, it could reduce the number of context switches needed, or at least that's the idea.eekee wrote:Ooh! I've added Synthesis to my list of things to study. The concept of pre-computing always puzzles me though. Is it like caching generated code?Schol-R-LEA wrote:Synthesis (which was sort of a hybrid kernel, but an unusual one) reportedly improved IPC dramatically, but did so with a very kernel unusual design combined with batching and 'folding' (pre-computing) both system calls and serial IPC messages. While it showed an improvement on two specific platforms for both IPC and system services compared to contemporary kernel designs, AFAICT no one has tested whether it would show the same improvement on present-day stock hardware.
It has been described as similar to currying, but without specifically being in a FP model.
The Synthesis papers can be found here (for an overview - note that these are from before Alexia Massalin transitioned, and thus have her deadname in the attribution), here (for the dissertation itself), and here (for a discussion on the I/O and threading performance), with the Sony workstation implementation discussed here. A somewhat easier to read HTML version of the primary dissertation can be found here.
Some additional discussion can be found on the old Portland Patterns Repository wiki. There's also this 2019 article suggesting that the design be revisited.