> Using Nim without the GC would be a very big benefit for the area of embedded > devices and microcontrollers, often with only a few 10 kB of ram and realtime > requirements.
I think we can all agree that the newruntime will have big benefits for this use case. But that is not what @RedFred was asking! @RedFred was asking what benefit this has for him! He is not an embedded devices developer, he is an application developer. Those are very different use cases with very different kinds of developers! That being said, I think the biggest benefit for someone like @RedFred is better multithreading. Both Python and Node.js went down a very similar path to what @RedFred proposes: They focused on a good single threaded GC. Both of those languages ended up having crazy hacks and ecosystem fractures once they started having to deal with multithreading. The GIL in Python is STILL a big problem, after years! They end up using hacks like `fork()` or farming threads out to C or Rust "native modules", with all the complexity that entails. The languages that have succeeded in making multithreaded application level code work at scale are Java (the JVM technically) and Go. Java spent years and gobs of money to make a GC that is thread safe, and is only recently really becoming any good at it, and the JVM still has many other issues. Much of this is due to other problems and legacy constraints, but still... The Go GC is similar to Nim in several ways, but Go cheats when it comes to threads! Go channels do a lot of copies and hook into the GC to manually do refs and unrefs. This solution is actually pretty damn good for application level code, but channels are not without their own limitations and bugs. I think @Dom96 is right. The newrutnime is a passion project for @Araq that a minority of us in the Nim community is very excited about. Though I have talked in other threads how I think the audience for this is bigger than people think it is (and is positioned to grow). But @Araq has not suddenly forgotten about the community. He is not going to suddenly alienate everyone! Nim has a track record of being very conservative and conscious to making changes that don't break compatibility. Nim has a history of doing experiments with memory management, and letting you choose what works best for you. What other language lets you choose between 6 different memory management options? And don't tell me these other MM options are different because they are "all transparent" and require no code changes. That is false. Look at Regions: Regions are very effective, but require code changes to work, and several projects actually use regions to great effect...
