Skip to content

Releases: frames-sg/j2k

j2k 0.9.0

Choose a tag to compare

@jcwal1516 jcwal1516 released this 10 Aug 21:37

J2K 0.9.0 is the intentional breaking Metal API release.

Metal migration

  • Replaces metal-rs 0.33 with the pinned objc2 0.6.4, objc2-foundation 0.3.2, and objc2-metal 0.3.2 stack across j2k-metal-support, j2k-metal, j2k-jpeg-metal, and j2k-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.6 patch 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

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

Choose a tag to compare

@jcwal1516 jcwal1516 released this 07 Aug 03:53
  • 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_reduction and explicit Annex G normalization
    through decode_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.j2k before harness normalization: the
    production decoder and OpenJPEG match all 257 native components exactly.
  • Promotes only benchmark-qualified fixed Auto hybrid 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 published v0.8.0 release.

Evidence

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

Choose a tag to compare

@jcwal1516 jcwal1516 released this 31 Jul 20:04
53e0ad3

[0.8.0] - 2026-07-29

  • Breaking: decoding is strict by default in j2k and j2k-native. Callers
    that intentionally accept the documented JP2/JPH optional-metadata
    recoveries must select DecodeSettings::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::LenientDecodeMode is renamed to
    J2kDecodeWarning::LenientMetadataRecovery. New
    J2kView::parse_with_settings and J2kDecoder::new_with_settings
    constructors keep this policy local to one input.
  • Adds CudaLosslessEncoder, a reusable, exclusively borrowed lossless-encode
    façade with explicit Auto, 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 Auto lossless encode requests to the supported CPU path
    while preserving RequireDevice failure semantics.
  • Defines stable, experimental, implementation, and binary API tiers in the
    ordered release manifest, and makes the 0.7.50.8.0 semver transition
    fail closed with an exact source- and behavior-break ledger. A later 0.8.x
    candidate must use a published v0.8.0 baseline.
  • Fixes the published j2k-ml 0.7.5 cuda and metal clean-consumer
    failures. The adapters now use accelerator codec decode, explicit
    decoded-pixel readback, and ordinary Burn tensor upload through released
    dependency APIs.
  • Adds CudaUploadBurnDecoder and MetalUploadBurnDecoder as explicit aliases
    for staged host-memory upload behavior while preserving CudaBurnDecoder,
    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

Choose a tag to compare

@jcwal1516 jcwal1516 released this 14 Jul 12:43

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.0

Verified source: 11299327a0b17a808ca7bef3ae1e41385a895187.

j2k 0.6.0

Choose a tag to compare

@jcwal1516 jcwal1516 released this 20 Jun 23:21

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.0 releases were yanked after the j2k-* 0.6.0 crates were published.
  • The repository moved to frames-sg/j2k.

Migration

For normal users, depend on the facade crate:

cargo add j2k

If 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 -> j2k
  • signinum-core -> j2k-core
  • signinum-j2k-types -> j2k-types
  • signinum-j2k-native -> j2k-native
  • signinum-j2k-metal -> j2k-metal
  • signinum-j2k-cuda -> j2k-cuda
  • signinum-cuda-runtime -> j2k-cuda-runtime
  • signinum-metal-support -> j2k-metal-support
  • signinum-jpeg -> j2k-jpeg
  • signinum-jpeg-metal -> j2k-jpeg-metal
  • signinum-jpeg-cuda -> j2k-jpeg-cuda
  • signinum-transcode -> j2k-transcode
  • signinum-transcode-metal -> j2k-transcode-metal
  • signinum-transcode-cuda -> j2k-transcode-cuda
  • signinum-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

Choose a tag to compare

@jcwal1516 jcwal1516 released this 12 May 23:11

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

Choose a tag to compare

@jcwal1516 jcwal1516 released this 12 May 18:45

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.