For more details refer to the documentation.
- Migrated project specification to use modern TOML approach.
- Tested working with Python versions 3.10, 3.11 and 3.12.
- Added new SDK for easily creating SimulaQron applications. This new SDK allows to also create client-server applications using event-based programming paradigm.
- Updated the SimulaQron network configuration file format. This is done to align the network configuration file with the data required by SimulaQron "native" mode and the "NetQASM" mode.
- Updated documentation of most of the undocumented functions and to match the new developments.
- Major breaking change! Using
cqcis now deprecated and replaced withnetqasm.netqasmimproves oncqcon many levels, for more details. As withcqc,netqasmalso has a SDK in python for writing applications, which is very similar to the SDK forcqc. However, there are some differences, for details see the netqasm repo and its documentation.
- Fixed bug with setting
noisy-qubitoption from cli.
- Security patch: require twisted 20.3 or higher
- Fixed some old tests and improved how a network checks if it's running or not.
- Fixed bug in the Boolean Gaussian elimination in stabilizer formalism.
- Boolean Gaussian elimination in stabilizer formalism is now even faster.
- Boolean Gaussian elimination in stabilizer formalism is now faster.
- SimulaQron compatible with
cqcversion 3.1.0.
- Fixed bug in the stabilizer formalism which can occur when measuring a qubit in an eigenstate of Z.
- Now requiring cqc 3.0.4 after bug-fix.
- Now requiring twisted 19.7 due to security vulnerabilities with earlier versions.
- Now requiring cqc 3.0.3 after bug-fix.
- Fixed bug that mixes up return messages for different application IDs.
- Removed dependency for black, now supporting python >=3.5.
- Fixed bug with keeping the folder
.simulaqron_pidswhen installing from wheel.
- Fixed bug with the command
simulaqron get noisy-qubits
- The packages Cython, service_identity, matplotlib and bitstring are no longer direct requirements of simulaqron.
- The way settings and network configurations is handled from files is completely changes. Settings can still be set in the usual way through the CLI, for example as
simulaqron set backend projectq. One can now also add a file in the users home folder (i.e.~) called.simulaqron.jsonwhere one can set settings or subsets of these. For example this file could look like
{
"backend": "projectq",
"log_level": 10
}
which would set the backend to be use ProjectQ and the log-level to be debug (10). Any setting in this file will override the settings set in the CLI. The old way of configuring networks (i.e. using the four .cfg files for socket addresses and one .json for topology) is still supported but the new one using a single .json file is now the recommended way. The new way uses a single .json file for all the processes for multiple networks, including the topology. An example of such a file can be seen below which contains two networks ("default" and "small_network") which the nodes "Alice", "Bob" and "Test" respectively.
{
"default": {
"nodes": {
"Alice": {
"app_socket": [
"localhost",
8000
],
"cqc_socket": [
"localhost",
8001
],
"vnode_socket": [
"localhost",
8004
]
},
"Bob": {
"app_socket": [
"localhost",
8007
],
"cqc_socket": [
"localhost",
8008
],
"vnode_socket": [
"localhost",
8010
]
}
},
"topology": null
}
"small_network": {
"nodes": {
"Test": {
"app_socket": [
"localhost",
8031
],
"cqc_socket": [
"localhost",
8043
],
"vnode_socket": [
"localhost",
8089
]
}
},
"topology": null
}
}
If you want simulaqron to use your custom network.json file simply set this in the settings by simulaqron set network-config-file your/path/my_network.json or add the following line to a file ~/.simulaqron.json: network_config_file: your/path/my_network.json, where your/path/my_network.json is the path to your custom network config file.
- The classes
simulaqron.cqc_backend.cqcProtocol.CQCProtocolandsimulaqron.cqc_backend.cqcMessageHandler.CQCMessageHandlermove tocqc.Protocol.CQCProtocolandcqc.MessageHandler.CQCMessageHandlerrespectively in the repo https://github.com/SoftwareQuTech/CQC-Python.
- Moved new_ent_id up from simulaqronCQCHandler to CQCMessageHandler
Tests can now be run from python from the method simulaqron.tests.
These are changes in Develop will be merged to master.
-
The CQC specification and libraries will move to it's own repos.
-
SimulaQron can now be installed using
pip3 install simulaqron. -
If SimulaQron is installed using pip, the command in the terminal will be called
simulaqronand notSimulaQron. -
There is a new command in the which is useful if something crashed when a simulated network was running. Simply to
simulaqron reset. -
All settings can be accessed through the command line interface by the commands
simulaqron setandsimulaqron get.
These are changes in Develop was merged to master.
-
(Breaking change) The folders
general,local,toolboxandvirtNodeand the filesconfigFiles.pyandsettings.pywill be moved to a foldersimulaqron, such that imports should be done assimulaqron.xxx. Accordingly the PYTHONPATH should now be set to/your/path/SimulaQron. Imports of cqc should now instead befrom cqc.pythonLib import CQCConnection. -
The packages
qutipandprojectqwill be optional and the stabilizer backend default. -
The environment variable does not need to be set anymore.
-
All calls to python will be done as
pythonsuch that no virtual environment is needed. -
The method of starting a network in SimulaQron will change. Instead of calling the shell scripts
run/startAll.shetc one can now call the new command line interface as./cli/SimulaQron start. The same command line interface can also be used to set settings, start multiple networks etc. For more information see the docs or use the flag --help (-h) on any of the commands. New is also the classsimulaqron.network.Networkwhich makes is easy to start a network within Python, see docs. -
All test are now unittests and can be started as
make testsormake tests_fullfor a longer test.