Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
64e4840
Refactor to support custom gates
jake-arkinstall Jun 26, 2026
064d182
Update C headers
jake-arkinstall Jun 26, 2026
e05a0d6
feat(core): add typed builtin gateset unions
jake-arkinstall Jul 1, 2026
2538b36
refactor(core): unify plugin descriptors and operation results
jake-arkinstall Jul 1, 2026
9995f90
refactor(ext): update builtin plugins for negotiated gates
jake-arkinstall Jul 1, 2026
1d5f3ac
feat(ext): adapt 0.2 plugins to the 0.3 ABI
jake-arkinstall Jul 1, 2026
abd3735
feat(sim): surface plugin errors and utility shot callbacks
jake-arkinstall Jul 1, 2026
6753aee
refactor(py): share CFFI plugin bindings for interactive mode
jake-arkinstall Jul 1, 2026
bbf27cf
feat(sim): register utilities during linked builds
jake-arkinstall Jul 1, 2026
b50ba84
refactor(quest): bind directly through a local C interface
jake-arkinstall Jul 1, 2026
16cc0e5
test(example): exercise the Clifford T stack with plugin descriptors
jake-arkinstall Jul 1, 2026
9457c36
docs: update 0.3 plugin and migration guides
jake-arkinstall Jul 1, 2026
6b36bc7
Ruff format, skip mypy in tests
jake-arkinstall Jul 1, 2026
1a8108f
Correct expected error message from impossible postselection in stim
jake-arkinstall Jul 1, 2026
30007c8
Regenerate C headers
jake-arkinstall Jul 1, 2026
eca4d2c
Add header generation back to selene-core
jake-arkinstall Jul 2, 2026
0dea5e3
Expose utility callback registration through base QIS
jake-arkinstall Jul 2, 2026
1282a5c
Update docs, remove (now-fixed) windows divergence test in quest runs
jake-arkinstall Jul 2, 2026
2f2cc7c
Docs cleanup, bump to 1.0.0a0, add github/release-please content for …
jake-arkinstall Jul 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@ on:
pull_request:
branches:
- main
- 0.2-series
- 0.3-series
- 1.0-series
push:
branches:
- main
- 0.2-series
- 0.3-series
- 1.0-series
tags:
- "*"
workflow_dispatch:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/ci_rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ on:
pull_request:
branches:
- main
- 0.2-series
- 0.3-series
- 1.0-series

concurrency:
group: ${{ github.head_ref || github.run_id }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/nitpick.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ on:
push:
branches:
- main
- 0.2-series
- 0.3-series
- 1.0-series

env:
CARGO_TERM_COLOR: always
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ on:
push:
branches:
- main
- 0.2-series
- 0.3-series
- 1.0-series

permissions:
contents: write
Expand Down
4 changes: 2 additions & 2 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"selene-core": "0.3.0-alpha.1",
".": "0.3.0-alpha.1"
"selene-core": "1.0.0-alpha.0",
".": "1.0.0-alpha.0"
}
111 changes: 88 additions & 23 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ members = [
rust-version = "1.94"
authors = ["Jake Arkinstall <jake.arkinstall@quantinuum.com>"]
edition = "2024"
version = "0.3.0-alpha.1"
version = "1.0.0-alpha.0"
repository = "https://github.com/quantinuum/selene"
license = "Apache-2.0"

Expand Down
15 changes: 13 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ Selene is a quantum computer emulation platform written primarily in Rust with a

Selene is built with flexibility in mind. This includes:

- A plugin system for the addition of additional components including simulators, error models, quantum runtimes to be provided within Selene or as third party plugins
- A descriptor-based plugin system for simulators, error models, quantum runtimes, and link-time utilities provided either within Selene or as third-party packages.
- Gatewire gatesets, allowing interfaces and plugins to negotiate custom gate vocabularies before a run starts.
- Support for custom input formats and device APIs through [the selene-core build system](selene-core/python/selene_core/build_utils).

## What's included
Expand All @@ -32,7 +33,17 @@ Error models that are currently provided include:
And we offer two example quantum runtimes, including:

- Simple, which executes the program as-is, without any modifications
- SoftRZ, which elides Z rotations through RXY gates, providing the same observable behaviour with fewer quantum operations
- SoftRZ, which accepts `RZ` operations and elides physical Z rotations through subsequent gates, providing the same observable behaviour with fewer quantum operations

## Documentation

- [Extensibility docs](docs/extensibility/README.md) cover plugins, utilities,
custom gates, and the gatewire handshake.
- [0.3 migration guide](docs/migration/0.3.md) covers the breaking plugin and
gate API changes from the 0.2 series.
- [Clifford+T stack example](examples/clifford_t_stack/README.md) is a complete
custom-gateset project with Python bindings, Rust runtime/error-model
plugins, and a C++ simulator plugin.

## Installation

Expand Down
2 changes: 2 additions & 0 deletions devenv.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
packages = with pkgs; [
cmake
just
stdenv.cc
zlib
libxml2
ncurses
Expand Down Expand Up @@ -69,6 +70,7 @@
];
excludes = [
"selene-sim/python/tests"
"selene-ext/utilities/argreader/python/tests"
"selene-ext/simulators/quest/python/gate_definitions.py"
"selene-ext/simulators/stim/python/gate_definitions.py"
];
Expand Down
10 changes: 10 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Selene Documentation

This directory contains user-facing documentation for extending Selene.

If you are moving from Selene 0.2 to the 0.3 series, start with the
[0.3 migration guide](migration/0.3.md).

Start with [Extensibility](extensibility/README.md) if you want to write a
plugin, define gates, write a utility, or understand how Selene connects a
Python-facing interface to runtime, error model, and simulator backends.
Loading