You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description="A newtype over 'Bool' with a better 'Vector' instance: 8x less memory, up to 3500x faster.\n\nThe <https://hackage.haskell.org/package/vector vector>\npackage represents unboxed arrays of 'Bool's\nspending 1 byte (8 bits) per boolean.\nThis library provides a newtype wrapper 'Bit' and a custom instance\nof an unboxed 'Vector', which packs bits densely,\nachieving an __8x smaller memory footprint.__\nThe performance stays mostly the same;\nthe most significant degradation happens for random writes\n(up to 10% slower).\nOn the other hand, for certain bulk bit operations\n'Vector' 'Bit' is up to 3500x faster than 'Vector' 'Bool'.\n\n=== Thread safety\n\n* \"Data.Bit\" is faster, but writes and flips are not thread-safe.\nThis is because naive updates are not atomic:\nthey read the whole word from memory,\nthen modify a bit, then write the whole word back.\nConcurrently modifying non-intersecting slices of the same underlying array\nmay also lead to unexpected results, since they can share a word in memory.\n* \"Data.Bit.ThreadSafe\" is slower (usually 10-20%),\nbut writes and flips are thread-safe.\nAdditionally, concurrently modifying non-intersecting slices of the same underlying array\nworks as expected. However, operations that affect multiple elements are not\nguaranteed to be atomic.\n\n=== Similar packages\n\n* <https://hackage.haskell.org/package/bv bv> and\n<https://hackage.haskell.org/package/bv-little bv-little>\ndo not offer mutable vectors.\n\n* <https://hackage.haskell.org/package/array array>\nis memory-efficient for 'Bool', but lacks\na handy 'Vector' interface and is not thread-safe.";
description="This package provides core types and functions to work with the @LogAction@ data type which is both simple and powerful.\n\n@\n__newtype__ LogAction m msg = LogAction\n\\ { unLogAction :: msg -> m ()\n\\ }\n@\n\nThe ideas behind this package are described in the following blog post:\n\n* [co-log: Composable Contravariant Combinatorial Comonadic Configurable Convenient Logging](https://kowainik.github.io/posts/2018-09-25-co-log)\n\nSee the following packages for different implementations based on @co-log-core@:\n\n* [co-log](http://hackage.haskell.org/package/co-log): taggless final implementations.\n* [co-log-polysemy](http://hackage.haskell.org/package/co-log-polysemy): extensible\neffects implementation based on @polysemy@.";
synopsis="Haskell version of the Construct library for easy specification of file formats";
22
+
description="A Haskell version of the <https://construct.readthedocs.io/en/latest/intro.html Construct> library for Python. A\nsuccinct file format specification provides both a parser and the serializer for the format.";
synopsis="Compatibility layer for Data.Array.Byte";
22
+
description="Compatibility layer for [Data.Array.Byte](https://hackage.haskell.org/package/base/docs/Data-Array-Byte.html), providing boxed wrappers for @ByteArray#@ and @MutableByteArray#@ and relevant instances for GHC < 9.4. Include it into your Cabal file:\n\n> build-depends: base\n> if impl(ghc < 9.4)\n> build-depends: data-array-byte\n\nand then @import Data.Array.Byte@ unconditionally.";
synopsis="Stream directory entries in constant memory in vanilla IO";
22
+
description="Reading of directory contents in constant memory, i.e. in an iterative\nfashion without storing all directory elements in memory. From another\nperspective, this reading interface allows stopping at any point\nwithout loading every directory element.\n\nAlso defines general-purpose recursive directory traversals.\n\nBoth Windows and Unix systems are supported.";
0 commit comments