Zig 0.16.0 Release Notes

(ziglang.org)

111 pontos | por ska80 8 horas atrás

7 comentários

  • mihaelm
    7 horas atrás
    Obviously, I/O as an interface is the headliner here, but there are lots of other goodies to pay attention to, such as the "juicy main".

    Small integers auto coercing into floats is a nice gift to game devs. It's nice that game dev is acknowledged as one of the niches Zig can target as I believe it could really thrive there due to how easily it can integrate with C & C++. Or, rather, more easily than the alternatives.

  • xeubie
    7 horas atrás
    What a banger of a release. The new `Io` interface was a huge breaking change for my project, but I made the transition. Zig seems to be pulling the same trick it pulled with allocators: just make it an explicit value that you pass around. Explicit allocators felt obviously right in retrospect, and so far this feels obviously right too.
    • mihaelm
      6 horas atrás
      The approach feels like a natural extension of Zig's philosophy about explicitness around low-level operations (no hidden control flow, no hidden memory allocations, etc.). Your function can be blocking? Communicate that through the function signature! Very in style for the language.
  • sionisrecur
    7 horas atrás
    The "Juicy Main" looks like a very nice QoL feature. Gets rid of all the boilerplate for allocators and argv.
    • mihaelm
      7 horas atrás
      It's the dark horse of this release as CLI parsing can also be more easily built on top of it. There's a couple of proposals floating around now, so I hope we get something soon-ish (maybe in 0.18 since a short cyle is planned for 0.17).
    • portly
      5 horas atrás
      Do I get it right that this is everything you need for a typical CLI tool?
  • nesarkvechnep
    4 horas atrás
    Nice! I'm sad to see SegmentedList go. Also, I'm wondering if it's possible to use `recvmsg` and `sendmsg` backed by the new `Io` interface.
  • ksec
    1 hora atrás
    I/O, Linked, Incremental Compilation. Apart from 0.17 being a short release cycle. I wonder how many more releases before 1.0?

    Are we looking at 0.20, another one and half year of baking?

  • _bohm
    7 horas atrás
    I've been waiting eagerly for this release ever since the new Io interface was announced. Pumped to start working on some new projects with this!

    Love this line from the release notes:

    > Lo! Lest one learn a lone release lesson, let proclaim: "cancelation" should seriously only be spelt thusly (single "l"). Let not evil, godless liars lead afoul.

  • slopinthebag
    5 horas atrás
    Have they said how many breaking changes requiring a rewrite Zig will be going through before it stabilises?

    Also I thought Zig doesn't have interfaces....how does the IO one work?

    • badtuple
      4 horas atrás
      Interfaces can still be expressed using vtables. You just have to write the vtable yourself rather than have the language do it for you.

      Also, Zig's tagged unions (enums with payloads in Rust) are really ergonomic and often what you want instead of interfaces. Alot of languages that use interfaces simply don't expose a good way of doing it so everyone reaches for interfaces by default. But if you don't need an actual interface then this way you don't even have to pay the cost of runtime dynamic dispatch.

      • redrobein
        8 minutos atrás
        Are there any plans to add syntax sugar for interacting with vtables?
    • pjmlp
      4 horas atrás
      It has C style interfaces, meaning structs with function pointers.

      Which is basically how most device drivers in OSes that happen to be written in C, including UNIX flavours, work.