blaze-builder: Efficient buffered output.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

This library allows to efficiently serialize Haskell values to lazy bytestrings with a large average chunk size. The large average chunk size allows to make good use of cache prefetching in later processing steps (e.g. compression) and reduces the system call overhead when writing the resulting lazy bytestring to a file or sending it over the network.

This library was inspired by the module Data.Binary.Builder provided by the binary package. It was originally developed with the specific needs of the blaze-html package in mind. Since then it has been restructured to serve as a drop-in replacement for Data.Binary.Builder, which it improves upon both in speed as well as expressivity.


[Skip to Readme]

Properties

Versions 0.1, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.2.1.0, 0.2.1.1, 0.2.1.2, 0.2.1.3, 0.2.1.4, 0.3.0.0, 0.3.0.1, 0.3.0.2, 0.3.1.0, 0.3.1.1, 0.3.2.0, 0.3.3.0, 0.3.3.1, 0.3.3.2, 0.3.3.3, 0.3.3.4, 0.4.0.0, 0.4.0.1, 0.4.0.2, 0.4.1.0, 0.4.2.1, 0.4.2.2, 0.4.2.2
Change log CHANGES
Dependencies base (==4.*), bytestring (>=0.9 && <1.0), bytestring-builder, deepseq, ghc-prim, semigroups (>=0.16 && <0.20), text (>=0.10 && <1.3) [details]
License BSD-3-Clause
Copyright (c) 2010-2014 Simon Meier (c) 2010 Jasper Van der Jeugt (c) 2013-2015 Leon P Smith
Author Jasper Van der Jeugt, Simon Meier, Leon P Smith
Maintainer https://github.com/blaze-builder
Category Data
Home page https://github.com/blaze-builder/blaze-builder
Bug tracker https://github.com/blaze-builder/blaze-builder/issues
Source repo head: git clone https://github.com/blaze-builder/blaze-builder.git
Uploaded by AndreasAbel at 2021-10-18T21:38:42Z

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for blaze-builder-0.4.2.2

[back to package description]

Hackage version blaze-builder on Stackage Nightly Stackage LTS version Cabal build

blaze-builder

This library allows to efficiently serialize Haskell values to lazy bytestrings with a large average chunk size. The large average chunk size allows to make good use of cache prefetching in later processing steps (e.g. compression) and reduces the system call overhead when writing the resulting lazy bytestring to a file or sending it over the network.

This library was inspired by the module Data.Binary.Builder provided by the binary package. It was originally developed with the specific needs of the blaze-html package in mind. Since then it has been restructured to serve as a drop-in replacement for Data.Binary.Builder, which it improves upon both in speed as well as expressivity.

To see the improvements in speed, run the throughput benchmark, which measures serialization speeds for writing Word8, Word16, Word32 and Word64 in different endian formats and different chunk sizes, using the command

  make bench-throughput

or run the list serialization comparison benchmark

  make bench-blaze-vs-binary

Checkout the combinators in the module Blaze.ByteString.Builder.Write to see the improvements in expressivity. This module allows to incorporate efficient primitive buffer manipulations as parts of a builder. We use this facility in the blaze-html HTML templating library to allow for the efficient serialization of HTML escaped and UTF-8 encoded characters.