packages feed

wireform-core-0.1.0.0: README.md

# wireform-core

[![BSD-3-Clause](https://img.shields.io/badge/license-BSD--3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)


> [!CAUTION]
> wireform is in heavy development and has not been published to Hackage yet. APIs may change.

Shared SWAR / SIMD-accelerated primitives used by every
[`wireform-*`][wireform] format package.  Format-agnostic; the C
sources live in `cbits/` and the vendored [simde][simde] headers in
`include/simde/`.

[wireform]: https://github.com/iand675/wireform-
[simde]: https://github.com/simd-everywhere/simde

## What's in here

| Module                      | Role                                                              |
|-----------------------------|-------------------------------------------------------------------|
| `Wireform.Builder`          | High-performance byte builder (vendored fast-builder engine).     |
| `Wireform.Builder.FastBuilder` | Builder internals: `DataSink`, `StreamSink`, `BuildM`, etc.    |
| `Wireform.FFI`              | C FFI surface (varints, UTF-8 / ASCII / NUL / JSON scanners, …). |
| `Wireform.Encode.Direct`    | Shared direct-write encode buffer.                                |
| `Wireform.Hash`             | SIMD-accelerated hashing helpers.                                 |

### Builder

`Wireform.Builder` is the shared byte builder used by all wireform
format packages. It supports O(1) concatenation, direct `Handle`
output without intermediate `ByteString` allocation, and streaming
transforms (compression, encryption) that process chunks as the
builder produces them.

Based on [fast-builder](https://github.com/takano-akio/fast-builder)
by Takano Akio (public domain).

This package is intentionally small; it exists so the per-format
packages can share the builder engine and the hottest C kernels
(e.g. `validateUtf8SWAR`, `countPackedVarints`, `findByte`) without
duplicating the `__attribute__((target(...)))` / `simde-features.h`
plumbing.

## Performance tip

Compiling with `-fllvm` alongside `-O2` typically yields **20–30% throughput
gains** on the encode/decode hot paths. LLVM produces better instruction
scheduling and loop vectorisation for the unboxed arithmetic in `Wireform.FFI`
and `Wireform.Encode.Direct`.

```
-- in your package's cabal file, or in cabal.project.local:
package wireform-core
  ghc-options: -fllvm
```

## License

BSD-3-Clause.  Vendored `simde` headers carry their own MIT license
under `include/simde/simde/COPYING` and friends.