bytestring-typenats VS bytestring

Compare bytestring-typenats vs bytestring and see what are their differences.


Haskell ByteStrings annotated with type-level naturals for lengths (by tsuraan)


An efficient compact, immutable byte string type (both strict and lazy) suitable for binary or 8-bit character data. (by haskell)
Our great sponsors
  • OPS - Build and Run Open Source Unikernels
  • SonarLint - Deliver Cleaner and Safer Code - Right in Your IDE of Choice!
  • Scout APM - Less time debugging, more time building
bytestring-typenats bytestring
0 10
0 228
- 6.1%
0.0 7.7
about 5 years ago 3 days ago
Haskell Haskell
BSD 3-clause "New" or "Revised" License BSD 3-clause "New" or "Revised" License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of bytestring-typenats. We have used some of these posts to build our list of alternatives and similar projects.

We haven't tracked posts mentioning bytestring-typenats yet.
Tracking mentions began in Dec 2020.


Posts with mentions or reviews of bytestring. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-11-13.
  • Beginner level tutorial - bytestring
    1 project | | 17 Dec 2021
    I've opened so the situation can be improved. You're very welcome to chime in on the discussion or to contribute some of the missing documentation yourself! :)
  • bytestring-
    1 project | | 8 Dec 2021
    Highlights from the changelog:
  • [Haskell]
    1 project | | 28 Nov 2021
  • Dragging Haskell Kicking and Screaming into the Century of the Fruitbat :: Reasonably Polymorphic
    3 projects | | 13 Nov 2021
    Well, ByteString in particular should not have an IsString instance in a new report. That's pretty clear by : the concensus is that there is no good solution right now, but it should not have gotten an IsString instance in the first place. If a theoretical new Haskell Report 202x includes OverloadedStrings (as it should) to handle string literals analogously to numeric literals, I'd expect it to not give ByteString (which is really just a collection of octets) an IsString instance, with all it's issues and rattail due to the encoding question being implicitized.
  • How can Haskell programmers tolerate Space Leaks?
    5 projects | | 26 Sep 2021
    Standard streaming libraries. They are being written by people that make the effort to understand performance and I have a hope that they make sure their streams run in linear space under any optimizations. It is curious and unsettling that we have standard lazy text and byte streams at the same time — and the default lazy lists, of course. I have been doing some work on byte streams and what I found out is that there is no way to check that your folds are actually space constant even if the value in question is a primitive, like say a byte — thunks may explode and then collapse over the run time of a single computation, defying any effort at inspection.
  • Converting between ByteString and Word64?
    1 project | | 7 Jun 2021
    Anyway, because of the undesirable optimization, any code which allocates and then writes to a buffer should definitely not use accursedUnutterablePerformIO. This was the bug in the first and second, and last examples in accursedUnutterablePerformIO's "trail of destruction".
  • NorfairKing/haskell-dangerous-functions ; Call for contributions
    4 projects | | 29 Mar 2021
    Apparently it's not very optimized though, as you pointed out yourself:
  • Haskell ghost knowledge; difficult to access, not written down
    13 projects | | 24 Jan 2021
    If you need fast Double rendering you can get a significant improvement by using double-conversion or the Ryu branch of bytestring. Again, you'd expect that "how to show a floating-point number quickly" would be a solved problem, but it's not.
  • GHC 2021!
    3 projects | | 18 Jan 2021
    OverloadedStrings has a bad ByteString instance and should indeed be avoided:
  • Artyom's Haskell toolbox — a long list of tools/libraries I use
    5 projects | | 2 Jan 2021
    I'm trying to iron out API discrepancies between flavours of ByteString in, any help would be much appreciated.

What are some alternatives?

When comparing bytestring-typenats and bytestring you can also consider the following projects:

bytestring-read - fast ByteString to number converting library


bytestring-delta - Simple binary diff/patch library for C and Haskell

bytestring-tree-builder - A very efficient ByteString builder implementation based on the binary tree

bytestring-builder - The new bytestring builder, packaged outside of GHC

stringable - A Stringable type class, in the spirit of Foldable and Traversable

bsparse - bytestring parser

bytestring-arbitrary - Arbitrary instances for ByteString

bytestring-plain - Plain byte strings (`ForeignPtr`-less `ByteString`s)

cryptonite - lowlevel set of cryptographic primitives for haskell

pathological-bytestrings - Facilities for testing with ByteStrings