Skip to content

Commit

Permalink
Bump to v0.9.0 (#2202)
Browse files Browse the repository at this point in the history
  • Loading branch information
brenthuisman authored Aug 10, 2023
1 parent 2ffef47 commit 217c776
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 16 deletions.
2 changes: 1 addition & 1 deletion ATTRIBUTIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ BSD license.

https://github.com/halfflat/tinyopt

## Random123
## Random123
A header only counter-based random number generator, written by DE Shaw research
BSD license.

Expand Down
110 changes: 109 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,111 @@
# v0.9.0

** 2023 08 09 **

After much more delay than anticipated, we are very happy to present a new Arbor release. Nearly 8 months of work is in it, much of which focussed on speed, optimisation, fixes and build system changes. This release includes Python 3.12 wheels as probably one of the first packages on PyPI 😄.

## Major new features

* External Connectivity: Arbor can now interface with other simulators or processes through MPI. Contexts now accept a second MPI communicator and Recipes can implement a ``external_connections_on`` method to specify how simulations might be interacting. [See documentation for more.](https://docs.arbor-sim.org/en/latest/concepts/interconnectivity.html#cross-simulator-interaction)
* Arbor now supports checkpointing and resume from a previously stored checkpoint. Useful when a certain point in time needs to be explored in multiple directions, when you want to rewind to a previous state, etc. [See documentation for more.](https://docs.arbor-sim.org/en/latest/fileformat/serdes.html)
* More painted parameters are now scalable through `iexpr`: temperature, capacitance, resistivity, membrane potential and the following ionic parameters: internal and external concentration, diffusivity, and reversal potential. [See documentation.](https://docs.arbor-sim.org/en/latest/concepts/decor.html#scaling-mechanism-and-membrane-parameters)
* A set of ANN activation functions for NMODL have been added: `sigmoid(x)`, `relu(x)` and `tanh(x)`. Control volume `area` is exposed through NMODL.
* A revamped backend for ARM CPU's that support Scalable Vector Extension (SVE). Arbor and modcc are now fully compatible, so users who have access to A64FX-based HPC can take full advantage of that hardware.

## Breaking changes since v0.8.1

* It is no longer possible to set binning and sampling policies, due to Arbor now having a fixed timestep. Removing exact delivery increases the speed of the simulation due to elimination of small steps, makes the numerics independent of presence of sampling, and also leads to a number of code simplifications.
* Contexts are now constructed kwargs-only. So, `arbor.context(12, None)` is now `arb.context(threads=12, gpu=None)`. In the case no arguments are supplied, the context initialized to `default_allocation`, which means it will use the total number of threads and first GPU that are locally available. `arbor.simulation` constructed without an explicit `arbor.context` also initializes a `default_allocation`.
* Version bumps:
* CUDA 11 or higher is required for GPU builds.

## Full commit log

### Neuroscience, documentation

* Emit better warning. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2071
* ANN activation functions for NMODL: `sigmoid(x)`, `relu(x)` and `tanh(x)` by @llandsmeer in https://github.com/arbor-sim/arbor/pull/2052
* 📊 Make profiler output a bit nicer. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2078
* Merge GUI tutorial by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2088
* Busyring example by @boeschf in https://github.com/arbor-sim/arbor/pull/2100
* Feature: External Connectivity by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2001
* FEATURE: fixed dt by @boeschf in https://github.com/arbor-sim/arbor/pull/2053
* mention Matrix, GUI, Playground in docs by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2113
* Document presets by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2126
* Doc updates by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2119
* CV area exposed to NMODL. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2110
* Fix enumeration in docs by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2140
* Docs: corrections. by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2135
* Fix documentation by @boeschf in https://github.com/arbor-sim/arbor/pull/2152
* Address missing logo on all but front page by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2155
* Document features by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2158
* Make (most) painted parameters scalable. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2141
* Add better (helpful?) errors on mechanism semantic misuse. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2171
* Checkpoint/Resume by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2081

### Core

* Better handling of powers in modcc. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2061
* Silence spurious unused variable warnings in generated code by @bcumming in https://github.com/arbor-sim/arbor/pull/2073
* BluePyOpt API updates by @lukasgd in https://github.com/arbor-sim/arbor/pull/2045
* Add some missing #include directives by @musicinmybrain in https://github.com/arbor-sim/arbor/pull/2080
* Remove redundant sample events structure. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2079
* 🧹 Re-factor FVM lowered cell implementation and shared state by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2082
* Take less locks for shorter times when sampling. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2093
* Fix LIF oversampling. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2091
* 📊 Pin threads by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2094
* Add zero'ing by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2107
* Add an error on NET_RECEIVE w/ > 1 args. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2127
* Update busyring to generate rings by @bcumming in https://github.com/arbor-sim/arbor/pull/2144
* Apply some polish to model construction. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2134
* SVE backend by @boeschf in https://github.com/arbor-sim/arbor/pull/2148
* Exit `sup::path` stage left; enter `std::filesystem::path` stage right by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2165
* gtest dependency by @boeschf in https://github.com/arbor-sim/arbor/pull/2163

### Build, testing, CI

* v0.8.1 by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2072
* v0.8.1 postrelease by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2074
* Enable Spack tests by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2098
* Python/pip strikes again: execute `pip install` in venvs by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2111
* Scikit build core by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2121
* Spack: add dev version by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2150
* Break out pip and doc tests, exclude doc-change from eating up precious runner cycles by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2160
* rename test-pip.yml by @boeschf in https://github.com/arbor-sim/arbor/pull/2166
* cscs-ci by @boeschf in https://github.com/arbor-sim/arbor/pull/2149
* gtest in CI containers by @boeschf in https://github.com/arbor-sim/arbor/pull/2170
* Spack-solvable versions, add tests to Spack workflow by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2156
* Fudge version in pyproject.toml for ci by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2200
* enable remote example by @boeschf in https://github.com/arbor-sim/arbor/pull/2173

### Fixes, optimization

* [BUGFIX] a-b-c: actually set compiler, improved default by @brenthuisman in https://github.com/arbor-sim/arbor/pull/2051
* 🐙 Optimise PPACK by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2067
* Silence flake8 and appease black. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2086
* BUGFIX: add missing functions to sve backend by @boeschf in https://github.com/arbor-sim/arbor/pull/2096
* BUGFIX gpu ppack declarations by @boeschf in https://github.com/arbor-sim/arbor/pull/2087
* BUGFIX: gpu mechanism init by @boeschf in https://github.com/arbor-sim/arbor/pull/2095
* The Initialisation Optimisation by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2097
* Fix crash in FindId Visitor. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2115
* Add LTO and M1 arch to CMake by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2106
* Fix crash on probing non-existent mechanism state. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2112
* Python/concurrency defaults by @brenthuisman in https://github.com/arbor-sim/arbor/pull/1979
* Add faster merge events. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2108
* Fix a typo in python bindings. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2125
* Fix incorrect mention of attribute `catalogue` in `single_cell_model` by @Helveg in https://github.com/arbor-sim/arbor/pull/2122
* Avoid crash when integrating over empty branch. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2124
* fix lint pipleine by @boeschf in https://github.com/arbor-sim/arbor/pull/2151
* Ward against probing the void. by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2139
* Fix GPU/NVC problems by @thorstenhater in https://github.com/arbor-sim/arbor/pull/2143
* fix ODR violation by @boeschf in https://github.com/arbor-sim/arbor/pull/2154

## New Contributors
* @musicinmybrain made their first contribution in https://github.com/arbor-sim/arbor/pull/2080

**Full Changelog**: https://github.com/arbor-sim/arbor/compare/v0.8...v0.9.0-rc


# v0.8.1

** 2022 12 22 **
Expand All @@ -10,7 +118,7 @@ A 🎄 holiday release! Not much has changed in a month, but we'd like to share
- Spack gpu option: added conditional variant for cuda builds to enable GPU-based random number generation (#2043)
- SDE Tutorial (#2044)

## Breaking changes since v0.7
## Breaking changes since v0.8

- None 💃!

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.8.2-dev
0.9.0
16 changes: 6 additions & 10 deletions doc/contrib/release.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Update tags/versions and test

#. Check if some files are up to date

- README.md, ATTRIBUTIONS.md, CONTRIBUTING.md, CHANGELOG.md
- README.md, ATTRIBUTIONS.md, CONTRIBUTING.md, CHANGELOG.md. For autogenerated CHANGELOG, see below.
- Verify MANIFEST.in (required for PyPI sdist)
- Double check that all examples/tutorials/etc are covered by CI
- Check Python/pip/PyPi metadata and scripts, e.g. ``setup.py``, ``pyproject.toml``
Expand All @@ -52,18 +52,18 @@ Update tags/versions and test
- See also :ref:`dev-version`
- Append ``-rc``. (Make sure there's no ``-dev``)

#. Create a draft PR. Tag and push with ``-rc``. E.g. ``v0.9.0-rc``
#. Create a **draft PR**. Tag and push with ``-rc``. E.g. ``v0.9.0-rc``

- on cmdline: ``git tag -a TAGNAME``
- ``git push upstream refs/tags/TAGNAME``
- Githubs autogenerated release notes can only be generated on a tag. Use this ``-rc`` tag to do so, and add the commit to the draft PR. Ensure Github takes the previous release as base.

#. Run and pass all tests.

- They should run automatically based on the draft PR. Pushing the tag kicks of ``ciwheel``.
- They should run automatically based on the draft PR. Pushing the tag kicks of ``cibuildwheel``.
- In case you want to test ``ciwheel.yml`` manually on your local repo ``origin``, push to a branch called ``ciwheel``, e.g. ``git push origin HEAD:ciwheel``.

- ``ciwheel.yml`` pushes automatically to `Test.PyPI.org <https://test.pypi.org/project/arbor/>`_. This only passes if ran as branch of the main ``arbor-sim`` repo (as that's where the PyPI secret lives). On your own repo, the upload will fail (the rest should pass). If you want to test uploading, then force push to the _upstream_ ``ciwheel`` branch, e.g. ``git push upstream HEAD:ciwheel --force``.
- ``ciwheel.yml`` pushes automatically to `Test.PyPI.org <https://test.pypi.org/project/arbor/>`_. This only passes if ran as branch of the main ``arbor-sim`` repo (as that's where the PyPI secret lives). On your own repo, the upload will fail (the rest should pass). If you want to test uploading, then force push to the _upstream_ ``ciwheel`` branch, e.g. ``git push upstream HEAD:ciwheel --force``.

- If you want to test the PyPI submission (consider asking other OS-users):

Expand All @@ -74,16 +74,14 @@ Update tags/versions and test
pip install -i https://test.pypi.org/simple/ arbor #should select the latest build, otherwise e.g. arbor==0.8rc0
python -c 'import arbor; print(arbor.__config__)'
- Use build flags to test the source package: :ref:`in_python_adv`

Release
-------

#. Make sure no errors were encountered in the pre-release phase, working wheels were produced, and were installable from `Test.PyPI.org <https://test.pypi.org/project/arbor/>`_ and that no problems were reported.

#. Change ``VERSION``. Make sure does not end with ``-rc`` or ``-dev``.
#. Change ``VERSION``. Make sure does not end with ``-rc`` or ``-dev``. Push to the **draft PR** opened earlier for the rc.

#. Merge the PR.
#. When tests pass, merge the PR.

#. Tag

Expand Down Expand Up @@ -120,8 +118,6 @@ Release
Post Release
------------

#. Place the Github generated release notes in ``CHANGELOG``.

#. Start a new release on Zenodo, this allocated a DOI, but you don't have to finish it right away. Add new Zenodo badge/link to docs/README.

#. Update Zenodo with authors and changelog created in previous step and submit.
Expand Down
7 changes: 4 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "arbor"
version = "0.8.2-dev" # TODO: make dependent on VERSION file. Blocked by https://github.com/scikit-build/scikit-build-core/issues/230
version = "0.9.0" # TODO: make dependent on VERSION file. Blocked by https://github.com/scikit-build/scikit-build-core/issues/230
readme = {file = "README.md", content-type = "text/markdown"}
license = {file = "LICENSE"}
description = "High performance simulation of networks of multicompartment neurons."
Expand All @@ -22,6 +22,7 @@ classifiers = [
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: C++"
]
dependencies = [
Expand All @@ -42,7 +43,7 @@ wheel.packages = []

[tool.black]
line-length = 88
target-version = ['py37', 'py38', 'py39', 'py310', 'py311']
target-version = ['py37', 'py38', 'py39', 'py310', 'py311', 'py312']
include = '\.pyi?$'
extend-exclude='^/(ext|doc/scripts/.*_theme|doc/scripts/inputs.py)'

Expand All @@ -58,12 +59,12 @@ requires = [
]
build-backend = "scikit_build_core.build"


[tool.cibuildwheel]
build-frontend = "build"
build = ["*linux*","*macosx*"]
skip = ["cp36*", "*musllinux*"]
test-command = "python -m unittest discover -v -s {project}/python"
test-skip = "cp312*"
dependency-versions = "latest"

[tool.cibuildwheel.macos]
Expand Down

0 comments on commit 217c776

Please sign in to comment.