== Version 3.4.1 ==
_Release date - Aug 22, 2025_
* Bugfix: Fix a significant oversight in **GrackleConfig.cmake**
https://github.com/grackle-project/grackle/pull/330
* Bugfix: H2 self shielding length scale factor fix
https://github.com/grackle-project/grackle/pull/325
* Bugfix: address a bug in calc_temp_cloudy_g.F
https://github.com/grackle-project/grackle/pull/367
* Enhancement: Standard Status Reporting Machinery
https://github.com/grackle-project/grackle/pull/269
* Enhancement: Remove pygrackle/api.py & pygrackle/utilities/api.py
https://github.com/grackle-project/grackle/pull/352
* Enhancement: Rename pygrackle -> gracklepy (so we can upload to PyPI)
https://github.com/grackle-project/grackle/pull/371
* Build-System: (core lib) introduce CMakePresets.json to enable compiler warnings in a CI job https://github.com/grackle-project/grackle/pull/334
* Build-System: (core lib) Relocated all CMake dependency information into dependencies.cmake https://github.com/grackle-project/grackle/pull/296
* Build-System: (core lib) assorted tweaks: https://github.com/grackle-project/grackle/pull/326 https://github.com/grackle-project/grackle/pull/329 https://github.com/grackle-project/grackle/pull/337
* Build-System: (gracklepy) tweak cython handling https://github.com/grackle-project/grackle/pull/319 https://github.com/grackle-project/grackle/pull/328
* Build-System: (gracklepy) Introduce dependency groups https://github.com/grackle-project/grackle/pull/347
* Testing: Support running subset of gracklepy test without an editable install
https://github.com/grackle-project/grackle/pull/335
* Testing: Move `test_chemistry_struct_synched` between test suites
https://github.com/grackle-project/grackle/pull/327
* Documentation: gracklepy test instruction tweaks
https://github.com/grackle-project/grackle/pull/309
* Assorted tweaks to appearance of doc website
https://github.com/grackle-project/grackle/pull/285
https://github.com/grackle-project/grackle/pull/291
https://github.com/grackle-project/grackle/pull/346
* Documentation: Fix spacing issues in docs
https://github.com/grackle-project/grackle/pull/340
* Documentation: Simplify GitHub hyperlinks for repository locations in docs
https://github.com/grackle-project/grackle/pull/300
* Documentation: Add more detail to gracklepy build documentation
https://github.com/grackle-project/grackle/pull/294
* Documentation: Added missing He
https://github.com/grackle-project/grackle/pull/362
* Documentation: Added chemistry network table
https://github.com/grackle-project/grackle/pull/361
* Infrastructure: Optimize circleci workflows
https://github.com/grackle-project/grackle/pull/338
* Infrastructure: Introduce an extremely simplistic `.pre-commit-config.yaml` file
https://github.com/grackle-project/grackle/pull/348
* Infrastructure: Introduce GHA to upload Gracklepy wheels to PyPI
https://github.com/grackle-project/grackle/pull/320
https://github.com/grackle-project/grackle/pull/355
https://github.com/grackle-project/grackle/pull/356
* Infrastructure: Bump pypa/cibuildwheel version
https://github.com/grackle-project/grackle/pull/360
https://github.com/grackle-project/grackle/pull/363
https://github.com/grackle-project/grackle/pull/365
https://github.com/grackle-project/grackle/pull/372
* Infrastructure: Move test-data retrieval logic into ``scripts/ci/fetch-test-data.py``
https://github.com/grackle-project/grackle/pull/307
* Address flake8 warnings (in files that it previously ignored)
https://github.com/grackle-project/grackle/pull/368
https://github.com/grackle-project/grackle/pull/369
* Infrastructure: Use builtin GitHub feature to nicely redirect to Code of
Conduct
https://github.com/grackle-project/grackle/pull/342
* Infrastructure: Convert README.md to README.rst (and deduplicate content on
the website landing page)
https://github.com/grackle-project/grackle/pull/350
https://github.com/grackle-project/grackle/pull/351
== Version 3.4 ==
_Release date - May 14, 2025_
* Enhancement: headers can now be directly included in C++ source files (without wrapping them in `extern "C"` blocks)
https://github.com/grackle-project/grackle/pull/199
* Enhancement: Updating behavior of `HydrogenFractionByMass` parameter
https://github.com/grackle-project/grackle/pull/200
* Enhancement: Introduce `gr_initialize_field_data` function
https://github.com/grackle-project/grackle/pull/205
https://github.com/grackle-project/grackle/pull/233
* Enhancement: Introduce `GR_SUCCESS` and `GR_FAIL` as named constants for status-reporting
https://github.com/grackle-project/grackle/pull/217
* Enhancement: `get_temperature_units` and `get_velocity_units` now accept `const* code_units` as an argument
https://github.com/grackle-project/grackle/pull/230
* Enhancement: Introduce `gr_required_units` function
https://github.com/grackle-project/grackle/pull/209
* Enhancement: Introduce `gr_check_consistency` function
https://github.com/grackle-project/grackle/pull/279
* Enhancement: allow unsupported simulation types to work with grackle yt fields.
https://github.com/grackle-project/grackle/pull/213
* Bugfix: fix import VisibleDeprecationWarning numpy 2.0
https://github.com/grackle-project/grackle/pull/240
* Bugfix: Tweaks required for 3.4 release (Fortran Binding bugfix and a few removals)
https://github.com/grackle-project/grackle/pull/265
* Bugfix: Backport some minor bugfixes
https://github.com/grackle-project/grackle/pull/289
* Bugfix: Fix bugs in $H_2$ self-shielding implementations in solve_rate_cool_g.F
https://github.com/grackle-project/grackle/pull/299
* Infrastructure: Refactoring so all autogenerated files are put in separate dir
https://github.com/grackle-project/grackle/pull/203
* Infrastructure: Introducing Experimental Supplementary CMake Build System
https://github.com/grackle-project/grackle/pull/182
https://github.com/grackle-project/grackle/pull/238
* Infrastructure: Fixup query_version.py
https://github.com/grackle-project/grackle/pull/242
* Infrastructure: mach file for fedora
https://github.com/grackle-project/grackle/pull/252
* Infrastructure: Rename `config` directory so that it's now called `support`
https://github.com/grackle-project/grackle/pull/305
* Infrastructure: Address Less Common CMake Configuration Issues
https://github.com/grackle-project/grackle/pull/310
* Infrastructure: Mention Enzo-E as an example for auto-install
https://github.com/grackle-project/grackle/pull/314
* Infrastructure: Testing Refactor
https://github.com/grackle-project/grackle/pull/215
* Infrastructure: Convert reaction rate test to gold standard model
https://github.com/grackle-project/grackle/pull/236
* Infrastructure: Update grackle data files submodule.
https://github.com/grackle-project/grackle/pull/239
* Infrastructure: Transition `Pygrackle` from `setuptools` to `scikit-build-core`
https://github.com/grackle-project/grackle/pull/208
* Infrastructure: Example Google Test created
https://github.com/grackle-project/grackle/pull/243
* Infrastructure: Answer test refactor
https://github.com/grackle-project/grackle/pull/245
* Infrastructure: Convert `cxx_grid_example` to a googletest test-case
https://github.com/grackle-project/grackle/pull/254
* Infrastructure: Tweaking code example tests
https://github.com/grackle-project/grackle/pull/258
* Infrastructure: Make `pytest` invokable from the root directory
https://github.com/grackle-project/grackle/pull/282
* Infrastructure: Add instructions for running the corelib tests
https://github.com/grackle-project/grackle/pull/284
* Infrastructure: 2 minor (but important) googletest-related CMake tweaks
https://github.com/grackle-project/grackle/pull/295
* Infrastructure: gracefully handle `yt_grackle` test-case when `YT_DATA_DIR` isn't defined
https://github.com/grackle-project/grackle/pull/302
* Documentation: Better Describe Local Functions - with `"sphinx_tabs"`
https://github.com/grackle-project/grackle/pull/206
* Documentation: Adopt ReadTheDocs theme
https://github.com/grackle-project/grackle/pull/221
* Documentation: add a list of software that uses Grackle to the `README.md` file
https://github.com/grackle-project/grackle/pull/225
* Documentation: Updating the README
https://github.com/grackle-project/grackle/pull/293
* Deprecation: Deprecate public headers other than `grackle.h` and `grackle.def`
https://github.com/grackle-project/grackle/pull/229
https://github.com/grackle-project/grackle/pull/288
* Deprecation: Deprecated classic build system (scheduled for removal in the next PR)
https://github.com/grackle-project/grackle/pull/304
* Infrastructure: Moved public headers into a separate directory.
https://github.com/grackle-project/grackle/pull/188
* Enhancement: Remove the lone `cimport numpy` line
https://github.com/grackle-project/grackle/pull/224
* Enhancement: Centralized configuration information within __config__.py.in
https://github.com/grackle-project/grackle/pull/244
* Intrastructure: Fix ReadTheDocs doc CI build
https://github.com/grackle-project/grackle/pull/257
* Infrastructure: CI: shift core-library tests to a separate "job"
https://github.com/grackle-project/grackle/pull/283
* Infrastructure: Circleci tweaks -- from Gold Standard Update
https://github.com/grackle-project/grackle/pull/298
https://github.com/grackle-project/grackle/pull/308
* Infrastructure: `src/example/Makefile` cleanup
https://github.com/grackle-project/grackle/pull/311
* Enhancement: Introduce a warning discouraging people from using ``pygrackle.utilities.data_path.grackle_data_dir`` in external code
https://github.com/grackle-project/grackle/pull/297
== Version 3.3 ==
_Release date - May 27, 2024_
* New Feature: Add temperature floor field
https://github.com/grackle-project/grackle/pull/159
* Enhancement: Refactor the `cloudy_data` struct so that the `grid_{dimension,parameters}` members are fixed-size arrays
https://github.com/grackle-project/grackle/pull/167
* Enhancement: Add error-check on `grackle_field_data.grid_dx`
https://github.com/grackle-project/grackle/pull/190, https://github.com/grackle-project/grackle/pull/191
* Bugfix: Minor tweaks to `initialize_rates.c`
https://github.com/grackle-project/grackle/pull/168
* Bugfix: explicitly initialize all struct members to solve plethora of issues
https://github.com/grackle-project/grackle/pull/166
* Bugfix: Fix memory leak
https://github.com/grackle-project/grackle/pull/169
* Bugfix: Add missing fields to pygrackle
https://github.com/grackle-project/grackle/pull/173
* Bugfix: Fix pygrackle H number density and mean molecular weight calculations
https://github.com/grackle-project/grackle/pull/180
* Documentation: Add mention of c_local_example to docs
https://github.com/grackle-project/grackle/pull/174
* Documentation: Fix a minor typo in documentation related to `grid_dx`
https://github.com/grackle-project/grackle/pull/176
* Documentation: Document release procedure and describe versioning policy
https://github.com/grackle-project/grackle/pull/194
* Infrastructure: Introduce `c_local_example` and fixed inconsistencies in `c_example`
https://github.com/grackle-project/grackle/pull/170
* Infrastructure: Update linux-gnu makefile
https://github.com/grackle-project/grackle/pull/183
* Infrastructure: Add `c_local_example` to list of executable removed by `make clean`
https://github.com/grackle-project/grackle/pull/186
* Infrastructure: Factor out some file-generation machinery
https://github.com/grackle-project/grackle/pull/181
* Deprecation: Removed functions deprecated in version 3.2
https://github.com/grackle-project/grackle/pull/184
== Version 3.2.1 ==
_Release date - Jul 19, 2023_
* Bugfix: Add missing return value in local_free_chemistry_data
https://github.com/grackle-project/grackle/pull/161
* Bugfix: Add missing declaration of local_free_chemistry_data
https://github.com/grackle-project/grackle/pull/163
== Version 3.2 ==
_Release date - May 22, 2023_
* New Feature: Enhanced dust treatment
https://github.com/grackle-project/grackle/pull/43,
https://github.com/grackle-project/grackle/pull/94
* New Feature: Use Grackle in yt fields
https://github.com/grackle-project/grackle/pull/62
* New Feature: New high density cooling table
https://github.com/grackle-project/grackle/pull/71
* New Feature: Callable functions for all reaction rates
https://github.com/grackle-project/grackle/pull/87
* New Feature: New get_velocity_units and get_temperature_units
functions https://github.com/grackle-project/grackle/pull/97,
https://github.com/grackle-project/grackle/pull/96
* New Feature: Updated H2 self-shielding (reissue of PR #72)
https://github.com/grackle-project/grackle/pull/98
* New Feature: New dynamic API
https://github.com/grackle-project/grackle/pull/130,
https://github.com/grackle-project/grackle/pull/141
* Enhancement: Use gamma in mean molecular
weight. https://github.com/grackle-project/grackle/pull/65
* Enhancement: Add ability to query the Grackle Version
https://github.com/grackle-project/grackle/pull/109
* Enhancement: Embed compiled precision into grackle
header. https://github.com/grackle-project/grackle/pull/118
* Enhancement: Convert iteration limit to a runtime parameter
https://github.com/grackle-project/grackle/pull/124
* Enhancement: Pygrackle mu improvements
https://github.com/grackle-project/grackle/pull/54
* Enhancement: Change redshift interpolation to log(1+z)
https://github.com/grackle-project/grackle/pull/126
* Enhancement: Significant Pygrackle refactor
https://github.com/grackle-project/grackle/pull/88,
https://github.com/grackle-project/grackle/pull/140
* Enhancement: Add updated H2-H rate based on Lique (2015)
https://github.com/grackle-project/grackle/pull/61
* Enhancement: Add test of synchronization between ``chemistry_data``
and dynamic
API. https://github.com/grackle-project/grackle/pull/136
* Enhancement: Modified the ``chemistry_data`` struct so that the
``omp_nthreads`` is always a field
https://github.com/grackle-project/grackle/pull/148
* Enhancement: Add machine file for tigercpu at Princeton
https://github.com/grackle-project/grackle/pull/74
* Enhancement: MacOS Big Sur makefile
https://github.com/grackle-project/grackle/pull/84
* Enhancement: Updating makefiles for NASA's HECC machines
https://github.com/grackle-project/grackle/pull/86
* Enhancement: Updates for Stampede Builds
https://github.com/grackle-project/grackle/pull/58
* Bugfix: Mmw bugfix https://github.com/grackle-project/grackle/pull/79
* Bugfix: fix energy and pressure units in pygrackle
https://github.com/grackle-project/grackle/pull/49
* Bugfix: Update cool1d_multi_g.F
https://github.com/grackle-project/grackle/pull/59
* Bugfix: Fixing lifetime issue for grackle_data_path in the Cython
Grackle wrapper https://github.com/grackle-project/grackle/pull/80
* Bugfix: Fix velocity_units in freefall.py
https://github.com/grackle-project/grackle/pull/92
* Bugfix: fix internal velocity units
https://github.com/grackle-project/grackle/pull/97
* Bugfix: Fix line length issues
https://github.com/grackle-project/grackle/pull/102
* Bugfix: Avoid use of uninitialized variables when setting the timestep
in dense gas https://github.com/grackle-project/grackle/pull/103
* Bugfix: Modify property calculations to respect `grid_start` and
`grid_stop` https://github.com/grackle-project/grackle/pull/106
* Bugfix: provide sensible version info without git
https://github.com/grackle-project/grackle/pull/114
* Bugfix: Change get_grackle_version to explicitly accept zero
arguments. https://github.com/grackle-project/grackle/pull/115
* Bugfix: Changing _inner_range to `static inline` to avoid undefined
reference https://github.com/grackle-project/grackle/pull/117
* Bugfix: Remove duplicate precision definition during compile
https://github.com/grackle-project/grackle/pull/137
* Bugfix: Changed the type of ``chemistry_data``'s ``grackle_data_file``
field from ``char*`` to ``const char*``
https://github.com/grackle-project/grackle/pull/147
* Bugfix: Replaced ``size_t`` with ``unsigned int`` in the dynamic api
functions. https://github.com/grackle-project/grackle/pull/149
* Bugfix: Bugfix: making inline legacy internal grackle functions work
in C codes https://github.com/grackle-project/grackle/pull/157
* Documentation: Update comment
https://github.com/grackle-project/grackle/pull/52
* Documentation: Add instructions for how to initialize data
submodule. https://github.com/grackle-project/grackle/pull/82
* Documentation: Updated Documentation
https://github.com/grackle-project/grackle/pull/90
* Documentation: Expand units documentation and remove ceiling on metal
density https://github.com/grackle-project/grackle/pull/121
* Documentation: Document optimization issues in Fortran example with
gfortran 9.2.1 & 9.4.0
https://github.com/grackle-project/grackle/pull/125
* Documentation: Add warnings about compiling in single
precision. https://github.com/grackle-project/grackle/pull/120
* Documentation: Add documentation for CaseBRecombination
parameter. https://github.com/grackle-project/grackle/pull/122
* Documentation: Add clarification to docs on electron
density. https://github.com/grackle-project/grackle/pull/131
* Documentation: documentation fixes for later sphinx versions
https://github.com/grackle-project/grackle/pull/132
* Documentation: Need cstddef or size_t undefined
https://github.com/grackle-project/grackle/pull/144
* Documentation: Expand discussion in documentation of cooling
units. https://github.com/grackle-project/grackle/pull/154
* Documentation: Add warning about self-shielding cooling
tables. https://github.com/grackle-project/grackle/pull/155
* Infrastructure: Switch from csh to bash in
configure. https://github.com/grackle-project/grackle/pull/47
* Infrastructure: add data files as submodule
https://github.com/grackle-project/grackle/pull/75
* Infrastructure: Update pygrackle version to 1.0.0 and add
metadata. https://github.com/grackle-project/grackle/pull/151
* Deprecation: Functions taking all field arrays as arguments (starting
in "_") https://github.com/grackle-project/grackle/pull/44
* Depreaction: Remaining functions starting with "_"
https://github.com/grackle-project/grackle/pull/139
== Version 3.1.1 ==
_Release date - Jul 1, 2019_
* Enhancement: add function for clearing locally declared grackle data
struct.
* Enhancement: added API for Grackle functionality using local data
structures.
* Enhancement: added/enhanced documentation for various runtime
parameters.
* Enhancement: added make file for ORNL Summit.
* Bugfix: make sure all parameters correctly printed after
initialization.
* Bugfix: correct H mass fraction for tabulated cooling mode.
* Bugfix: fix memory allocation in C example.
* Bugfix: fix scaling of H2 photo-dissociation rate by Lyman-Werner
intensity.
* Bugfix: fix thread-safety issue with updating UVB rates.
* Bugfix: OpenMP private variable list updated.
* Bugfix: correct H number density calculation for self-shielding.
* Bugfix: fix scaling of H2 and H2+ rates from UV background.
== Version 3.1 ==
_Release date - Apr 3, 2018_
* New feature: New metal cooling tables that include atomic
self-shielding corrections for both Haardt & Madau and
Faucher-Giguere tables. These tables have “_shielded” appended to
the filenames.
* New feature: H2 self-shielding of Lyman-Werner radiation using the
Wolcott-Green et al. (2011) model. Length scales for H2 column
density can be calculated using 1) neighboring grid zones (grid
codes only), 2) a user-supplied array of lengths, or 3) the local
Jeans length.
* Enhancement: pygrackle Python wrapper now compatible with Python 3.
Pygrackle works with Python 3.4 and later. Python 2.7 is still
supported.
* Enhancement: Added low-temperature (T < 30 K) term to (HI + HII ->
H2II + p) rate.
* Enhancement: Allow UV background parameters, UVbackground_redshift_on,
UVbackground_redshift_fullon, UVbackground_redshift_drop, and
UVbackground_redshift_on, to be user-settable and make
redshift-dependent ramping factor symmetric in redshift.
* Enhancement: Single consistent tolerance value used in solver.
* Enhancement: Volumetric and specific heating arrays now setable from
Python interface.
* Enhancement: Automated testing using Bitbucket Pipelines.
* Enhancement: New/updated make files for NCSA Blue Waters and Caltech
Wheeler.
* Bugfix: Fixed scaling and unit conversion issues with volumetric and
specific heating rate arrays and added tests.
* Bugfix: Fixed scaling issue of metal cooling rates. Metal cooling
rates will change by a factor of (1 / 0.76).
* Bugfix: Source code format fixes for radiative transfer fields.
* Bugfix: Fixed issue where NaNs occurred in atomic self-shielding when
redshift is greater than turn-on redshift for UV background.
* Bugfix: Fixed OpenMP compilation errors.
* Bugfix: Fixed memory allocation in C example.
* Bugfix: Fixed precision issues with radiation transfer field
variables.
* Bugfix: Fixed bug in answer testing where some tests were not being
properly compared to existing answers.
* Documentation improvements.
== Version 3.0 ==
_Release date - Nov 1, 2016_
* New feature: New API with fields arrays provided in a struct.
* New feature: Added support for radiation transfer fields.
* New feature: Added atomic self-shielding of UV backgrounds.
* New feature: Added support for providing arrays of volumetric and
specific heating rates.
* Enhancement: added Case B recombination cooling rates and updated
Case A rates.
* Enhancement: updated testing framework to use pytest parametrized
tests.
* Bugfix: fixed kunit normalization for k4 Case B recombination rate.
* Bugfix: fixed scaling of low-density H2 cooling rate and use newer H2
LTE rate in all appropriate places.
* Significant documentation updates and improvements.
== Version 2.2 ==
_Release date - May 18, 2016_
* New feature: Added OpenMP support.
* New feature: Added test suite and continuous integration testing.
* New feature: Added support for old-style Cloudy tables used in Enzo's
Cloudy cooling routine. Added cooling table for high density
metal cooling, cloudy_metals_2008_3D.h5.
* Enhancement: Many primordial chemistry updates: updated reactions
rates for H ionization, H- formation/destruction, H2 dissociation,
H2+ formation, H2 LTE cooling, and HD low density cooling. Added
reactions for collisional ionization of H by H and H by He.
* Enhancement: Refactored and improved pygrackle interface.
* Bugfix: Fixed conversion of comoving to proper coordinates in
calculation of temperature field in tabulated mode. This only
affected calls to calculate_temperature in tabulated mode, but not
the actual cooling solver.
* Removed code for old collisional rates.
* Reduced size of row temporary variables in chemistry/cooling solver.
* Fixed makefiles for TACC Stampede and NCSA Blue Waters.
* Moderate documentation improvements.
== Version 2.1 ==
_Release date - Jun 3, 2015_
* New feature: Added cooling_cell.py script to simulate the cooling of a
single cell over time.
* Enhancement: k19 reaction added to H- calculation.
* Enhancement: Build system converted to using libtool.
* Enhancement: Updated value of solar metal mass fraction to be
consistent with Cloudy.
* Enhancement: Mean molecular weight calculation in tabulated mode now
correctly accounts for photo-ionization from UV backgrounds.
* Bugfix: Metal field only considered in temperature calculation in
tabulated mode if actually present.
== Version 2.0.1 ==
_Release date - Jan 30, 2015_
* Enhancement: Physically motivated temperature cutoff for photo-
electric heating added.
* Bugfix: Spatially constant photo-electric heating now included in
purely tabulated cooling mode.
* Bugfix: Make sure grackle_data_file string is null-terminated.
* Minor compilation bugfixes.
* Installation docs updated.
== Version 2.0 ==
_Release date - Oct 1, 2014_
* Enhancement: All C++ files converted to C for easier integration into
C and Fortran code
* Enhancement: Main chemistry data structure moved into grackle
namespace. The user is no longer responsible for carrying it.
* Enhancement: Changeable integer precision compile flag removed for
greater simplicity
* Enhancement: Internal chemistry and cooling calculation now always
done in double precision with gr_float type only used for baryon
fields. The Grackle can now be reliably run in 32-bit mode.
* Enhancement: Changeable Fortran baryon field precision now controlled
with a custom variable type for better stability
* Enhancement: Examples now available for C, C++, and Fortran codes
* Enhancement: Grackle output now configurable so that all processors do
not have to print info
* Enhancement: Version and compile options now written to a file at run
start-up
== Version 1.1 ==
_Release date - Oct 1, 2014_
* New feature: Static library build option
* Enhancement: Updated H-, H2, and HD chemistry and cooling rates
* Enhancement: Sign of returned cooling time is now preserved
== Version 1.0 ==
_Release date - Jan 10, 2014_