‹ BackHN Continuity

Thread

What Zig felt like, coming from Rust

282 points · 351 comments · ksec

  1. Panzerschrek · · focus · HN ↗
    > Rust: Drop runs automatically at scope end, so this specific bug simply doesn’t exist.

    That's why having no auto-destructors is a dead-end. This is the greatest mistake of such languages like Zig or Odin.

    1. delamon · · focus · HN ↗
      They don't play nicely with arena allocators. And arenas is what you reach for if you have clear lifetime bounds: e.g. a single request with arena never de-allocates individual objects, nukes arena when done. That gives you an easy verifiable protection against leaks, data (and cache) locality and deallocation that cost zero cpu cycles.
      1. tcfhgj · · focus · HN ↗
        Why not though?

        Have a boxed object have implemented drop, then when the box leaves some scope the Box will clean up it's stuff (drop implementation if there is any) and deallocate it's memory using the allocator (which the arena will treat as noop).

        1. delamon · · focus · HN ↗
          Yes, that would work. But you would need to carry pointer to allocator inside box and it is extra code to run for every object.
          1. tcfhgj · · focus · HN ↗
            extra code meaning the drop implementation or something else?
            1. delamon · · focus · HN ↗
              Yes, I mean the code in the drop implementation.
              1. tcfhgj · · focus · HN ↗
                it isn't really overhead, assuming you don't forget defer ... accidentally
Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.