5 comments

  • nasretdinov1 hour ago
    I'm really looking forward to SIMD becoming standard in Go. It might sound very niche, however SIMD intrinsics (which is different from how they are available now, which is via non-inlinable assembly) allow to generate similar vector code to C intrinsics, with very little in terms of overhead due to bounds checking, etc. This allows to write programs that are highly optimised for modern CPU and get maybe 80% of performance compared to the same variant in C. This is much better than the current state where C typically outperforms Go by at least 2x/3x, and SIMD typically allows you to get 10x or more speedup already, which gives UNLIMITED POWER to Go when CPU performance is a bottleneck
  • jiehong1 hour ago
    Perhaps the Go community should take a look at JEP or PEP to better document features and their life cycles and statuses overall.
    • pjmlp20 minutes ago
      That would be asking too much, learning from older languages experience.
  • ktpsns2 hours ago
    I find the arena experiment very interesting. If done right, whole programs can be structured as as a set of arenas. I&#x27;ve read some things on arenas here such as <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=37670740">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=37670740</a>
    • b33j0r1 hour 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.<p>Arenas are great for avoiding allocations per tick&#x2F;request&#x2F;frame&#x2F;layer. No symmetric free() to bracket lifetimes! They have a purpose, and we always knew that.<p>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 ;)<p>Half of my time programming zig is spent considering allocation strategies. That’s a feature. “Where are the bytes?”
    • fredrikholm2 hours ago
      Once allocators in general click, memory management in C becomes a total breeze.<p>Combined with typed fat pointers (slices and strings), typed hashmaps and stack-trace-assertions, C in general becomes quite nice. The rest is compiler flags.<p>Go solves this by being a better language out of the box, but with the Wirthian aspects removed they feel very similar. Perhaps not so surprising.
  • verdverm27 minutes ago
    CUE, originally starting as a fork of Go, has the experiments capability too and even extended it to per-file scoping. This makes trying out changes like `try { a: b?.c }` in isolation really nice<p>Go remains my favorite language for the tooling alone (while not forgetting about so many other great features)
  • yjftsjthsd-h3 hours ago
    So, these are feature flags by any name, right?
    • hnlmorg1 hour ago
      No. Feature flags are a mechanism for enabling <i>some</i> of the experiments. But what’s being discussed here are the features themselves.
      • yjftsjthsd-h1 hour ago
        Hm, that&#x27;s interesting; chrome:&#x2F;&#x2F;flags does seem to be titled &quot;Experiments&quot;... After, of course, you type &quot;flags&quot; into the address bar to get there. I guess I can see a distinction there, but it&#x27;s pretty subtle.