- Added
- [898](https://github.com/myokit/myokit/pull/899) martinjrobins Initial conditions for state variables can now be (constant-valued) expressions. Previously, only literals were allowed.
- [918](https://github.com/myokit/myokit/pull/918) Added `Model.initial_values`, which returns the model's initial values as a list of expressions, floats, or equations.
- [918](https://github.com/myokit/myokit/pull/918) Added `Model.set_initial_values`, which sets the model's initial values using a list of expressions or anything accepted by `map_to_state`.
- [918](https://github.com/myokit/myokit/pull/918) Added `Variable.initial_value`, which returns a state variable's initial value as an expression or float.
- [918](https://github.com/myokit/myokit/pull/918) Added `Variable.set_initial_value`, which sets a state variable's initial value using an expression, string expression, or float.
- [918](https://github.com/myokit/myokit/pull/918) Added `IllegalReferenceInInitialValueError` for illegal references made in initial value expressions.
- [947](https://github.com/myokit/myokit/pull/947) martinjrobins The `Simulation` class can now handle multiple protocols during a single simulation.
- [947](https://github.com/myokit/myokit/pull/947) Fixed-form protocols are now implemented in a `TimeSeriesProtocol`.
- Changed
- [898](https://github.com/myokit/myokit/pull/899) `Variable.promote` can now take an expression, a number, or a string (which will be parsed as an expression) for the argument `initial_value`.
- [909](https://github.com/myokit/myokit/pull/909) Myokit is now tested on Python 3.11.
- [909](https://github.com/myokit/myokit/pull/909) Myokit is no longer tested on Python 3.6.
- [918](https://github.com/myokit/myokit/pull/918) The only argument to `Variable.promote` has been renamed from `state_value` to `initial_value`.
- [918](https://github.com/myokit/myokit/pull/918) `Model.import_component` now preserves the ordering of the imported states.
- [953](https://github.com/myokit/myokit/pull/953) The DataLogViewer now overlaps traces with numbering (e.g. 0.membrane.V and 1.membrane.V), and toggles between files and variables with Page up and down Or Ctrl+Page up and down.
- [962](https://github.com/myokit/myokit/pull/962) Scipy is no longer a required dependency.
- [962](https://github.com/myokit/myokit/pull/962) The DataLogViewer only supports Matlab file loading if SciPy is installed.
- [975](https://github.com/myokit/myokit/pull/975) Global parameters in imported SBML documents are now placed in a component named `global` instead of `myokit`.
- [978](https://github.com/myokit/myokit/pull/978) The IDE now validates _either_ the model _or_ the protocol, depending on the current tab (previously both were validated).
- Deprecated
- [918](https://github.com/myokit/myokit/pull/918) `Model.state` is deprecated in favor of `Model.initial_values`.
- [918](https://github.com/myokit/myokit/pull/918) `Model.set_state` is deprecated in favor of `Model.set_initial_values`.
- [918](https://github.com/myokit/myokit/pull/918) `Model.inits` is deprecated.
- [918](https://github.com/myokit/myokit/pull/918) `Variable.state_value` is deprecated in favor of `Variable.initial_value`.
- [918](https://github.com/myokit/myokit/pull/918) `Variable.set_state_value` is deprecated in favor of `Variable.set_initial_value`.
- [918](https://github.com/myokit/myokit/pull/918) `Model.save_state` and `Model.load_state` are deprecated.
- [918](https://github.com/myokit/myokit/pull/918) The `Variable.promote` keyword argument `state_value` is deprecated in favor of `initial_value`.
- [947](https://github.com/myokit/myokit/pull/947) `Simulation.set_fixed_form_protocol` is deprecated in favor of using `Simulation.set_protocol` with a `TimeSeriesProtocol`
- [962](https://github.com/myokit/myokit/pull/962) The method `DataLog.regularize` is deprecated.
- [974](https://github.com/myokit/myokit/pull/974) `Variable.indice` is deprecated in favor of `Variable.index`.
- [976](https://github.com/myokit/myokit/pull/976) `SimulationOpenCL.neighbours` is deprecated in favor of `SimulationOpenCL.neighbors`.
- Removed
- [898](https://github.com/myokit/myokit/pull/899) `NonLiteralValueError` is now no longer raised by Myokit and so has been removed.
- [921](https://github.com/myokit/myokit/pull/921) Removed deprecated `LegacySimulation` class.
- [921](https://github.com/myokit/myokit/pull/921) Removed deprecated `PSimulation` class.
- [921](https://github.com/myokit/myokit/pull/921) Removed deprecated `ICSimulation` class.
- [957](https://github.com/myokit/myokit/pull/957) Removed the method `Model.prepare_bindings`.
- [961](https://github.com/myokit/myokit/pull/961) Removed the module `myokit.lib.common`, which had been deprecated since April 2018.
- Fixed
- [918](https://github.com/myokit/myokit/pull/918) Fixed error when `var()` was called on a `PartialDerivative` with a `Derivative` as first argument.
- [933](https://github.com/myokit/myokit/pull/933) Made `myokit.step` base its error classification (large/small/none) on numerics, not representation.
- [947](https://github.com/myokit/myokit/pull/947) Fixed minor memory leak (reference counting issue) when using fixed form protocols.
- [967](https://github.com/myokit/myokit/pull/967) Myokit no longer calls `logging.basicConfig()` when used as a library.
- [977](https://github.com/myokit/myokit/pull/977) `myokit.save()` now raises a `ValueError` if `model`, `protocol`, and `script` are all None.
- [978](https://github.com/myokit/myokit/pull/978) Clarified message shown in IDE after re-validation of valid model or protocol.