Skip to content

v0.6.0

Compare
Choose a tag to compare
@tokahuke tokahuke released this 12 Mar 01:57
· 36 commits to master since this release

Oh, this is a big one! Expect incompatibility issues with this version but, if you are using
older versions, you are encouraged to try this one. It comes with important bug fixes.

So, here is what's new, folks:

  • Changed in-disk format again. This time, things are woefully incompatible. Don't use
    a <0.5.1 queue with 0.6.0. You will fail miserably. The difference that breaks
    compatibility is one extra parity bit flag in the item header. Before 0.6.0, it was
    used to ensure "legacy mode", where no parity checking took place. Now, it is a parity
    bit all on itself. This leads to much more robust error detection (up to 2bits,
    guaranteed, but you can get lucky with more!).
  • Now you can control the sender more finely with SenderBuilder. This includes
    chosing a segment size that fits your needs and chosing the "maximum size" for the
    queue.
  • And yes, now you can control maximum queue size so that yaque doesn't blow up your
    hard drive. This means that some major API changes took place:
    • Sender::send becomes Sender::try_send and returns a TrySendError. The same
      thing happens to Sender::send_batch.
    • A new method called Sender::send is created that works like good old
      Sender::send, except that it is async and .awaits for the queue to shrink
      below the maximum size. The same thing happens to Sender::send_batch.
  • You can also just try to receive items, without the need to .await anything. For
    each fo the receiving methods recv, recv_batch and recv_until you now have the
    try versions: try_recv, try_recv_batch, try_recv_until.
  • Solved a bug regarding the rollback of batch transactions when crossing over a segment.
    Older versions will do a complete mess out of this. The side effect: commit now returns
    a Result, which has to be treated.