v0.6.0
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 with0.6.0
. You will fail miserably. The difference that breaks
compatibility is one extra parity bit flag in the item header. Before0.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
becomesSender::try_send
and returns aTrySendError
. The same
thing happens toSender::send_batch
.- A new method called
Sender::send
is created that works like good old
Sender::send
, except that it is async and.await
s for the queue to shrink
below the maximum size. The same thing happens toSender::send_batch
.
- You can also just try to receive items, without the need to
.await
anything. For
each fo the receiving methodsrecv
,recv_batch
andrecv_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
aResult
, which has to be treated.