- Examples MUST always use separate files per node (e.g.
nodeTest-client.py,nodeTest-server.py), never single-file programs. Students must be able to run each node on a separate machine. - Follow the
new-sdk/template-client-serverstructure: two node scripts +run.sh+terminate.sh+ config JSONs. - All nodes should print their own output (not rely on return values visible only to the test harness).
- Prefer creating a
NetQASMConnectiononce and reusing it withflush()for multi-round quantum programs, rather than opening/closing withwitheach round. conn.flush()is the sync point that makes measurement results readable viaint(m).
- Use
stabilizerbackend by default in examples and tests unless non-Clifford gates are needed. projectqis deprecated / hard to install. Preferqutipwhen full state simulation is needed.
- Examples:
examples/new-sdk/— all new examples use the new SDK - Tests:
tests/slow/sdk/— SDK-level integration tests - Core code:
simulaqron/— simulator source - Docs:
docs/— Sphinx documentation (currently outdated, being rewritten)
- Always run
make cibefore committing. All linting, tests, and examples must pass before any commit is created. - Never commit or push without explicit user approval.
- The project venv is at
.venv/— activate withsource .venv/bin/activate - Install with
pip install -e .(skip[test]if projectq build fails)