CI / Build & test (Windows) (push) Failing after 7s
All crates take the oak-* kebab-case naming (oak-audio, oak-codec, oak-common, oak-core, oak-ffmpeg-link, oak-node, oak-otio, oak-plugin, oak-render, oak-storage, oak-task, oak-timeline, oak-undo), with the lib identifiers rewritten (oakrender:: -> oak_render::, oakcore_rs:: -> oak_core::, ...) across all 226 referencing files. The GUI application moves from the workspace root into crates/oak-app/: src/, build.rs (paths fixed for the new location) and tests/ travel with it, the root Cargo.toml becomes workspace-only ([workspace] + workspace.package + profiles), and the app package inherits the workspace version. The screenshots example becomes a standalone crate examples/simple_player/ with its own Cargo.toml. Every crate now inherits the single workspace version (version.workspace = true), and the workflows' crate paths and the build docs follow the renames. Validated with a clean cargo check --workspace.
21 lines
1022 B
Markdown
21 lines
1022 B
Markdown
# oakcore-rs — Rust value-type foundation for the oak Rust modules
|
|
|
|
> Status: **declaration draft for review** (no implementation, not wired
|
|
> into any build). Companion to `crates/oaknode` and `crates/oakrender`.
|
|
|
|
Rust reimplementation of the oakcore C++ value types that cross every
|
|
module boundary: `Rational`, `TimeRange`, `TimeRangeList`, pixel/sample
|
|
format enums. These are pure data types with value semantics — the one
|
|
place where duplicating the C++ layout discipline in plain Rust is both
|
|
safe and required (a Rust crate cannot hold C++ objects by value).
|
|
|
|
Rules:
|
|
|
|
- Bit-exact arithmetic compatibility with `olive::core::Rational`
|
|
(reduction, overflow behavior, comparison) — the golden rule is the
|
|
C++ test-suite semantics, not "ideal" rational math.
|
|
- `#[repr(C)]` only where a type crosses the C ABI; everything else is
|
|
plain Rust with `Copy + Clone + Eq + Hash`.
|
|
- No I/O, no allocation in arithmetic paths, no panics on degenerate
|
|
input (denominator zero follows the C++ sentinel semantics).
|