logoalt Hacker News

gwbas1cyesterday at 11:08 PM1 replyview on HN

> I think it's possible to write a kernel with GC, and to still be judicious about memory usage with a GC language. ... but I will still afford that it is technically possible.

I need to split some hairs for a bit:

Do you mean what is colloquially referred to as "GC", as in the dotnet / Java / Javascript / golang "mark-and-sweep", fully-automatic style?

Or do you mean other automatic memory management systems, which some people technically define as GC, like automatic reference counting? (IE, they clean up memory immediately, and except for requiring some manual form of breaking cyclic loops, generally are fully automatic?)


Replies

asveikautoday at 1:22 AM

Given that we are talking about JavaScript, I meant the former.

The latter is pretty much the status quo in terms of the state of the art. Most kernels aren't built with automatic reference counting, reference counted objects are plentiful even if more manual, but the automatic part is trivial to add to a C++ code base using smart pointers for example, and things like rust or apple ARC can also do it.

I think the former (a "true" GC that can resolve cycles) could be done in a kernel, it's just not common.

I'm not well versed in this historical example, did the "lisp machine" not have a GC in its OS?