Go Experiments Explained

16 pointsposted 4 days ago
by ingve

5 Comments

ktpsns

an hour ago

I find the arena experiment very interesting. If done right, whole programs can be structured as as a set of arenas. I've read some things on arenas here such as https://news.ycombinator.com/item?id=37670740

b33j0r

8 minutes ago

I am a low-level zig guy right now too. I have been around for a long time, and it’s funny to see arenas come back into vogue as a solution to nearly everything.

Arenas are great for avoiding allocations per tick/request/frame/layer. No symmetric free() to bracket lifetimes! They have a purpose, and we always knew that.

But by definition, your program is over-allocating as a tradeoff. Makes a ton of sense in certain use cases. However, we didn’t invent garbage collection and borrow-checking and realloc() just to publish papers ;)

Half of my time programming zig is spent considering allocation strategies. That’s a feature. “Where are the bytes?”

fredrikholm

42 minutes ago

Once allocators in general click, memory management in C becomes a total breeze.

Combined with typed fat pointers (slices and strings), typed hashmaps and stack-trace-assertions, C in general becomes a breeze. The rest is compiler flags.

Go solves this by being a better language out of the box, but with the Wirthian aspects removed they feel very similar out of the box. Perhaps not so surprising.

yjftsjthsd-h

2 hours ago

So, these are feature flags by any name, right?

hnlmorg

21 minutes ago

No. Feature flags are a mechanism for enabling some of the experiments. But what’s being discussed here are the features themselves.