Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

That's literally what "stackless" implies though. I don't know if it's so much of a catch as it is a difference between stackful and stackless routines.


No, not at all. Stackless coroutines only preserve a single call frame, while stackful coroutines [1] preserve the whole stack. For example python, C#, C++ coroutines are stackless, while lua and Go are stackful.

It is hardly a coroutine at all if no state, other than the instruction pointer, is preserved.

[1] See the lua coroutine papers where the nomenclature is introduced.


> That's literally what "stackless" implies though

You could have threads with enough memory for the base levels local variables. It would mean you wouldn't need global variables to keep state, but it would still be stackless as you can't pause execution within a function call.


>for the base levels local variables.

what does that even mean? Sure you could calculate what stacksize your exact programm would need at maximum, if you unroll everything, but you could not define a fixed "base level" of a stacksize for every single programm out there, could you?


> what does that even mean?

The topmost stack frame. That's what "stackless" generally implies: it doesn't preserve the stack itself, that doesn't mean it preserves nothing.

That's what you see with most async/await systems (as opposed to more integrated "lightweight thread" systems like Erlang or Go), yield points blow the stack (though it may be relinked for debugging purposes), but they don't break local variables.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: