symbolize: Efficient global Symbol table, with Garbage Collection.
Symbols, also known as Atoms or Interned Strings, are a common technique to reduce memory usage and improve performance when using many small strings.
By storing a single copy of each encountered string in a global table and giving out indexes to that table, it is possible to compare strings for equality in constant time, instead of linear (in string size) time.
The main advantages of Symbolize over existing symbol table implementations are:
Garbage collection: Symbols which are no longer used are automatically cleaned up.
Symbols have a memory footprint of exactly 1Wordand are nicely unpacked by GHC.Support for any
Textualtype, includingString, (strict and lazy)Data.Text, (strict and lazy)Data.ByteStringetc.Thread-safe.
Calls to
lookupanduninternare free of atomic memory barriers (and never have to wait on a concurrent thread runningintern)Support for a maximum of 2^64 symbols at the same time (you'll probably run out of memory before that point).
Please see the full README below or on GitHub at https://github.com/Qqwy/haskell-symbolize#readme
[Skip to Readme]
Downloads
- symbolize-0.1.0.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.0.3, 1.0.0.4, 1.0.1.0, 1.0.2.0, 1.0.2.1, 1.0.2.2, 1.0.2.3, 1.0.2.4, 1.0.3.0, 1.0.3.1 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.7 && <5), bytestring (>=0.11.0 && <0.12), deepseq (>=1.4.0 && <1.5), hashable (>=1.4.0 && <1.5), text (>=2.0 && <2.2), text-display (>=0.0.5 && <0.1), text-short (>=0.1.0 && <0.2), unordered-containers (>=0.2.0 && <0.3) [details] |
| License | BSD-3-Clause |
| Copyright | 2023 Marten Wijnja |
| Author | Qqwy / Marten |
| Maintainer | [email protected] |
| Uploaded | by qqwy at 2023-11-24T20:06:14Z |
| Category | Data, Data Structures |
| Home page | https://github.com/Qqwy/haskell-symbolize#readme |
| Bug tracker | https://github.com/Qqwy/haskell-symbolize/issues |
| Source repo | head: git clone https://github.com/Qqwy/haskell-symbolize |
| Distributions | LTSHaskell:1.0.3.1, NixOS:1.0.3.1, Stackage:1.0.3.1 |
| Downloads | 650 total (47 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs available [build log] Last success reported on 2023-11-24 [all 1 reports] |