What's a non-garbage-collected language? I gather that one means a language (such as FORTH) where there is only a stack, implying only one thread, that uses that stack.
Promise pipelining, as I understand it, is syntactic sugar for backgrounding a procedure that will error out and stop if any of the instructions within the procedure fail. Promise pipelining is great as it is vastly simpler to write such things using it than it was when one had to bury the code for what one wanted to do within some kind of thread launcher with explicit exception handling pillowing every line of code.
Of course they aren't compatible. To have threads, the inter-thread communications need to live somewhere that isn't going to get recycled because the stack unwinds.
On the other hand, you could do it by requiring all promise pipelines to complete before exiting the stack frame from which they are launched, at the cost of allocating sufficient space in said frame as working memory for the backgrounded thread(s).
But at that point we might be back in "garbage collected language" again, with the GC policy being "recycle all stack frames when done with them."
... a little research into what is meant by "non-GC'd languages" indicates that the term refers to not only languages in which the developers are responsible for the memory management but also languages where the compiler takes care of the details in a way that doesn't involve a background thread occasionally declaring a maintenance window so it can mark and sweep.
One can certainly do reference counting across multiple threads without needing maintenance windows, compiler-provided scaffolding or no. Just good mutexes around the reference counters.
What is meant by "non-GC'd languages" in the quote, and why does promise pipelining (please correct me if my understanding of it is flawed) require a mark-and-sweep process?
In my own project (which I'm now calling "op256" but might change again) designs, I've selected deletable backreferences and copy-on-write rather than marking and sweeping, which might make op256 a "non-GC'd" system. op256 is designed to handle robust concurrency, with storage resources freed when the last backreference goes away. This requires discipline regarding adding a reference to the resource before doing anything with the resource. And storage of lots and lots of ephemeral backreferences.
dln
-- "Plot complication appearing on sensors now"