Releases: metaopt/optree
Releases · metaopt/optree
v0.17.0
optree v0.17.0
Added
- Add WASM support by @XuehaiPan in #226.
- Bump
cibuildwheel
from 2.23 to 3.0 by @dependabot in #228. - Add iOS support by @XuehaiPan in #232.
- Build Python 3.14 and 3.14t wheels in CI by @XuehaiPan in #233.
Changed
- Build wheels against
pybind11
3.0.0 by @XuehaiPan in #231.
Fixed
- Handle
pybind11
macro defined as 0 instead of non-exist by @XuehaiPan in #227.
Removed
- Remove PyPy 3.9 (EOL) wheels by @dependabot in #228.
Full Changelog: v0.16.0...v0.17.0
v0.16.0
optree v0.16.0
Added
- Explicitly set recursion limit for recursion tests by @XuehaiPan in #207.
- Dump build-time meta-information to C extension by @XuehaiPan in #215.
- Use
pybind11::native_enum
to create enum classPyTreeKind
if available by @XuehaiPan in #214. - Enable
pybind11::smart_holder
to create classPyTreeSpec
andPyTreeIter
if available by @XuehaiPan in #217. - Implement optional
tp_clear
for classPyTreeSpec
andPyTreeIter
by @XuehaiPan in #218. - Add function
tree_partition
by @pfackeldey in #222. - Add Python 3.14 and Python 3.14t support by @XuehaiPan in #216.
Changed
- Enforce naming convention of packages with singular and plural:
optree.{accessor,integration}
->optree.{accessors,integrations}
by @XuehaiPan in #209. - Allow creating dataclass types in the global namespace by @XuehaiPan in #212.
- Migrate to
setuptools>=77
for PEP-639 by @XuehaiPan in #208. - Update minimal version of
typing-extensions
to 4.6.0 fortyping_extensions.TypeAliasType
by @XuehaiPan in #216.
Fixed
- Never call
PyType_Ready
twice and usePyType_Modified
instead by @XuehaiPan in #214. - Fix
optree.typing.PyTree[T]
for Python 3.14 due to immutableUnionType
by @XuehaiPan in #216.
Removed
- Drop Python 3.8 support by @XuehaiPan in #206.
- Retire benchmark script by @XuehaiPan in #211.
New Contributors
- @pfackeldey made their first contribution in #222
Full Changelog: v0.15.0...v0.16.0
optree v0.15.0
optree v0.15.0
Added
- Add method
PyTreeSpec.traverse
by @XuehaiPan in #197. - Include test suites in SDist by @XuehaiPan in #201.
- Include branch coverage and add conditional pragmas by @XuehaiPan in #204.
- Detect
cmake
version and guard minimum version insetup.py
by @XuehaiPan in #205.
Removed
- Remove deprecated key path APIs by @XuehaiPan in #195.
- Remove deprecated
optree.Partial
by @XuehaiPan in #196. - Remove duplicate lint checks by @XuehaiPan in #202.
New Contributors
- @Flamefire made their first contribution in #203.
Full Changelog: v0.14.1...v0.15.0
optree v0.14.1
optree v0.14.1
Added
- Support using system
cmake
executable during setup by @mgorny in #188. - Add shortcut module
optree.pytree
andoptree.treespec
by @lqhuang in #189. - Support lookup all registry entries in a
namespace
viaregister_pytree_node.get()
by @XuehaiPan in #190. - Add PyPy 3.11 support by @XuehaiPan in #194.
Changed
- Enable CXX11 ABI in C++ extension by @XuehaiPan in #184.
New Contributors
Full Changelog: v0.14.0...v0.14.1
optree v0.14.0
optree v0.14.0
Added
- Add method
PyTreeSpec.one_level
andPyTreeSpec.is_one_level
by @XuehaiPan in #179. - Add method
PyTreeSpec.transform
by @XuehaiPan in #177.
Changed
- Mark some arguments as positional-only as of Python 3.8+ by @XuehaiPan in #178.
Fixed
- Fix cross-compiling for ARM64 on x64 Windows by @XuehaiPan in #183.
Removed
- Drop Python 3.7 support by @XuehaiPan in #161.
Full Changelog: v0.13.1...v0.14.0
optree v0.13.1
optree v0.13.1
What's New
- CI workflow improvements and minor fixes for typing annotation.
Added
- Upload coverage / JUnit results / core dumps in CI workflows by @XuehaiPan in #170 and #172.
- Add more info to
tree_flatten_one_level
by @XuehaiPan in #168. - Improve typing support for generic
PyTree[T]
and registry lookup / register functions by @XuehaiPan in #160 and #166.
Changed
- Move include directory
include/{ => optree}/*.h
by @XuehaiPan in #167.
Fixed
- Improve typing support for
optree.dataclasses.dataclass
andoptree.dataclasses.field
by @manulari in #165.
Full Changelog: v0.13.0...v0.13.1
New Contributors
optree v0.13.0
optree v0.13.0
What's New
- Add Python 3.13 and Python 3.13t (free-threading build) support.
- Add
dataclasses
integration. - Significantly refactor and improve CXX build support.
Added
- Add Python 3.13t support by @XuehaiPan in #137.
- Expose Python implementation for C utilities for
namedtuple
andPyStructSequence
by @XuehaiPan in #157. - Add
dataclasses
integration by @XuehaiPan in #142. - Add Python 3.13 support by @XuehaiPan in #156.
- Respect cmake variable
pybind11_DIR
by @XuehaiPan in #155. - Add tests with PyDebug enabled in CI by @XuehaiPan in #150.
Changed
- Split implementation files and add more
inline
/constexpr
/noexcept
qualifiers by @XuehaiPan in #159. - Use
cmake
'sFindPython
module by @XuehaiPan in #151.
Fixed
- Fix potential segmentation fault for
structseq_fields
cache support by @XuehaiPan in #150.
Full Changelog: v0.12.1...v0.13.0
optree v0.12.1
optree v0.12.1
Fixed
- Fix warning regression during import when launch with strict warning filters by @XuehaiPan in #149.
Full Changelog: v0.12.0...v0.12.1
optree v0.12.0
optree v0.12.0
Added
- Add context manager to temporarily set the dictionary sorting mode by @XuehaiPan in #147.
- Add PyPy support by @XuehaiPan in #145.
- Add 32-bit wheels for Linux and Windows by @XuehaiPan in #141.
- Add Linux ppc64le and s390x wheels by @XuehaiPan in #138.
- Add accessor APIs
tree_flatten_with_accessor
andPyTreeSpec.accessors
by @XuehaiPan in #108. - Add submodule
optree.functools
by @XuehaiPan in #134.
Changed
- Use
stable
tag instead of 2.12.0 forpybind11
version by @XuehaiPan in #146. - Refactor the raw import statement in
setup.py
withimportlib
utilities by @XuehaiPan in #135. - Update minimal version of
typing-extensions
to 4.5.0 fortyping_extensions.deprecated
by @XuehaiPan in #134. - Update string representation for
OrderedDict
by @XuehaiPan in #133.
Fixed
- Fix gc for self-referential case by implementing
tp_traverse
by @XuehaiPan in #144. - Fix potential segmentation fault for pickling support by @XuehaiPan in #143.
- Update CI runner image for Python 3.7 on macOS by @XuehaiPan in #135.
Removed
- Deprecate key path APIs by @XuehaiPan in #108.
- Deprecate
optree.Partial
and replace withoptree.functools.partial
by @XuehaiPan in #134.
Full Changelog: v0.11.0...v0.12.0
optree v0.11.0
optree v0.11.0
Added
- Add function
is_namedtuple_instance
andis_structseq_instance
and result caches by @XuehaiPan in #121. - Add
tree_iter
function by @XuehaiPan in #130. - Add API to unregister node type in the registry by @XuehaiPan in #124.
- Add tree map functions with transposed outputs
tree_transpose_map
andtree_transpose_map_with_path
by @XuehaiPan in #127. - Add static constructors to create
PyTreeSpec
instances by @XuehaiPan in #120. - Cache intermediate
str
objects inPyObject_GetAttr
calls by @XuehaiPan in #106 and #109. - Install
clang-format
andclang-tidy
from PyPI by @XuehaiPan in #107. - Also check
_make
and_asdict
in functionis_namedtuple_class
by @XuehaiPan in #105.
Changed
- Set recursion limit to 1000 for all platforms by @XuehaiPan in #121.
- Allow types to be registered in both the global namespace and custom namespaces by @XuehaiPan in #124.
- Set
treespec_is_leaf
as strict by default by @XuehaiPan in #120. - Reorder functions for better code correspondence between C++ and Python by @XuehaiPan in #117.
- Standardize
py::handle
andpy::object
usage in function signature by @XuehaiPan in #115. - Reorder cases for
namedtuple
andPyStructSequence
types by @XuehaiPan in #111. - Use
__bases__
rather than__base__
in functionis_structseq_class
by @XuehaiPan in #104.
Fixed
- Fix potential segmentation fault when modifying
treespec.entries()
by @XuehaiPan in #116.
Full Changelog: v0.10.0...v0.11.0