Skip to content

Latest commit

 

History

History
59 lines (45 loc) · 5.07 KB

File metadata and controls

59 lines (45 loc) · 5.07 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Types of changes:

  • Added: for new features.
  • Improved: for improvements to existing functionality.
  • Deprecated: for soon-to-be removed features.
  • Removed: for now removed features.
  • Fixed: for any bug fixes.
  • Dependencies: for updates to external libraries or packages.

Unreleased

Added

Improved / Modified

Deprecated

Removed

Fixed

  • Fixed pyqasm validate wrapping its diagnostics at the console width, which split a file path longer than the width across lines mid-token and left it neither copyable nor clickable. The error console now uses soft_wrap, keeping one diagnostic per line.
  • Fixed an indirect cycle between gate definitions exhausting the Python stack: gate a q { b q; } with gate b q { a q; } raised a bare RecursionError naming nothing, while the direct case was already reported cleanly. The guard compared the body's gate name against one name, so it saw only a cycle of length one. It now tests membership of the whole expansion chain, and names the path: Recursive definitions not allowed for gate 'a' (a -> b -> a). A gate reached twice down separate paths is a diamond, not a cycle, and still expands. (#369)
  • Fixed a nested external custom gate counting the depth of the decomposition it skipped, the shape the #352 fix did not reach: unroll(external_gates=["outer"]) on a gate whose body calls another custom gate emitted one statement but reported depth() == 13. The suppression flag was assigned and cleared without save-restore, so the inner gate clobbered the outer gate's state in both directions. It is now saved and restored, and the depth is recorded once, from the outermost external gate. (#367)

Dependencies

Other

  • Switched PyPI publishing from a long-lived PYPI_API_TOKEN repository secret to trusted publishing. The publish job now mints a short-lived OIDC credential scoped to that one workflow, and the action attaches PEP 740 attestations recording the repository, workflow and commit SHA behind each uploaded file. Attestations apply to releases published after this merges, not retroactively. (#411)
  • Fixed the pre-release build stamping a version that pyqasm.__version__ and the package metadata spelled differently. pre_build.sh wrote 1.1.0-a.0 into pyproject.toml, setuptools normalized that to 1.1.0a0 for the metadata, and _version.py kept the raw string, so pip show pyqasm and pyqasm.__version__ disagreed and test_sdist.sh failed its version check. The stamped version is now normalized to PEP 440 before it is written. (#414)
  • Fixed the pre-release workflow publishing its source distribution under the released version instead of the pre-release one. build_sdist.sh ran git reset --hard and git clean -xdf, which discarded the pyproject.toml version that the preceding step had just stamped, so a run that built 1.1.0a0 wheels built a 1.1.0 sdist and PyPI rejected it as a duplicate. pre_build.sh already resets the tree, so the second reset is gone. It also no longer destroys uncommitted work when the script is run locally. (#413)
  • Added a SECURITY.md with a private vulnerability disclosure path. There was no documented way to report one, leaving a public issue or a guessed email address as the only options. Reports now go through this repository's GitHub security advisory form. (#383)

Past Release Notes

Archive of changelog entries from previous releases: