6 comments

  • Aardappel 30 minutes ago
    Btw I made the language, AMA. repo: https://github.com/aardappel/goose
    • koolba 0 minutes ago
      What does this mean (from your link):

      > Nested data stays inline. 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. A record that is 160 bytes and an allocation in C++ is 29 bytes and none in Goose.

      I’m having trouble parsing that last sentence.

    • amelius 6 minutes ago
      Is this like forcing the escape analysis of the compiler to be perfect, by making it explicit in the programming language?

      I'm wondering what kind of architectural corners this forces the programmer into ... have you found any so far?

      • Aardappel 3 minutes ago
        Yes, the compiler guarantees references to data structures can't escape. I believe it does that "perfectly" :)

        It certainly requires the programmer to rethink how they structure their data, as you have to think of where it is going to be stored, and how to store it in a way such that it will have similar lifetimes to what it is stored with, to get the most out of the language.

    • AnEro 11 minutes ago
      You noted AI creating a large amount of this code base with yourself directing it. Do you have a process that keeps you sane while doing this over such a large codebase?(especially for a brand new concept and implementation) [Obviously congrats and can't wait to read through to have deeper questions!]
    • fancyfredbot 13 minutes ago
      What happens if the memory is freed in a different order to allocation? Does the language disallow that? Or does it get allowed but mean the stack can't shrink?

      How are you deciding how many stacks to use?

      • Aardappel 9 minutes ago
        The compiler automatically optimally allocates all arrays currently in scope that are able to grow to "stacks" (address spaced reserved areas).

        The programmer choose what to store where, so you typically store things in arrays by lifetime. Goose gives you many more tools to do that, it can store entire variable sized trees of an enum type in a single array.

        You try to avoid having to deallocate in mixed/random order, but if you absolutely must, you can turn arrays into pools, basically.

    • ksec 10 minutes ago
      First, Congrats on the release!

      Do you know if Goose is the first time something like this has been done?

      • Aardappel 5 minutes ago
        In this particular combination, most certainly.

        There is lots of prior art on the individual parts of the design, e.g. "regions" and various stack languages etc, see: https://github.com/aardappel/goose/blob/master/docs/design/p...

        Part of this is that 64-bit address spaces make this design practical, and almost all languages in use today were designed with the limitations of 32-bit in mind. Once you can assign arrays huge amounts of address space, you don't have to realloc, which gets you stable pointers, and a lot of the other Goose features.

    • vanderZwan 22 minutes ago
      If you had no other obligations and todos getting in the way, what's the first thing you'd rewrite in Goose yourself?

      (And why isn't it Amiga E?)

  • bobbydigitales 53 minutes ago
    "That looks really neat! The automatic analysis and use of multiple data stacks and resizable fields takes it from "lots of work can be done this way" to "basically everything can be".

    The relative references and built in binary structure validation also enable direct memory mapping of data structures and immediate use of network data. "Parsing" file and network data is often 100x slower than it needs to be." - John Carmack

  • AnEro 35 minutes ago
    Such a cool idea! I've been toying around making a few libraries to force languages to do that direct io zero-read mapping to data structures. Ofcourse this looks way better and infinity less hacky, but it is a fun and trippy experience to find someone working in the same direction as you independently.
  • geoffbp 29 minutes ago
    No relation to https://goose-docs.ai/ I guess?
  • mi_lk 45 minutes ago
    Obviously the guy is replying to something that you can't see without logging in twitter. And without context this means little