Releases: rdkit/rdkit
Release list
2026_03_4 (Q1 2026) Release
Release_2026.03.4
(Changes relative to Release_2026.03.3)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Rody Arantes, Katharina Buchthal, David Cosgrove, Tad Hurst, Steven Kearnes,
Brian Kelley, Niels Maeder, John Mayfield, Dan Nealschneider, Yakov Pechersky,
Ricardo Rodriguez, Jon Swain, Rachel Walker, Inwan Yoo, Nic Zonta, ankar-dav,
ajeyabsf, thomp-j, vwe-ibm
Backwards incompatible changes:
MolTransforms.hnow includes<Eigen/Core>instead of<Eigen/Dense>. C++
code that includedMolTransforms.hand relied on it to transitively pull in the
Eigen dense modules (LU/QR/SVD/etc.) must now include<Eigen/Dense>directly.- The
DistGeomHelpers::EmbedParametersstruct no longer has a constructor that
takes arguments in C++. If you want to initialize data members to non-default
values, use the designated initialization syntax. This change does not affect
Python.
New Features and Enhancements:
- Add spiro flipping to 2D coord generation
(github pull #9204 from ZontaNicola) - Adds SVE to BFGSOpt
(github pull #9216 from ajeyabsf) - Multi conf gaussian shape
(github pull #9265 from DavidACosgrove) - All-In-One coordinate refinement for ETKDG
(github pull #9292 from nmaeder) - Synthon substructure search 2x performance
(github pull #9307 from d-b-w) - Configurable stereo labels in MolDraw2D
(github pull #9311 from DavidACosgrove) - Replace combineMols with RWMol::insertMol in SynthonSpaceSearch
(github pull #9319 from DavidACosgrove) - Add opt-in unity (jumbo) builds + fix latent missing include guards
(github pull #9342 from skearnes) - Make substructure search Ctrl+c interruptible
(github pull #9349 from ricrogz)
Documentation:
rdchem.pyityping issue: non-default parameter following default parameter
(github issue #9335 from ankar-dav)
Bug Fixes:
- Update RDKit_Book.rst
(github pull #7946 from johnmay) - Drawing SVG panels only sets background for first one
(github issue #9310 from DavidACosgrove) - Fix STEREOANY (wavy bond) loss during InChI roundtrip
(github pull #9315 from rodyarantes) - Build: forward-slash Python3_EXECUTABLE when generating rdkit-stubs
(github pull #9318 from skearnes) - Some minor changes to GaussianShape
(github pull #9321 from DavidACosgrove) - DrawMoleculeWithHighlights: RuntimeError: Cannot normalize a zero length vector
(github issue #9324 from vwe-ibm) - CDXML reads of atropisomer don't run AssignStereochem
(github issue #9330 from pechersky) - Catch a few more potential zero length vectors.
(github pull #9333 from DavidACosgrove) - Support ChemDraw abnormal valence import
(github pull #9348 from pechersky) - Check OOB causing OSV-2022-1288
(github pull #9361 from thomp-j) - rdRGroupDecomposition: error when using both allowMultipleCoresInSameMol and includeTargetMolInResults
(github issue #9363 from jonswain) - Use the same libexpat as the current python when building
(github pull #9369 from bp-kelley) - Remove duplicate experimental torsion entry
(github pull #9374 from nmaeder) - fix rendering of mols with multiple highlights from PandasTools
(github pull #9377 from greglandrum)
Cleanup work:
- Clean up
DistGeomHelperstests
(github pull #9320 from nmaeder) - Fix DistGeomHelpers tests on arm64
(github pull #9328 from tadhurst-cdd) - Remove unused imports from python tests
(github pull #9336 from nmaeder) - Refactor BoundsMatrixBuilder
(github pull #9337 from kabu00002) - Trim heavy includes from public headers (Eigen/Dense, boost/format)
(github pull #9341 from skearnes) - Fix latent -Wdeprecated-copy in Seed and SubstructTerm
(github pull #9352 from skearnes) - Cleanup: Remove SVN leftovers
(github pull #9379 from nmaeder) - remove a couple of compiler warnings when compiling with -fhardened
(github pull #9385 from greglandrum)
2026_03_3 (Q1 2026) Release
Release_2026.03.3
(Changes relative to Release_2026.03.2)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Reza Bagheri Alashti, Marco Ballarotto, Kevin Boyd, David Cosgrove, Gareth
Jones, Huw Jones, Steven Kearnes, Brian Kelley, Clay Moore, Dan Nealschneider,
Emily Rhodes, Ricardo Rodriguez, Raul Sofia, Chris Von Bargen
New Features and Enhancements:
- CIP labeller performance: Don't calculate auxiliary descriptors unnecessarily
(github pull #9171 from d-b-w) - Add optional default value to Mol.GetProp() in Python
(github issue #9241 from emilyrrhodes) - CIPLabeler performance: Store vector of bonds
(github pull #9250 from d-b-w) - Pandastools improvements
(github pull #9251 from marcobICR) - Add MMFF Property Getter functions to python interface
(github issue #9253 from scal444) - [bot] Update molecular templates header file
(github pull #9269 from github-actions[bot]) - Adds some features to the C# SWIG wrappers
(github pull #9274 from jones-gareth) - MolDrawOptions: Option for Uniform Bond Colour with Coloured Atom Labels
(github issue #9282 from hdj-elixirsoftware) - add checked atom and bond iterators
(github pull #9290 from greglandrum) - Adds MolToCDXMLBlock to FileParsers
(github pull #9291 from bp-kelley) - add ability to block atoms/bonds from participating in tautomer zones
(github pull #9297 from greglandrum) - Improve synthon substructure search performance ~20%
(github pull #9305 from d-b-w)
Documentation:
- Docs: fix CosineSimilarity formula and clarify similarity metric names in BitOps.h
(github pull #9264 from rezabagher)
Bug Fixes:
- Extended fix for #9101
(github pull #9255 from RaulSofia) - Segfault when calling MolToSmiles on submol
(github issue #9270 from ricrogz) - DrawText::setFontScale Atom Font Scaling Issue
(github issue #9280 from hdj-elixirsoftware) - PgSQL: preserve toolchain LDFLAGS on macOS
(github pull #9285 from skearnes) - Build: tag dev-only install rules with COMPONENT dev
(github pull #9287 from skearnes) - Build: tag rdkitpython install rules with COMPONENT python
(github pull #9288 from skearnes) - Fix BFGS gradient-convergence denominator for negative energies
(github pull #9298 from mooreneural) - Regression in layout of reaction drawings.
(github issue #9301 from DavidACosgrove)
Cleanup work:
2026_03_2 (Q1 2026) Release
Release_2026.03.2
(Changes relative to Release_2026.03.1)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Kevin Boyd, Arthur Chan, Paul Clarke, Brandon Cole, David Cosgrove, Hussein Faara, Eloy Félix,
Brandon Novy, Yakov Pechersky, Ricardo Rodriguez, Chris Von Bargen, Rachel Walker, Nic Zonta
New Features and Enhancements:
- Consider a function returning the data calculated by DrawMol::extractSGroupData()
(github issue #7829 from ZontaNicola) - Legend position
(github issue #9023 from PaulC61) - Speed-up tautomer canonicalization, no API changes
(github pull #9134 from pechersky) - If templates match, skip ring number check
(github pull #9217 from ZontaNicola) - Add some std::ranges support
(github pull #9218 from greglandrum) - [bot] Update molecular templates header file
(github pull #9234 from github-actions[bot])
Documentation:
- Add more pyi patches, 2026-03
(github pull #9214 from pechersky) - mention AI tools in the contrib guidelines
(github pull #9224 from greglandrum)
Bug Fixes:
- Tautomer insensitive hash v2, E/Z and stereocenter-preservation
(github pull #9128 from eloyfelix) - Misplaced parentheses in shape code
(github pull #9222 from DavidACosgrove) - Incorrect UFF Inversion term gradient for P/As/Sb/Bi centers
(github issue #9229 from scal444) - Make setDoubleBondNeighborDirections() more consistent
(github pull #9239 from ricrogz) - Heap-use-after-free in RDKit
cleanupStereoGroupsvia duplicate CXSMILES stereo group atom index
(github issue #9259 from arthurscchan)
Cleanup work:
- Cleanup/get atoms and bonds
(github pull #9243 from greglandrum)
2026_03_1 (Q1 2026) Release
Release_2026.03.1
(Changes relative to Release_2025.09.1)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Jakub Adamczyk, Rody Arantes, Kevin Boyd, Jessica Braun, Katharina Buchthal,
Jackson Burns, Chi Cheng, David Cosgrove, Andrew Dirksen, Sergey Fedorov, Justin
Gullingsrud, Tad Hurst, Lauriane Jacot-Descombes, Gareth Jones, Eisuke
Kawashima, Brian Kelley, Joos Kiener, Jimmy Kromann, Phong Lam, Niels Maeder,
Josh A. Mitchell, Dan Nealschneider, Yakov Pechersky, Patrick Penner, Paul
Pillot, Rachael Pirie, Eliot Ragueneau, Max Rietmann, Pat Riley, Ricardo
Rodriguez, Lukas Sigmund, Anton Siomchen, Raul Sofia, Matt Swain, Paolo Tosco,
Ivan Tubert-Brohman, Philip Ullmann, Chris Von Bargen, Rachel Walker, Nic Zonta,
空酱, dkranthi221, EvaSnow, Pavel, stephenting22, Paul, paconius, spparel,
wszqkzqk, Diogo, dehaenw
Highlights
- A significant number of known SMILES canonicalization problems were resolved.
- It's now possible to provide your own matching functions to supplement or
replace the defaults when doing substructure matching. - An experimental new implementation of shape-based alignment using Gaussians.
- Improvements to the molecular templates for 2D depiction and handling of
macrocycles in the templates.
Backwards incompatible changes:
- The
Dictclass (and therefore all the properties interfaces) has been updated
tostd::string_viewkeys. This is transparent to the Python interfaces,
but some C++ class might have to be updated. - Simple AND queries are now merged into atoms. E.g.
[C&+]now produces the
the same result as[C+]when parsed as SMARTS. - Molecules which do not have potential chiral centers or stereobonds will no
longer have the "_CIPRank" atom property set by default. If you want to
force the calculation of pseudo-CIP ranks, you can call
Chem.ComputeAtomCIPRanks(). Note that if you just want a symmetry-aware
canonical ranking of the atoms in a molecule, it is more efficient to use
Chem.CanonicalRankAtoms(mol, breakTies=False). - The behavior of H removal has changed slightly: hydrides will no longer removed
by default, as this changes the global charge of the mol. MolToSmarts()no longer adds implicit hydrogens to atoms without queries. The
one exception to this is for chiral atoms, which will still have an implicit H
added if present.- Molecules no longer have a
__computedPropsproperty by default. The property
is added whenever it's needed. The property is considered private (as
indicated by the leading underscores) and shouldn't be used in client code,
but if your code relies on its presence in molecules, you may need to check
for it and add it yourself. RWMol::addBond()no longer removes RingInfo from the molecule, but it does
clear the property cache of the begin and end atoms. This does not affect the
general rule that molecules should be sanitized after adding/removing bonds.- The algorithm to canonicalize double bonds in SMILES output has changed to
address a potential issue that could alter stereo. As a result, SMILES of
mols contaning stereo bonds may have changed. - The Query infrastructure now uses std::function instead of function pointers
for the DataFunc and MatchFunc. This does not affect Python. - The results of the
Kekulize()function are now, by default, no longer
dependent on atom/bond ordering in the molecule. Additionally, the C++ API for
MolOps::Kekulize(),MolOps::KekulizeIfPossible()and
MolOps::KekulizeFragment()has been changed: these all now accept an
optional argument toggling the canonical Kekulization.
New Features and Enhancements:
- MolFromSmiles scales quadratically with chain length
(github issue #8776 from i-tub) - Add extract mol fragment api
(github pull #8811 from bp-kelley) - Allow Multiple Core Hits in the Same Molecule in RGroupDecomposition
(github pull #8813 from DavidACosgrove) - Merge simple AND queries onto atoms.
(github pull #8830 from ricrogz) - Implement a mechanism to patch .pyi files as proposed in #8749
(github pull #8835 from ptosco) - allow default radii in the DCLV calculation
(github pull #8836 from greglandrum) - Address #8840 by implementing dpi parameter in PandasTools.SaveXlsxFromFrame()
(github pull #8841 from ptosco) - Add safeSetattr to more params / options objects
(github pull #8842 from nmaeder) - add Reaction From Smiles python wrapper
(github pull #8843 from RPirie96) - Incremental synthon search
(github pull #8855 from jgullingsrud) - Use properties in the MolDrawOptions python wrappers to make setting/getting colours easier
(github pull #8857 from greglandrum) - Minor docstring tweak.
(github pull #8860 from DavidACosgrove) - Move some fields and methods from AtomPDBResidueInfo to base class
(github pull #8863 from rachelnwalker) - set up performance benchmarks
(github pull #8865 from bddap) - [CONTRIB]: Freewilson now keeps the coordinates passed in
(github pull #8868 from bp-kelley) - add more benchmarking
(github pull #8878 from bddap) - Improve
DetermineBondsandDetermineBondOrdersperformance
(github pull #8888 from ChiCheng45) - added new attributes for scsr template as per BIOVIA doc 2023
(github pull #8911 from tadhurst-cdd) - Allow using generators for similarity maps
(github pull #8912 from greglandrum) - Return original molecule from StereoisomerEnumerator when no unspecified stereocenters are available
(github pull #8924 from phonglam3103) - Add function to compute shape scores without overlay.
(github pull #8950 from DavidACosgrove) - expose Bond::invertChirality() to Python
(github pull #8951 from paconius) - Add a couple of utility functions for working with flat matrices
(github pull #8955 from nmaeder) - Add test to watch the state of canonicalization problems reported in #8775
(github pull #8958 from ricrogz) - Allow Hs to be ignored in the RMSD alignment functions
(github pull #8976 from greglandrum) - Embed Parameters to JSON
(github pull #8977 from nmaeder) - Allow spaces and special chars in SCSR fullname attrs
(github pull #8982 from tadhurst-cdd) - Allow H removal to be skipped in ShowFeats.py
(github pull #8986 from greglandrum) - some optimizations of AlignPoints()
(github pull #8987 from greglandrum) - Allow adding custom atom and bond matcher functions for substructure searching
(github pull #8994 from greglandrum) - Support serializing/deserializing FP generators to JSON
(github pull #9000 from greglandrum) - Stop writing so many atom properties to cxsmiles
(github pull #9002 from greglandrum) - Performance improvement: Implement buffered reading for SDMolSupplier
(github pull #9010 from RaulSofia) - Allow molzip to position fragments when joining them
(github pull #9021 from greglandrum) - Improve POPCNT optimization flag handling to build on other arches like riscv64 and loong64
(github pull #9029 from wszqkzqk) - Read SD property names till the last '>'
(github pull #9047 from ricrogz) - cleanup of stereogroups and wedges for non-chiral sites
(github pull #9051 from tadhurst-cdd) - Store CIP-ranked anchors after CIP labeling.
(github pull #9056 from ricrogz) - Gaussian shape overlays
(github pull #9095 from DavidACosgrove) - Exclude Zero order bonds from FindRingFamilies() and add arguments for includeDativeBonds, includeHydrogenBonds
(github pull #9118 from ricrogz) - Deterministic kekulize, independent of atom and bond order
(github pull #9125 from pechersky) - Add explicit operator= and copy c'tors to Transform3D and its base classes.
(github pull #9133 from DavidACosgrove) - Add RDLog::CaptureLog for capturing log messages
(github pull #9138 from cdvonbargen) - Add MolFromInchiAndAuxInfo to restore original atom order from AuxInfo
(github pull #9158 from rodyarantes) - Accept non-kekulisable molecules in drawMols3D.
(github pull #9167 from DavidACosgrove) - Follow up to PR #8968
(github pull #9168 from ricrogz) - Add 'k' extension to SMARTS to support ringsize queries
(github pull #9172 from greglandrum) - Support double* in Transform3D::TransformPoint
(github pull #9176 from DavidACosgrove) - Switch to using SMARTS for 2D depiction templates
(github pull #9179 from ZontaNicola) - Adjust lower bounds to allow intramolecular H-Bonds
(github pull #9188 from kabu00002) - [bot] Update molecular templates header file
(github pull #9193 from github-actions[bot]) - useChirality support in MinimalLib (RDKit.js) on mol.get_substruct_matches
(github pull #9197 from ptosco) - simple substructure search optimization
(github pull #9201 from greglandrum) - Enable templating for macrocycles
(github pull #9203 from ZontaNicola) - [bot] Update molecular templates header file
(github pull #9205 from github-actions[bot])
Documentation:
- Extra documentation for EnumerateLibraries
(github pull #8909 from DavidACosgrove) - Update installation instructions for building RDKit from source for macOS
(github pull #8928 from phonglam3103) - Fixed Typo in Getting Started Docs
(github pull #8947 from PatrickPenner) - Update deprecation messages for valence methods
(github pull #9050 from philipullmann) - fix the python docs for CanonicalRankAtomsInFragment
(github pull #9087 from greglandrum) - Confusing Deprecation Warning regarding GetImplicitValence
(github issue #9117 from kienerj) - Update The SSSR Problem
GetSSSRDocumentation
(github pull #9121 from JacksonBurns)
Bug Fixes:
- rdShapeAlign is sensitive to starting conformation
(github issue #8513 from priley-vv) - Hydrides in organom...
2026_03_1b1 (Q1 2026) Beta Release
Release_2026.03.1b1
(Changes relative to Release_2025.09.1)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Jakub Adamczyk, Rody Arantes, Kevin Boyd, Jessica Braun, Katharina Buchthal,
Jackson Burns, Chi Cheng, David Cosgrove, Andrew Dirksen, Sergey Fedorov, Justin
Gullingsrud, Tad Hurst, Lauriane Jacot-Descombes, Gareth Jones, Eisuke
Kawashima, Brian Kelley, Joos Kiener, Phong Lam, Niels Maeder, Josh A. Mitchell,
Dan Nealschneider, Yakov Pechersky, PatrickPenner, Paul Pillot, Rachael Pirie,
Eliot Ragueneau, Max Rietmann, Pat Riley, Ricardo Rodriguez, Lukas Sigmund,
Anton Siomchen, Raul Sofia, Matt Swain, Paolo Tosco, Ivan Tubert-Brohman, Philip
Ullmann, Chris Von Bargen, Rachel Walker, Nic Zonta, 空酱, Pavel, stephenting22,
Paul, paconius, spparel, wszqkzqk, Diogo, dehaenw
Highlights
Backwards incompatible changes:
- The
Dictclass (and therefore all the properties interfaces) has been updated
tostd::string_viewkeys. This is transparent to the Python interfaces,
but some C++ class might have to be updated. - Simple AND queries are now merged into atoms. E.g.
[C&+]now produces the
the same result as[C+]when parsed as SMARTS. - Molecules which do not have potential chiral centers or stereobonds will no
longer have the "_CIPRank" atom property set by default. If you want to
force the calculation of pseudo-CIP ranks, you can call
Chem.ComputeAtomCIPRanks(). Note that if you just want a symmetry-aware
canonical ranking of the atoms in a molecule, it is more efficient to use
Chem.CanonicalRankAtoms(mol, breakTies=False). - The behavior of H removal has changed slightly: hydrides will no longer removed
by default, as this changes the global charge of the mol. MolToSmarts()no longer adds implicit hydrogens to atoms without queries. The
one exception to this is for chiral atoms, which will still have an implicit H
added if present.- Molecules no longer have a
__computedPropsproperty by default. The property
is added whenever it's needed. The property is considered private (as
indicated by the leading underscores) and shouldn't be used in client code,
but if your code relies on its presence in molecules, you may need to check
for it and add it yourself. RWMol::addBond()no longer removes RingInfo from the molecule, but it does
clear the property cache of the begin and end atoms. This does not affect the
general rule that molecules should be sanitized after adding/removing bonds.- The algorithm to canonicalize double bonds in SMILES output has changed to
address a potential issue that could alter stereo. As a result, SMILES of
mols contaning stereo bonds may have changed. - The Query infrastructure now uses std::function instead of function pointers
for the DataFunc and MatchFunc. This does not affect Python. - The results of the
Kekulize()function are now, by default, no longer
dependent on atom/bond ordering in the molecule. Additionally, the C++ API for
MolOps::Kekulize(),MolOps::KekulizeIfPossible()and
MolOps::KekulizeFragment()has been changed: these all now accept an
optional argument toggling the canonical Kekulization.
New Features and Enhancements:
- MolFromSmiles scales quadratically with chain length
(github issue #8776 from i-tub) - Add extract mol fragment api
(github pull #8811 from bp-kelley) - Allow Multiple Core Hits in the Same Molecule in RGroupDecomposition
(github pull #8813 from DavidACosgrove) - Merge simple AND queries onto atoms.
(github pull #8830 from ricrogz) - Implement a mechanism to patch .pyi files as proposed in #8749
(github pull #8835 from ptosco) - allow default radii in the DCLV calculation
(github pull #8836 from greglandrum) - Address #8840 by implementing dpi parameter in PandasTools.SaveXlsxFromFrame()
(github pull #8841 from ptosco) - Add safeSetattr to more params / options objects
(github pull #8842 from nmaeder) - add Reaction From Smiles python wrapper
(github pull #8843 from RPirie96) - Incremental synthon search
(github pull #8855 from jgullingsrud) - Use properties in the MolDrawOptions python wrappers to make setting/getting colours easier
(github pull #8857 from greglandrum) - Minor docstring tweak.
(github pull #8860 from DavidACosgrove) - Move some fields and methods from AtomPDBResidueInfo to base class
(github pull #8863 from rachelnwalker) - set up performance benchmarks
(github pull #8865 from bddap) - [CONTRIB]: Freewilson now keeps the coordinates passed in
(github pull #8868 from bp-kelley) - add more benchmarking
(github pull #8878 from bddap) - Improve
DetermineBondsandDetermineBondOrdersperformance
(github pull #8888 from ChiCheng45) - added new attributes for scsr template as per BIOVIA doc 2023
(github pull #8911 from tadhurst-cdd) - Allow using generators for similarity maps
(github pull #8912 from greglandrum) - Return original molecule from StereoisomerEnumerator when no unspecified stereocenters are available
(github pull #8924 from phonglam3103) - Add function to compute shape scores without overlay.
(github pull #8950 from DavidACosgrove) - expose Bond::invertChirality() to Python
(github pull #8951 from paconius) - Add a couple of utility functions for working with flat matrices
(github pull #8955 from nmaeder) - Add test to watch the state of canonicalization problems reported in #8775
(github pull #8958 from ricrogz) - Allow Hs to be ignored in the RMSD alignment functions
(github pull #8976 from greglandrum) - Embed Parameters to JSON
(github pull #8977 from nmaeder) - Allow spaces and special chars in SCSR fullname attrs
(github pull #8982 from tadhurst-cdd) - Allow H removal to be skipped in ShowFeats.py
(github pull #8986 from greglandrum) - some optimizations of AlignPoints()
(github pull #8987 from greglandrum) - Allow adding custom atom and bond matcher functions for substructure searching
(github pull #8994 from greglandrum) - Support serializing/deserializing FP generators to JSON
(github pull #9000 from greglandrum) - Stop writing so many atom properties to cxsmiles
(github pull #9002 from greglandrum) - Performance improvement: Implement buffered reading for SDMolSupplier
(github pull #9010 from RaulSofia) - Allow molzip to position fragments when joining them
(github pull #9021 from greglandrum) - Improve POPCNT optimization flag handling to build on other arches like riscv64 and loong64
(github pull #9029 from wszqkzqk) - Read SD property names till the last '>'
(github pull #9047 from ricrogz) - cleanup of stereogroups and wedges for non-chiral sites
(github pull #9051 from tadhurst-cdd) - Store CIP-ranked anchors after CIP labeling.
(github pull #9056 from ricrogz) - Exclude Zero order bonds from FindRingFamilies() and add arguments for includeDativeBonds, includeHydrogenBonds
(github pull #9118 from ricrogz) - Deterministic kekulize, independent of atom and bond order
(github pull #9125 from pechersky) - Add explicit operator= and copy c'tors to Transform3D and its base classes.
(github pull #9133 from DavidACosgrove) - Add RDLog::CaptureLog for capturing log messages
(github pull #9138 from cdvonbargen) - Add MolFromInchiAndAuxInfo to restore original atom order from AuxInfo
(github pull #9158 from rodyarantes) - Accept non-kekulisable molecules in drawMols3D.
(github pull #9167 from DavidACosgrove) - Follow up to PR #8968
(github pull #9168 from ricrogz) - Add 'k' extension to SMARTS to support ringsize queries
(github pull #9172 from greglandrum) - Support double* in Transform3D::TransformPoint
(github pull #9176 from DavidACosgrove) - Switch to using SMARTS for 2D depiction templates
(github pull #9179 from ZontaNicola) - Adjust lower bounds to allow intramolecular H-Bonds
(github pull #9188 from kabu00002) - [bot] Update molecular templates header file
(github pull #9193 from github-actions[bot])
Documentation:
- Extra documentation for EnumerateLibraries
(github pull #8909 from DavidACosgrove) - Update installation instructions for building RDKit from source for macOS
(github pull #8928 from phonglam3103) - Fixed Typo in Getting Started Docs
(github pull #8947 from PatrickPenner) - Update deprecation messages for valence methods
(github pull #9050 from philipullmann) - fix the python docs for CanonicalRankAtomsInFragment
(github pull #9087 from greglandrum) - Confusing Deprecation Warning regarding GetImplicitValence
(github issue #9117 from kienerj) - Update The SSSR Problem
GetSSSRDocumentation
(github pull #9121 from JacksonBurns)
Bug Fixes:
- rdShapeAlign is sensitive to starting conformation
(github issue #8513 from priley-vv) - Hydrides in organometallics removed when parsing
(github issue #8726 from spparel) - CSharp wrapper fails to build on Linux
(github issue #8801 from jones-gareth) - Setting
maxAttemptsvsmaxIterationsinEmbedMolecule
(github issue #8807 from j-adamczyk) - Allowed list atoms should be read as dummy atoms
(github issue #8820 from cdvonbargen) - Aromaticity perception with list queries depends on ordering of atoms
(github issue #8823 from greglandrum) - Install expat lib in static builds
(github pull #8832 from ricrogz) - Allow labeled atoms to have working queries
(github pull #8849 from bp-kelley) - A fix and some refactoring for substructure highlighting in notebooks
(github pull #8851 from greglandrum) - use bond labels in the ranking in MolFragmentToSmiles
(github pull #8861 from greglandrum) - Multiple absolute stereo groups shouldn't be...
2025_09_6 (Q3 2025) Release
Release_2025.09.6
(Changes relative to Release_2025.09.5)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Jessica Braun, Jackson Burns, Sergey Fedorov, Lauriane Jacot-Descombes, Eisuke
Kawashima, Brian Kelley, Joos Kiener, Yakov Pechersky, Paul Pillot, Ricardo
Rodriguez, Matt Swain
New Features and Enhancements:
- Exclude Zero order bonds from FindRingFamilies() and add arguments for includeDativeBonds, includeHydrogenBonds
(github pull #9118 from ricrogz)
Bug Fixes:
- Get things working with numpy 2.4 and pandas 3.0
(github pull #9072 from greglandrum) - Chemdraw build fails on Big-endian:
cs_swapBytes.h: error: parse error in template argument list
(github issue #9077 from barracuda156) - Another canonicalization fix
(github pull #9082 from ricrogz) - CopyMolSubset silently rewires bonds when bondIndices reference atoms not in atomIndices
(github issue #9084 from mcs07) - CopyMolSubset ignores bondIndices when all atoms are included
(github issue #9088 from mcs07) - Fix SMARTS for the strict definition of rotatable bonds
(github pull #9096 from brje01) - Cannot build JS bindings with MCS option enabled.
(github pull #9110 from papillot) - DetermineBonds fails for thiolate
(github issue #9114 from LaurianeJD) - when shifting double bonds in tautomerization, set double bond stereo to STEREOANY
(github pull #9119 from pechersky)
Cleanup work:
- style: apply readability-braces-around-statements
(github pull #8136 from e-kwsm) - The precondition in Bond::getOtherAtomIdx() is redundant
(github pull #9092 from ricrogz) - Modernize loops and clean up ring finding
(github pull #9098 from ricrogz) - Further refactoring in SSSR finding
(github pull #9104 from ricrogz)
Documentation:
2025_09_5 (Q3 2025) Release
Release_2025.09.5
(Changes relative to Release_2025.09.4)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Chris Von Bargen, David Cosgrove, Tad Hurst, Eisuke Kawashima, Brian Kelley,
Niels Maeder, Syed Zayyan Masud, Yakov Pechersky, Vandan Revanur, Ricardo
Rodriguez, Raul Sofia, Philip Ullmann, kuzp, wszqkzqk, stephenting22, DrrDom,
diogomart
New Features and Enhancements:
- Performance improvement: Implement buffered reading for SDMolSupplier
(github pull #9010 from RaulSofia) - Allow molzip to position fragments when joining them
(github pull #9021 from greglandrum) - Improve POPCNT optimization flag handling to build on other arches like riscv64 and loong64
(github pull #9029 from wszqkzqk) - Read SD property names till the last '>'
(github pull #9047 from ricrogz) - cleanup of stereogroups and wedges for non-chiral sites
(github pull #9051 from tadhurst-cdd) - Store CIP-ranked anchors after CIP labeling.
(github pull #9056 from ricrogz)
Bug Fixes:
- Atom properties as SDF file data break if the array is too long
(github issue #8918 from bp-kelley) - Handle chiral atoms with 2 hydrogens in SCSR parser
(github pull #8939 from tadhurst-cdd) - Incorrect hydrogen bond acceptor count for N-heterocycles
(github issue #8997 from stephenting22) - Hs labeled implicit or explicit depending on presence of 3D conformer. Chem.RemoveHs differs from MolFromMolBlock removeHs
(github issue #9020 from diogomart) - Tversky for zero prototype string with alpha=1 and beta=0 returns incorrect output
(github issue #9033 from DrrDom) - SIGSEGV in rdFMCS.FindMCS when params.StoreAll = True
(github issue #9034 from kuzp) - BestAlignmentParams does not compile on macos due to clang issues
(github issue #9041 from pechersky) - CXSMILES: do not add separators for unserializable Substance Groups
(github pull #9048 from ricrogz) - Prevent CIP labels of bonds from being calculated twice.
(github pull #9052 from ricrogz) - added FABS to test for issue #4364
(github pull #9053 from tadhurst-cdd) - Fix removing (non)redundant bond dir specs when exporting SMILES
(github pull #9066 from ricrogz)
Cleanup work:
- Fix deprecated literal operators and macro redefinition warnings for modern compilers
(github pull #9055 from cdvonbargen) - Move some more tests over to catch2
(github pull #9058 from greglandrum) - Transform::SetRotationFromQuaternion takes const.
(github pull #9063 from DavidACosgrove)
Documentation:
- Update deprecation messages for valence methods
(github pull #9050 from philipullmann)
Deprecated code (to be removed in a future release):
Chirality::StereoInfo::NOATOM(C++) andChem.StereoInfo.NOATOM(Python) have been deprecated in favor ofAtom::NOATOMandChem.Atom.NOATOM.
2025_09_4 (Q3 2025) Release
Release_2025.09.4
(Changes relative to Release_2025.09.3)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Kevin Boyd, Chi Cheng, David Cosgrove, Tad Hurst, Brian Kelley, Niels Maeder,
Yakov Pechersky, Eliot Ragueneau, Pat Riley, Ricardo Rodriguez
New Features and Enhancements:
- Add extract mol fragment api
(github pull #8811 from bp-kelley) - Improve
DetermineBondsandDetermineBondOrdersperformance
(github pull #8888 from ChiCheng45) - Allow Hs to be ignored in the RMSD alignment functions
(github pull #8976 from greglandrum) - Embed Parameters to JSON
(github pull #8977 from nmaeder) - Allow spaces and special chars in SCSR fullname attrs
(github pull #8982 from tadhurst-cdd) - Allow H removal to be skipped in ShowFeats.py
(github pull #8986 from greglandrum) - some optimizations of AlignPoints()
(github pull #8987 from greglandrum) - Allow adding custom atom and bond matcher functions for substructure searching
(github pull #8994 from greglandrum) - Support serializing/deserializing FP generators to JSON
(github pull #9000 from greglandrum) - Stop writing so many atom properties to cxsmiles
(github pull #9002 from greglandrum)
Bug Fixes:
- rdShapeAlign is sensitive to starting conformation
(github issue #8513 from priley-vv) - SVG exports of bicolor solid wedge bound not working with stroke-width
(github issue #8936 from EliotRagueneau) - Small fix in ring stereo/canonicalization
(github pull #8962 from ricrogz) - Atropisomer bond is found in N-S(=O)C system
(github issue #8973 from pechersky) - SynthonSpace Substructure search misses some hits
(github issue #9007 from DavidACosgrove) - SynthonSpace Substructure search misses a hit - Mk2
(github issue #9009 from DavidACosgrove) - SDMolSupplier enters an infinite loop if number of SGroups is incorrect
(github issue #9014 from ricrogz) - Invalid sulfonamide SMARTS in FragmentDescriptors.csv
(github issue #9018 from scal444)
Cleanup work:
- A bunch of modernization of the ShapeHelpers code
(github pull #8954 from greglandrum) - Minor clean up in SMILES Writing double bond canonicalization
(github pull #8971 from ricrogz) - Refactor atomVisitOrders and bondVisitOrders in SMILES Writer canonicalization
(github pull #8972 from ricrogz) - Convert graphmolMolOpsTest to catch2
(github pull #8978 from ricrogz) - Some more cleaning up in SMILES Writing
(github pull #8991 from ricrogz) - Converts testSubgraph2 to catch
(github pull #9003 from ricrogz) - Convert smiTest1 to catch
(github pull #9004 from ricrogz) - Last leak fixes for 2025!
(github pull #9006 from ricrogz) - move molzip to its own file
(github pull #9013 from greglandrum) - Convert testMolSupplier to catch2
(github pull #9015 from ricrogz)
2025_09_3 (Q3 2025) Release
Release_2025.09.3
(Changes relative to Release_2025.09.2)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
David Cosgrove, Andrew Dirksen, Justin Gullingsrud, Tad Hurst, Brian Kelley,
Phong Lam, Niels Maeder, Dan Nealschneider, Patrick Penner, Rachael Pirie, Max
Rietmann, Ricardo Rodriguez, Anton Siomchen, Rachel Walker, dehaenw, paconius,
New Features and Enhancements:
- Incremental synthon search
(github pull #8855 from jgullingsrud) - [CONTRIB]: Freewilson now keeps the coordinates passed in
(github pull #8868 from bp-kelley) - add more benchmarking
(github pull #8878 from bddap) - added new attributes for scsr template as per BIOVIA doc 2023
(github pull #8911 from tadhurst-cdd) - Allow using generators for similarity maps
(github pull #8912 from greglandrum) - Return original molecule from StereoisomerEnumerator when no unspecified stereocenters are available
(github pull #8924 from phonglam3103) - Add function to compute shape scores without overlay.
(github pull #8950 from DavidACosgrove) - expose Bond::invertChirality() to Python
(github pull #8951 from paconius) - Add a couple of utility functions for working with flat matrices
(github pull #8955 from nmaeder) - Add test to watch the state of canonicalization problems reported in #8775
(github pull #8958 from ricrogz)
Bug Fixes:
- Multiple absolute stereo groups shouldn't be allowed on a single mol
(github issue #8873 from rachelnwalker) - Unrecognized attachment points in synthon library results in broken molecules
(github issue #8898 from jgullingsrud) - CXSmiles strips away isotopes
(github issue #8906 from bp-kelley) - Unable to build any rdkit >= 2025.3.6, when RDK_BUILD_DESCRIPTORS3D=OFF
(github issue #8922 from asiomchen) - Ignore whitespace when patching RapidJSON
(github pull #8927 from ricrogz) - Fixes a bug with chirality perception of T-shaped centers in very large rings
(github pull #8930 from greglandrum) - Fixes for nontetrahedral stereo parsing from SMILES/SMARTS
(github pull #8932 from greglandrum) - Allow abbreviations without XBonds
(github pull #8933 from greglandrum) - Fix potential iterator invalidation
(github pull #8944 from rietmann-nv) - N#N=O and O=N#N parse to different mol
(github issue #8945 from dehaenw) - Valence error when parsing SCSR
(github pull #8948 from tadhurst-cdd) - Modern stereo perception: Smiles stereochemistry inversion at rings
(github issue #8956 from d-b-w) - stop ignoring confId in CalcMolDescriptors3D()
(github pull #8967 from greglandrum) - Valence error in scsr temlates for nitro and metal complexes
(github pull #8969 from tadhurst-cdd)
Cleanup work:
- Switch from using RapidJSON to Boost::JSON for MolInterchange
(github pull #8859 from greglandrum) - Fix for issue with deprecated boost functions for MacOS build from source
(github pull #8929 from RPirie96) - Do not add a
__computedPropsproperty to molecules when initializing them
(github pull #8931 from greglandrum) - Do not reset the ringInfo information when adding bonds to RWMol
(github pull #8934 from greglandrum)
Documentation:
2025_09_2 (Q3 2025) Release
Release_2025.09.2
(Changes relative to Release_2025.09.1)
Acknowledgements
(Note: I'm no longer attempting to manually curate names. If you would like to
see your contribution acknowledged with your name, please set your name in
GitHub)
Jakub Adamczyk, Chris Von Bargen, David Cosgrove, Andrew Dirksen, Tad Hurst,
Gareth Jones, Brian Kelley, Niels Maeder, Josh A. Mitchell, Rachael Pirie,
Ricardo Rodriguez, Paolo Tosco, Ivan Tubert-Brohman, marlon2468morales-hue,
spparel
Backwards incompatible changes:
- Simple AND queries are now merged into atoms. E.g.
[C&+]now produces the
the same result as[C+]when parsed as SMARTS. - Molecules which do not have potential chiral centers or stereobonds will no
longer have the "_CIPRank" atom property set by default. If you want to
force the calculation of pseudo-CIP ranks, you can call
Chem.ComputeAtomCIPRanks(). Note that if you just want a symmetry-aware
canonical ranking of the atoms in a molecule, it is more efficient to use
Chem.CanonicalRankAtoms(mol, breakTies=False). - The behavior of H removal has changed slightly: hydrides will no longer removed
by default, as this changes the global charge of the mol. MolToSmarts()no longer adds implicit hydrogens to atoms without queries. The
one exception to this is for chiral atoms, which will still have an implicit H
added if present.
New Features and Enhancements:
- MolFromSmiles scales quadratically with chain length
(github issue #8776 from i-tub) - Allow Multiple Core Hits in the Same Molecule in RGroupDecomposition
(github pull #8813 from DavidACosgrove) - Merge simple AND queries onto atoms.
(github pull #8830 from ricrogz) - Implement a mechanism to patch .pyi files as proposed in #8749
(github pull #8835 from ptosco) - allow default radii in the DCLV calculation
(github pull #8836 from greglandrum) - Address #8840 by implementing dpi parameter in PandasTools.SaveXlsxFromFrame()
(github pull #8841 from ptosco) - Add safeSetattr to more params / options objects
(github pull #8842 from nmaeder) - add Reaction From Smiles python wrapper
(github pull #8843 from RPirie96) - Use properties in the MolDrawOptions python wrappers to make setting/getting colours easier
(github pull #8857 from greglandrum) - Minor docstring tweak.
(github pull #8860 from DavidACosgrove) - set up performance benchmarks
(github pull #8865 from bddap)
Bug Fixes:
- Hydrides in organometallics removed when parsing
(github issue #8726 from spparel) - CSharp wrapper fails to build on Linux
(github issue #8801 from jones-gareth) - Setting
maxAttemptsvsmaxIterationsinEmbedMolecule
(github issue #8807 from j-adamczyk) - Allowed list atoms should be read as dummy atoms
(github issue #8820 from cdvonbargen) - Aromaticity perception with list queries depends on ordering of atoms
(github issue #8823 from greglandrum) - Install expat lib in static builds
(github pull #8832 from ricrogz) - Allow labeled atoms to have working queries
(github pull #8849 from bp-kelley) - A fix and some refactoring for substructure highlighting in notebooks
(github pull #8851 from greglandrum) - use bond labels in the ranking in MolFragmentToSmiles
(github pull #8861 from greglandrum) - Calling atom.SetQuery(None) segfaults
(github issue #8877 from bp-kelley) - Whitespace mangled in
GetPropsAsDict()
(github issue #8890 from Yoshanuikabundi) - Partial fix to a problem with implicit Hs being written to SMARTS
(github pull #8893 from greglandrum) - Change docs in Python EmbedMultipleConfs.
(github pull #8900 from DavidACosgrove)