wireform-core-0.2.0.0: wireform-core.cabal
cabal-version: 3.0
name: wireform-core
version: 0.2.0.0
synopsis: Shared FFI primitives for wireform format packages
description:
Cross-format SWAR / SIMD-accelerated primitives used by every
@wireform-*@ format package.
.
Modules:
.
* @Wireform.FFI@ -- C FFI surface: packed-varint pre-scan + decode,
SWAR UTF-8 validation, SIMD NUL / byte / ASCII / whitespace
scanners, SIMD JSON escape scanner, SIMD Iceberg bounds compare,
Arrow IPC buffer validation, endianness helpers.
* @Wireform.Encode.Direct@ -- shared direct-write encode buffer
used by the per-format encoders.
* @Wireform.Hash@ -- SIMD-accelerated hashing helpers.
.
Pulls in C sources (@cbits\/fast_decode.c@, @cbits\/fast_scan.c@,
@cbits\/wireform_hash_simd.c@) and the vendored @simde@ headers.
Contains no format-specific code.
homepage: https://github.com/iand675/wireform-
bug-reports: https://github.com/iand675/wireform-/issues
license: BSD-3-Clause
license-file: LICENSE
author: Ian Duncan
maintainer: ian@iankduncan.com
copyright: 2026 Ian Duncan
category: Data, Codec, FFI
build-type: Simple
tested-with: GHC == 9.6.4, GHC == 9.8.4
extra-source-files:
cbits/*.c
include/**/*.h
extra-doc-files:
CHANGELOG.md
README.md
source-repository head
type: git
location: https://github.com/iand675/wireform-
common defaults
default-language: GHC2021
ghc-options:
-Wall
-Wcompat
-Widentities
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wpartial-fields
-Wredundant-constraints
-O2
default-extensions:
StrictData
DerivingStrategies
DeriveGeneric
DeriveAnyClass
OverloadedStrings
LambdaCase
BlockArguments
library
import: defaults
hs-source-dirs: src
exposed-modules:
-- Existing builder modules
Wireform.Builder
Wireform.Builder.FastBuilder
Wireform.Builder.Internal.Prim
Wireform.Builder.Unsafe
Wireform.FFI
Wireform.Encode.Direct
Wireform.Hash
Wireform.Base64
-- Magic ring
Wireform.Ring
Wireform.Ring.Internal
Wireform.Ring.Pool
-- Transport abstraction (symmetric send / receive)
Wireform.Transport
Wireform.Transport.Receive
Wireform.Transport.Send
Wireform.Transport.Config
Wireform.Transport.Capabilities
-- Parser
Wireform.Parser
Wireform.Parser.Internal
Wireform.Parser.Stateful
Wireform.Parser.Switch
Wireform.Parser.Position
Wireform.Parser.Mark
Wireform.Parser.Error
-- Driver
Wireform.Parser.Driver
-- External-parser adapter
Wireform.Parser.Adapter
c-sources: cbits/fast_decode.c
cbits/fast_scan.c
cbits/wireform_hash_simd.c
cbits/base64.c
cbits/fast_rng.c
include-dirs: include/simde
include
cc-options: -O3
if os(linux)
c-sources: cbits/magic_ring_linux.c
if os(darwin) || os(freebsd) || os(netbsd) || os(openbsd)
c-sources: cbits/magic_ring_posix.c
if os(windows)
c-sources: cbits/magic_ring_windows.c
extra-libraries: kernel32
build-depends:
base >= 4.18 && < 5,
bytestring >= 0.11 && < 0.13,
containers,
ghc-prim,
template-haskell,
text >= 2.0 && < 2.2,
vector >= 0.13 && < 0.14
test-suite wireform-core-test
import: defaults
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
other-modules:
Wireform.Ring.Test
Wireform.Parser.Test
Wireform.Transport.SendTest
Wireform.Base64.Test
build-depends:
base,
bytestring,
wireform-core,
sydtest,
QuickCheck
benchmark parser-bench
import: defaults
type: exitcode-stdio-1.0
hs-source-dirs: bench
main-is: ParserBench.hs
other-modules:
Common
WFBasic
FPBasic
ghc-options: -O2 -rtsopts -threaded
build-depends:
base,
bytestring,
wireform-core,
flatparse >= 0.5 && < 0.6,
criterion >= 1.5 && < 1.7
benchmark send-builder-bench
import: defaults
type: exitcode-stdio-1.0
hs-source-dirs: bench
main-is: SendBuilderBench.hs
ghc-options: -O2 -rtsopts -threaded
build-depends:
base,
bytestring,
wireform-core,
criterion >= 1.5 && < 1.7