feat: Add support for object files provided as bytes - #94
Merged
Merged
Conversation
…eps to/from their ObjectFileKind equivalents
…iler provide a wrapper format
jake-arkinstall
marked this pull request as ready for review
November 3, 2025 15:44
This was referenced Nov 3, 2025
jake-arkinstall
pushed a commit
that referenced
this pull request
Nov 7, 2025
🤖 I have created a release *beep* *boop* --- ## [0.2.2](selene-core-v0.2.1...selene-core-v0.2.2) (2025-11-07) ### Features * Add support for object files provided as bytes ([#94](#94)) ([c4cfac6](c4cfac6)) * Result stream handling refactor ([#93](#93)) ([607a55e](607a55e)) --- 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
Nov 7, 2025
🤖 I have created a release *beep* *boop* --- ## [0.2.5](selene-sim-v0.2.4...selene-sim-v0.2.5) (2025-11-07) ### Features * Add support for object files provided as bytes ([#94](#94)) ([c4cfac6](c4cfac6)) * Cleanup error'd processes before log collection ([#98](#98)) ([77e698e](77e698e)) * 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)) * Result stream handling refactor ([#93](#93)) ([607a55e](607a55e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This was referenced Apr 21, 2026
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>
This was referenced Jul 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds support for a requested feature: accepting
bytesobjects toselene_sim.build()that represent the contents of object files - we have support for LLVM bitcode through the same fashion (bytes or the file).It also performs more validation on bitcode bytes, as the previous approach was simply to check that it was a bytes object with required symbols present. The magic number at the start of a bitcode file is now verified.
Finally, we perform additional build testing. Upon each build test, we run through intermediate artifacts, convert them to their 'in memory' equivalent and build against those too. This is all done in strict build mode, such that the output of every build step is validated against its Kind (more expensive) instead of assuming validity (faster, default).