Recent submissions

Comment · 5 days ago
Haha, I thing "Bla" was probably one of my least successful designs! So elegant, but too weird? Anyway, glad you remember :)
Comment · 5 days ago
Comment · 6 days ago
Comment · 6 days ago
No, I don't see how that would be. It will map process address space to physical memory just like other programs. Physical memory is already not guaranteed to look anything like your process address space, and that is not a problem (for caches, or anything else).
Comment · 6 days ago
The runtime is not particularly complex, but making it run with no runtime would still take some doing :)

You'll have to explain what you mean exactly by "dynamically sized moves and struct members".

Comment · 6 days ago
Haha small world :)
Comment · 6 days ago
I guess Goose is closer to Rust and C/C++ in design, and removing it does introduce some parsing gotchas.

I guess people also differ by how much they are bothered by it :)

My other language, Lobster, has no semicolons at all :)

Comment · 6 days ago
The function values are just compile time, not runtime. It has great support for higher order functions and other functional patterns (map/filter etc)
Comment · 6 days ago
Sure, those cases could bite. I think all my benchmarks (and external benchmarks) are mostly single threaded.

Note that all this supposed copying overhead also has an upside: once the synchronisation has happened, every thread can now run at maximum speed doing single threaded memory allocation with no locking of any kind.

In C++, malloc/new in multithreaded programs needs to essentially go thru a mutex and can make allocation even more expensive than it already is. I am not sure if Rust does the same.

Since in Goose "allocation" is just a pointer bump, we cannot make that multi-threaded, hence the threading model followed from that.

And like a lot in Goose, you have to write your program to fit the language a bit. If you expect to do concurrency on top of a huge graph of constantly changing data that all threads must have immediate access to, it is probably not the language for you. But there are plenty of concurrency models that fit and are blazingly fast.

Comment · 6 days ago
Comment · 6 days ago
As I mention at the end of https://github.com/aardappel/goose/blob/master/README.md I essentially had it use a previous compiler of mine (Lobster) as a template.

Even if you don't have such an example, pick a project that you think has "good code" (even if it is not your own), point the LLM at it, tell it to have a deep read of the code, and come up with a very in-depth coding guideline in a .md file with code patterns etc. Then put that .md in your new project and tell it to follow it.

Comment · 6 days ago
Thanks! There is certainly a big overlap with Rust in use cases.. I'll leave people to decide which they want to use :)
Comment · 6 days ago
No, not yet. You can also change that amount if you want, just 2GB is a pretty optimal default.

I am not sure what issues could be caused by the sparsity. Like you say, all that matters is that in physical memory, we are only using what is actually in use.

Thanks! :)

Comment · 6 days ago
Comment · 6 days ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton