[pybsddb] berkeleydb 18.1.9 released
Jesus Cea
jcea at jcea.es
Wed Jun 19 05:32:04 CEST 2024
Homepage:
https://www.jcea.es/programacion/pybsddb.htm
Changelog:
https://www.jcea.es/programacion/pybsddb.htm#berkeleydb-18.1.9
Docs:
https://docs.jcea.es/berkeleydb/latest/
PyPI:
https://pypi.org/project/berkeleydb/
Changelog:
18.1.9 - 2024-06-19
-------------------
- ``pkg_resources`` is deprecated, so migrate to
``packaging``. This is already provided by modern
``setuptools``. This change only affects you if you run the
test suite.
- If compiled under Python 3.10 or higher, we use the Python
Stable ABI, as defined in PEP 384 and related PEPs. That is,
you can use the same compiled module with any Python release
if Python version >= 3.10.
In order to achieve this, we have made these changes:
- Some fast Python API (not error checking) have been replaced
by somewhat slower functions (functions that do error
checking), because the former are not available in the
Stable ABI: ``PyBytes_GET_SIZE()``, ``PyBytes_AS_STRING()``,
``PyTuple_SET_ITEM()``.
- We replaced ``PyErr_Warn()`` by ``PyErr_WarnEx()`` because
it is not available in the Stable ABI.
- When an exception is raised because an incompatible type,
we need to write complicated code because
``Py_TYPE(keyobj)->tp_name`` is not available in the Stable
ABI. Code generated for Python < 3.11 is "ugly", we will
clean it up when the minimum supported Python version is
3.11.
- ``TYPE->tp_alloc`` is not available under the Stable ABI. We
replace it with ``PyType_GenericNew()``.
- Internal types that should NOT be instanciated by the user
has ``type->tp_new = NULL``. This can not be done under the
Stable ABI, so we use ``Py_TPFLAGS_DISALLOW_INSTANTIATION``
flag. This is the reason we only create Stable ABI modules
under Python >= 3.10, because that flag is defined in that
Python release.
- The new function ``berkeleydb.py_limited_api()`` returns an
integer describing the minimum supported Stable ABI or
``None``. If ``None``, the module is not compiled with
Stable ABI and can not be used with a different Python
version. When not ``None``, the value of
``berkeleydb.py_limited_api()`` can be easily interpreted
using something like ``hex(berkeleydb.py_limited_api())``.
- Python 3.13 added to the full test matrix.
- Experimental Python 3.13 support. Tested under 3.13.0b2.
- This code can be compiled under MS Windows, but I am unable to
provide support for it and it is far from trivial. Because of
this and some complains about it, I change the "Classifiers"
for this project from
'Operating System :: OS Independent'
to
'Operating System :: Unix'
I would restore MS Windows support if there is some kind of
community support for it. I can not do it by myself alone.
Sorry about that.
--
Jesús Cea Avión _/_/ _/_/_/ _/_/_/
jcea at jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/
Twitter: @jcea _/_/ _/_/ _/_/_/_/_/
jabber / xmpp:jcea at jabber.org _/_/ _/_/ _/_/ _/_/ _/_/
"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/
"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
More information about the pybsddb
mailing list