Skip to content

v0.1007.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@mumbleskates mumbleskates released this 01 May 22:03
· 86 commits to bilrost since this release

v0.1007.0

Breaking changes

  • Tuple typed structs (with anonymous fields accessed like value.0) now start
    their field numbering from zero by default, matching the names of the fields.
  • Renamed the .reader() method on ReverseBuffer to .buf_reader() so it no
    longer conflicts with the bytes::Buf method.

New features

  • Added support for encoding usize and isize pointer-sized integers. They
    will still have different supported maximums on platforms with different sized
    values, but this still has completely reasonable failure modes.
  • Added support for deriving Message for enum types, which is implemented in
    terms of Oneof. The message implementations encode and decode exactly like a
    message which contains only that oneof; see the readme for more details.
  • Changed the Value type in bilrost-types to be a message-via-oneof in this
    way, making it much nicer to use without changing its meaning.
  • Added a .slices() method to ReverseBuffer and ReverseBufferReader which
    iterates its slices, useful for sending to write_vectored.

Fixes

  • Fixed some incorrect tests, including coverage of third-party inline vecs and
    packed/unpacked fixed-size arrays.

Cleanups

  • Cleaned up and re-added fuzzers! Fuzzers are available via both libfuzzer
    and afl; see FUZZING.md for usage details. These fuzzers
    would have caught the bug fixed in 0.1006.1 :)
  • Deduplicated and somewhat improved codegen for oneofs. All four kinds of oneof
    decoder function are now generated by the same code, which is a huge
    improvement over four independent generators.
  • Added tests for detailed errors attribution of decoding errors to the specific
    field that caused the problem.