|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## Version 2.8.1 |
| 4 | + |
| 5 | +**Release Date:** July 9, 2026 |
| 6 | + |
| 7 | +Version 2.8.1 is a patch release that continues the 2.8.0 correctness focus. Its centerpiece is a second audited, library-wide bug-fix sweep (#868) — 18 confirmed defects across `dnn`, the integrators, encoders, initializers, connectivity, optimizers, `dynold` synaptic plasticity, the offline/online training algorithms, the object-transform layer, and the simulation runners — each backed by a co-located regression test. The release also repairs adaptive pooling on up-sampling, fixes a `PoissonGroup` spiking regression, and moves version metadata into a dedicated `brainpy._version` module. |
| 8 | + |
| 9 | +### Bug Fixes |
| 10 | + |
| 11 | +#### Audited correctness sweep (#868) |
| 12 | + |
| 13 | +**Normalization and encoding** |
| 14 | +- `LayerNorm`: normalize over the trailing `normalized_shape` dimensions instead of the leading batch/time axes. |
| 15 | +- `WeightedPhaseEncoder`: use a float power base so phase weights are non-zero (the encoder previously never spiked). |
| 16 | + |
| 17 | +**Integrators** |
| 18 | +- Stratonovich Euler–Heun SDE: scale the predictor's Wiener increment by `sqrt(dt)`, making it consistent with the corrector. |
| 19 | + |
| 20 | +**Initializers** |
| 21 | +- `TruncatedNormal`: default to a finite 2-sigma truncation and accept `None` bounds as ±inf. |
| 22 | +- `DOGDecay`: produce a symmetric kernel on non-square grids and honor the `normalize` flag. |
| 23 | +- `_compute_fans`: handle 0-D/1-D shapes, fixing VarianceScaling initializers on bias vectors. |
| 24 | + |
| 25 | +**Connectivity** |
| 26 | +- `FixedProb.build_csr`: emit a valid full-range CSR `indptr` when `pre_ratio < 1`. |
| 27 | +- `FixedTotalNum`: accept a fractional `num` as a connection fraction. |
| 28 | +- `GridConn`: de-duplicate periodic-boundary COO edges on small grids. |
| 29 | + |
| 30 | +**Optimizers** |
| 31 | +- `MomentumNesterov`: apply the Nesterov look-ahead (it was previously identical to plain Momentum). |
| 32 | +- `Adadelta`: honor the learning rate. |
| 33 | +- `LARS`: clamp the degenerate zero-norm trust ratio to 1. |
| 34 | + |
| 35 | +**Training algorithms and runners** |
| 36 | +- `Ridge`/`LinearRegression`: fix an IRLS `while_loop` seed that returned the untrained initial weights. |
| 37 | +- `LogisticRegression`: build the Newton diagonal with pure JAX ops, avoiding the `__jax_array__` abstractification error. |
| 38 | +- `OnlineTrainer`: stop crashing on scalar monitor histories and keep time-major output in `data_first_axis='T'` mode. |
| 39 | +- `BPTT.fit`: accept a valid iterable dataset of exactly two `(x, y)` batches. |
| 40 | +- `DSRunner.predict`: forward `shared_args` in the memory-efficient path. |
| 41 | + |
| 42 | +**Object transforms** |
| 43 | +- `vector_grad`: support the parameterized-decorator form (`func=None`). |
| 44 | + |
| 45 | +**Synaptic plasticity** |
| 46 | +- `dynold` short-term plasticity (both implementations): remove a spurious source term so facilitation decays correctly when there are no presynaptic spikes. |
| 47 | + |
| 48 | +#### Other fixes |
| 49 | +- `dnn` pooling: fix an adaptive-pooling `ZeroDivisionError` when a spatial dimension is smaller than its target (up-sampling), and add numpy typing stubs (#867). |
| 50 | +- `dyn`: `PoissonGroup` now spikes correctly (boolean `rand_like` dtype regression) (#862). |
| 51 | +- Fixed a `SupportSTDP.stdp_update` keyword typo and a `DSRunner` deprecation warning (#864). |
| 52 | +- Refreshed documentation notebooks and fixed `clear_buffer`/`pmap` runtime bugs (#863). |
| 53 | + |
| 54 | +### Build and Tooling |
| 55 | +- Drove package-wide `mypy` to zero errors (#863). |
| 56 | +- Moved `__version__`/`__version_info__` into a dedicated `brainpy._version` module (#865) and read the packaged version statically at build time (#866). |
| 57 | +- Bumped `codecov/codecov-action` from 5 to 7 (#861). |
| 58 | + |
| 59 | + |
3 | 60 | ## Version 2.8.0 |
4 | 61 |
|
5 | 62 | **Release Date:** June 19, 2026 |
|
0 commit comments