2024-04-24 14:50:28 by Adam Ciarcinski | Files touched by this commit (5) | |
Log message:
py-zmq: updated to 26.0.2
26.0.2
- When bundling libsodium, download from libsodium's releases on GitHub instead \
of download.libsodium.org,
which appears to error frequently.
26.0.1
- Fix install from source with cmake \< 3.21
26.0.0
pyzmq 26 is a small release, but with some big changes _hopefully_ nobody will \
notice,
except for some users (especially on Windows) where pyzmq releases did not work.
The highlights are:
- The Cython backend has been rewritten using Cython 3's pure Python mode.
- The build system has been rewritten to use CMake via [scikit-build-core] \
instead of setuptools (setup.py is gone!).
- Bundled libzmq is updated to 4.3.5, which changes its license from LGPL to MPL.
This means:
1. Cython >=3.0 is now a build requirement (if omitted, source distributions \
_should_ still build from Cython-generated .c files without any Cython present)
1. pyzmq's Cython backend is a single extension module, which should improve \
install size, import time, compile time, etc.
1. pyzmq's Cython backend is now BSD-licensed, matching the rest of pyzmq.
1. The license of the libzmq library (included in pyzmq wheels) starting with \
4.3.5 is now Mozilla Public License 2.0 (MPL-2.0).
1. when building pyzmq from source and it falls back on bundled libzmq, libzmq \
and libsodium are built as static libraries using their own build systems (CMake \
for libzmq, autotools for libsodium except on Windows where it uses msbuild)
rather than bundling libzmq with tweetnacl as a Python Extension.
Since the new build system uses libzmq and libsodium's own build systems, \
evaluated at install time, building pyzmq with bundled libzmq from source should \
be much more likely to succeed on a variety of platforms than the previous \
method, where their build system was skipped and approximated as a Python \
extension.
But I would also be _very_ surprised if I didn't break anything in the process \
of replacing 14 years of setup.py from scratch, especially cases like \
cross-compiling.
Please [report](https://github.com/zeromq/pyzmq/issues/new) any issues you \
encounter building pyzmq.
See [build docs](building-pyzmq) for more info.
__New__:
- Experimental support for wheels on windows-arm64
- `Socket.bind('tcp://ip:0')` can be used as a context manager to bind to a \
random port.
The resulting URL can be retrieved as `socket.last_endpoint`.
- Add `SyncSocket` and `SyncContext` type aliases for the default Socket/Context \
implementations,
since the base classes are Generics, type-wise.
These are type aliases only to be used in type checking, not actual classes.
__Enhancements__:
- `repr(Frame)` now produces a nice repr, summarizing Frame contents (without \
getting too large),
e.g. `<zmq.Frame(b'abcdefghijkl'...52B)>`
__Breaking changes__:
- `str(Frame)` no longer returns the whole frame contents interpreted as utf8-bytes.
Instead, it returns the new summarized repr,
which produces more logical results with `print`, etc.
`bytes(Frame)` remains unchanged, and utf-8 text strings can still be produced \
with:
`bytes(Frame).decode("utf8")`,
which works in all versions of pyzmq and does the same thing.
- Stop building Python 3.7 wheels for manylinux1, which reached EOL in January, \
2022. The new build system doesn't seem to be able to find cmake in that \
environment.
|
2023-12-05 19:20:01 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-zmq: updated to 25.1.2
25.1.2
- Fix builds with some recent compilers and bundled libzmq
- Fix builds with upcoming Cython 3.1
|
2023-10-11 10:32:21 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-zmq: updated to 25.1.1
25.1.1 is the first stable release with Python 3.12 wheels.
Changes:
- Allow Cython 0.29.35 to build Python 3.12 wheels (no longer require Cython 3)
Bugs fixed:
- Fix builds on Solaris by including generated platform.hpp
- Cleanup futures in `Socket.poll()` that are cancelled and never return
- Fix builds with `-j` when numpy is present in the build env
25.1.0
pyzmq 25.1 mostly changes some packaging details of pyzmq, including support for \
installation from source on Python 3.12 beta 1.
Enhancements:
- Include address in error message when bind/connect fail.
Packaging changes:
- Fix inclusion of some test files in source distributions.
- Add Cython as a build-time dependency in `build-system.requires` metadata, \
following current [recommendations][cython-build-requires] of the Cython \
maintainers.
We still ship generated Cython sources in source distributions, so it is not a \
_strict_ dependency for packagers using `--no-build-isolation`, but pip will \
install Cython as part of building pyzmq from source.
This makes it more likely that past pyzmq releases will install on future \
Python releases, which often require an update to Cython but not pyzmq itself.
For Python 3.12, Cython >=3.0.0b3 is required.
25.0.2
- Fix handling of shadow sockets in ZMQStream when the original sockets have \
been closed. A regression in 25.0.0, seen with jupyter-client 7.
25.0.1
Tiny bugfix release that should only affect users of {class}`~.PUBHandler` or \
pyzmq repackagers.
- Fix handling of custom Message types in {class}`~.PUBHandler`
- Small lint fixes to satisfy changes in mypy
- License files have been renamed to more standard LICENSE.BSD, LICENSE.LESSER \
to appease some license auto-detect tools.
25.0.0
New:
- Added `socket_class` argument to {func}`zmq.Context.socket`
- Support shadowing sockets with socket objects,
not just via address, e.g. `zmq.asyncio.Socket(other_socket)`.
Shadowing an object preserves a reference to the original,
unlike shadowing via address.
- in {mod}`zmq.auth`, CredentialsProvider callbacks may now be async.
- {class}`~.zmq.eventloop.zmqstream.ZMQStream` callbacks may now be async.
- Add {class}`zmq.ReconnectStop` draft constants.
- Add manylinux_2_28 wheels for x86_64 CPython 3.10, 3.11, and PyPy 3.9 (these \
are _in addition to_ not _instead of_ the manylinux_2014 wheels).
Fixed:
- When {class}`~.zmq.eventloop.zmqstream.ZMQStream` is given an async socket,
it now warns and hooks up events correctly with the underlying socket, so the \
callback gets the received message,
instead of sending the callback the incorrect arguments.
- Fixed toml parse error in `pyproject.toml`,
when installing from source with very old pip.
- Removed expressed dependency on `py` when running with pypy,
which hasn't been used in some time.
Deprecated:
- {class}`zmq.auth.ioloop.IOLoopAuthenticator` is deprecated in favor of \
{class}`zmq.auth.asyncio.AsyncioAuthenticator`
- As part of migrating toward modern pytest, {class}`zmq.tests.BaseZMQTestCase` \
is deprecated and should not be used outside pyzmq.
- `python setup.py test` is deprecated as a way to launch the tests.
Just use `pytest`.
Removed:
- Bundled subset of tornado's IOLoop (deprecated since pyzmq 17) is removed,
so ZMQStream cannot be used without an actual install of tornado.
- Remove support for tornado 4,
meaning tornado is always assumed to run on asyncio.
|
2022-11-21 21:09:01 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-zmq: updated to 24.0.1
24.0.1
- Fix several possible resource warnings and deprecation warnings
when cleaning up contexts and sockets,
especially in pyzmq's own tests and when implicit teardown of objects is \
happening during process teardown.
24.0.0
pyzmq 24 has two breaking changes (one only on Windows), though they are not \
likely to affect most users.
Breaking changes:
- Due to a libzmq bug causing unavoidable crashes for some users,
Windows wheels no longer bundle libzmq with AF_UNIX support.
In order to enable AF_UNIX on Windows, pyzmq must be built from source,
linking an appropriate build of libzmq (e.g. `libzmq-v142`).
AF_UNIX support will be re-enabled in pyzmq wheels
when libzmq published fixed releases.
- Using a {class}`zmq.Context` as a context manager or deleting a context \
without closing it now calls {meth}`zmq.Context.destroy` at exit instead of \
{meth}`zmq.Context.term`.
This will have little effect on most users,
but changes what happens when user bugs result in a context being _implicitly_ \
destroyed while sockets are left open.
In almost all cases, this will turn what used to be a hang into a warning.
However, there may be some cases where sockets are actively used in threads,
which could result in a crash.
To use sockets across threads, it is critical to properly and explicitly close \
your contexts and sockets,
which will always avoid this issue.
|
2022-08-18 18:51:37 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-zmq: updated to 23.2.1
23.2.1
Improvements:
- First release with wheels for Python 3.11 (thanks cibuildwheel!).
- linux aarch64 wheels now bundle the same libzmq (4.3.4) as all other builds,
thanks to switching to native arm builds on CircleCI.
Fixes:
- Some type annotation fixes in devices.
|
2022-07-02 11:31:44 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-zmq: updated to 23.2.0
23.2.0
Improvements:
- Use `zmq.Event` enums in `parse_monitor_message` for nicer reprs
Fixes:
- Fix building bundled libzmq with `ZMQ_DRAFT_API=1`
- Fix subclassing `zmq.Context` with additional arguments in the constructor.
Subclasses may now have full control over the signature,
rather than purely adding keyword-only arguments
- Typos and other small fixes
|
2022-06-11 15:26:59 by Makoto Fujiwara | Files touched by this commit (1) |
Log message:
(net/py-zmq) Fix build, +DEPENDS+= py-packaging
|
2022-06-07 18:23:04 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-zmq: updated to 23.1.0
23.1.0
Fixing some regressions in 23.0:
- Fix global name of `zmq.EVENT_HANDSHAKE_*` constants
- Fix constants missing when using `import zmq.green as zmq`
Compatibility fixes:
- {func}`zmq.utils.monitor.recv_monitor_msg` now supports async Sockets.
- Fix build with mingw
23.0.0
Changes:
- all zmq constants are now available as Python enums
(e.g. `zmq.SocketType.PULL`, `zmq.SocketOption.IDENTITY`),
generated statically from zmq.h instead of at compile-time.
This means that checks for the *presence* of a constant (`hasattr(zmq, 'RADIO')`)
is not a valid check for the presence of a feature.
This practice has never been robust, but it may have worked sometimes.
Use direct checks via e.g. {func}`zmq.has` or {func}`zmq.zmq_version_info`.
- A bit more type coverage of Context.term and Context.socket
Compatibility fixes:
- Remove all use of deprecated stdlib distutils
- Update to Cython 0.29.30 (required for Python 3.11 compatibility)
- Compatibility with Python 3.11.0b1
Maintenance changes:
- Switch to myst for docs
- Deprecate `zmq.utils.strtypes`, now unused
- Updates to autoformatting, linting
- New wheels for PyPy 3.9
- Manylinux wheels for CPython 3.10 are based on manylinux2014
|
2022-01-04 21:55:40 by Thomas Klausner | Files touched by this commit (1595) |
Log message:
*: bump PKGREVISION for egg.mk users
They now have a tool dependency on py-setuptools instead of a DEPENDS
|
2021-11-14 21:17:08 by Adam Ciarcinski | Files touched by this commit (5) | |
Log message:
py-zmq: updated to 22.3.0
22.3.0
======
Fixes:
- Fix `strlcpy` compilation issues on alpine, freebsd.
Adds new build-time dependency on `packaging`.
- In event-loop integration: warn instead of raise when triggering callback on a \
socket whose context has been closed.
- Bundled libzmq in wheels backport a patch to avoid crashes
due to inappropriate closing of libsodium's random generator
when using CurveZMQ.
Changes:
- New ResourceWarnings when contexts and sockets are closed by garbage collection,
which can be a source of hangs and leaks (matches open files)
22.2.1
======
Fix bundling of wepoll on Windows.
22.2.0
======
New features:
- IPC support on Windows:
where available (64bit Windows wheels and bundled libzmq when compiling from \
source, via wepoll),
IPC should work on appropriate Windows versions.
- Nicer reprs of contexts and sockets
- Memory allocated by `recv(copy=False)` is no longer read-only
- asyncio: Always reference current loop instead of attaching to the current \
loop at instantiation time.
This fixes e.g. contexts and/or sockets instantiated prior to a call to \
`asyncio.run`.
- ssh: `$PYZMQ_PARAMIKO_HOST_KEY_POLICY` can be used to set the missing host key \
policy,
e.g. `AutoAdd`.
Fixes:
- Fix memory corruption in gevent integration
- Fix `memoryview(zmq.Frame)` with cffi backend
- Fix threadsafety issue when closing sockets
Changes:
- pypy Windows wheels are 64b-only, following an update in cibuildwheel 2.0
- deprecate `zmq.utils.jsonapi` and remove support for non-stdlib json \
implementations in `send/recv_json`.
Custom serialization methods should be used instead.
22.1.0
======
New features:
- asyncio: experimental support for Proactor eventloop if tornado 6.1 is available
by running a selector in a background thread.
Fixes:
- Windows: fix type of `socket.FD` option in win-amd64
- asyncio: Cancel timers when using HWM with async Sockets
Other changes:
- Windows: update bundled libzmq dll URLs for Windows.
Windows wheels no longer include concrt140.dll.
- adopt pre-commit for formatting, linting
22.0.3
======
- Fix fork-safety bug in garbage collection thread (regression in 20.0)
when using subprocesses.
- Start uploading universal wheels for ARM Macs.
22.0.2
======
- Add workaround for bug in DLL loading for Windows wheels with conda Python \
>= 3.8
22.0.1
======
- Fix type of ``Frame.bytes`` for non-copying recvs with CFFI backend \
(regression in 21.0)
- Add manylinux wheels for pypy
22.0.0
======
This is a major release due to changes in wheels and building on Windows.
Code changes from 21.0 are minimal.
- Some typing fixes
- Bump bundled libzmq to 4.3.4
- Strip unused symbols in manylinux wheels, resulting in dramatically smaller \
binaries.
This matches behavior in v20 and earlier.
- Windows CPython wheels bundle public libzmq binary builds,
instead of building libzmq as a Python Extension.
This means they include libsodium for the first time.
- Our own implementation of bundling libzmq into pyzmq on Windows is removed,
instead relying on delvewheel (or installations putting dlls on %PATH%) to \
bundle dependency dlls.
- The (new in 21.0) Windows wheels for PyPy likely require the Windows vcredist \
package.
This may have always been the case, but the delvewheel approach doesn't seem \
to work.
- Windows + PyPy is now the only remaining case where a wheel has libzmq built \
as an Extension.
All other builds ship libzmq built using its own tooling,
which should result in better, more stable builds.
21.0.2
======
- Fix wheels on macOS older than 10.15 (sets MACOSX_DEPLOYMENT_TARGET to 10.9, \
matching wheel ABI tag).
21.0.1
======
pyzmq-21.0.1 only changes CI configuration for Windows wheels (built with VS2017 \
instead of VS2019),
fixing compatibility with some older Windows on all Pythons
and removing requirement of VC++ redistributable package on latest Windows and \
Python < 3.8.
There still appears to be a compatibility issue with Windows 7 that will be \
fixed ASAP.
Until then, you can pin ``pip install pyzmq<21``.
There are no changes from 21.0.0 for other platforms.
21.0
====
pyzmq 21 is a major version bump because of dropped support for old Pythons and \
some changes in packaging.
CPython users should not face major compatibility issues if installation works \
at all :)
PyPy users may see issues with the new implementation of send/recv.
If you do, please report them!
The big changes are:
- drop support for Python 3.5. Python >= 3.6 is required
- mypy type stubs, which should improve static analysis of pyzmq,
especially for dynamically defined attributes such as zmq constants.
These are new! Let us know if you find any issues.
- support for zero-copy and sending bufferables with cffi backend.
This is experimental! Please report issues.
- More wheels!
- linux-aarch64 on Python 3.7-3.9
- wheels for pypy36, 37 on Linux and Windows (previously just mac)
We've totally redone the wheel-building setup, so let us know if you start \
seeing instalation issues!
Packaging updates:
- Require Python >= 3.6, required for good type annotation support
- Wheels for macOS no longer build libzmq as a Python Extension,
instead 'real' libzmq is built and linked to libsodium,
bundled with delocate.
This matches the longstanding behavior of Linux wheels,
and should result in better performance.
- Add manylinux wheels for linux-aarch64. These bundle an older version of \
libzmq than the rest.
- Build wheels for python3.8, 3.9 with manylinux2010 instead of manylinux1.
Wheels for older Pythons will still be built on manylinux1.
- rework cffi backend in setup.py
- All wheels are built on GitHub Actions (most with cibuildwheel) instead of \
Min's laptop (finally!).
New features:
- zero-copy support in CFFI backend (``send(copy=False)`` now does something).
- Support sending any buffer-interface-providing objects in CFFI backend.
Bugs fixed:
- Errors during teardown of asyncio Sockets
- Missing MSVCP140.dll in Python 3.9 wheels on Windows,
causing vcruntime-redist package to be required to use the Python 3.9 wheels \
for pyzmq 20.0
20.0
====
20.0 is a major version bump because of dropped support for old Pythons and some \
changes in packaging,
but there are only small changes for users with relatively recent versions of Python.
Packaging updates:
- Update bundled libzmq to 4.3.3
- Drop support for Python < 3.5 (all versions of Python < 3.6 are EOL at \
time of release)
- Require setuptools to build from source
- Require Cython 0.29 to build from version control (sdists still ship .c files, \
so will never need Cython)
- Respect $PKG_CONFIG env for finding libzmq when building from source
New features:
- :meth:`.Socket.bind` and :meth:`.Socket.connect` can now be used as context \
managers.
Fixes:
- Better error when libzmq is bundled and fails to be loaded.
- Hold GIL while calling ``zmq_curve_`` functions, which may fix apparent \
threadsafety issues.
|