Skip to content

fix: add ___barrier to Helios QIS for QIR emulation - #136

Merged
jake-arkinstall merged 4 commits into
mainfrom
fix-barrier
Feb 24, 2026
Merged

jake-arkinstall merged 4 commits into
mainfrom
fix-barrier

Conversation

@qartik

@qartik qartik commented Feb 19, 2026

Copy link
Copy Markdown
Member

Needed for Quantinuum/qir-qis#27

Without this, uv run -- python main.py tests/data/barrier.ll in qir-qis fails with Error: error: undefined symbol: ____barrier:

Details
❯ uv run -- python main.py tests/data/barrier.ll
{'entry_point': None, 'output_labeling_schema': 'labeled', 'qir_profiles': 'base_profile', 'required_num_qubits': '2', 'required_num_results': '2'}
Traceback (most recent call last):
  File "/Users/kartik.singhal/GH/qir-qis/main.py", line 83, in <module>
    main()
    ~~~~^^
  File "/Users/kartik.singhal/GH/qir-qis/main.py", line 61, in main
    runner = build(BitcodeString(bc_bytes), interface=interface)
  File "/Users/kartik.singhal/GH/qir-qis/.venv/lib/python3.14/site-packages/selene_sim/build.py", line 220, in build
    artifacts.append(step.apply(ctx, artifacts[-1]))
                     ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/Users/kartik.singhal/GH/qir-qis/.venv/lib/python3.14/site-packages/selene_core/build_utils/builtins/helios.py", line 383, in apply
    invoke_zig(
    ~~~~~~~~~~^
        "build-exe",
        ^^^^^^^^^^^^
    ...<3 lines>...
        *link_flags,
        ^^^^^^^^^^^^
    )
    ^
  File "/Users/kartik.singhal/GH/qir-qis/.venv/lib/python3.14/site-packages/selene_core/build_utils/utils.py", line 66, in invoke_zig
    raise RuntimeError(
        f"zig command failed:\n  Command: {' '.join(argv)}\n  Error: {handle.stderr}"
    )
RuntimeError: zig command failed:
  Command: /Users/kartik.singhal/GH/qir-qis/.venv/bin/python3 -m ziglang build-exe -femit-bin=/var/folders/9h/0yc5mn8s4vd87yqknm4kpn_w0000gp/T/selene_dtojiggl_a724qt5_/artifacts/program.selene.x /var/folders/9h/0yc5mn8s4vd87yqknm4kpn_w0000gp/T/selene_dtojiggl_a724qt5_/artifacts/program.helios.o /Users/kartik.singhal/GH/qir-qis/.venv/lib/python3.14/site-packages/selene_sim/_dist/lib/libselene.dylib /Users/kartik.singhal/GH/qir-qis/.venv/lib/python3.14/site-packages/selene_helios_qis_plugin/_dist/lib/libhelios_selene_interface.a -lc -target aarch64-macos.11.0-none
  Error: error: undefined symbol: ____barrier
    note: referenced by /var/folders/9h/0yc5mn8s4vd87yqknm4kpn_w0000gp/T/selene_dtojiggl_a724qt5_/artifacts/program.helios.o:____user_qir_test_barriers
    note: referenced by /var/folders/9h/0yc5mn8s4vd87yqknm4kpn_w0000gp/T/selene_dtojiggl_a724qt5_/artifacts/program.helios.o:____user_qir_test_barriers

@qartik qartik changed the title fix: add ___barrier to Helios QIS for QIR emulation fix: add ___barrier to Helios QIS for QIR emulation Feb 19, 2026
@qartik

qartik commented Feb 19, 2026

Copy link
Copy Markdown
Member Author

The test and build failures are unrelated to the PR. I will let Jake merge if he is comfortable.

Comment thread pyproject.toml
"pytest",
"pytest-snapshot",
"guppylang~=0.21.6,!=0.21.7",
"guppylang~=0.21.6,!=0.21.7,!=0.21.9",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jake-arkinstall CI is clean by excluding 0.21.9 from tests. I think this PR is ready to merge.

@jake-arkinstall
jake-arkinstall merged commit dfbc4c3 into main Feb 24, 2026
10 checks passed
@jake-arkinstall
jake-arkinstall deleted the fix-barrier branch February 24, 2026 21:39
jake-arkinstall pushed a commit that referenced this pull request Feb 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.2.5](selene-core-v0.2.4...selene-core-v0.2.5)
(2026-02-24)


### Features

* Add __version__ attributes
([#137](#137))
([379ae01](379ae01))
* Interactive use of Selene from python
([#135](#135))
([db3028d](db3028d))
* Stim improvements (more ops + state printing)
([#115](#115))
([867d5e5](867d5e5))


### Bug Fixes

* add `___barrier` to Helios QIS for QIR emulation
([#136](#136))
([dfbc4c3](dfbc4c3))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
jake-arkinstall pushed a commit that referenced this pull request Feb 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.2.11](selene-sim-v0.2.10...selene-sim-v0.2.11)
(2026-02-24)


### Features

* Add __version__ attributes
([#137](#137))
([379ae01](379ae01))
* Interactive use of Selene from python
([#135](#135))
([db3028d](db3028d))
* Quest performance improvements
([#133](#133))
([af640e9](af640e9))
* Stim improvements (more ops + state printing)
([#115](#115))
([867d5e5](867d5e5))
* Test on QIS snapshots
([#134](#134))
([c4d58ab](c4d58ab))


### Bug Fixes

* add `___barrier` to Helios QIS for QIR emulation
([#136](#136))
([dfbc4c3](dfbc4c3))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
jake-arkinstall pushed a commit that referenced this pull request Jun 12, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.3.0-alpha.1](selene-core-v0.3.0-alpha.0...selene-core-v0.3.0-alpha.1)
(2026-06-12)


### ⚠ BREAKING CHANGES

* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
* Add handling for an additional gateset
([#119](#119))

### Features

* Add __version__ attributes
([#137](#137))
([379ae01](379ae01))
* Add handling for an additional gateset
([#119](#119))
([5180b80](5180b80))
* Add simulate_delay functionality
([#139](#139))
([cca97fa](cca97fa))
* Add support for object files provided as bytes
([#94](#94))
([c4cfac6](c4cfac6))
* add timing to builtin runtimes and batching options to softrz runtime
([#158](#158))
([049e123](049e123))
* Build improvements
([#142](#142))
([12f399b](12f399b))
* Interactive use of Selene from python
([#135](#135))
([db3028d](db3028d))
* Make interfaces shared, add ArgReader
([#171](#171))
([143e742](143e742))
* QIR support using QIR-QIS
([#114](#114))
([70ab294](70ab294))
* Result stream handling refactor
([#93](#93))
([607a55e](607a55e))
* Stim improvements (more ops + state printing)
([#115](#115))
([867d5e5](867d5e5))
* test on QIS instead of relying on the upper stack
([#150](#150))
([b80a9c4](b80a9c4))
* Traces for analytics
([#160](#160))
([24b9978](24b9978))
* Use mingw instead of msvc for windows wheels
([#143](#143))
([3d91514](3d91514))
* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
([c44a5c9](c44a5c9))


### Bug Fixes

* add `___barrier` to Helios QIS for QIR emulation
([#136](#136))
([dfbc4c3](dfbc4c3))
* avoid using qir_major_version string for QIR detection
([#123](#123))
([deaa0dc](deaa0dc))
* classify lowered qir-qis bitcode as helios
([#157](#157))
([67fca60](67fca60))
* make qir-qis optional and stabilize CI
([#164](#164))
([e52c0b2](e52c0b2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
jake-arkinstall added a commit that referenced this pull request Jun 12, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.3.0-alpha.1](selene-sim-v0.3.0-alpha.0...selene-sim-v0.3.0-alpha.1)
(2026-06-12)


### ⚠ BREAKING CHANGES

* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
* Add handling for an additional gateset
([#119](#119))

### Features

* Add __version__ attributes
([#137](#137))
([379ae01](379ae01))
* Add event hook which records measurement results
([#104](#104))
([01300ee](01300ee)),
closes [#103](#103)
* Add handling for an additional gateset
([#119](#119))
([5180b80](5180b80))
* Add simulate_delay functionality
([#139](#139))
([cca97fa](cca97fa))
* Add support for object files provided as bytes
([#94](#94))
([c4cfac6](c4cfac6))
* add timing to builtin runtimes and batching options to softrz runtime
([#158](#158))
([049e123](049e123))
* Better exception handling for parse_shots=False
([#70](#70))
([3caf530](3caf530))
* Build improvements
([#142](#142))
([12f399b](12f399b))
* Bump selene-core dependency and relax guppylang testing dependency
([#120](#120))
([6375791](6375791))
* Cleanup error'd processes before log collection
([#98](#98))
([77e698e](77e698e))
* **compiler:** Bump tket version; add wasm + gpu to the hugr-qis
registry
([c69155d](c69155d))
* correct shot end strategy and error processing
([#91](#91))
([93eaeb0](93eaeb0))
* Emit a nicer error when trying to emulate unsupported pytket ops
([#72](#72))
([d88a28a](d88a28a))
* Fine-grained timeout configuration
([#69](#69))
([072842e](072842e))
* Interactive use of Selene from python
([#135](#135))
([db3028d](db3028d))
* Make interfaces shared, add ArgReader
([#171](#171))
([143e742](143e742))
* QIR support using QIR-QIS
([#114](#114))
([70ab294](70ab294))
* Quest performance improvements
([#133](#133))
([af640e9](af640e9))
* random_advance ([#55](#55))
([974b496](974b496))
* Record simulated delays in event hooks
([#154](#154))
([608884a](608884a))
* Result stream handling refactor
([#93](#93))
([607a55e](607a55e))
* Stim improvements (more ops + state printing)
([#115](#115))
([867d5e5](867d5e5))
* Support state-dump passthrough on quantum replay simulator
([#108](#108))
([1b01a01](1b01a01))
* test on QIS instead of relying on the upper stack
([#150](#150))
([b80a9c4](b80a9c4))
* Test on QIS snapshots
([#134](#134))
([c4d58ab](c4d58ab))
* Traces for analytics
([#160](#160))
([24b9978](24b9978))
* update to tket-qsystem 0.20
([#66](#66))
([7191b07](7191b07))
* Use mingw instead of msvc for windows wheels
([#143](#143))
([3d91514](3d91514))
* Use SeleneStartupError for errors before shot_start
([#170](#170))
([85c2907](85c2907))
* Use struct exports for all plugin types, separate error model and
simulator ([#169](#169))
([c44a5c9](c44a5c9))


### Bug Fixes

* add `___barrier` to Helios QIS for QIR emulation
([#136](#136))
([dfbc4c3](dfbc4c3))
* Add ENDING to allowed shot state on receiving meta information
([#100](#100))
([fc4d673](fc4d673))
* Add numpy dependency back
([#127](#127))
([c9a01eb](c9a01eb))
* avoid using qir_major_version string for QIR detection
([#123](#123))
([deaa0dc](deaa0dc))
* classify lowered qir-qis bitcode as helios
([#157](#157))
([67fca60](67fca60))
* **compiler:** error when entrypoint has arguments
([#84](#84))
([604b131](604b131))
* **compiler:** update tket-qystem to fix CZ bug
([#78](#78))
([3991f11](3991f11))
* correct post_runtime duration metric
([#74](#74))
([0bef66a](0bef66a))
* make qir-qis optional and stabilize CI
([#164](#164))
([e52c0b2](e52c0b2))


### Documentation

* add repository citation guidance and metadata
([#146](#146))
([880a58b](880a58b)),
closes [#145](#145)
* Correct URL to guppy repository
([#121](#121))
([27ded00](27ded00))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: Jake Arkinstall <65358059+jake-arkinstall@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants