Skip to content

Commit 6abc7ad

Browse files
authored
chore(release): 2.8.1 (#869)
Bump version to 2.8.1 and add the 2.8.1 changelog entry.
1 parent 6220755 commit 6abc7ad

2 files changed

Lines changed: 58 additions & 1 deletion

File tree

‎brainpy/_version.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
# limitations under the License.
1515
# ==============================================================================
1616

17-
__version__ = "2.8.0"
17+
__version__ = "2.8.1"
1818
__version_info__ = tuple(map(int, __version__.split(".")))

‎changelog.md‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,62 @@
11
# Changelog
22

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+
360
## Version 2.8.0
461

562
**Release Date:** June 19, 2026

0 commit comments

Comments
 (0)