9 comments

  • tom_ 14 minutes ago
    So much Claude text. I'm sure this is great (I did a bunch of stuff with/to aardappel's lobster, years ago, and it was pretty tidy, and quite easy to work with), but: Claude's writing makes my brain melt.

    It's a no from me. I'm sorry.

    • bobbydigitales 3 minutes ago
      Yeah it's very clear at the bottom that it's created by AI. I think this is an interesting case where someone with some great ideas they never got to can actually implement them. I personally hate the Claude style, but just looking at the samples was enough to get a feel for the language.
  • backlands 41 minutes ago
    > Goose looks familiar like C or Rust, and is built on one idea: there is no heap

    So it looks like it restricts the memory management to 100% scope based. I expect that makes a lot of designs for programs not translate to it as well as they fit in Rust or Java (for example). There are a bunch more constraining design choices they list further down:

    > - Nothing ever moves

    > - ... A string, an array of strings, a record with variable-size fields and an array of those records are each one contiguous block with no pointer in it

    I'll have to look a bit deeper to decide if it's feasible to write many things in this language.

    • skew-aberration 21 minutes ago
      You could write everything if you refactor to continuation passing style
    • bobbydigitales 25 minutes ago
      What kinds of things do you think might not translate well?
      • tombert 22 minutes ago
        Not the OP, but I'm thinking about like closures?

        Say you wanted to make a Node.js framework with callbacks that react to an event. The callback might be a closure that captured some of its surrounding variables. At that point, any of the captured variables are not trivially stack-allocated.

        You might be able to do something similar to what Rust does with moving though.

        • skew-aberration 19 minutes ago
          You could predefine your event handlers within your context, then call 'enter framework' and pass your event handlers as arguments. this is continuation passing style
  • respectattentio 3 minutes ago
    Great launch!

    I was thinking about making a language with same thoughts: Safer than C++ and faster than rust (and a 3rd thing: optimized for AI)

    and you actually did it for me. Hooray!

    Just the AI language optimization thing is missing..

  • jlkuester7 6 minutes ago
    All-stack-no-heap

    Isn't this kind of the point of Java's Project Valhalla or am I just confused???

  • finn888 18 minutes ago
    Faster than C++ is always a head-turner. Curious what "magic" enables that with memory safety.
    • wmf 10 minutes ago
      Usually strict aliasing.
  • webprofusion 14 minutes ago
    I'm always fuzzy on this, so 116% faster or 16% faster? The benchmarks suggest 16%.
    • tom_ 10 minutes ago
      Evergreen: https://randomascii.wordpress.com/2018/02/04/what-we-talk-ab...

      (Feels like it should probably say "1.16x as fast" or "1.16x the throughput" - or something like that.)

    • levkk 10 minutes ago
      116% would be 2x which will break the laws of physics. 16% is possible if you're not allocating heap memory, which I believe is the main selling point here.
  • dadoum 39 minutes ago
    I am researching a similar idea but which allowed moves if the compiler was able to fix the resulting structure, but mine will probably stay a small side project for a long time.
  • MiroslavPokorny 52 minutes ago
    What does Goose change about memory management ?
    • zamalek 10 minutes ago
      If I am reading it correctly, the compiler creates N bump allocators per function (or possibly globally) - where N is (I'm guessing at this point) determined by liveness or similar.
    • kenferry 34 minutes ago
      A lot - title could probably use editing. The language has no heap, only stack memory, so the only deallocation is returning from a call stack frame.
      • yndoendo 10 minutes ago
        How big is the stack? Too often large data will blow the top and destroy adjacent stacks in multi-thread environments. Are memory barrier fences used to check against overflow?
    • bobbydigitales 48 minutes ago
      [dead]
  • bobbydigitales 1 hour ago
    [dead]