=========================
**Added**
- Added progress bar support for Jupyter Lab >=0.32.
(`1428 <https://github.com/nengo/nengo/pull/1428>`__,
`1087 <https://github.com/nengo/nengo/issues/1087>`__)
- We now warn that the progress bar is not supported in Jupyter Notebook <5.
(`1428 <https://github.com/nengo/nengo/pull/1428>`__,
`1426 <https://github.com/nengo/nengo/issues/1426>`__)
- Added support for convolutional connections.
(`1481 <https://github.com/nengo/nengo/pull/1481>`__)
- Added version tracking to documentation, so that documentation from old
versions remains available.
(`1488 <https://github.com/nengo/nengo/pull/1488>`__)
- Added support for sparse connections.
(`1532 <https://github.com/nengo/nengo/pull/1532>`__)
- Added a ``fail_fast`` setting to test operators when they are first
added to the model. See `configuration options
<https://www.nengo.ai/nengo/nengorc.html#configuration-options>`__
for details. (`1532 <https://github.com/nengo/nengo/pull/1532>`__)
- Added a ``--memory`` option for pytest that prints the total memory
consumed by the tests when they complete (Linux and Mac OS X only).
(`640 <https://github.com/nengo/nengo/pull/640>`__)
- Added a bit precision setting to change the number of bits allocated
to each value tracked by Nengo.
(`640 <https://github.com/nengo/nengo/pull/640>`__)
- Added a ``Simulator.clear_probes`` method to clear probe data.
This method can be used before pickling to reduce the pickle file size.
(`1387 <https://github.com/nengo/nengo/pull/1387>`__)
- Nengo tests now use the ``allclose`` fixture from ``pytest-allclose``,
which makes it possible for backends to change test tolerances.
(`1563 <https://github.com/nengo/nengo/pull/1563>`__)
- Nengo tests now use the ``rng`` and ``seed`` fixtures from ``pytest-rng``.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Nengo tests now use the ``plt`` fixture from ``pytest-plt``.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Added a ``nengo_simloader`` pytest option for specifying a callable that
takes a pytest ``request`` and returns a callable to be used
as ``Simulator`` in the Nengo test suite.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Added more content to the API reference documentation.
(`1578 <https://github.com/nengo/nengo/pull/1578>`__)
**Changed**
- Python 2 is no longer supported. The oldest supported Python version is 3.5.
(`1520 <https://github.com/nengo/nengo/pull/1520>`__,
`python3statement.org <https://python3statement.org/>`__)
- Nengo no longer supports Python 3.4.
Official 3.4 support ended in March 2019.
(`PEP-429 <https://www.python.org/dev/peps/pep-0429/>`__,
`1514 <https://github.com/nengo/nengo/pull/1514>`__)
- Replaced the ``dt`` argument to ``Simulator.trange`` with ``sample_every``
because ``dt`` would return values that the simulator had not simulated.
``dt`` is now an alias for ``sample_every`` and will be removed in the future.
(`1368 <https://github.com/nengo/nengo/issues/1368>`_,
`1384 <https://github.com/nengo/nengo/pull/1384>`_)
- Dense connection transforms (this includes all previously supported values
for ``Connection.transform``) will now be represented internally as
``nengo.Dense`` objects. Arrays/scalars can still be passed as ``transform``
values, and they will be automatically converted to the equivalent
``nengo.Dense`` object. Retrieving the value of ``my_conn.transform`` will
return that ``Dense`` object. The original input array can be retrieved
through ``my_conn.transform.init``.
(`1481 <https://github.com/nengo/nengo/pull/1481>`__)
- ``nengo.solvers.NoSolver(w, weights=True)`` now expects ``w`` to have shape
``(pre.n_neurons, function_d)``,
rather than ``pre.n_neurons, post.n_neurons)``. That is, with ``NoSolver``
you are always specifying the values for the decoders, and encoders/transform
will be applied automatically to those decoders (as occurs with
all other solvers). Note that this does not affect
``NoSolver(..., weights=False)`` (the default).
(`1481 <https://github.com/nengo/nengo/pull/1481>`__)
- Increased minimum NumPy version to 1.11.0. See our
`instructions for installing NumPy
<https://www.nengo.ai/nengo/getting-started.html#installing-numpy>`__
if you need to upgrade.
(`1481 <https://github.com/nengo/nengo/pull/1481>`__)
- Solvers are now explicitly marked as compositional or non-compositional
depending on whether they must act on full connection weight matrices
when solving for weights.
(`1507 <https://github.com/nengo/nengo/pull/1507>`__)
- Solvers no longer take encoders as an argument. Instead, encoders will
be applied to the targets before the solve function for non-compositional
solvers and applied by the Transform builder for compositional solvers.
(`1507 <https://github.com/nengo/nengo/pull/1507>`__)
- Example Jupyter notebooks have been upgraded to notebook format 4.
(`1440 <https://github.com/nengo/nengo/pull/1440>`_)
- Switched documentation to new
`nengo-sphinx-theme <https://github.com/nengo/nengo-sphinx-theme>`_.
(`1489 <https://github.com/nengo/nengo/pull/1489>`__)
- The ``settled_firingrate`` function has been moved from
``nengo.utils.neurons`` to ``nengo.neurons``.
(`1187 <https://github.com/nengo/nengo/pull/1187>`_)
- Added new pytest config option, ``nengo_test_unsupported`` (replacing the
previous ``Simulator.unsupported`` functionality).
(`1521 <https://github.com/nengo/nengo/pull/1521>`_)
- Switched to nengo-bones templating system for TravisCI config/scripts.
(`1514 <https://github.com/nengo/nengo/pull/1514>`_)
- The ``NeuronType.current`` and ``NeuronType.rates`` methods now document
the supported shapes of parameters and return values.
(`1437 <https://github.com/nengo/nengo/pull/1437>`__)
- PES learning updates are now applied on the next timestep rather than
the current one.
(`1398 <https://github.com/nengo/nengo/pull/1398>`_)
- The ``NdarrayParam`` now accepts a ``dtype`` argument to check that
data assigned to that parameter matches the given Numpy ``dtype``.
``DistOrArrayParam`` accepts an analogous ``sample_dtype`` argument.
(`1532 <https://github.com/nengo/nengo/pull/1532>`__)
- We no longer test operators when they are initially added to the model,
which speed up build times slightly. To re-enable this testing,
enable the ``fail_fast`` RC setting.
(`1532 <https://github.com/nengo/nengo/pull/1532>`__)
- ``LinearFilter`` now uses state space representations internally,
which is faster and potentially more accurate.
(`1535 <https://github.com/nengo/nengo/pull/1535>`__)
- The default value of ``y0`` in ``Synapse.filt`` is now 0 instead of
the initial value of the input signal. This allows unstable filters
(e.g., integrators) to be used with ``filt``.
(`1535 <https://github.com/nengo/nengo/pull/1535>`__)
- ``LinearFilter`` now accepts the discretization method as an argument,
rather than having it specified in ``make_step``.
(`1535 <https://github.com/nengo/nengo/pull/1535>`__)
- The ``synapse_kwargs`` argument to ``FilteredNoise`` has been removed.
(`1535 <https://github.com/nengo/nengo/pull/1535>`__)
- Processes with internal state now declare that state by defining a
``make_state`` method and accepting a ``state`` parameter in ``make_step``.
(`1387 <https://github.com/nengo/nengo/pull/1387>`__)
- ``Simulator`` is now pickleable, allowing its state to be saved and loaded.
(`1387 <https://github.com/nengo/nengo/pull/1387>`__)
- Renamed ``utils.testing.allclose`` to ``utils.testing.signals_allclose``,
to differentiate it from the ``allclose`` fixture.
(`1563 <https://github.com/nengo/nengo/pull/1563>`__)
- The default ``intercepts`` value has been changed to ``Uniform(-1, 0.9)``
to avoid high gains when intercepts are close to 1.
(`1534 <https://github.com/nengo/nengo/issues/1534>`__,
`1561 <https://github.com/nengo/nengo/pull/1561>`__)
- The ``--simulator`` and ``--neurons`` pytest command line arguments are now specified
by ``nengo_simulator`` and ``nengo_neurons`` entries in the pytest config file
instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- The ``nengo_test_unsupported`` option now uses pytest nodeids for the test names
(the main change is that this means a double ``::`` between file and function names).
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- ``Signals`` will now raise an error if their initial value contains NaNs.
(`1571 <https://github.com/nengo/nengo/pull/1571>`__)
- The builder will now raise an error if any encoders are NaN,
which can occur if an encoder has length zero.
(`1571 <https://github.com/nengo/nengo/pull/1571>`__)
- Renamed ``simulator.ProbeDict`` to ``simulator.SimulationData``.
(`1574 <https://github.com/nengo/nengo/pull/1574>`__)
- Increased minimum numpy version to 1.13.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Documentation pages that had underscores in their filenames have been
renamed to have hyphens instead.
(`1585 <https://github.com/nengo/nengo/pull/1585>`__)
**Deprecated**
- Deprecated the ``nengo.spa`` module. Use the
`Nengo SPA <https://www.nengo.ai/nengo-spa/index.html>`__
project instead.
(`1465 <https://github.com/nengo/nengo/pull/1465>`_)
- The ``A`` and ``B`` inputs to the ``Product`` and ``CircularConvolution``
networks are officially deprecated. Use ``input_a`` and ``input_b`` instead.
(`887 <https://github.com/nengo/nengo/issues/887>`__,
`1179 <https://github.com/nengo/nengo/pull/1179>`__)
- ``nengo.utils.compat`` will be removed in the next minor release.
(`1520 <https://github.com/nengo/nengo/pull/1520>`_)
- Deprecated ``utils.numpy.rmse``. Call ``utils.numpy.rms`` on
the difference between two arrays instead.
(`1563 <https://github.com/nengo/nengo/pull/1563>`__)
**Removed**
- Networks no longer accept the ``net`` argument. To set network arguments
like ``label``, pass them as keyword arguments instead.
(`1179 <https://github.com/nengo/nengo/pull/1179>`__)
- Removed ``generate_graphviz`` utility function. It can now be found in
`nengo_extras <https://github.com/nengo/nengo-extras>`__.
(`1187 <https://github.com/nengo/nengo/pull/1187>`_)
- Removed functions for estimating firing rates from spikes. They can now
be found in `nengo_extras <https://github.com/nengo/nengo-extras>`__.
(`1187 <https://github.com/nengo/nengo/pull/1187>`_)
- Removed the ``probe_all`` function. It can now be found in
`nengo_extras <https://github.com/nengo/nengo-extras>`__.
(`1187 <https://github.com/nengo/nengo/pull/1187>`_)
- ``PES.correction`` is no longer probeable.
(`1398 <https://github.com/nengo/nengo/pull/1398>`_)
- The internal ``rng`` and ``seed`` fixtures have been removed. Use the
external `pytest-rng <https://www.nengo.ai/pytest-rng/>`__ package instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- The internal ``plt`` fixture has been removed. Use the
external `pytest-plt <https://www.nengo.ai/pytest-plt/>`__ package instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- The internal ``logger`` fixture has been removed. Use pytest's
`log capturing <https://docs.pytest.org/en/stable/how-to/logging.html>`__
instead. (`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Removed ``nengo.log`` and ``nengo.utils.logging``. Use the standard Python
and pytest logging modules instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- The internal ``analytics`` and ``analytics_data`` fixtures have been removed.
Use pytest's
`cache fixture <https://docs.pytest.org/en/stable/how-to/cache.html>`__
instead. (`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- The ``RefSimulator`` fixture has been removed. Use the ``Simulator`` fixture
and the ``nengo_test_unsupported`` configuration option instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Removed ``find_modules`` and ``load_functions`` from ``nengo.utils.testing``.
Backends wanting to run Nengo test should use ``pytest --pyargs nengo``
instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Removed ``nengo.tests.options``. It is no longer necessary to use
``-p nengo.tests.options`` when running Nengo tests.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Removed ``nengo.conftest``. Use pytest configuration options instead.
(`1566 <https://github.com/nengo/nengo/pull/1566>`__)
- Removed support for legacy cache files.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed the nengo ipynb progress bar extension. This is no longer needed in more
recent ipynb versions.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed the deprecated ``*_tau`` (e.g. ``pre_tau``) parameters from learning rules.
Use ``*_synapse`` instead.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed the deprecated ``neuron_nodes`` argument from ``networks.EnsembleArray``.
Use ``EnsembleArray.add_neuron_input/add_neuron_output`` instead.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed the deprecated ``progress.updater`` config option.
Use ``progress.progress_bar`` instead.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed the deprecated ``nengo.synapses.filt/filtfilt`` functions.
Use the ``Synapse.filt/filtfilt`` methods instead.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed the Python 2 compatibility code from ``utils.compat``.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed ``utils.connection.target_function``. Target points can be passed
directly to the ``Connection.function`` argument instead.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed ``utils.functions.piecewise``. Use ``nengo.processes.Piecewise`` instead.
(`1577 <https://github.com/nengo/nengo/pull/1577>`__)
- Removed ``utils.testing.Mock``.
(`1578 <https://github.com/nengo/nengo/pull/1578>`__)
**Fixed**
- ``FrozenObjects`` can control parameter initialization order when copying,
which fixed a bug encountered when copying convolutional connections.
(`1493 <https://github.com/nengo/nengo/pull/1493>`__)
- Fixed an issue in which reshaped signals were not having their offset
values preserved, causing issues with some node functions.
(`1474 <https://github.com/nengo/nengo/pull/1474>`__)
- Better error message when Node output function does not match the
given ``size_in``/``size_out``.
(`1452 <https://github.com/nengo/nengo/issues/1452>`_,
`1434 <https://github.com/nengo/nengo/pull/1434>`_)
- Several objects had elements missing from their string representations.
These strings are now automatically generated and tested to be complete.
(`1472 <https://github.com/nengo/nengo/pull/1472>`__)
- Fixed the progress bar in recent Jupyter Lab versions.
(`1499 <https://github.com/nengo/nengo/issues/1499>`_,
`1500 <https://github.com/nengo/nengo/pull/1500>`_)
- Some higher-order ``LinearFilter`` synapses had unnecessary delays
that have now been removed.
(`1535 <https://github.com/nengo/nengo/pull/1535>`__)
- Models using the ``SpikingRectifiedLinear`` neuron type now have their
decoders cached. (`1550 <https://github.com/nengo/nengo/pull/1550>`__)
- Optional ``ShapeParam``/``TupleParam`` can now be set to ``None``.
(`1569 <https://github.com/nengo/nengo/pull/1569>`__)
- Fixed error when using advanced indexing to connect to an ``Ensemble.neurons``
object.
(`1582 <https://github.com/nengo/nengo/issues/1582>`__,
`1583 <https://github.com/nengo/nengo/pull/1583>`__)