Repository navigation
chore(release): 3.12.0 - #121
Merged
Merged
Conversation
Four places had drifted from practice: - It said to squash-merge the release PR. 3.11.0 (#101) and the PRs around it were merged with merge commits, so the release commit keeps its message on main. - It said to tag the squashed release commit. 3.11.0's tag is on the merge commit, f11c251, after checking that its tree matches the release commit's, and BNGsim's VENDOR.json records f11c251. The check is now written into step 5. - It counted nine CI checks. The tsan job from #114 makes ten. - It ran pre-commit as .venv/bin/pre-commit, which assumes the .venv the README describes. Any pre-commit works, since it installs its own pinned hooks. It also notes that the release date is written twice, so a release PR that merges a day late moves both.
Closes the 3.12.0 section of the changelog and moves the four version anchors (CMakeLists.txt, pyproject.toml, CITATION.cff, CHANGELOG.md). What the section contains ------------------------- Added: replicate ensembles, run_ensemble() and rm_driver --reps (#113). Fixed: Arrhenius rules whose energy-pattern context the load-time expansion could not represent run at BioNetGen's rate, or are refused with the rule and the reason named (#109); a rule labelled _reverse_X takes the reverse half's phi only when the model has the mirror rule X (#109); a run from a late t_start keeps its waiting times (#110); a session that reaches an absorbing state moves its clock to t_end; an infinite t_end and a NaN in sample_times are refused; simulate(TimeSpec) refuses a t_end before the session's time; functions settle in dependency order, and a TFUN indexed by a function no longer overflows the stack (#111); a function that reads a table function gets its whole expression; a rate law that reads reactant_N() through a helper function fires at its own rule's count (#59). Why minor --------- Models observe this release. Results change for every Arrhenius model whose context the expansion could not represent (48 to 52 standard errors off BioNetGen's network on #109's reproducers), for every model whose XML lists a function ahead of one it reads (#111), for every rate law that reaches reactant_N() through a helper (#59), and for runs from a t_start late enough that waiting times rounded away (z = -290 from 1e12, #110). An embedder also gains a capability, run_ensemble(). Either alone makes it at least a minor, as 3.10.0 and 3.11.0 were. include/ moved only by addition: git diff --stat v3.11.0..HEAD -- include/ include/rulemonkey/simulator.hpp | 61 ++++++++++++++++++++++++++++++++++++---- include/rulemonkey/types.hpp | 48 ++++++++++++++++++++++++++++++- 2 files changed, 102 insertions(+), 7 deletions(-) Apart from comment text, every line is new: Simulator::run_ensemble() and the EnsembleSpec and EnsembleResult structs it takes and returns. No existing declaration changed, so every existing call, bngsim's and PyBNF's included, compiles unchanged and means what it did. That is not a major. librulemonkey now links Threads::Threads privately; RuleMonkeyConfig.cmake re-finds it for find_package() users, and an add_subdirectory() consumer such as bngsim gets it from RuleMonkey's own find_package(Threads). The Tier-0 Arrhenius refusal (RateLaw@type=Arrhenius) changes scope. 3.11.0 ran several context shapes at the wrong rate with no warning; each now runs at BioNetGen's rate or is refused by name, and the shapes still refused are listed in the changelog. The Tier-0 refusal of a local rate law that reads reactant_N() now also covers one that reaches it through a helper. One load-time warning is new: an energy pattern whose rate bound stays loose after the per-class split (#109). Five runtime errors are new, each on an input that used to run wrong silently: - a function that depends on itself, through the functions it reads or a table counter (#111); - a non-finite t_end on run(), simulate(), step_to(), run_ensemble() or parameter_scan(); - a NaN segment start on simulate(); - a NaN in TimeSpec::sample_times; - simulate(TimeSpec) with a t_end before the session's time. Not listed ---------- The expression-layer refresh to BNGsim 4361958 (#120) is not changelogged, as RELEASING.md says for a contents refresh. It is what lets BNGsim vendor this release: vendor_rulemonkey.py's EXPRTK_SYNC_FILES guard matches bngsim main again. The RELEASING.md update in this PR is docs. The BNGsim re-vendor is #118 (lanl/bngsim#1058), which also drops bngsim's refuse_rulemonkey_energy_misreads; lanl/bngsim#1059 drops bngsim's elapsed-time shift once this is vendored. PyPI remains out of scope. Neither rulemonkey nor rulemonkey-harness is a distribution (#77). Verified: ctest --preset release 67/67 (57 at 3.11.0; the ten new cases are ensemble_test, ensemble_scheduler_test, rm_driver_reps_mean, rm_driver_reps_refuses_species and rm_driver_reps_sd_out_unwritable (#113), arrhenius_context_test and energy_match_test (#109), late_start_test (#110), function_settle_order_test (#111) and reactant_count_helper_test (#59); the bng_oracle case now also scores arrhenius_context and arrhenius_context_bind, and arrhenius_formula gains seven columns (#109)); RuleMonkeyConfigVersion.cmake reports PACKAGE_VERSION "3.12.0" after cmake --preset release on this commit; mkdocs build --strict (mkdocs-material 9.5) clean; pre-commit on CHANGELOG.md CMakeLists.txt pyproject.toml CITATION.cff passes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR closes the changelog's Unreleased section as 3.12.0 and moves
CMakeLists.txt,pyproject.tomlandCITATION.cffoff 3.11.0 together. A second commit brings RELEASING.md up to date with how 3.11.0 was cut.Minor, not patch
Models observe this release. Results change for:
_reverse_Xwith no mirror ruleX, which took the reverse half's phi (Arrhenius expansion drops or misapplies energy-pattern context, and drops a rule's own reactant context #109);reactant_N()through a helper function, which never fired (Local-function product rate law silently yields zero propensity (no reactions fire) #59);t_startlate enough that waiting times rounded away, z = -290 from 1e12 (A run from a large t_start loses its waiting times to rounding: keep the clock as origin + elapsed #110);An embedder also gains a capability,
run_ensemble()(#113). Either alone makes it at least a minor, as 3.10.0 and 3.11.0 were.Minor, not major
include/moved only by addition:Simulator::run_ensemble()and theEnsembleSpecandEnsembleResultstructs it takes and returns. Every other line in theinclude/diff is comment text. No existing declaration changed, so every existing call, bngsim's and PyBNF's included, compiles unchanged and means what it did.librulemonkeynow linksThreads::Threadsprivately.RuleMonkeyConfig.cmakere-finds it forfind_package()users, and anadd_subdirectory()consumer such as bngsim gets it from RuleMonkey's ownfind_package(Threads).The Tier-0 Arrhenius refusal changes scope. 3.11.0 ran several context shapes at the wrong rate with no warning. Each now runs at BioNetGen's rate or is refused with the rule and the reason named; the changelog lists the shapes still refused. The Tier-0 refusal of a local rate law that reads
reactant_N()now also covers one that reaches it through a helper. One load-time warning is new: an energy pattern whose rate bound stays loose after the per-class split (#109).Five runtime errors are new, each on an input that used to run wrong silently:
t_endonrun(),simulate(),step_to(),run_ensemble()orparameter_scan();simulate();TimeSpec::sample_times;simulate(TimeSpec)with at_endbefore the session's time.Not listed
vendor_rulemonkey.py'sEXPRTK_SYNC_FILESguard matches bngsimmainagain.tsan,pre-commitfrom any install, and the date written twice.The BNGsim re-vendor is tracked in #118 (lanl/bngsim#1058), which also drops bngsim's
refuse_rulemonkey_energy_misreads. lanl/bngsim#1059 drops bngsim's elapsed-time shift once this is vendored.Verified
ctest --preset release67/67 (57 at 3.11.0). The ten new cases areensemble_test,ensemble_scheduler_testand the threerm_driver_reps_*cases (Run replicate ensembles in parallel: run_ensemble() and rm_driver --reps #113),arrhenius_context_testandenergy_match_test(Arrhenius expansion drops or misapplies energy-pattern context, and drops a rule's own reactant context #109),late_start_test(A run from a large t_start loses its waiting times to rounding: keep the clock as origin + elapsed #110),function_settle_order_test(A table function whose counter is a function recurses without end (stack overflow) #111) andreactant_count_helper_test(Local-function product rate law silently yields zero propensity (no reactions fire) #59). Thebng_oraclecase now also scoresarrhenius_contextandarrhenius_context_bind, andarrhenius_formulagains seven columns (Arrhenius expansion drops or misapplies energy-pattern context, and drops a rule's own reactant context #109).RuleMonkeyConfigVersion.cmakereportsPACKAGE_VERSION "3.12.0"aftercmake --preset releaseon this commit.mkdocs build --strict(mkdocs-material 9.5) is clean.CHANGELOG.md CMakeLists.txt pyproject.toml CITATION.cffpasses.The date is 2026-10-22. If this merges on a later day, the changelog heading and
CITATION.cffdate-releasedmove with it.