byteslice: Slicing managed and unmanaged memory

[ bsd3, data, library ] [ Propose Tags ]

This library provides types that allow the user to talk about a slice of a ByteArray or a MutableByteArray. It also offers UnmanagedBytes, which is kind of like a slice into unmanaged memory. However, it is just an address and a length.


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
avoid-rawmemchr

Avoid using rawmemchr which is non-portable GNU libc only

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.1.4.0, 0.2.0.0, 0.2.1.0, 0.2.2.0, 0.2.3.0, 0.2.4.0, 0.2.5.0, 0.2.5.1, 0.2.5.2, 0.2.6.0, 0.2.7.0, 0.2.8.0, 0.2.9.0, 0.2.10.0, 0.2.11.0, 0.2.11.1, 0.2.12.0, 0.2.13.0, 0.2.13.1, 0.2.13.2 (info)
Change log CHANGELOG.md
Dependencies base (>=4.14 && <5), bytestring (>=0.10.8 && <0.13), natural-arithmetic (>=0.1.4), primitive (>=0.7.4 && <0.10), primitive-addr (>=0.1 && <0.2), primitive-unlifted (>=0.1.2 && <2.2), run-st (>=0.1.1 && <0.2), text (>=1.2.5), text-short (>=0.1.3 && <0.2), tuples (>=0.1 && <0.2), vector (>=0.12 && <0.14) [details]
License BSD-3-Clause
Copyright 2020 Andrew Martin
Author Andrew Martin
Maintainer amartin@layer3com.com
Category Data
Home page https://github.com/byteverse/byteslice
Bug tracker https://github.com/byteverse/byteslice/issues
Source repo head: git clone git://github.com/byteverse/byteslice.git
Uploaded by l3c_amartin at 2024-02-07T14:18:59Z
Distributions LTSHaskell:0.2.13.2, NixOS:0.2.13.2, Stackage:0.2.13.2
Reverse Dependencies 36 direct, 88 indirect [details]
Downloads 9417 total (103 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for byteslice-0.2.13.2

[back to package description]

byteslice

Purpose

Types for dealing with slices of 'ByteArray' and 'MutableByteArray'. These are never supposed to introduce overhead. Rather, they exist to clarify intent in type signatures.

receive ::
     Resource -- ^ Some scarce resource
  -> MutableByteArray RealWorld -- ^ Buffer
  -> Int -- ^ Offset
  -> Int -- ^ Length
  -> IO ()

With this library, we instead write

receive ::
     Resource -- ^ Some scarce resource
  -> MutableBytes RealWorld -- ^ Buffer
  -> IO ()

The combination of the worker-wrapper transformation and inlining means that we can expect these two to end up generating the same code in most situations.