Repository navigation
v0.1.0
The first public release. OxideLake was developed privately from 2026-08-25 as
vyncint/oxidelake (now vyncint/oxidelake-old); this repository starts from
one commit carrying the whole tree, not from that history. What follows is what
that tree contains and what changed on the way over.
Changed
- Crates renamed
oxide-*→oxidelake-*.oxide-coreandoxide-api
were already taken on crates.io by unrelated projects, so nothing could have
published under the old names. Binary names are unchanged:oxide,
oxide-scheduler,oxide-worker. - GPU kernel sources moved into
oxidelake-device/kernels/. They were at
the repository root and reached byinclude_str!("../../../../kernels/…"),
outside the crate directory — a publishedoxidelake-devicewould not have
compiled, and no CI could see it because CI has the whole repository. The
install workflow now exists to catch exactly this class. - The specification is
docs/SPEC.md, reframed from the implementation
prompt it started as: the same normative content and section numbers that
source comments cite, without the prompt framing or the local path. - Every crate is publishable.
publish = falseis gone; the workspace
carries the crates.io metadata; the release pipeline publishes all nine in
dependency order through Trusted Publishing.
Added
- The vyncint contributor pattern: DCO sign-off and no-AI-attribution
enforced bycommit-policyon every commit, generatedAGENTS.mdand
CONTRIBUTING.md,CODEOWNERS, form-based issue templates. - A full release pipeline: tag-guarded, changelog-gated,
cargo-semver-checks,
ordered multi-crate publish, GitHub Release, static binaries for four
targets, and a fresh-machine install check. - CI shape: one job per concern, every action pinned to a commit SHA,
zizmorat pedantic, arequired-greenaggregate for branch protection, no
build cache. Thepredictandcudafeatures are linted on every run; the
PTY suite runs on macOS as well as Linux. predictSQL UDF — in-database inference over safetensors models via
oxmera, behind thepredictfeature (ADR-0015).
Fixed
predict's module documentation linked a private item, whichcargo doc --all-featuresrejects. Never seen before because no job built the feature
with docs — the gap the new CI closes.
Security
- CUDA aggregation kernel: the slot-claim spin-wait now reads through a
volatilepointer; the previous plain load could be hoisted into an infinite
loop (GPU hang). Compile-verified only — seeSTATUS.md. GpuFilterExecpredicates are capped at 64 comparison leaves so a plan
payload cannot drive the recursive evaluators arbitrarily deep.- The dashboard quotes table identifiers before using them in generated SQL.
TelemetryHubkeeps at most 4096 operator registrations (oldest evicted), so
long-lived sessions no longer grow without bound.cargo deny(advisories, licenses, bans, sources) runs in CI;SECURITY.md
documents the trust model.
Changed
- Operators upload only the columns a kernel reads; projected columns of types
the device cannot hold (Utf8, …) stay on the host and are gathered at the
compacted row ids. A string column in a projection no longer forces the
whole batch onto the CPU path. - Backends declare supported operations up front (
supports_predicate,
supports_hash_join,supports_aggregate) so unsupported work is never
uploaded. - Hash join build sides are hashed once (
JoinBuild) and uploaded once per
operator; probes gather only projected columns. - Column transfers are zero-copy where the transport allows (
Buffer-based
ColumnBytes; Metal downloads alias the sharedMTLBuffer). - Metal: cached compute pipelines, one command buffer per phase, pooled command
queues, command-buffer errors surfaced. - GPU-targeted sessions use 65 536-row batches.
oxide gen-datastreams chunks to the writer (bounded memory for any--rows).rust-versionis the lockfile's real floor (1.94.1) and is verified in CI.- Repository hygiene:
Makefilegate,deny.toml,rustfmt.toml,
clippy.toml,.editorconfig, contribution/security/conduct documents,
Dependabot, issue and PR templates.
Fixed
- STATUS.md over-claimed that the Metal conformance suite had executed on the
device; the fixtures had taken the CPU fallback. The suite now asserts device
execution through the operator transfer counters.