package bytesrw

  1. Overview
  2. Docs

v0.4.1 2026-09-12 Zagreb

  • Add Bytes.Writer.make' which allows to access the writer in the write function.
  • Fix Bytesrw_fmt.Slice.pp' ~head:true, the ellipsis could be missing on truncated output. Thanks to Anil Madhavapeddy for the report.
  • Fix Bytes.Slice.of_bigbytes_or_eod on empty ranges. It raised Invalid_argument instead of returning eod. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Bytes.Reader.empty ignoring its pos and slice_length optional argument. Indirectly affected the result of Bytes.Reader.{of_bytes,of_string,of_slice,sub} when those would return an empty stream reader. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Bytes.Writer.limit filter raising Invalid_argument instead of a Stream.Limit error if the last write is exactly in the limit but the next one blows it (#15). Thanks to Vladimir N. Silyaev and Anil Madhavapeddy for the report and the fix.
  • Fix Bytes.Writer.limit resulting's writer Writer.pos final value. Cap it at what is supposed to be seen by the limit. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Bytesrw_zstd.decompress_writes position error reporting. The reported positions were in the decompressed stream rather than in the compressed stream.
  • Fix Bytesrw_sysrandom potential unwarranted panics on Linux due to short getrandom results or EINTR. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Bytesrw_xxhash.Xxhash_128.update using Xxhash_64.update. This doesn't change previously generated hashes as libxxahsh 0.8.x use the same implementation for both. Thanks to Anil Madhavapeddy for the report and the fix.

Bytesrw_crypto

  • Add Psa.Alg.is_tls12_psk_to_ms wrongly assumed not to be in TF-PSA-Crypto due to a typo. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix C binding to Psa.Alg.is_rsa_oaep and Psa.Mac.max_size, they were returning garbage. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Key_agreement.raw_output_size returning garbage due to a Val_long used instead of Long_val. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Key_lifetime.from_persistaence_and_location, the components were combined with logand instead of logor. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Aead.decrypt stub in bytecode, it was calling the encrypt stub. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Key_type.is_{public_key,key_pair}. They were implemented as is_assymetric. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Status.message have a user friendly message for Error.{insufficient_entropy,invalid_padding}. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Alg.pp, SHA3-512 was printed as SHA3-256. to Anil Madhavapeddy for the report and the fix.
  • Fix Psa.Key_type.pp DH key-pairs where printed as an unknown key type. Thanks to Anil Madhavapeddy for the report and the fix.
  • Rename inexisting name Psa.Alg.cbc to Psa.Alg.cmac. Thanks to Anil Madhavapeddy for the report and the fix.

Bytesrw_tls

  • Fix Bytesrw_tls reader and writer, reading and writing beyond slice lengths. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Bytesrw_tls.X509_certchain.{self_signed,ca_signed} memory leak. Thanks to Anil Madhavapeddy for the report and the fix.
  • Fix Bytesrw_tls.X509_certchain.Private_key.write_pem_file. The C function handling the write was not zeroing a temporary stack allocated buffer holding the private key. Thanks to Anil Madhavapeddy for the report.

Bytesrw_zlib

  • Improve Bytesrw_zlib error reporting. Thanks to Anil Madhavapeddy for the fix.
  • Fix Bytesrw_zlib.{Deflate,Zlib,Ggzip}.decompress_writes position error reporting. The reported positions were in the decompressed stream rather than in the compressed stream. Thanks to Anil Madhavapeddy for the report.
  • Fix Bytesrw_zlib.Gzip.decompress_writes accepting a truncated last member intead of erroring. Thanks to Anil Madhavapeddy for the report and the fix.

v0.4.0 2026-08-22 Zagreb

  • Add Bytes.Writer.writes_to_string
  • Add Bytes.Slice.{take,drop}_first_or_eod (#11).
  • Deprecate Bytes.Slice.{take,drop,break} in favor of Bytes.Slice.{take_first,drop_first,cut_first} to align on the stdlib's new String terminology (#11).
  • Fix Bytes.Slice.compare. The last byte of equal length slices was not compared (#14). Thanks to Anil Madhavapeddy for the report.
  • Fix Bytes.Reader.of_slice when the given slice does not start at 0 (#13). Thanks to Thomas Gazagnaire for report.
  • Bytesrw_sysrandom: fix headers for musl libc (alpine) (#7)

v0.3.0 2025-11-04 Zagreb

  • Add the Bytesrw_sysrandom module for operating system provided cryptographically secure pseudorandom byte streams and an entropy primitive.
  • Add the optional Bytesrw_crypto.Psa module for low-level cryptographic operations on byte slices. These are thin and safe bindings to the PSA Crypto API specification currently provided by the TF-PSA-Crypto C library distributed with Mbed TLS.
  • Add the optional Bytesrw_crypto module for higher-level cryptographic operations implemented over Bytesrw_crypto.Psa. Mostly hashing for now. Use this if you need SHA-3 hashes.
  • Add the optional Bytesrw_tls a module for TLS encrypted streams and the needed X.509 certificate management (including system lookups for trusted CAs). The backend is provided by the Mbed TLS C library.
  • Add Bytesrw_unix.bytes_writer_of_socket_fd which shutdowns the fd in the send direction when the end of stream is written.
  • Add Bytes.Slice.last.
  • Review Int_val vs Long_val in C bindings. Affects Bytesrw_blake3, Bytesrw_md, Bytesrw_xxh, Bytesrw_zlib, Bytesrw_zstd

v0.2.0 2025-07-25 Zagreb

  • Fix Bytesrw_xxhash.Xxh64.{to_hex,pp}. Leading zeros were not being printed (#5).
  • Change unuseful signature of Slice.break: do not return None if any of Slice.take or Slice.drop does. Simply return the result of both operations.
  • Fix wrong bound checks in Slice.{sub,make}[_or_eod]. The functions now behave like Bytes.sub as far as indexing is allowed. Thanks to Adrián Montesinos González for the report and suggesting the fix (#4).
  • bytesrw.* libraries are made to export bytesrw.

v0.1.0 2024-11-28 Zagreb

First release.

Supported by a grant from the OCaml Software Foundation.