- Fix bell state corrections when compiling for hardware
- Added the REIDS flavour.
- Change level of subroutine compilation logging from
INFO
toDEBUG
to avoid cluttering.
- Fix connection getting flushed during exception handling
- Fixed an issue with LAST instruction logs.
- Relaxed version requirements on dependencies
- Add instructions on updating CHANGELOG.md
- Use nodes' app names for instruction logging.
- Update SquidASM to 0.10.0.
- Fix Builder not moving qubits
- Implemented Bell corrections for RSP.
- Moved Bell correction logic to receiver side.
- Added support for automatically handling generated EPR pairs that are not Phi+ (by adding gates or doing post-processing)
- Added SDK feature to pre-compile subroutines and only later send them to the quantum controller
- Renamed
PreSubroutine
toProtoSubroutine
- Improved NV-specific compilation
- Updated how package installation and dependency configuration is handled.
- Updated versions of dependencies to prevent installation conflicts.
- Refactored SDK code
- Added
loop_until
context to SDK - Added
min_fidelity_all_at_end
EPR generation parameter - Added explicity
create_keep
,create_measure
andcreate_rsp
methods (and similar forrecv_
) toEPRSocket
. The oldcreate
andrecv
methods are deprecated. - Added builder tests
- Applied formatting on examples
- Explicitly use MIT license
- Reformat some imports for better autodocgen
- Fixed bug in Bloch sphere representation calculation.
- Updated QKD app config.
- Added QNE-specific apps to
netqasm/examples/qne_apps
.
- Small fix in MANIFEST.in file
- Added MANIFEST.in file
- Added breakpoint instruction to NetQASM language.
- Re-organized examples.
- Made compatible with SquidASM 0.8.0.
- Fixed bug where registers were not freed after only being used temporarily.
- Package installation now used
pyproject.toml
.
- Added support for Remote State Preparation entanglement requests.
- Fixed bug where Builder's App ID was not updated when Connection's App ID changed.
- Added
max_time
andtime_unit
parameters toEPRSocket.create()
- Added
SubroutineAbortedError
type
- Temporarily disable
test_create_epr_m.py
test - Temporarily disable
link_layer_md
example
- Added docstrings to a large part of the codebase
- Some refactoring based on inconsistencies found while documenting
- Added type hints to most of the code.
- Now using the
black
andisort
formatters for the whole repo. - Extracted pre-subroutine construction out of the Connection class and moved to the Builder class.
- Improved type hints related to numpy types.
- Added convenience methods to the
SharedMemory
class. - Added support for single-threaded SquidASM simulator.
- Bumped qlink-layer requirement to 1.0.0. Arrays for EPR instructions still use the 0.1.0 format.
- Added a compatibility module for simulators that use qlink-layer 1.0.0 themselves but want to interpret EPR arrays using 0.1.0.
- Updated code that is deprecated in NetSquid 1.0 (it is now compatible with 1.0).
- Added support for choosing the measurement basis for M-type EPR generation.
- Added the ability to manually create a Register in the SDK. Further use with these Registers is limited for now.
- Added interfaces for applications and the runtime environment, to make it easier to instantiate and run apps.
- Added the
netqasm qne login
andnetqasm qne logout
commands. - Renamed
Executioner
toExecutor
. - Optimized initialization of arrays when all elements have the same initial value (use a loop).
- Fixed NV compilation when doing sequential EPR create commands.
- Fixed NV compilation of
K
gates. - Fixed bug where multiple branch labels with the same name could appear.
- Reverted patches 0.5.1 and 0.5.2. 0.5.3 is exactly the same as 0.5.0.
- Added support for choosing the measurement basis for M-type EPR generation.
- Added the ability to manually create a Register in the SDK. Further use with these Registers is limited for now.
- Added interfaces for applications and the runtime environment, to make it easier to instantiate and run apps.
- Added the
netqasm qne login
andnetqasm qne logout
commands.
- Renamed
Executioner
toExecutor
. - Fixed NV compilation when doing sequential EPR create commands.
- Removed the QST (qubit state) field from log entries.
- The QGR (qubit groups) field now contains a dict of all qubit groups in the whole simulation, so also of qubits not directly acted on in the current logged operation.
- Added the
StructuredMessage
class in the SDK, which distinguishes between a header and the payload. - Added
send_structured
andrecv_structured
functions to theSocket
class for communicationStructuredMessage
s. - Added
send_silent
andrecv_silent
functions to theSocket
class for sending standard messages that are not logged to the<role>_class_comm.yaml
files. - Added
sim_states
module to the SDK with some helper functions for dealing with NetSquid (only works with thenetsquid
backend). - Added the
--log-to-files
CLI parameter. IfTrue
, no logs are written to any files. - The
Depolarise
NoiseType for network links now always generates general mixed states, instead of either a perfect state or a fully mixed state. - Added a
DiscreteDepolarise
NoiseType for network links that has the old behavior ofDepolarise
. - Log directories and Python cache files are not anymore copied from the
teleport
example when creating usingnetqasm new
ornetqasm init
. netqasm new
andnetqasm init
now also create aresults_config.json
file.- Added support for more accurate NV simulation. A
nv.yaml
file can be used additionally to thenetwork.yaml
file. - The BB84 example was changed to use Create and Keep entanglement generation.
- Added
results_config.json
to thebb84
andteleport
examples. - Fixed bugs in CLI unit test.
- Fixed a bug related to vritual address allocation.
- Fixed a bug where the
EPRSocket
would return an incorrectmin_fidelity
value.
- Added
return_arrays
argument to theNetQASMConnection
constructor. WhenFalse
, no arrays are returned at the end of a subroutine, even if they are used in that subroutine. - The NV compiler now moves a qubit (if any) from the electron to the carbon before generating another entangled qubit.
- Added a
mov
instruction to the vanilla flavour. For now only used by the NV compiler, and is not in the SDK.
- Added preliminary documentation, including a quickstart and information about the SDK.
Build it locally using
make build
from within thedocs
directory. - Added
netqasm new
andnetqasm init
commands. - Internal restructuring of modules.
- Logging and configuration formats are now described as dataclasses in
netqasm.runtime.interface
. - Added more results to the BB84 application output.
- Distinguish between 'Measure Directly' and 'Create and Keep' types of entanglement in the network log.
- Fixes regarding entanglement logging and qubit group calculation.
- Instruction log files now again use the role name instead of the node name.
- Made array IDs, EPR socket IDs and node IDs
int32
instead ofuint32
such that they can be stored in registers. - Added
min_fidelity
to EPR socket.
- Added
netqasm run
command to launch applications without also starting a simulation backend. It allows the same additional arguments asnetqasm simulate
, except simulation-specifc ones like--simulator
. - Added the
RegFuture
class representing values that become available in a register rather than an array. - Added the
store_array
optional argument toqubit.measure()
. If False, the result is aRegFuture
. - Improved simplification of
(n, d)
values for angles. Bothn
andd
are now as small as possible. - When not using a simulator backend, the NV compiler now always outputs angle values such that
d = 4
.
- Example apps have moved into the netqasm module
netqasm/examples/apps
- Now logging all quantum gates in the instructions log files.
- Remove CREATE_EPR and RECV_EPR from instructions log files.
- Add channels to network log (PTH).
- Log the start of each EPR pair generation in network log file.
- Log qubit IDs in the network log.
- Log both physical and virtual qubit IDs in the instructions log files.
- The names of roles in the examples have been updated.
- The CLI from
squidasm
is now moved to here and can be called asnetqasm
. It works the same as before with the options to the argumentssimulate
. Only difference is that it now takes an option--simulator
which can either benetsquid
(producing the same behaviour as the previoussquidasm
CLI) orsimulaqron
. Note thatsquidasm
orsimulaqron
needs to be installed in the respective case. The choice of simulator can also be done by setting the environment variableNETQASM_SIMULATOR
. - Tests and examples for the SDK have now moved from
squidasm
to here. In particular the implemented apps that previously was insquidasm/examples/apps
can now be found innetqasm/examples/apps
. - Code not specific to a simulator, for example a base class for the
SubroutineHandler
and functionsimulate_apps
have moved to here to be reused by all simulators.
- Made a base subroutine handler class.
- Added definition of return messages from qnodeos.
- Use correct NV gates in when compiling.
- Now using binary encoding for messages from host to qnodeos.
netqasm
does not depend oncqc
anymore.
- Instrs-logging now support qubit IDs and qubit states for all qubits involved in the operation.
- Instrs-logging now support what to specify what qubits have at some point interacted in the simulaton.
- Moved syntax highlighting files for vim to separate repo.
- Added static checks with mypy.
- Large refactoring of how instructions are handled internally.
- Add concept of NetQASM flavours and a compiler which uses this.
- Compilation of two-qubit gates for NV.
- Fixed failing examples and changed default config to only use the dataclass.
- Fixed bug when logging PRC.
- SDK now supports addition of future.
- Loggers are saved at end of simulation.
- Log host line numbers across multiple files.
- Function in SDK to generate GHZ state.
- Added broadcast-channel to SDK.
- Alignment to QNodeOS.
- Application logger.
- Log if a qubit is entangled.
- Allow for parallel execution of subroutines.
- Output logs are now in yaml format
- Fixed bug when checking that num random bases is 2.
- Create EPR of request M now supported.
- Added EPRSocket class to encapsulate an EPR circuit connection for entanglement generation.
- Added structured logging for classical messages.
- Errors in Executioner now also show which line in subroutine failed.
- Added gate mapping of single-qubit gates to NV.
- State prepation function for single-qubit states.
- Added rotation gates.
- Possibility to specify rotation angle as float which gets converted into sequence of NetQASM rotations.
- Main changes are the addition of contexts for doing looping, if-statements etc in the SDK.
- Created this package