Changelog ========= Version 0.1.8 (2026-10-12) -------------------------- * **Qiskit Ecosystem Compliance ([Q03])**: Added `<3` major version upper-bound cap to Qiskit dependency (`qiskit>=2.5.0,<3`). * **PEP 639 License Specification**: Adopted SPDX expression ``license = "Apache-2.0"`` and updated build system to require ``setuptools>=77.0``. * **Python 3.13 CI Support**: Added Python 3.13 to continuous integration test matrix. * **Sphinx & Intersphinx Modernization**: Removed dead ``qiskit.org`` intersphinx mapping to ensure robust documentation builds. Version 0.1.7 (2026-10-06) -------------------------- * **DRAG Boundary Fix**: Q quadrature now vanishes at boundaries via windowed derivative. * **Delay Unit Conversion**: Proper handling of s, ms, us, ns, ps, and dt units. * **OpenQASM 3 Serialization**: Default PulseAnnotationSerializer for pulse_sim.envelope. * **Hardware Export**: NPZ flattening and CSV filename sanitization. * **QPY Round-trip**: Annotation factories and ``as_qpy()`` support. Version 0.1.0 (2026-10-04) -------------------------- Initial release of qiskit-waveform-sim. Features ~~~~~~~~ * **TargetWaveformSimulator**: Zero-bloat waveform simulator for Qiskit 2.0+ scheduled circuits * **Exact Virtual-Z Frame Tracking**: Per-qubit phase accumulation with cross-resonance phase-locking * **Lazy Windowed Evaluation**: O(W) memory snippet extraction via binary search interval indexing * **Analytical Envelope Synthesis**: DRAG (with leakage suppression) and GaussianSquare envelopes * **Fractional Gate Support**: Continuous amplitude/duration scaling for RX(θ), RZZ(θ) * **PulseEnvelopeAnnotation**: Custom pulse shapes via Qiskit 2.0 BoxOp + Annotation API * **OpenQASM 3 Serialization**: Round-trip serialization with pulse annotation pragmas * **QPY Support**: Binary serialization with annotation handlers * **Interactive Visualization**: Plotly-based Pulse Sheet + I/Q Oscilloscope * **Static Visualization**: Publication-quality Matplotlib plots * **Hardware Export**: LabOne Q, RFSoC/QICK, ARTIQ, generic AWG formats Architecture ~~~~~~~~~~~~ * Designed around Qiskit 2.0 Target, op_start_times, BoxOp, and Annotation APIs * No dependency on deprecated qiskit.pulse or qiskit-dynamics * Compatible with GenericBackendV2, FakeBackendV2, and custom Target objects * Matches LabOne Q OutputSimulator architecture (logical timing + parametric pulses + on-demand synthesis) Testing ~~~~~~~ * Comprehensive test suite with pytest (unit, integration, visualization) * Tested against Qiskit 2.0.0 * CI configuration with tox for Python 3.11/3.12 Documentation ~~~~~~~~~~~~~ * Sphinx documentation with MyST parser * Three Jupyter notebook tutorials (Quickstart, Annotations, Hardware Export) * Full API reference with autodoc