Comment by allthetime

1 day ago

Zig is already great for this with ‘packed struct’ and arbitrary size ints. Allows for very clean protocol creation between systems with known properties. This is another great step in that direction.

you need different packed structs for little- and big-endian data. and casting with little-endian data is a nightmare - you need to reverse-cascade your struct fields to be in accordance with the little-endian bit-pattern. (or have a comptime function that does it for you, of course. but then you lose all declarations for the struct). what should be a simple writing down of a protocol is now a pedantic and error-prone ordeal.

  • Or you just go ahead and forget that big endian ever existed. It's not coming back.

    • it’s little-endian protocols that require that you juggle your struct fields.

      plus, there are still big-endian protocols that will stay for a long time. for example, MIDI clip files in MIDI 2.0 are big-endian.

  • This has been largely solved by everyone agreeing to use little endian. There aren't really use cases for wanting to convert between them.