Skip to content

Commit

Permalink
v0.8 (#2028)
Browse files Browse the repository at this point in the history
- Correct `.gitmodules`
- Update all git submodules to latest released versions, except google-benchmark
- Have CHANGELOG
- Breaking changes since v0.7:
  - A change in API: `arbor.cable_cell` has the labels and decor arguments swapped. I.e.: `(tree, labels, decor)`
-> `(tree, decor, label)`. Labels are now optional.
  - Mechanism ABI version is bumped to 0.3.1. #1884
  - Remove the `generate-catalogue` script.  `modcc` accepts now a list of NMODL files and is able to spit out a catalogue.cpp file
  - Rename spike detector -> threshold detector
  - Remove access to time `t` in NMODL.
- Major dependency version bumps:
  - GCC: 9 and up
  - CUDA: 11 and up
  - Clang: 10 and up
  • Loading branch information
brenthuisman authored Nov 15, 2022
1 parent 1b268ec commit 8e82ec1
Show file tree
Hide file tree
Showing 10 changed files with 677 additions and 28 deletions.
7 changes: 4 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[submodule "google-benchmark"]
path = ext/google-benchmark
url = https://github.com/google/benchmark
url = https://github.com/google/benchmark.git
branch = main
[submodule "ext/fmt"]
path = ext/fmt
url = https://github.com/fmtlib/fmt.git
branch = master
[submodule "ext/random123"]
path = ext/random123
url = https://github.com/DEShawResearch/random123
url = https://github.com/DEShawResearch/random123.git
branch = main
[submodule "ext/json"]
path = ext/json
Expand All @@ -17,8 +17,9 @@
[submodule "ext/pybind11"]
path = ext/pybind11
url = https://github.com/pybind/pybind11.git
branch = master
[submodule "ext/googletest"]
path = ext/googletest
url = https://github.com/google/googletest.git
branch = release-1.12.1
branch = main

30 changes: 30 additions & 0 deletions ATTRIBUTIONS.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,42 @@
Arbor includes code from the open source community. Thank you!

## fmt

{fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.

https://github.com/fmtlib/fmt

## google-benchmark

A library to benchmark code snippets, similar to unit tests.

https://github.com/google/benchmark

## GoogleTest

GoogleTest is Google’s C++ testing and mocking framework.

https://github.com/google/googletest

## JSON for Modern C++

A header only C++11 json library, written by Niels Lohmann (GitHub user nlohmann).
MIT license.

https://github.com/nlohmann/json

## pybind11

pybind11 is a lightweight header-only library that exposes C++ types in Python and vice versa, mainly to create Python bindings of existing C++ code.

https://github.com/pybind/pybind11

## random123

The Random123 library is a collection of counter-based random number generators ("CBRNGs") for CPUs (C and C++) and GPUs (CUDA and OpenCL).

https://github.com/DEShawResearch/random123

## tinyopt

A header only C++ library for command line argument parsing, written by Stuart Yates.
Expand Down
604 changes: 604 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.7.1-dev
0.8.0
22 changes: 12 additions & 10 deletions doc/contrib/pr.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,18 @@ the workflow is as follows:
3. Make a pull request (PR) and refer to the issue(s) that the PR
addresses. Some tips on how to write a good PR description:

- You can use labels to categorize your PR. For very large PRs, it
is likely the reviewer will have many questions and comments. It
can be helpful to reach out on Gitter, Github Discussions or by email
beforehand if you’ve big things planned for Arbor!
- Commit logical units with clear commit messages.
- Add a change summary to the PR message. If you remembered to commit
logical units, this could simply be a bulleted list of all commit
messages in the PR. If during the review process you make changes
to the features in the PR, keep the PR description updated.
- Use text like `fixes #123` in the description to refer to an issue.
- You can use labels to categorize your PR. For very large PRs, it
is likely the reviewer will have many questions and comments. It
can be helpful to reach out on Gitter, Github Discussions or by email
beforehand if you’ve big things planned for Arbor!
- Commit logical units with clear commit messages.
- Add a change summary to the PR message. If you remembered to commit
logical units, this could simply be a bulleted list of all commit
messages in the PR. If during the review process you make changes
to the features in the PR, keep the PR description updated.
- Use text like `fixes #123` in the description to refer to an issue.
- Prefix your PR title with BUGFIX, BREAKING, FEATURE if it fixes a bug, introduces
a breaking change or introduces a (major) new feature respectively.

4. We will accept contributions licensed with the same
`BSD 3-Clause "New" or "Revised" License <https://github.com/arbor-sim/arbor/blob/master/LICENSE>`_,
Expand Down
23 changes: 16 additions & 7 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, RELEASE_NOTES.md
- README.md, ATTRIBUTIONS.md, CONTRIBUTING.md, CHANGELOG.md
- 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 @@ -51,9 +51,16 @@ Update tags/versions and test
- See also :ref:`dev-version`
- Append ``-rc``. (Make sure there's no ``-dev``)

#. Run all tests.
#. Create a draft PR. Tag and push with ``-rc``. E.g. ``v0.6-rc``

- ``ciwheel.yml`` triggers when you push a branch called ``ciwheel``, and on new Git tags. Since we've not tagged the release yet, run ``git push origin HEAD:ciwheel``. Make sure the tests pass.
- 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``.
- 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``.

Expand All @@ -63,7 +70,7 @@ Update tags/versions and test
python -m venv env && source env/bin/activate
pip install numpy
pip install -i https://test.pypi.org/simple/ arbor #should select the latest build, but doublecheck
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`
Expand All @@ -79,9 +86,11 @@ Release

#. Tag

- commit and open a PR for the above changes.
- on cmdline: ``git tag -a TAGNAME``
- ``git push upstream TAGNAME``
- commit and either reuse the draft PR for the RC, or open a new one.
- once merged, make and push tag.

- on cmdline: ``git tag -a TAGNAME``
- ``git push upstream TAGNAME``

#. Upload to pypi & verify

Expand Down
2 changes: 1 addition & 1 deletion ext/fmt
Submodule fmt updated 109 files
2 changes: 1 addition & 1 deletion ext/json
Submodule json updated 1404 files
2 changes: 1 addition & 1 deletion ext/pybind11
Submodule pybind11 updated 68 files
+2 −0 .clang-tidy
+24 −0 .codespell-ignore-lines
+41 −28 .github/workflows/ci.yml
+1 −1 .github/workflows/configure.yml
+2 −2 .github/workflows/pip.yml
+2 −2 .github/workflows/upstream.yml
+23 −12 .pre-commit-config.yaml
+19 −0 CMakeLists.txt
+2 −2 docs/advanced/cast/custom.rst
+3 −3 docs/advanced/cast/stl.rst
+2 −2 docs/advanced/classes.rst
+33 −7 docs/advanced/misc.rst
+2 −2 docs/advanced/pycpp/numpy.rst
+1 −1 docs/advanced/smart_ptrs.rst
+142 −0 docs/changelog.rst
+6 −8 include/pybind11/cast.h
+21 −28 include/pybind11/detail/class.h
+31 −12 include/pybind11/detail/common.h
+24 −3 include/pybind11/detail/internals.h
+5 −0 include/pybind11/eigen.h
+2 −0 include/pybind11/embed.h
+1 −1 include/pybind11/functional.h
+50 −13 include/pybind11/gil.h
+11 −4 include/pybind11/numpy.h
+1 −0 include/pybind11/operators.h
+13 −19 include/pybind11/pybind11.h
+120 −45 include/pybind11/pytypes.h
+31 −10 include/pybind11/stl.h
+14 −4 noxfile.py
+2 −1 pybind11/__init__.py
+8 −1 pybind11/__main__.py
+1 −1 pybind11/_version.py
+12 −0 pybind11/commands.py
+1 −1 setup.cfg
+1 −0 setup.py
+1 −0 tests/conftest.py
+1 −1 tests/constructor_stats.h
+65 −2 tests/cross_module_gil_utils.cpp
+68 −58 tests/extra_python_package/test_files.py
+6 −0 tests/pybind11_tests.cpp
+7 −2 tests/test_builtin_casters.cpp
+39 −1 tests/test_class.cpp
+9 −0 tests/test_class.py
+7 −7 tests/test_custom_type_casters.cpp
+34 −5 tests/test_eigen.cpp
+46 −37 tests/test_eigen.py
+18 −0 tests/test_embed/catch.cpp
+7 −1 tests/test_embed/test_interpreter.cpp
+10 −5 tests/test_exceptions.cpp
+22 −2 tests/test_exceptions.py
+102 −5 tests/test_gil_scoped.cpp
+189 −38 tests/test_gil_scoped.py
+10 −1 tests/test_kwargs_and_defaults.cpp
+54 −1 tests/test_pytypes.cpp
+138 −0 tests/test_pytypes.py
+19 −0 tests/test_sequences_and_iterators.cpp
+8 −0 tests/test_sequences_and_iterators.py
+2 −2 tests/test_smart_ptr.cpp
+14 −8 tests/test_stl.cpp
+2 −2 tests/test_tagbased_polymorphic.cpp
+5 −1 tools/FindPythonLibsNew.cmake
+23 −0 tools/JoinPaths.cmake
+35 −0 tools/codespell_ignore_lines_from_errors.py
+7 −0 tools/pybind11.pc.in
+3 −1 tools/pybind11NewTools.cmake
+11 −5 tools/pybind11Tools.cmake
+2 −0 tools/setup_global.py.in
+2 −0 tools/setup_main.py.in
11 changes: 7 additions & 4 deletions spack/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ class Arbor(CMakePackage, CudaPackage):
)

# https://docs.arbor-sim.org/en/latest/install/build_install.html#compilers
conflicts("%gcc@:8.3")
conflicts("%clang@:7")
conflicts("%gcc@:8")
conflicts("%clang@:9")
# Cray compiler v9.2 and later is Clang-based.
conflicts("%cce@:9.1")
conflicts("%intel")
Expand All @@ -63,10 +63,13 @@ class Arbor(CMakePackage, CudaPackage):

# misc dependencies
depends_on("[email protected]:", when="@0.5.3:") # required by the modcc compiler
depends_on("[email protected]:", when="@0.7.1:")
depends_on("nlohmann-json")
depends_on("random123")
depends_on("cuda@10:", when="+cuda")
depends_on("libxml2", when="+neuroml")
with when("+cuda"):
depends_on("cuda@10:")
depends_on("cuda@11:", when="@0.7.1:")

# mpi
depends_on("mpi", when="+mpi")
Expand All @@ -79,7 +82,7 @@ class Arbor(CMakePackage, CudaPackage):
with when("+python"):
depends_on("[email protected]:", type=("build"))
depends_on("[email protected]:", when="@0.5.3:", type=("build"))
depends_on("[email protected].0:", when="@0.7.1:", type=("build"))
depends_on("[email protected].1:", when="@0.7.1:", type=("build"))

# sphinx based documentation
depends_on("[email protected]:", when="+doc", type="build")
Expand Down

0 comments on commit 8e82ec1

Please sign in to comment.