Monero Dog
· 1w
This is a consequence of suboptimal C code.
C is still *the* most robust language.
idk what is meant by "robust" simple, definitely. it's only a shade more complex than fortran and lisp. Rust is very robust. Zig is another language that lands pretty close to C for simplicity.
I'm in the late stages of developing a fork of Go that eliminates the GC, creates implicit memory ownership semantics that already are visible in the source code {}. it uses arenas instead of a heap and eliminates all shared memory, threads are exclusive owners of their own memory and have a ring buffer that allows them to share data between each other for concurrency. it will be very robust because you can't have any confusion about who owns memory or any handle, and you will be able to transplant code from a memory-based concurrency to a network based concurrency with only changes in the linkage between the elements of the system. and to that end, also, it is the standard pattern that the compiler derives a serialization codec for every type you create, so deep copy and network wire and database/disk encoding are all already done. other than that, it also uses most of the Go syntax, just the semantics change, and it eliminates all of the sync tree of packages and eliminates the distinction of array vs slice because unlike Go, it doesn't have a heap, and arena and stack memory layouts have no performance penalty, where heaps require management (to figure out if anyone still owns it, like a mortician running around checking if everyone still has a pulse).
yeah. it's pretty radical, but it means a language that can be used to build a kernel in a form that resembles the easy to read layout of Go with the same memory safety as Rust and a similar simplicity as C without the ugly problem of what to do about memory ownership when you run parallel threads.
❤️1