From be184cf5f94d3b0039c8e4224dff1d2b8997d92d Mon Sep 17 00:00:00 2001 From: Hananel Hazan Date: Thu, 29 Oct 2026 18:18:43 -0400 Subject: [PATCH] release: 0.3.5; results-changing fixes may ship in any release Version 0.3.5 in pyproject.toml, CITATION.cff and models_spec.rst; CHANGELOG Unreleased entries moved under [0.3.5] - 2026-10-29. CONTRIBUTING.md, the PR template and test/regression/README.md: results-changing fixes are announced under "Results changes" in any release; code-breaking changes wait for 0.4.0. Co-Authored-By: Claude Opus 5.5 --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- CHANGELOG.md | 5 +++++ CITATION.cff | 2 +- CONTRIBUTING.md | 10 ++++++---- docs/source/models_spec.rst | 2 +- pyproject.toml | 2 +- test/regression/README.md | 6 +++--- 7 files changed, 19 insertions(+), 12 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a6eefb50..019c71d9 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,8 +15,8 @@ - [ ] Does this change simulated results (spikes, voltages, traces, weights)? - [ ] No. - [ ] Yes. I regenerated the golden files in `test/regression/` with - `--reason`, and explain below why the results changed. (Results-changing - fixes are released in 0.4.0, not 0.3.x; see `CONTRIBUTING.md`.) + `--reason`, and explain below why the results changed. Add a + "Results changes" entry to `CHANGELOG.md`; see `CONTRIBUTING.md`.) - [ ] Did any of these files change? If yes, say which and why: - golden files under `test/regression/` - operation-count file under `test/regression/` (if present) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eb6461a..2cb5b5eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ see the [GitHub releases / tags](https://github.com/BindsNET/bindsnet/releases). ## [Unreleased] +## [0.3.5] - 2026-10-29 + ### Results changes (read this before upgrading) These fixes change numbers that code produced before. Everything else in this release either was a crash before or gives bit-identical results (checked by the @@ -147,6 +149,9 @@ golden-output tests in `test/regression/`). - `test/environment/test_gym_environment.py`. ### Changed +- Release rule (`CONTRIBUTING.md`): fixes that change results may ship in any + release and are always listed first, under "Results changes". Before, they waited + for 0.4.0. Changes that break user code still wait for the next minor release. - Convolutional and locally connected connections normalize all kernels in one operation instead of a Python loop (6 to 45 times faster on CPU). Results are identical on CPU; on CUDA, float32 kernels of 81 or more weights can differ by diff --git a/CITATION.cff b/CITATION.cff index e54f7d9d..72e83514 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.2.0 message: "If you use BindsNET, please cite the article below." title: "BindsNET: A Machine Learning-Oriented Spiking Neural Networks Library in Python" type: software -version: 0.3.4 +version: 0.3.5 license: AGPL-3.0-only doi: 10.5281/zenodo.20695115 repository-code: "https://github.com/BindsNET/bindsnet" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8379da55..9b16e740 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -110,10 +110,12 @@ harmless. Please do not edit them by hand to make them pass. head takes more than 1.25 times as long (median over the rounds) and the lower end of the 95% bootstrap interval of that ratio is above 1. It is not a required check; shared CI machines are noisy, and a maintainer decides. -**Fixes that change results are released in 0.4.0, not in 0.3.x.** A correct fix that -changes what a simulation produces still changes published numbers for people using -0.3.x, so it waits for the next minor release. State in the pull request whether your -change alters results, and add a `CHANGELOG.md` entry that says so. +**Fixes that change results can ship in any release, and are always announced.** A +correct fix that changes what a simulation produces still changes numbers people have +published, so `CHANGELOG.md` lists it first, under "Results changes", naming the affected +classes or models. State in the pull request whether your change alters results, and add +that entry. Changes that break user code (a removed or renamed argument, a different +return type) wait for the next minor release (0.4.0). ## Releasing to PyPI diff --git a/docs/source/models_spec.rst b/docs/source/models_spec.rst index 771de981..3cbe0a70 100644 --- a/docs/source/models_spec.rst +++ b/docs/source/models_spec.rst @@ -6,7 +6,7 @@ models BindsNET implements: the difference equations actually solved each timest the default parameters with units. Equations and defaults below were transcribed from the source (``bindsnet/network/nodes.py`` and ``bindsnet/learning/learning.py``); when in doubt, the source is authoritative. Parameter defaults are stated as of package -version 0.3.4. +version 0.3.5. Discretization -------------- diff --git a/pyproject.toml b/pyproject.toml index b2ea9d1e..8aa3c1e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "bindsnet" -version = "0.3.4" +version = "0.3.5" description = "Spiking neural networks for ML in Python" authors = [ { name = "Hananel Hazan", email = "hananel@hazan.org.il" }, diff --git a/test/regression/README.md b/test/regression/README.md index 01be7ac7..9381dfa1 100644 --- a/test/regression/README.md +++ b/test/regression/README.md @@ -53,9 +53,9 @@ Your change altered a result. Either that is the point of the change, or it is a python test/regression/regen.py --reason "why the results changed" ``` -The script refuses to run without a reason and stores it in every file. Results-changing -fixes are released in version 0.4.0, not in a 0.3.x patch release, so the pull request -will wait for that release. See `CONTRIBUTING.md`, "Tests that guard results". +The script refuses to run without a reason and stores it in every file. A results-changing +fix also needs an entry under "Results changes" in `CHANGELOG.md` that names the affected +classes or models. See `CONTRIBUTING.md`, "Tests that guard results". ## When an operation-count test fails