Skip to content
Snippets Groups Projects
  1. Mar 28, 2017
    • Stepan Koltsov's avatar
      Handle corner cases of Bytes::split_{off,to} (#87) · b78bb3ba
      Stepan Koltsov authored
      Before this commit `Bytes::split_{off,to}` always created a shallow copy if `self` is arc or vec.
      
      However, in certain cases `split_off` or `split_to` is called with `len` or `0` parameter. E. g. if you are reading a frame from buffered stream, it is likely that buffer contains exactly the frame size bytes, so `split_to` will be called with `len` param.
      
      Although, `split_off` and `split_to` functions are `O(1)`, shallow copy have downsides:
      
      * shallow copy on vector does malloc and atomic cmpxchg
      * after shallow copy, following operations (e. g. `drop`) on both `bytes` objects require atomics
      * memory will be probably released to the system later
      * `try_mut` will fail
      * [into_vec](https://github.com/carllerche/bytes/issues/86) will copy
      b78bb3ba
  2. Mar 21, 2017
    • Stepan Koltsov's avatar
      Reimplement fmt::Debug for Bytes and BytesMut (#84) · 613d4bd5
      Stepan Koltsov authored
      Standard `Debug` implementation for `[u8]` is comma separated list
      of numbers. Since large amount of byte strings are in fact ASCII
      strings or contain a lot of ASCII strings (e. g. HTTP), it is
      convenient to print strings as ASCII when possible.
      613d4bd5
  3. Mar 20, 2017
    • Carl Lerche's avatar
      Misc CI fixes (#89) · dc9c8e30
      Carl Lerche authored
      Limit the number of threads when using qemu to 1. Also, don't bother
      running the stress test as this will trigger qemu bugs. Finally, also
      make the stress test actually stress test.
      dc9c8e30
  4. Mar 19, 2017
  5. Mar 07, 2017
  6. Mar 03, 2017
    • Carl Lerche's avatar
      `BytesMut::reserve` should avoid small allocations · 933b8b26
      Carl Lerche authored
      This change tracks the original capacity requested when `BytesMut` is
      first created. This capacity is used when a `reserve` needs to allocate
      due to the current view being too small. The newly allocated buffer will
      be sized the same as the original allocation.
      933b8b26
  7. Mar 02, 2017
  8. Mar 01, 2017
  9. Feb 21, 2017
  10. Feb 20, 2017
    • Carl Lerche's avatar
      Rewrite `Bytes` / `BytesMut` core implementation · cf5a1bc4
      Carl Lerche authored
      The previous implementation didn't factor in a single `Bytes` handle
      being stored in an `Arc`. This new implementation correctly impelments
      both `Bytes` and `BytesMut` such that both are `Sync`.
      
      The rewrite also increases the number of bytes that can be stored
      inline.
      cf5a1bc4
  11. Feb 17, 2017
  12. Feb 16, 2017
  13. Feb 15, 2017
  14. Jan 26, 2017
  15. Nov 21, 2016
  16. Nov 02, 2016
    • Carl Lerche's avatar
      Restructure and trim down the library · 57e84f26
      Carl Lerche authored
      This commit is a significant overhaul of the library in an effort to head
      towards a stable API. The rope implementation as well as a number of buffer
      implementations have been removed from the library and will live at
      https://github.com/carllerche/bytes-more while they incubate.
      
      **Bytes / BytesMut**
      
      `Bytes` is now an atomic ref counted byte slice. As it is contigous, it offers
      a richer API than before.
      
      `BytesMut` is a mutable variant. It is safe by ensuring that it is the only
      handle to a given byte slice.
      
      **AppendBuf -> ByteBuf**
      
      `AppendBuf` has been replaced by `ByteBuf`. The API is not identical, but is
      close enough to be considered a suitable replacement.
      
      **Removed types**
      
      The following types have been removed in favor of living in bytes-more
      
      * RingBuf
      * BlockBuf
      * `Bytes` as a rope implementation
      * ReadExt
      * WriteExt
      57e84f26
Loading