| ▲ | dataflow 2 hours ago | |
> I have never encountered a program that couldn't have memory be explicitly tied to lexical scope, but it can result in less efficient use of it in some cases. > Goose is honestly the most exciting language I've seen in quite some time. I took a look at its home page [1] and I immediately see red flags: - Over sixteen benchmarks Goose runs at 3.3x the speed of idiomatic C++, 1.16x hand-optimized C++ and 1.12x the best safe Rust, and uses 1.9x, 1.3x and 1.2x less memory (results). These gains come from Goose's data layouts and memory model. - push returns a reference to the new element, so a program can link elements while building the array. A vector<T> or Vec<T> may reallocate and cannot provide this guarantee. Stable references account for several benchmark gains. You're suggesting a performance loss (as expected), but they're claiming a (rather incredible) performance gain? And they're claiming their vector stable and doesn't reallocate, yet without a performance loss, which makes no sense... it's not a vector anymore. And if you want a non-vector then you can do that in C++ too. The whole LLM vibe doesn't help inspire confidence either, but even ignoring that, the technical claims themselves are incredible and bizarre, and I'm only a few paragraphs in. | ||
| ▲ | senderista 29 minutes ago | parent | next [-] | |
I just want to point out that the author of Goose has plenty of technical cred, having authored flatbuffers and lots of other cool stuff. | ||
| ▲ | packetlost an hour ago | parent | prev [-] | |
Goose is a weird language. It uses a pile of pre-allocated datastacks, enforces lexical lifetimes for all data, and has first-class syntactic support for capped, growable, and shrinkable arrays. It also spits out a pile of C that gets all the optimization benefits of <insert C compiler of choices>. Goose in particular excites me because I have done similar design work over the years. | ||