Releases: frames-sg/j2k
Release list
j2k 0.9.0
J2K 0.9.0 is the intentional breaking Metal API release.
Metal migration
- Replaces
metal-rs 0.33with the pinnedobjc2 0.6.4,objc2-foundation 0.3.2, andobjc2-metal 0.3.2stack acrossj2k-metal-support,j2k-metal,j2k-jpeg-metal, andj2k-transcode-metal. - Expert Metal APIs now expose idiomatic retained and borrowed objc2 protocol objects directly. There is no metal-rs compatibility layer.
- Removes the legacy
block 0.1.6patch and its repository exceptions. Existing Metal kernels and observable codec behavior are preserved. - Centralizes retained object ownership, command submission, buffer access, shared events, timing, capture, and resident-image lifetimes in
j2k-metal-support.
Decoder and accelerator work
- Extends the exact ISO/IEC 15444-4:2024 / ITU-T T.803 v3 evidence set to 160 selected Part 1 and HTJ2K Part 15 cases on macOS arm64, Linux x86-64, and Windows x86-64.
- Adds the same selected points to CUDA and Metal adapter-IUT reports, with explicit per-stage routing disclosure.
- Adds versioned classic and HT Annex D/F encoder evidence and benchmark-qualified HTJ2K accelerator routing.
Evidence
- Exact release SHA:
b197f01ab4b9271f1cbc36921755a5b9d588bd5a - Hosted validation
- CUDA and Metal full validation
- Protected crates.io publication
- Published
j2k 0.9.0crate - Full changelog
Attached JSON and Markdown reports are covered by SHA256SUMS. CUDA and Metal results are adapter-IUT evidence and must be read with their disclosed stage routes; neither result is device-native. T.803 evidence does not establish robustness, security, adoption, or performance.
j2k 0.8.1
- Adds release-scoped ISO/IEC 15444-4:2024 / ITU-T T.803 v3 decoder evidence.
The CPU IUT is Profile-1 Cclass-1 compliant, Profile-1 Cclass-1HF compliant,
and Annex G JP2 reader compliant across all 90 selected cases with zero skips
on macOS arm64, Linux x86-64, and Windows x86-64. - Publishes separate CUDA and Metal adapter-IUT results for the same selected
codestream classes. Each headline is 0/90 device-native, 48/90 hybrid, and
42/90 CPU-routed; reports disclose parsing, Tier-1, dequantization, IDWT,
MCT, color/output, and transfer execution per case. - Adds exact codestream-resolution decoding through
decode_native_components_at_reductionand explicit Annex G normalization
throughdecode_srgb8, including Gray/RGB/RGBA layouts, component mapping,
palettes, CDEF ordering, subsampling, enumerated color spaces, and restricted
ICC conversion. - Fixes Part 1 decoder conformance defects in irreversible midpoint
reconstruction, ROI handling, packet/header parsing, progression and tile-part
handling, component transforms, and JP2 validation without vector-specific
exceptions or relaxed tolerances. - Adds deterministic Annex D/F encoder ICS matrices. The CPU matrix passes
28/28 cases and the CUDA and Metal matrices pass 25/25 through the pinned
T.804 OpenJPEG decoder; this is informative encoder evidence, not the formal
decoder claim. - Independently verifies
p0_13.j2kbefore harness normalization: the
production decoder and OpenJPEG match all 257 native components exactly. - Promotes only benchmark-qualified fixed
Autohybrid cells after identical
output, at least 10% median improvement, and non-overlapping Criterion 95%
confidence intervals. Explicit CUDA and Metal requests remain strict. - Makes tag publication verify all three CPU reports plus the CUDA and Metal
reports for the exact release SHA, and rotates the public API compatibility
baseline to the publishedv0.8.0release.
Evidence
- Exact candidate SHA:
f92646d0e6f0d0ef6c1e60b60beaad29da1afd3b - CPU Linux/macOS/Windows validation
- CUDA and Metal adapter validation
- Attached JSON and Markdown reports are covered by
SHA256SUMS.
T.803 conformance evidence does not establish robustness, security, adoption, or performance. CUDA and Metal results are adapter-IUT evidence and must be read with their disclosed stage routes; neither result is device-native.
j2k 0.8.0
[0.8.0] - 2026-07-29
- Breaking: decoding is strict by default in
j2kandj2k-native. Callers
that intentionally accept the documented JP2/JPH optional-metadata
recoveries must selectDecodeSettings::lenient()per job; raw codestream,
entropy, bounds, overflow, allocation, and resource-safety checks remain
strict in both modes. - Breaking: lenient decoding now warns only when a permitted recovery was
actually used.J2kDecodeWarning::LenientDecodeModeis renamed to
J2kDecodeWarning::LenientMetadataRecovery. New
J2kView::parse_with_settingsandJ2kDecoder::new_with_settings
constructors keep this policy local to one input. - Adds
CudaLosslessEncoder, a reusable, exclusively borrowed lossless-encode
façade with explicitAuto, CPU-only, and strict-CUDA routing. Its opaque
result reports requested and actual execution plus any unavailable-device or
incomplete-route fallback; execution errors are returned without a hidden
full CPU retry, and the encoder can be reused after failure. - Routes 25–38-bit
Autolossless encode requests to the supported CPU path
while preservingRequireDevicefailure semantics. - Defines stable, experimental, implementation, and binary API tiers in the
ordered release manifest, and makes the0.7.5→0.8.0semver transition
fail closed with an exact source- and behavior-break ledger. A later0.8.x
candidate must use a publishedv0.8.0baseline. - Fixes the published
j2k-ml 0.7.5cudaandmetalclean-consumer
failures. The adapters now use accelerator codec decode, explicit
decoded-pixel readback, and ordinary Burn tensor upload through released
dependency APIs. - Adds
CudaUploadBurnDecoderandMetalUploadBurnDecoderas explicit aliases
for staged host-memory upload behavior while preservingCudaBurnDecoder,
MetalBurnDecoder, and their inherent method paths unchanged. - Removes the private CubeCL and wgpu patch sources from the release graph.
This is not a direct-destination or zero-copy accelerator contract.
j2k 0.7.0
j2k 0.7.0
This release hardens the CPU, Metal, and CUDA codec paths around typed errors, fallible allocation, ownership, resource lifetime, and exact backend parity.
Highlights
- Source-preserving typed errors across native, facade, transcode, Metal, and CUDA boundaries.
- Transactional allocation accounting and actual-capacity limits for large host and device owners.
- Checked Metal and CUDA resource construction, retention, synchronization, and readback paths.
- Consolidated JPEG planning/cache ownership and hardened J2K/HTJ2K parsing, packetization, and encode/decode contracts.
- Exact CPU, Auto, Apple Silicon Metal, and NVIDIA CUDA validation on the release SHA.
- Release-critical changed-line coverage above 80% on both accelerator lanes.
Compatibility
0.7.0 intentionally contracts portions of the pre-1.0 0.6.2 API. See the full changelog and migration notes and reviewed public API diff.
cargo add j2k@0.7.0Verified source: 11299327a0b17a808ca7bef3ae1e41385a895187.
j2k 0.6.0
j2k 0.6.0
This release completes the workspace rename from signinum-* to j2k-* and publishes the replacement crate graph at 0.6.0.
What changed
- The user-facing crate is now
j2k. - Implementation crates now use the
j2k-*namespace. - The workspace version is now
0.6.0. - Old
signinum-* 0.5.0releases were yanked after thej2k-* 0.6.0crates were published. - The repository moved to
frames-sg/j2k.
Migration
For normal users, depend on the facade crate:
cargo add j2kIf you depended on implementation crates directly, rename package dependencies from signinum-* to the corresponding j2k-* crate and update exact internal pins to 0.6.0.
Common replacements:
signinum-j2k->j2ksigninum-core->j2k-coresigninum-j2k-types->j2k-typessigninum-j2k-native->j2k-nativesigninum-j2k-metal->j2k-metalsigninum-j2k-cuda->j2k-cudasigninum-cuda-runtime->j2k-cuda-runtimesigninum-metal-support->j2k-metal-supportsigninum-jpeg->j2k-jpegsigninum-jpeg-metal->j2k-jpeg-metalsigninum-jpeg-cuda->j2k-jpeg-cudasigninum-transcode->j2k-transcodesigninum-transcode-metal->j2k-transcode-metalsigninum-transcode-cuda->j2k-transcode-cudasigninum-cli->j2k-cli
Verification
Before publishing, the rename passed the workspace release gates, including check, test, fmt, clippy, docs, release integrity, unsafe audit, stable API regeneration, repo lint, packaging, and explicit GPU adapter checks.
j2k 0.4.1
Fixed
- Removed the unsupported Intel macOS CI gate from the public release matrix.
- Prevented CI tests from executing benchmark binaries as tests.
- Stabilized hosted macOS Metal CI by keeping J2K Metal runtime validation on self-hosted GPU runners.
Published crates: signinum, signinum-core, signinum-jpeg, signinum-j2k, signinum-j2k-native, signinum-tilecodec, signinum-cli, and the Metal/CUDA adapter crates.
j2k 0.4.0
Pre-1.0 public release line for the Signinum imaging codec stack.
- Moves the public release line to 0.4.0 across the workspace crates.
- Keeps internal Signinum dependency versions aligned on the corrected pre-1.0 line.
- Publishes updated crates.io metadata pointing at the frames-sg organization.
The earlier 1.x Signinum crate versions have been yanked so new users resolve to the 0.4.0 line.