Comment by BigJono

15 hours ago

I'm guessing it's aimed at game development since Vulkan has a similar pattern in every function call (although optional, the driver does it's own allocation if you pass null).

That's a pretty heavyweight pattern. Wouldn't dynamic scope be better?

  • As another commenter wrote "how do you allocate memory without an allocator?"

    Even `malloc` has overhead.

    > Wouldn't dynamic scope be better?

    Dynamic scope would likely be heavier than what Odin has, since it'd require the language itself to keep track of this - and to an extent Odin does do this already with `context.allocator`, it just provides an escape hatch when you need something allocated in a specific way.

    Then again, Odin is not a high level scripting language like Python or JavaScript - even the most bloated abstractions in Odin will run like smooth butter compared to those languages. When comparing to C/Rust/Zig, yeah fair, we'll need to bring out the benchmarks.

    • > and to an extent Odin does do this already with `context.allocator`

      It has a temporary allocator as well, which could track memory leaks. Not so much anymore though, IIRC.

      > As another commenter wrote "how do you allocate memory without an allocator?

      I would like to point out that this is basic knowledge. At first I was wondering if I have gone insane and it really is not the case anymore or something.

      1 reply →

    • > As another commenter wrote "how do you allocate memory without an allocator?"

      You call these things something other than an "allocating" and "allocators". Seriously, few people would consider adding a value to a hashmap an intentionally allocational activity, but it is. Same with adding an element to a vector, or any of the dependent actions on it.

      Seriously

      1 reply →