16 comments

  • tom_ 5 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.

  • backlands 33 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 13 minutes ago

      You could write everything if you refactor to continuation passing style

      bobbydigitales 16 minutes ago

      What kinds of things do you think might not translate well?

        tombert 13 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 11 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

  • finn888 9 minutes ago

    Faster than C++ is always a head-turner. Curious what "magic" enables that with memory safety.

      wmf 2 minutes ago

      Usually strict aliasing.

  • webprofusion 5 minutes ago

    I'm always fuzzy on this, so 116% faster or 16% faster? The benchmarks suggest 16%.

      tom_ a minute 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 a minute 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 30 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 44 minutes ago

    What does Goose change about memory management ?

      zamalek a minute ago

      If I am reading it correctly, the compiler creates N bump allocators per function - where N is (I'm guessing at this point) determined by liveness or similar.

      kenferry 25 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 a minute 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?