Release notes

What changed in each Channel release, newest first, from the repository changelog.

This page summarizes each witwin-channel release, newest first. It follows CHANGELOG.md in the witwin-channel repository. Channel uses semantic versioning within the 0.x series, so a minor release can break the API. To upgrade, see Installation.

0.5.0 (2026-07-30)#

Current release. Requires witwin==0.4.0 and links RayD 0.8.0. The propagation consumer CONTRACT_VERSION is 6.

Breaking changes

  • RayD 0.8.0. Channel links the released RayD 0.8.0 source and validates its eight integration headers and source manifest. The RayD 0.7 include paths and source layout no longer work. This matters only for source builds.
  • Source amplitude in consumer results. ScalarTransport.coefficient and Complex3Transport.field now include sqrt(powers_w) of each row's transmitting endpoint. JonesTransport stays excitation-free. If your code multiplied by sqrt(powers_w) itself, stop doing so.
  • Stale replays refused. reevaluate raises when the world changed since the topology was discovered. A changed topology_version, material_version or assignment_version always raises; a changed geometry_version raises unless the request sets world_motion="fixed_winner_replay". Before, a stale replay returned the old answer without warning. See Replay a fixed topology.
  • Published AD capability matrix. consumer.capabilities() now states which inputs and outputs carry gradients, and component_ad_modes reports diffraction as "none" only, because the consumer cannot produce diffraction rows with AD. Inputs listed in primal_only_ad_inputs are refused before any native work, instead of raising inside backward(). Second-order AD is refused everywhere. PropagationGeometry.field_direction now carries a gradient for line-of-sight and reflection rows on the fixed-topology route; primal values are unchanged.

Added

  • World provenance. evaluate stamps a WorldProvenance onto each topology, and consumer.rediscovery_required(compiled, prepared) names the version domain that changed, using four host integer comparisons. CompiledScene.time_s records the snapshot time, for reporting only.
  • Time slots. FixedTopologyRequest.slot_count and consumer.replicate_over_slots replay one topology over many block-diagonal slots in one launch per bucket. consumer.evaluate_time_varying with a TimeVaryingRequest returns (S, K) views of delays, lengths, transport and validity. See the time-varying channel tutorial.
  • Wideband replay. FixedTopologyRequest.frequency_offsets_hz evaluates the frozen rows at several absolute frequencies. Results come as ScalarTransport.coefficient_offsets (K, F) and Complex3Transport.field_offsets (K, F, 3); a 0.0 offset reproduces the reference coefficient bit for bit. consumer.native_frequency_resolution_hz(f_ref) gives the smallest resolvable offset step, 8192 Hz at 77 GHz. Dispersive, rough or phase-screen scenes and unresolvable grids are refused before any native work.
  • AD diagnostics ad_companion_launches and ad_tape_bytes on both consumer routes.

Changed

  • The Path solver's phase_convention metadata now quotes the unit-excitation free-space amplitude, matching its coefficient_semantics.

Compare 0.4.0 to 0.5.0

0.4.0 (2026-07-23)#

Added

  • Native wheels for Windows and manylinux_2_28_x86_64, for CPython 3.11 and PyTorch 2.10.
  • Native CUDA code for SM70, SM75, SM80, SM86, SM87, SM89, SM90, SM100, SM101 and SM120, plus compute_120 PTX for newer GPUs. See GPU and native runtime.
  • Release-gated wheel builds on GitHub-hosted runners, with checks of the binary architectures and package layout.

Changed

  • Links the locked RayD 0.7.0 source at commit 49c58c4cb8212f6babb920cc88fb937509826cc5.
  • Faster hosted builds through grouped CUDA targets and compiler caching, with the same architecture coverage.
  • Native CI runs only on manual dispatch and on published GitHub releases.

Removed

  • The old self-hosted CI and release workflows.

0.4.0 on GitHub

Earlier releases#

Releases before 0.4.0, including 0.1.0 (GitHub release, 2026-06-25), have no changelog entries. Their API differs from the one on these pages: modules such as witwin.channel.core and types such as RadioMapResult no longer exist. Port such code to the solver modules described in Solvers and path types, in a fresh environment.