-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NEURON 9.0 release #3137
Comments
Currently there are some failures in modelDB for version 9.0, as seen here: https://github.com/neuronsimulator/nrn-modeldb-ci/actions/runs/11586042419/job/32255970874 |
Somehow #3143 (see #3143 (comment) for reproducer) broke the arm64 build on Linux: https://app.circleci.com/pipelines/github/neuronsimulator/nrn/9533/workflows/f44568f7-581f-4a2b-b9bf-fdf643ba0c14/jobs/4696 |
It also seems that this commit (from #3135): 510b9bc The issue in #3137 (comment) appears to be unrelated to this one (tested locally by building a wheel on MacOS in a Docker container that runs Linux under arm64). |
I've looked at the gout for
and, yes, they all differ. However looking at the trajectories with |
I added the NRN_ENABLE_ARCH_INDEP_EXP_POW feature to a temporary branch off release/8.2. It is remarkable. that the mere presence of that code (even without activating the mpfr calculation of pow(x, y)) produces identical gout results in comparison with the master for the above models, |
In this particular case, it seems isolated to the change (starting from 8.2) src/nmodl/nocpout.cpp
which is used in the translated hh.c file in the line
|
So, when src/nmodl/nocpout.cpp is modified so that:
the result are the same except for 1 as the master. But, I guess, the following is inlined
but when the |
Chatgpt says: |
It has been a bit frustrating since none of It seems that -O2 is a problem. 8.2 produces same results as master when 8.2 is configured with
|
@JCGoran : Apologies for not able to provide this earlier. As mentioend during the standup, I scanned the commits and here is my summary. I might have missed few things or there might be some inconsistencies. Feel free to fix those!
Edit: @JCGoran : by the way, it would be nice to turn NEURON 9.0 marks a major milestone with significant under-the-hood updates.
This release features a redesign of internal data structures using the
Structure-Of-Arrays (SoA) memory layout, migration of the codebase and translation
of MOD files to C++, and the introduction of random number generator construct natively
in the NMODL language. Additionally, many legacy NMODL constructs have been removed,
and legacy code and libraries have been replaced with modern alternatives
like Eigen, ensuring improved performance and maintainability.
### What’s New
- Use of SoA memory layout for internal data structures (#2027, #2381, #2712)
- Support for random number generator language construct (RANDOM) in NMODL (#2627)
- Replace pthread-based threading implementation with std::thread (#1859)
- Introduce meaningful Python types: HOC classes associated with Python types (#1858)
- Formalization of C API for NEURON (first version) (#2357)
- Introduce nanobind to gradually replace C Python API usage (#2545)
- Requires C++17 compiler and flex >= 2.6 (#1893)
- CoreNEURON repository is merged into NEURON (#2055)
- Support for `numpy>=2` added (#3040)
- Replace legacy Meschach source copy with Eigen library (#2470)
### Breaking Changes
- MOD files are compiled as C++ instead of C (see [migration guide](https://nrn.readthedocs.io/en/latest/guide/porting_mechanisms_to_cpp.html#porting-mechanisms-to-cpp) for VERBATIM blocks)
- API changes in the functions related to random numbers, see #2618
- Restored usage of TABLE statement in hh.mod, results are now same as 8.0.2 (see #1764)
- NMODL: Disallow use of ion variable in the CONSTANT block (#1955)
- NMODL: Disallow declaring variables and functions with the same name (#1992)
- Usage of Eigen library could introduce floating point differences, but they are very small, validated and can be ignored
### Removal / Deprecation
- Removed usage of legacy OS X carbon libraries (#1869)
- Removed legacy LINDA code and Java bindings (#1919, #1937)
- Removed unused NMODL methods: adams, heun, clsoda, seidel, simplex, gear (#2032)
- Removed support for Python 3.7 and 3.8 (#2194, #3108)
- Removed support for legacy units and dynamic units selection (#2539)
- Removed unused NEMO simulator compatibility (#3035)
- Removed checkpoint feature (`h.checkpoint()`), superseded by SaveState (#3092)
- Removed legacy Random.MLCG and Random.ACG random number generators (#3189, #3190)
- Removed support for mod2c transpiler for CoreNEURON (#2247)
- Removed unused NMODL constructs: PUTQ, GETQ, RESET, MATCH, TERMINAL, SECTION,
IFERROR, MODEL_LEVEL, PLOT, SENS, etc. (#1956, #1974, #1975, #2001, #2004, #2005)
- Removed `__MWERKS__` (CodeWarrior compiler) related code (#2655)
- Removed obsolete uxnrnbbs code (#2203)
- Removed old tqueue implementations (#2225, #2740)
### Bug Fixes
- Fix segfault from unref hoc_obj, see #1857 (#1917)
- Fix bug in rxd reactions involving rxd parameters (#1933)
- Fix CoreNEURON bug when checkpointing VecPlay instances (#2148)
- Fix nocmodl bug with unused STATE + COMPARTMENT variable in KINETIC block (#2210)
- Fix for dynamic ECS diffusion characteristics (#2229)
- Various fixes for compatibility with newer NVHPC compiler releases (#2239, #2591)
- Fix Windows and Mac crash on multiline HOC statements input from terminal (#2258)
- Fix for Vector.max_ind (#2251)
- Fix for detecting ION channel type in LoadBalance (#2310)
- Fix for RangeVarPlot adding extra point at section ends when using plotly (#2410)
- Fixed mod file array variable assignment (seg.mech.array[i] = x) (#2504)
- Various fixes in RxD features (#2593, #2588)
- Fix CoreNEURON bug causing in-memory model copy with file mode (#2767)
- Fix CoreNEURON bug when using array variables in MOD files (#2779)
- Fix lexer for ONTOLOGY parsing (#3091)
- Fix issue while using Anaconda Python on MacOS (#3088)
### Other Improvements and Changes
- Allow `segment.mechanism.func(args)` to call a FUNCTION or PROCEDURE (#2475)
- Simplify INDEPENDENT statement as only `t` variable is accepted (#2013)
- Fix various memory leaks and related improvements (#3255, #3257, #3243, #2456)
- Support for reading reporting related information with in-memory mode (#2555)
- NMODL language documentation update (#2152, #2771, #2885)
- Documentation improvements including transfer from nrn.yale.edu to nrn.readthedocs.io (#1901, #2922, #2971, #3106, #3187)
- Various test, CI, and build infrastructure improvements (#1991, #2260, #2474)
- Migrate many C code parts to C++ (#2083, #2305)
- Support online LFP calculation in CoreNEURON (via SONATA reports for BBP use cases) (#2118, #2360)
- Adopt CoreNEURON cell permute functionality into NEURON (#2598)
- Allow legacy `a.b(i)` syntax for 1d arrays (extend to `PointProcess.var[i]` and `ob.dblarray[i]`) (#2256)
- Add an ability to run NEURON ModelDB CI using label (#2108)
- Remove unused code parts under various preprocessor variables (#2007)
- Return error/exit codes properly in `nrniv -c` and nrnivmodl (#1871)
- No limit on number of ion mechanisms that can be used (#3089)
- Added Jupyter support for ModelView (#1907)
- Make notebooks work with `bokeh>=3` (#3061)
- Added new mmethod `ParallelContext.get_partition()` (#2351) |
@pramodk I'm delighted with your changelog. Great job. Thanks! |
I've made the necessary changes on the |
I would like to make a few changes to the changelog. Where is the best place to do so. (The https://github.com/neuronsimulator/nrn/tree/jelic/changelog_release9 ?) |
@nrnhines I don't think we have a central location, so that branch is one option. |
Action items
Pre-release
Sanity checks
release/x.y
branch and make sure GitHub, Azure and CircleCI builds passrelease/x.y
& make it hidden. Check docs are fine after build is done.release/x.y
to ensure all the wheels build (see details)Releasing
CMakeLists.txt
docs/changelog
(copy structure as-is)docs/index.rst
accordingly with the new.pkg
and.exe
links forPKG installer
andWindows Installer
release-x.y
, make sure the build passes and inspect the Changelog page.Important: we print the following message from
nrnivmodl
on error. Make sure the URL is right one!release/x.y-aarch64
branch for this, see guide)x.y.z
wheels on Pypi; see wheel publishing instructionsx.y.z
tag on ReadTheDocsnrn-8.2.2.w64-mingw-py-37-38-39-310-311-setup.exe
)
Post-release
master
as follows:x.(y+1).dev
(x+1).0.dev
release/x.y
Default version
tox.y.z
master
Changelog
NEURON X.Y
[x.y.z]
Release Date : DD-MM-YYYY
What's New
Breaking Changes
Deprecations
Bug Fixes
Improvements / Other Changes
Upgrade Steps
For the complete list of features and bug fixes, see the list in GitHub Issue #[GH_no.]
ReadTheDocs sneak peek
Commits going into x.y.z
[given
a.b.c
is the last release:]Since [a.b.c], with:
git log --pretty=format:"%h : %s" a.b.c..release/x.y
we get:
The text was updated successfully, but these errors were encountered: