|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## Version 2.7.7 |
| 4 | + |
| 5 | +**Release Date:** March 12, 2026 |
| 6 | + |
| 7 | +This release migrates to the new `brainevent` binary backend API, fixes numerous bugs across neuron models, synapse dynamics, ODE integrators, and object transforms, and raises the minimum Python version to 3.11. |
| 8 | + |
| 9 | +### Breaking Changes |
| 10 | + |
| 11 | +#### Python Version Requirement |
| 12 | +- **Raised**: Minimum Python version from 3.10 to **3.11** |
| 13 | + - Dropped Python 3.10 support from classifiers and build metadata |
| 14 | + |
| 15 | +#### brainevent API Migration (#817) |
| 16 | +- **Updated**: Event-driven operations to use the new `brainevent` binary backend |
| 17 | + - `EventArray` replaced by `BinaryArray` in all event CSR and jitconn operations |
| 18 | + - `JITCHomoR` replaced by `JITCScalarR` for homogeneous JIT connectivity |
| 19 | + - STDP weight update functions renamed: |
| 20 | + - `dense_on_pre` / `dense_on_post` → `update_dense_on_binary_pre` / `update_dense_on_binary_post` |
| 21 | + - `csr_on_pre` / `csr2csc_on_post` → `update_csr_on_binary_pre` / `update_csr_on_binary_post` |
| 22 | + - Affected layers: `Dense`, `AllToAll`, `MaskedLinear`, and all CSR-based layers |
| 23 | + |
| 24 | +### Bug Fixes |
| 25 | + |
| 26 | +#### Neuron Models |
| 27 | +- **Fixed**: All LIF-family neuron models (`LifLTC`, `LifRefLTC`, `ExpIFLTC`, `ExpIFRefLTC`, `AdExIFLTC`, `AdExIFRefLTC`, `QuaIFLTC`, `QuaIFRefLTC`, `AdQuaIFLTC`, `AdQuaIFRefLTC`, `GifLTC`, `GifRefLTC`) now raise descriptive `ValueError` messages for invalid `spk_reset` modes instead of bare `ValueError` |
| 28 | + |
| 29 | +#### Synapse Models |
| 30 | +- **Fixed**: Synaptic variable updates in `DualExpon`, `Alpha`, and `NMDA` models |
| 31 | + - Replaced in-place `+=` operator with explicit `.value` assignment to prevent tracing issues under JAX transformations |
| 32 | + |
| 33 | +#### ODE Integrators |
| 34 | +- **Fixed**: `BogackiShampine` adaptive Runge-Kutta coefficient typo — corrected `'4/0'` to `'4/9'` in the Butcher tableau |
| 35 | +- **Fixed**: `set_default_odeint` was incorrectly assigning to `_DEFAULT_ODE_METHOD` instead of `_DEFAULT_DDE_METHOD` |
| 36 | + |
| 37 | +#### Object Transforms |
| 38 | +- **Fixed**: `Variable.varshape` used `self.batch_size` instead of `self.batch_axis` when computing non-batch shape dimensions |
| 39 | +- **Fixed**: `NodeDict.update()` and `VarDict.update()` referenced `args[1]` instead of `arg[1]` when updating from tuple arguments |
| 40 | +- **Fixed**: `NodeDict.__setitem__` duplicate key error message incorrectly displayed the new value instead of the existing one |
| 41 | + |
| 42 | +#### Training |
| 43 | +- **Fixed**: `BPTrainer` did not raise `NoLongerSupportError` when `seed` parameter was passed (missing `raise` keyword) |
| 44 | +- **Fixed**: `BPTrainer` metric aggregation switched from `jnp.mean(bm.as_jax(...))` to `np.mean(np.asarray(...))` to avoid unnecessary JAX tracing overhead |
| 45 | + |
| 46 | +#### Core |
| 47 | +- **Fixed**: `ShardedArray.value` setter used `_check_tracer()` instead of direct `_value` access |
| 48 | +- **Fixed**: `_slice_to_num` did not handle negative step values and raised no error on zero step |
| 49 | +- **Fixed**: `load_state` crashed with `KeyError` when state dict contained missing keys; now correctly reports them as missing |
| 50 | + |
| 51 | +#### Code Quality |
| 52 | +- **Improved**: Narrowed bare `except` clauses to specific exception types (`ValueError`, `TypeError`, `ImportError`, `ModuleNotFoundError`) in convolution layers and Flax interoperation module |
| 53 | + |
| 54 | +### Dependencies |
| 55 | + |
| 56 | +- **Updated**: `brainevent` from `>=0.0.4` to `>=0.0.7` |
| 57 | +- **Updated**: `braintools` version spec corrected to `>=0.0.9` |
| 58 | +- **Updated**: `numpy` minimum version set to `>=1.15` |
| 59 | +- **Updated**: `brainpy_state` from `>=0.0.2` to `>=0.0.3` |
| 60 | + |
| 61 | +### CI/CD |
| 62 | + |
| 63 | +- **Updated**: `actions/upload-artifact` from v6 to v7 (#815) |
| 64 | +- **Updated**: `actions/download-artifact` from v7 to v8 (#816) |
| 65 | + |
| 66 | + |
| 67 | +--- |
| 68 | + |
3 | 69 | ## Version 2.7.6 |
4 | 70 |
|
5 | 71 | **Release Date:** January 21, 2026 |
|
0 commit comments