Changelog#

All notable changes to this project will be documented on this page.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning, with one slight but important difference:

  • before version 1.0.0, an increment in the MINOR version number indicates a breaking change, and an increment in the PATCH version number indicates either a new feature or a bug fix (see the v0.1.0 milestone);

  • after version 1.0.0, this project follows standard semantic versioning (see the v1.0.0 milestone).

Unreleased#

Added#

Chore#

  • Added tests for the improved Sionna-compatible XML scene parser using OSM building data, ensuring correct parsing of materials and colors (by @jeertmans, in PR #444).

0.8.1#

Changed#

Chore#

  • Replaced raw GitHub issue/PR URLs in documentation (Markdown, RST, and Python docstrings) with dedicated Sphinx roles (gh-pr, gh-issue, gh-user, ext-gh-issue) (by @copilot, in PR #437).

0.8.0#

Added#

Changed#

  • Changed default options for plotting with Plotly (aspectmode="data" and flatshading=True on meshes) so that Plotly is now a much better option for large 3D scenes. Edited the tutorial accordingly, showing the improved visualization and the importance of lighting (by @jeertmans, in PR #412).

  • TriangleMesh.at now raises a ValueError if the array index passed to at[...] is not at most one-dimensional. This is a breaking-change (by @copilot and @jeertmans, in PR #420).

Chore#

  • v0.8.0 changes are now displayed on the changelog page. Users looking for the latest released changes should look at the stable version of the documentation (by @jeertmans, in PR #391).

  • Renamed jaxtyped Pytest marker to require_typechecker (by @jeertmans, in PR #422).

  • Added require_no_typechecker Pytest marker to automatically skip tests that cannot work when type checking is enabled (by @jeertmans, in PR #422).

Fixed#

  • Fixed missing type annotations for assemble_paths in the documentation, caused by the @no_type_check decorator suppressing typing.get_type_hints() (by @jeertmans).

0.7.0#

Added#

Chore#

Fixed#

Removed#

  • Removed confidence attribute in Paths as it is now replaced by mask, possibly holding floating point values. This is a breaking-change (by @jeertmans, in PR #349).

  • Removed jnp.asarray field converters from all classes, as it would lead to confusing type hints mismatches between the annotations and the actual types accepted by the classes’ __init__ method. This is a breaking-change (by @jeertmans, in PR #383).

0.6.2#

Changed#

Chore#

  • Updated CI to fix builds on Windows, and also explicitly build free-threaded wheels (by @jeertmans, in PR #336).

0.6.1#

Chore#

  • Bumped minimum required JAX version to 0.7.2 as JAX 0.7.0 and 0.7.1 contained bugs (by @jeertmans, in PR #325).

  • Added Python 3.14 and 3.14t to the list of tested Python versions (by @jeertmans, in PR #323).

  • Update the macOS runners (by @jeertmans, in PR #323).

  • Updated PyPI’s Trove classifiers to list Python 3.14 and free-threaded Python (by @jeertmans, in PR #323).

0.6.0#

Added#

Changed#

Chore#

  • Rephrased the documentation of methods returning shallow copies to clarify that they return new instances, and do not necessarily copy inner arrays (by @jeertmans, in PR #307).

  • Fixed plotting issue in the coherence example notebook, where the scene in the second row was not plotted correctly, see below (by @jeertmans, in PR #312).

  • Added jaxtyped Pytest marker to automatically skip tests that require jaxtyping when it is disabled (by @jeertmans, in PR #321).

  • Bumped minimum required JAX version to 0.7.0 to use wrap_negative_indices=False with at (by @jeertmans, in PR #310).

  • Dropped Python 3.10 because we need JAX 0.7.0. This is a breaking-change (by @jeertmans, in PR #310).

Fixed#

  • Fixed the update of default values in context managers to actually merge the new values with the existing ones, instead of replacing them, allowing for the nesting multiple context manager without any surprise (by @jeertmans, in PR #312).

  • Fixed a typo in viewing_frustum that led to incorrect behavior (by @jeertmans, in PR #322).

  • Fixed a typo in Conventions where the azimuth angle was incorrectly described to be in \([0^\circ, 360^\circ]\) instead of \([-180^\circ, 180^\circ]\) (by @jeertmans, in PR #322).

Perf#

  • Changed naive indexing by customized at indexing to enable niche optimizations (by @jeertmans, in PR #308).

Removed#

  • Removed differt.utils.sorted_array2, differt.utils.dot, differt.geometry.pairwise_cross,differt.geometry.TriangleMesh.sort to reduce the size of the API by limiting it to RT-related functionalities. This is a breaking-change (by @jeertmans, in PR #309).

0.5.0#

Chore#

  • Fixed typos left in documents with the help of Copilot (for most) and LanguageTool (for some) (by @jeertmans, in PR #304).

Fixed#

Removed#

  • Removed parallel keyword argument in TriangleScene.compute_paths as it was no longer supported, and its presence increased the code complexity. Executing code on multiple devices should be automatically handled by jax.jit, or manually specified by the end-user. This is a breaking-change (by @jeertmans, in PR #305).

0.4.1#

Added#

Chore#

Fixed#

Perf#

0.4.0#

Added#

  • Added sample_objects to TriangleMesh.sample to facilitate sampling realistic sub-meshes. The new option is compatible with both by_masking=False and by_masking=True, offering a jax.jit-compatible sampling method with the latter (by @jeertmans, in PR #297).

Changed#

Chore#

  • Ignored lints C901 and PLR0912 globally, instead of per-case (by @jeertmans, in PR #297).

0.3.1#

Added#

Chore#

  • Reduced computational time of higher-order RT tests by leveraging visibility matrices (by @jeertmans, in PR #294).

Fixed#

0.3.0#

Added#

  • Added gil_used = false to PyO3 module to support free-threaded Python builds (by @jeertmans, in PR #293).

Chore#

  • Improved testing on free-threaded Python and optional plotting backends (by @jeertmans, in PR #293).

Removed#

0.2.0#

Added#

Changed#

  • Simplified assemble_paths’s signature to assume a 2- (TX-RX) or 3-argument (TX-PATH-RX) form is actually sufficient, resulting in a breaking change (by @jeertmans, in PR #289).

Fixed#

0.1.2#

Changed#

Fixed#

0.1.1#

Added#

Chore#

Fixed#

0.1.0#

This version is the first important release of DiffeRT with the aim to provide a stable and documented tool to be used by the scientific community.

Features present in this version are various, and cover way more than what is described in the initial draft of the v0.1.0 milestone.

Chore#