diff --git a/LICENSE b/LICENSE index 7fcafda..650bca5 100644 --- a/LICENSE +++ b/LICENSE @@ -175,7 +175,7 @@ END OF TERMS AND CONDITIONS - Copyright 2026 Infalligence Labs + Copyright 2026 Infalligence Labs LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index f3bde55..f633b77 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # LinearPipe.Net +[![CI](https://github.com/jrconradt/LinearPipe.Net/actions/workflows/ci.yml/badge.svg)](https://github.com/jrconradt/LinearPipe.Net/actions/workflows/ci.yml) ![.NET](https://img.shields.io/badge/.NET-10-512BD4) ![Arch](https://img.shields.io/badge/Linux_x86--64-AVX--512F-orange) [![License](https://img.shields.io/badge/License-Apache_2.0-blue)](LICENSE) + A memory-mapped, chunk-disjoint linear data-plane pipeline. Source and sink are mmap'd; the chunk space is partitioned into disjoint spans across worker threads; each 64-byte chunk is loaded, run through a per-chunk SIMD transform, and written to the sink with a non-temporal store. Wait-freedom is structural — workers never share a chunk, so no locks or atomics are needed on the hot path. `new LinearPipeline(sourcePath, sinkPath, transform, consts, options)` then `Flow()`. The transform is an unmanaged function pointer — `delegate* unmanaged[Cdecl, SuppressGCTransition]` — called once per 64-byte chunk with (output, input, consts) pointers, so there is no managed dispatch on the hot path. `consts` points at baked constants the transform reads (may be null). `PipelineOptions` carries the worker count and per-worker core affinity — either a `AffinityBase`/`AffinityStride` arithmetic map or an explicit `AffinityCores` array for NUMA-local placement. @@ -16,3 +18,11 @@ Requires Linux on x86-64 with AVX512F. The sink uses `vmovntdq` non-temporal sto dotnet build LinearPipe.Net.slnx dotnet test LinearPipe.Net.slnx ``` + +## Status + +Active development; API unstable. Used as the streaming substrate behind [FWHT.Net](https://github.com/jrconradt/FWHT.Net)'s benchmark. Linux on x86-64 with AVX-512F is required — there is no fallback store path. + +## License + +Apache-2.0. Copyright 2026 Infalligence Labs LLC — see [LICENSE](LICENSE).