Skip to content

Releases: arbor-sim/arbor

v0.12.0

17 Apr 09:00
87a39d4

Choose a tag to compare

Release v0.12 (#2506)

Release notes

This release constitutes a major improvement in terms of parallel
performance
by replacing the underlying MPI algorithm (see our paper at IPDPS'26)
and
setup time by improving label resolution and adding the access to raw
labels.
On the functional side, we introduced AdEx cells, added a new load
balancing
method, and probes for the reversal potential.

What's Changed

New Contributors

Full Changelog:
v0.11.0...v0.12.0

v0.11.0

24 Apr 18:04
027a1a8

Choose a tag to compare

v0.11.0 (22.04.2025 Happy Easter)

Focussing on bug fixes, modernisation and performance improvements.
The memory footprint has been reduced substantially

Major changes since v0.10

  • Modernising the code base and infrastructure:
    • Begin adopting C++20
    • Use the ruff linter / formatter
    • Use CPM and simplify CMake.
  • Fixing problems with diffusion
    • Update units and scaling
    • Correct solver matrix coefficients
  • ⚠️ Modcc used to mis-compile -K^n into (-K)^n due to a parser error
  • Allow probing of point mechanism state variables by tag.

Breaking changes

  • Stricter checks on network construction / simulation parameters.
    • connections will now throw errors when given negative / zero delays
    • simulation will throw when given a network with minimum delay less than the
      timestep
  • Discretisation now is a property of the cable_cell object, no longer the
    decor

New tutorials and documentation

  • Plasticity tutorial
  • Add connectivity tutorial

Internal changes

  • Auto-generate type stubs
  • Remove clock for std::chrono
  • added E_R to lif cell model
  • Performance
    • Fix embarrassingly quadratic bug in fvm-layout
    • Faster sort spikes
    • Faster event dispatch
  • Memory footprint
    • Create less intermediate data from events
    • Elide GPU allocations for unused arrays (Xd, Xi, ...)
  • Clean-up catalogue extension. by @thorstenhater in #2409
  • Refactor discretization. by @thorstenhater in #2415

Detailed Changes

Full Changelog: v0.10.0...v0.11.0

v0.10.0

09 Aug 12:03
6b6cc90

Choose a tag to compare

v0.10.0 (08.08.2024)

Major Changes since v0.9.0

  • Automatic network generation from high-level specifications.
  • Units at the user interface including scaling and conversion.
  • Morphologies are loaded through a unified interface; which produces a bundle of morphology, metadata, and segment tree.

Internal Updates

  • Documentation overhaul
  • Python bindings offer type stubs; giving auto-completion and inline documentation in some editors/IDEs.
  • Performance improvements
    • Label resolution uses hashes instead of strings, saving memory, network traffic, and time.
    • Spike delivery is up to 30% faster leading to 10% end-to-end improvements in some cases (e.g. example/brunel)
    • Load balancing is faster and doesn't rely on MPI, leading to shorter setup times for large networks.
  • Fixes
    • Better support for source builds on MacOS (aarch64)
    • modcc no longer allows internal variables (v, celsius, ...) as ASSIGNED
    • Better support for raw (C++) mechanisms
  • MC cells renamed cable cells.

Breaking changes

  • Return values of all morphology loaders have changed.
  • Raw (segment tree) loaders removed.
  • Support for Python 3.8 removed.
  • C++: Removed simulation::inject_events, use a generator instead.

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.10.0

09 Aug 10:24
6b6cc90

Choose a tag to compare

v0.10.0 (08.08.2024)

Major Changes since v0.9.0

  • Automatic network generation from high-level specifications.
  • Units at the user interface including scaling and conversion.
  • Morphologies are loaded through a unified interface; which produces a bundle of morphology, metadata, and segment tree.

Internal Updates

  • Documentation overhaul
  • Python bindings offer type stubs; giving auto-completion and inline documentation in some editors/IDEs.
  • Performance improvements
    • Label resolution uses hashes instead of strings, saving memory, network traffic, and time.
    • Spike delivery is up to 30% faster leading to 10% end-to-end improvements in some cases (e.g. example/brunel)
    • Load balancing is faster and doesn't rely on MPI, leading to shorter setup times for large networks.
  • Fixes
    • Better support for source builds on MacOS (aarch64)
    • modcc no longer allows internal variables (v, celsius, ...) as ASSIGNED
    • Better support for raw (C++) mechanisms
  • MC cells renamed cable cells.

Breaking changes

  • Return values of all morphology loaders have changed.
  • Raw (segment tree) loaders removed.
  • Support for Python 3.8 removed.
  • C++: Removed simulation::inject_events, use a generator instead.

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.9.0

10 Aug 14:22
217c776

Choose a tag to compare

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.
  • 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.
  • 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.
  • 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

Core

Build, testing, CI

Fixes, optimization

New Contributors

Full Changelog: v0.8.1...v0.9.0

v0.8.1

22 Dec 16:26

Choose a tag to compare

v0.8.1

** 2022 12 22 **

A 🎄 holiday release! Not much has changed in a month, but we'd like to share it all the same. Notably, the Arbor GUI is co-released as of Arbor v0.8, and v0.8.1 will be no different.

Major new features

  • Voltage Processes: add the VOLTAGE_PROCESS mechanism kind to modcc, allowing for direct writing to the membrane voltage (#2033)
  • 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

  • None 💃!

Bug fixed

  • Fix ornstein_uhlenbeck example on gpu (#2039)
  • Setting ARB_MODCC was broken and nunfunctional. Fixed. (#2029)
  • The --cxx flag in arbor-build-catalogue is now properly used; falls back to c++. (#2051)

Full commit log

Full Changelog: v0.8...v0.8.1

v0.8

15 Nov 15:35
8e82ec1

Choose a tag to compare

v0.8

** 2022 11 15 **

Welcome to another installment of the Arbor simulator!

In this release we add a CHANGELOG, where major new features and breaking changes will be mentioned specifically.

Major new features

  • Stochastic Differential Equations. Introduces sources of white noise to arbor (and nmodl). Both point and density mechanisms may now use white noise as part of the state updates, turning the ODEs effectively into SDEs. The noise sources are provided per connection end point (point mech.) or control volume (density mech.) and are uncorrelated (spatially, temporally and across different mechanism instantiations). #1884
  • Mutable connection table. Add functionality, docs, and examples on editing the connection table. This is a first, small PR
    on the topic, further functionality will come as requested. #1919
  • Allow editing morphologies. Supported operations: join_at, split_at, equivalence, equality, apply isometry. #1957
  • Arbor cable cell exporter and backend support in BluePyOpt. #1959
  • Make LIF cells probeable. #2021

Breaking changes since v0.7:

  • A change in decor API: arbor.cable_cell has the labels and decor arguments swapped. I.e.: (tree, labels, decor)
    -> (tree, decor, label). Labels are now optional. #1978
  • Remove the generate-catalogue script. modcc accepts now a list of NMODL files and is able to spit out a catalogue.cpp file. #1975
  • Mechanism ABI version is bumped to 0.3.1. #1884
  • Rename spike detector -> threshold detector. #1976
  • Remove access to time t in NMODL. #1967
  • Major dependency version bumps:
    • GCC: 9 and up
    • CUDA: 11 and up
    • Clang: 10 and up

Full commit log

Neuroscience, documentation

Core

Build, testing, CI

Fixes, optimization

New Contributors

Full Changelog: v0.7...v0.8-rc

v0.7

20 Jul 07:58

Choose a tag to compare

What's Changed

Neuroscience/documentation

Core

Build, testing, CI

Fixes, optimization

New Contributors

Full Changelog: v0.6...v0.7

v0.6

26 Jan 14:35
930c23e

Choose a tag to compare

What's Changed

Core API:

CI/build/testing:

Documentation:

Fixes/optimization:

Read more

Arbor Library v0.5.2

24 Jun 09:32
51e3589

Choose a tag to compare

This release fixes an error in the CI generated Python wheels, which are as of this release available on PyPI. Other than those fixes, this release is identical to v0.5.1.