Change log#
↗️ = updated since previous release
v2026.8.18#
This release brings the bundle to JAX 0.11. JAX 0.11.0 and 0.11.1 changed
the tracing internals the whole stack is built on — the scan primitive dropped
its num_consts / num_carry parameters, Jaxpr and ClosedJaxpr were merged
into a single class, core.CallPrimitive was deleted, and is_constant_dim and
concrete_or_error moved namespaces — and every affected component has now
adapted. Five packages advance: BrainUnit 0.5.2, BrainEvent 0.2.1,
BrainState 0.5.4, BrainTrace 0.2.6, and BrainPy 2.8.2. The
supported JAX range widens from <= 0.10.2 to <= 0.11.1, which is what
actually delivers that work to users of the bundle.
The set stays coherent because the fixes interlock: BrainState 0.5.4 is the
floor at which import brainstate — and therefore BrainCell, BrainPy-State and
everything else downstream — survives JAX 0.11.1, and BrainTrace 0.2.6
requires BrainEvent >= 0.1.2, satisfied by 0.2.1. Alongside the compatibility
work, BrainEvent 0.2.1 lands a substantial correctness overhaul of the
just-in-time-connectivity and CUDA kernels, and BrainTrace 0.2.5 is that
project’s largest feature release since 0.2.0. Both carry breaking changes;
see their sections below before upgrading.
Package Dependencies:
jax<=0.11.1,>=0.8.0↗️ (ceiling raised from0.10.2)
BrainEvent
0.2.1— JITC connectivity parity, a newDenserepresentation, and a CUDA correctness sweep (spans0.2.0and0.2.1):Just-in-time connectivity now draws one matrix everywhere. In
0.1.xthenumbaCPU kernels generated connectivity from an LFSR stream while thecuda_rawkernels used the light-RNG walk, so the same(prob, seed, shape)described a different matrix on each platform — and the matrix-vector and matrix-matrix paths differed again. Thenumbakernels were rebuilt on the CUDA walk and themmpath folded onto the 32-lanemvwalk, sojits,jitsmv,jitsmm,binary_jitsmv,binary_jitsmm,jits_to_csrandjitsmv_dt2t— and thejitn/jituequivalents — now materialize one matrix, identically on CPU and GPU. Breaking: JITC values recorded against0.1.xwill not reproduce, and seeds are not portable across the change; re-record any golden outputs. Only the drawn matrix changed, not the operator semanticsNew
brainevent.Densedata representation — the dense counterpart toCSR/CSC/FixedNumPerPre/FixedNumPerPost, with the same contract: unit-awaredata, namedbuffers, event-driven binary matmul dispatch, theupdate_dense_on_binary_pre/_postplasticity helpers, and pytree registrationint64indptrforCSR/CSCvia the newindptr_dtypeargument ("auto"promotes only whennnzexceeds theint32range; requiresjax_enable_x64), plus a tunable CSR hybrid CUDA scheduler (HybridConfig,get_hybrid_config,init_csr_config, which benchmarks and caches a winning configuration per GPU model), a'cublas'GPU backend forbinary_densemv/binary_densemm, andnumbaCPU kernels for the JITC CSR anddt2tpaths that were previously CUDA-onlyCorrectness: an operator-registration audit closes 19 defects — stale backend dispatch after a runtime backend switch, silently dropped JVP rules, incomplete compilation-cache keys, order-dependent FFI target names, and incorrect
vmapexecution ofnumba.cudakernels among them. A sweep of the whole CUDA tree fixes an out-of-bounds shared-memory request that aborted the context forfloat64binary_csrmm, widens 54 index expressions that wrapped pastINT32_MAX, and restores the missing warp-per-row CSRMV dispatch tier (up to 3.4× on the row lengths typical of sparse connectivity)Breaking, beyond the JITC values:
CSR/CSCvalidate their structure at construction and now raiseTypeError/ValueError/OverflowErrorimmediately rather than failing later inside a kernel;CSR.fromdense(..., index_dtype=jnp.int64)raises (useindptr_dtype=); the retiredbrainevent.pararnnsubpackage is removed; and 154 unreachable CUDA entry points were retired in favor of the auto-dispatching wrappers that already selected them. Note that thematrix_modekeyword and themat.mv/mat.mmmaterialization views introduced by0.2.0were removed again in0.2.1, so signatures return to their0.1.2shape — upgrading straight from0.1.2sees no signature change
BrainState
0.5.4— JAX 0.11.0 and 0.11.1 compatibility (spans0.5.3):Both releases are pure compatibility patches: no public API is added, removed, or renamed, and behavior is unchanged on every supported JAX version. The supported floor is now
jax>=0.8.00.5.3repairsbrainstate.transform’s intermediate-representation tooling for JAX 0.11.0, which replaced thescanequation’snum_consts/num_carryintegers withFlatTreedescriptors and mergedJaxprintoClosedJaxpr. A version-agnosticscan_num_consts_carry()helper recovers the constant/carry split for the IR code generator and visualizer, takingtransformfrom 18 failures to a clean 1282-test pass on 0.11.00.5.4restoresimport brainstateitself on JAX 0.11.1, which deletedcore.CallPrimitive— the name is now reconstructed overregister_call_primitive_rules()when absent. It also fixes aneqns_to_closed_jaxpr()length check that had silently stopped validating (0.11.1 derivesconstvarsfrom attached values, so the check read an always-empty list and accepted mismatchedconsts), and converts an installed-but-unimportable optional interop framework into an actionableInteropErrornaming the package and JAX versionKnown issue:
flax==0.12.8cannot be imported under JAX 0.11.1 (jax.experimental.hijax.MutableHiTypeno longer exists), sobrainstate.interop’s Flax conversions are unavailable there until Flax ships a compatible release. This is upstream and has no BrainState-side fix; Equinox interop is unaffected. Pinjax==0.11.0if you need Flax interop
BrainTrace
0.2.6— sequence drivers, five new learning rules, and a JAX 0.11 gradient fix (spans0.2.5and0.2.6):Sequence-driver API.
etrace_grad/etrace_evolveon every algorithm remove the hand-written scan-and-accumulate loop from the call site, withmask,chunk_size,weights,reduction,loss_output,has_auxandreturn_value;compile(..., vmap=True)returns anETraceVmapexposing the same methods, so batched and unbatched call sites are identicalFive new learning rules —
SnAp(sparse n-step approximation, withrecurrence_scopegeneralized to an n-step neighbourhood computed from the compiled graph),UORO(unbiased rank-1 estimate at O(P) memory),ThreeFactor(neuromodulation-style third factor),DNI(synthetic gradients) and the publicRandomProjectionVjpAlgorithmengine — expressed as coordinates in the newETraceConfigsix-axis space rather than as bespoke implementations. Illegal combinations are rejected at construction, equivalent coordinates canonicalize, and the named algorithms become thin factories pinned by 24 frozen golden gradientsRobustness: the hidden↔gradient correspondence is now checked with explicit
raises rather thanasserts that vanished underpython -O(and that only ever compared cardinalities); the three control-flow canonicalization fixpoint loops are bounded byControlFlowPolicy.fixpoint_iteration_limit, so a non-converging rewrite raisesCompilationErrorinstead of hanging the compiler; andnn.Embeddingrejects unsupported arguments at construction rather than from ajittraceJAX 0.11 fix (
0.2.6). The mergedJaxprrepresentation derives theconstvars/invarsboundary from attached constant values, but the ETP compiler builds transition jaxprs whose constvars carry symbols with no values — so they began reportingconstvars == [], passing too few arguments toeval_jaxprand taking down essentially every gradient path (D-RTRL, ES-D-RTRL / pp_prop, EProp, OSTL, SnAp, UORO, DNI and the BPTT oracles) across every ETP primitive family: 690 of 2902 tests failed on JAX 0.11.1. The split is now derived from the invar count with no version branching, and the full suite passes. The same change fixes SnAp-n position analysis, whose adjacency walk had silently widened to include every constvar and typically collapsed to the conservative all-positions-couple fallbackBreaking:
OTTT,OSTTP,OTPEandPresynapticTraceare removed — none was model-agnostic (all whitelisted dense matmul and raisedNotImplementedErrorfor LoRA / sparse / conv / element-wise) and all were single-step only. MigrateOTTT→pp_prop,OTPE→D_RTRLorpp_prop,OSTTP→EProp(feedback='random'); the new axis decomposition covers their coordinates for every ETP primitive.IODimVjpAlgorithm.decayis now a read-only property that raises when the x-side and f-side decays differ, and the private module_state_managmentis spelled_state_managementAlso:
braintrace.nn.CFNCellis exported,decay_or_rank=0.0is accepted,jax>=0.8.0is a declared dependency instead of one borrowed from BrainEvent, and the wheel no longer ships the test suite (1.24 MB, down from 2.90 MB)
BrainPy
2.8.2— JAX 0.11 compatibility and infrastructure:Imports
concrete_or_errorfromjax.extend.coreon JAX>= 0.11, where it was removed fromjax.interpreters.partial_evalCompletes the
master→mainbranch rename begun in2.8.1, and adds acodecov.ymlpinning the default branch so the coverage badge reports real numbers againAdds a
brainpy.staterelationship admonition to the API reference and repoints thebrainpy.statedocumentation links at the canonicalbrainx.chaobrain.com/brainpy-stateURLs
BrainUnit
0.5.2—einsumrestored on JAX 0.11:JAX 0.11 removed
is_constant_dimfrom the publicjax.corenamespace with nojax.extend.corereplacement, so the constant-dimension check inbrainunit.math.einsumraisedAttributeError. The symbol now resolves through the version-aware_compatible_importshim, keeping the einsum contraction path working across JAX 0.6–0.11The public API is unchanged, so
0.5.2is a drop-in upgrade from0.5.1
JAX range widened to
<= 0.11.1:The ceiling moves from
0.10.2to0.11.1now that every component in the pinned set has been fixed and verified against the new release. The floor stays at0.8.0, and the daily compatibility matrix gains pinned0.10.0and0.11.0legs so each supported minor keeps its own coverage alongside the unpinned latest run
v2026.7.9#
This maintenance release advances three ecosystem components to their latest
releases — BrainEvent 0.1.2, BrainTrace 0.2.4, and BrainPy
2.8.1 — and pins Optax >= 0.2.8 as an explicit supporting dependency
for the gradient-based tooling. The bumps are mutually consistent: BrainTrace
(from 0.2.3) now depends on BrainEvent at runtime — its sparse_matmul
operand must be a brainevent.DataRepresentation — and BrainEvent 0.1.2 lands
the batched dt2t operators that implement the D-RTRL eligibility-trace update
BrainTrace drives, so the two move together and the pinned set stays coherent.
Package Dependencies:
optax>=0.2.8↗️ (now pinned explicitly)
BrainEvent
0.1.2— batcheddt2toperators, naming cleanup, GPU fixes:Adds batched (
mm) variants of the per-synapsedt2toperators —csrmm_dt2t/cscmm_dt2t(CSR/CSC) andfcnmm_dt2t(fixed-connection-number / ELL) — implementing the batchedDᵗ εᵗ⁻¹term of the D-RTRL eligibility-trace updateεᵗ ≈ Dᵗ εᵗ⁻¹ + diag(D_fᵗ) ⊗ xᵗ, withnumba(CPU),cuda_raw(GPU), andjax_raw(CPU/GPU/TPU) kernels plus JVP rulesFolds the
DT2T/DT_to_Tnaming convention into a single lowercasedt2tspelling across the public API (the JIT-connectivity variants gain anmvinfix:jitnmv_dt2t/jitsmv_dt2t/jitumv_dt2t) and consolidates the GPU cuSPARSE SpMV/SpMM backends under one'cusparse'selector — a rename with unchanged behavior. Breaking: no compatibility aliases are kept, so call sites must be updated (the default'cuda_raw'GPU backend is unaffected)Fixes several GPU-only autodiff and output-shape defects in the event-driven CSR and fixed-connection-number kernels
BrainTrace
0.2.4— online learning through JAX control flow (spans0.2.3and0.2.4):Control-flow-aware compilation: ETP operations inside
vmap,cond,scan/brainstate.transform.for_loop, and weight-freewhilebodies now participate in online learning via a new canonicalization + descent pipeline, so recurrent cells built with control flow no longer silently drop parameters from the trace graph; the compiler is now deterministic across processes and transparently inlines userjax.jitbodiesNew ETP operators:
grouped_matmul,embedding, andeinsum, each with hand-written ETP rules, a matchingbraintrace.nnlayer (GroupedLinear,Embedding), and single-step BPTT-oracle coverage; the D-RTRL multi-step trace update is chunk-factorized for a 2.4–4.5× speedup on multi-step windowsParameter-transform hooks (from
0.2.3): optional, shape-preservingweight_fn/bias_fn/kernel_fnhooks on the ETP operators apply a transform to a trainable parameter before it enters the op while the eligibility trace and gradient stay with respect to the raw stored parameter (D-RTRL matches backprop-through-time for non-identity transforms); threaded through thebraintrace.nnlinear layersCorrectness & contract: a full
_op/_algorithmaudit closes 24 findings. Breaking:element_wiserenamesfn→weight_fn,sparse_matmulrenamesweight_data→weight, andsparse_matmulnow requires abrainevent.DataRepresentationoperand (brainunitu.sparsetypes are no longer accepted), which addsbraineventas a runtime dependency
BrainPy
2.8.1— second audited correctness sweep:A library-wide bug-fix sweep (#868) fixes 18 confirmed defects — each backed by a co-located regression test — across
dnn, the integrators, encoders, initializers, connectivity, optimizers,dynoldshort-term plasticity, the offline / online training algorithms, the object-transform layer, and the simulation runnersRepresentative fixes:
LayerNormnow normalizes over the trailingnormalized_shape; a never-spikingWeightedPhaseEncoderand aPoissonGroupspiking regression; the Stratonovich Euler–Heun predictorsqrt(dt)scaling; theMomentumNesterovlook-ahead andAdadeltalearning rate; aRidge/LinearRegressionIRLS seed that returned the untrained initial weights; and adaptive pooling on up-samplingDrives package-wide
mypyto zero errors and moves__version__/__version_info__into a dedicatedbrainpy._versionmodule
Optax pinned explicitly:
optax>=0.2.8is now listed directly inrequirements.txt(previously pulled in transitively) so the gradient-based tooling — e.g. BrainMass’s OptaxFitterand the BrainTools optimizers — installs deterministically with the bundle
v2026.6.29#
This is a maintenance and refinement release. It refreshes two ecosystem
components to their latest releases — BrainState 0.5.2 and BrainTrace
0.2.2 — slims the bundled dependency set by removing pinnx, and adds a
cross-package compatibility / correctness test suite that exercises the pinned
stack end-to-end. The two component bumps are coupled: BrainTrace 0.2.2
requires BrainState >= 0.5.2, and BrainState 0.5.2’s new in_new_state_probe()
is exactly the hook BrainTrace’s unified compile path uses to cooperate with the
eager state-discovery probe — so the pinned set stays mutually consistent.
Package Dependencies:
pinnx— removed from the bundled dependency set (see below)
BrainState
0.5.2— additive transform feature:Adds
brainstate.transform.in_new_state_probe(), a public predicate that lets state-bound, one-shot consumers cooperate with the eager discovery probe thatvmap_new_states/vmap2_new_states/pmap2_new_statesrun to enumerate the states a function creates before the real mapped passImplemented as a thread-local depth counter, so it composes under nested
*_new_statescalls and resets cleanly even if the probe raisesNo public API is removed or renamed, and behavior is unchanged for code that does not call the new helper; 28 new regression tests, green on the JAX
0.7–latest matrix and the type-check gate
BrainTrace
0.2.2— unified online-learning entry point and vmap fixes:braintrace.compile(model, algorithm, *example_inputs, ...)is now the canonical single call for building a compiled eligibility-trace learner — it always initializes states, acceptsseed/verbose, adds avmap=option for per-sample state initialization, and exposes a structuredCompilationReportAdds a recurrent mixing mode to graph construction, broadening the set of cell topologies the compiler can connect
Fixes eligibility-trace convergence under
vmap/brainstate.mixin.Batching()by deferring compilation during the discovery probe (aligning convolutional and element-wise traces), and routesLoRAthrough the ETPlora_matmulprimitive so its factors participate in trace learningMigrates unit handling from
saiunittobrainunit(a re-export, so it is drop-in), raises thebrainstatefloor to>= 0.5.2, targets Python 3.14, and renames private modules (_etrace_*→_*); 1604 tests pass and the documented 0.2.x public API is unchanged
Removed
pinnxfrom the bundled set:The default
brainxinstall now scopes to the core brain-simulation stack; PINNx (physics-informed neural networks) remains a fully supported, independently released ecosystem project and can still be installed on its own withpip install pinnx
Cross-package compatibility testing:
Adds
BrainX/compatibility_test.py, a co-located suite that imports the pinned packages together and drives small, deterministic computations across package boundaries: a unit-carryingbrainstatestate integrated bytransform.for_loop,braineventevent/sparse operators checked against dense references,braintoolsinitializers/metrics, abrainpy.stateneuron step, abraincell.SingleCompartmentintegration, abrainmassmean-field run, and thebraintrace.compileeligibility-trace path on BrainState0.5.2Tests are now co-located beside the package in the suffix style: the legacy
BrainX/tests/test_version.pybecomesBrainX/version_test.py(thetests/folder is removed), it drops itspinnximport and pin and now also importsbraintrace, andpyproject.tomlconfigures pytest to collect*_test.py
v2026.6.19#
This is a landmark release: the first fully integrated and compatibility-hardened BrainX collection. Every pinned component has been independently audited for correctness, retested, and aligned to a single, mutually-consistent dependency contract — resolving the cross-package incompatibilities and latent numerical bugs that affected earlier mixed-version combinations. The result is the most complete and stable BrainX stack to date, spanning the full modeling spectrum: from morphologically detailed single-cell modeling (dendritic, multi-compartment), through point-neuron network simulation, to neural-mass / firing-rate whole-brain modeling — all differentiable, unit-aware, and built on a shared JAX foundation.
Package Dependencies:
jax<=0.10.2,>=0.8.0↗️ (raised both bounds; JAX 0.10.2 now supported)
BrainCell
0.1.0— multi-compartment, morphologically detailed neurons:Evolves from single-compartment Hodgkin–Huxley into a complete multi-compartment framework: a
Celldeclaration frontend, a frozenRunnableCellruntime, and a high-levelrcell.run(dt=, duration=)driver returning a structuredRunResultImmutable morphology layer (
Soma/Dendrite/Axon/BasalDendrite/ApicalDendrite/CustomBranch) plus a mutableMorphologytreePure-functional control-volume discretization with composable policies (
CVPerBranch,DLambda,MaxCVLen) and an execution-graph compute runtimeDeclarative mechanism system (
braincell.mech), morphology IO (braincell.io: SWC / ASC / NeuroML2 readers, NeuroMorpho.Org client), location/region filters, and a 2D/3D visualization stack (matplotlib, PyVista, Plotly)Added cerebellar dynamics (Purkinje-cell comparison scaffold); package now PEP 561-typed
BrainMass
0.1.1— differentiable whole-brain modeling:Turns a library of neural-mass models into an end-to-end simulate → observe → score toolkit (introduced in
0.1.0), with gradients flowing through the entire pipeline so parameters can be recovered by gradient descentHigh-level
Simulator,Network, andFitter(gradient-based Optax, gradient-free Nevergrad, and Bayesian scikit-optimize backends)Seven new literature-faithful mean-field models (Epileptor, Larter–Breakspear, Coombes–Byrne, Generic 2-D oscillator, Wong–Wang E/I, Lorenz, Linear) — 17 model families total — plus nonlinear couplings, an HRF-BOLD forward model, and composable differentiable objectives (time-series RMSE, FC, FCD)
Bundled
datasets, optionalvizhelpers,list_models(), and a new Diátaxis-organized documentation site0.1.1raises thebraintoolsconstraint to>=0.3.0(the release that fixed theinit.parambatched-init regression), so brainmass co-installs withbrainpy2.8.0 across the ecosystem
BrainPy
2.8.0— library-wide correctness sweep and static typing:Audited bug-fix pass across neuron/synapse dynamics, ODE/SDE/FDE integrators, the math and object-transform layer,
dnnlayers, optimizers, losses, analysis, and runners — each fix backed by regression tests (notably aCondNeuGroupsynaptic-current scaling error that attenuated currents ~1000×)Static typing with a new
mypyCI gate (PEP 561); coverage raised from ~84% to 92%+; tests co-located as<module>_test.pyRemoved forked internals by reusing the shared
braintools(init, metric, surrogate) andbrainstate(transforms) implementations
BrainTools
0.3.0— completed correctness, coverage, and documentation audit:Completes the codebase-wide audit campaign begun in
0.2.0acrossmetric,trainer,optim,visualize,surrogate,quad,init,conn,file, andcogtask, lifting per-module coverage to ~92–100%Corrected genuine numerical/algorithmic bugs: inverted surrogate-gradient formulas, an
nll_losssign error, LFP coherence identically1, He/Kaiming initialization variance off by 2×, double-applied SM3 momentum, a centered RMSprop that was a silent no-op, and droppedcogtask.ParallelbranchesNew/restored public API:
file.save_matfile, gradient accumulation and name-based parameter freezing intrainer, anLBFGSline-search, exportedmetric.safe_norm/ pairwise-cosine helpers,cogtask.create_task, andmetric.L1Loss
BrainState
0.5.1— JAX 0.10.2 compatibility:Fixes the
vmapregression caused by JAX 0.10 removingjax.interpreters.batching.not_mapped; theunvmapprimitives now resolve the sentinel version-agnostically (full suite: 5312 passed). No public API changes; compatible acrossjax>=0.7.0
BrainEvent
0.1.1— custom-operator / FFI hardening:Audit of the JAX custom-op / FFI layer fixed ~30 defects that produced silently-wrong output or process crashes (proper
XLA_FFI_Errorpropagation, fp16/bf16/complex handling, a multi-GPU device-binding race, correctedindptr/ CSC construction)The numba FFI bridge now works across
jax0.7–0.9 (not only 0.10+), and compatibility with newer JAX is restored. No public API changes
BrainTrace
0.2.1— ecosystem dependency compatibility:Adopts
brainstate0.5’s typed (PEP 561) surface (clearing 154 mypy errors), updates for hardened convolution validation, and fixespytest9.1 collection (1367 passed, mypy clean,py.typedshipped). No functional/API changes
BrainUnit
0.5.1— unit-contract compatibility patch:Resolves the upstream
saiunit/brainunitunit-contract issue surfaced across the ecosystem (thertoldimensionless /atolunit-carrying convention), keeping numerical-tolerance handling consistent withbraintrace0.2.1 andbrainevent0.1.1. No public API changes
Cross-ecosystem compatibility:
BrainState 0.5.1, BrainUnit 0.5.1, BrainEvent 0.1.1, and BrainTrace 0.2.1 jointly resolve the JAX 0.10.x
vmap/ FFI regressions and thesaiunittolerance-unit contract, while BrainPy 2.8.0 and BrainTools 0.3.0 eliminate forked-internals drift by reusing the sharedbraintools/brainstateimplementations. Earlier mixed-version stacks could surfaceAttributeErrorundervmap, silently-wrong FFI results, or unit-handling crashes — all addressed hereBrainMass 0.1.1 raises its
braintoolsfloor to>=0.3.0(matching BrainPy 2.8.0’s requirement), resolving the lastbraintoolsversion conflict so the entire pinned set co-installs cleanly. The combination was validated end-to-end: the full BrainMass test suite (692 tests) passes against this exact dependency set
v2026.6.18#
This maintenance release upgrades BrainPy-State to its 0.1.0 release.
v2026.6.14#
This maintenance release upgrades BrainState to its 0.5.0 release.
v2026.6.11#
This maintenance release refreshes the pinned infrastructure component versions.
v2026.6.8#
This release ships inline type information (PEP 561), consolidates the continuous
integration workflows, completes the repository rename to brainx, and refreshes
the pinned component versions.
Package Dependencies:
jax<=0.10.1,>=0.6.0↗️ (raised upper bound)
Typing:
Added a PEP 561
py.typedmarker so that downstream type checkers (mypy, pyright) treatBrainXas a typed packageDeclared
py.typedas package data inpyproject.tomlso it ships in the wheel
Continuous Integration:
Merged the push/pull-request workflow and the scheduled workflow into a single
CI.ymlThe cross-platform test suite (Linux, macOS, Windows) runs on push, pull request, and manual dispatch
A JAX-version compatibility matrix (
0.7.1,0.8.0,0.9.0, and latest) runs on a daily schedule and on manual dispatch
Repository:
Renamed the GitHub repository from
brain-modeling-ecosystemtobrainx; updated all source, documentation, and packaging URLs accordingly
Documentation:
Corrected the “Open in Colab/Kaggle” badges in every example notebook to target their actual paths on the
mainbranchReplaced the logo and favicon with hosted WebP assets and removed the bundled 3.5 MB
plotly.jsRemoved unused static assets (legacy PWA manifest, service worker, and stale images)
README:
Fixed the BrainTrace link, which previously pointed at the renamed
brainscalerepositoryAdded PINNx to the list of ecosystem components
Replaced the broken Read the Docs badge with Documentation and License badges
v2026.3.12#
This release updates package dependencies and drops Python 3.10 support.
Package Dependencies:
jax<=0.9.1,>=0.6.0↗️ (adjusted upper bound)
Project Configuration:
Dropped Python 3.10 support; minimum Python version is now
>=3.11Removed version bounds from JAX optional extras (
cpu,cuda12,cuda13,tpu)
v2026.1.31#
This release updates package dependencies and includes extensive documentation formatting improvements.
Package Dependencies:
Documentation:
Extensive formatting improvements across documentation notebooks and markdown files
Renamed
highlight_test_lexer.pytofix_ipython.pyfor better clarityUpdated all example notebooks with improved formatting and structure
Refreshed documentation structure and presentation
Project Files:
Updated GitHub templates (issue templates, PR template)
Improved CI/CD workflow configurations
Updated project configuration files (.gitignore, .pre-commit-config.yaml, .readthedocs.yml)
Enhanced contributing guidelines and code of conduct
v2026.1.22#
This release updates braintools package dependency.
v2026.1.21#
This release updates brainpy package dependency.
v2026.1.19#
This release updates package dependencies and CI/CD infrastructure.
Package Dependencies:
Documentation:
Updated paper reference for BrainTrace in ecosystem.html
CI/CD:
Bumped styfle/cancel-workflow-action from 0.12.1 to 0.13.0 (#57)
v2026.1.16#
This release updates package dependencies, documentation, and copyright notices.
Package Dependencies:
Copyright:
Updated copyright notice from BDP Ecosystem Limited to BrainX Ecosystem Limited
Documentation:
Updated paper reference for BrainTrace in ecosystem.html
Removed papers_using_us.md file
CI/CD:
Bumped styfle/cancel-workflow-action from 0.12.1 to 0.13.0 (#57)
Bumped braintools from 0.1.6 to 0.1.7 (#56)
Code Updates:
Updated import statements from
brainpytobrainpy.statein notebooks (#55)Updated CI configuration to use Python 3.13 and adjusted JAX versions
Updated multiple documentation notebooks with corrected imports and examples
v2025.12.26#
This release updates multiple package dependencies and improves CI/CD infrastructure.
v2025.12.25#
This release updates multiple package dependencies and improves CI/CD infrastructure.
Package Dependencies:
brainpy-state==0.0.1↗️ (new, replaces brainpy)
CI/CD:
Bumped actions/checkout from 5 to 6 (#48)
v2025.12.2#
This release introduces BrainTrace (replacing BrainScale) and updates multiple package dependencies.
Package Dependencies:
jax>=0.6.0↗️braintrace==0.1.1↗️ (renamed from brainscale)pinnx==0.0.3↗️ (new)
Documentation Updates:
Renamed BrainScale to BrainTrace in documentation and requirements
Updated ecosystem documentation with additional descriptions
Deprecated BrainTaichi component
Removed 3D card effect from ecosystem.html
Added braintools import and updated class inheritance in spiking network notebooks
CI/CD:
Bumped actions/upload-artifact from 4 to 5 (#46)
v2025.10.13#
This is the first release of the complete BrainX ecosystem, integrating multiple packages for comprehensive brain simulation and analysis.
Package Dependencies:
Documentation Fixes:
Updated BrainPy link in ecosystem documentation (#43)
Fixed image sources to use absolute URLs for BrainMass and BrainEvent logos
Copied CHANGELOG.md to the documentation directory for better accessibility
Reorganized static JavaScript files (moved service-worker.js to js subdirectory)
README Updates:
Updated documentation and references (#42, #43)
v2025.10.08 (yanked)#
Project Updates:
First integrative version of the BrainX ecosystem (#40)
Rebranded to BrainX and revamped documentation (#23)
Updated project description and author details to “BrainX Ecosystem”
Added support for CUDA 13 in optional dependencies
Documentation Enhancements:
Enhanced brain simulation documentation with English and Chinese versions (#36)
Added comprehensive core components documentation (#29)
Added HH thalamus oscillations notebooks and examples (#31, #32)
Updated core components documentation and removed obsolete Golgi file (#33)
Added Kaggle dataset download for Golgi cell morphology (#25)
Fixed ipython2 lexer to ipython3 in notebooks (#27)
Corrected titles and updated references in documentation files
Package Dependencies:
jax>=0.6.0,<0.8.0↗️brainpy==3.0.0↗️brainunit==0.1.1(from 0.0.18)brainstate==0.2.1↗️ (from 0.1.10)brainevent==0.0.4braincell==0.0.5↗️ (from 0.0.4)braintools==0.1.1↗️ (from 0.0.12)brainscale==0.0.11↗️ (from 0.0.10)brainmass==0.0.3
CI/CD:
Bumped actions/setup-python from 5 to 6 (#26)
Bumped actions/checkout from 4 to 5
Fixes:
Updated project name and copyright in conf.py; refactored lexer import (#28)
Updated Golgi cell notebook to include Kaggle dataset download and path adjustments
Updated index.rst to reference brain_simulation_point_neuron.md (#24)
v2025.9.15#
BrainXpackages:numpy>=1.15️↗️jax>=0.4.35,<0.8.0↗️brainunit==0.1.1↗️brainstate==0.1.10↗️brainevent==0.0.4↗️braincell==0.0.4↗️braintools==0.0.11↗️brainscale==0.0.10↗️brainmass==0.0.3↗️msgpack>=1.1.0↗️matplotlib↗️