Releases: francis-clairicia/EasyNetwork
Releases · francis-clairicia/EasyNetwork
easynetwork v1.2.0
What's Changed
Breaking changes
- Unix Sockets: Gatekeep implementation from unsupported platforms (e.g. Windows) by @francis-clairicia in #417
Bug fixes
- Asynchronous clients: Fixed connection errors not caught if the client is closed in a concurrent task by @francis-clairicia in #424
- Fixed performance issues in asyncio's CancelScope by @francis-clairicia in #430
Features/Improvement
UnixSocketAddressnow displays the Unix address in a similar way to that seen in/proc/net/unixby @francis-clairicia in #416- Added support of Python 3.14 by @francis-clairicia in #440
- Added Unix Socket's control messages support by @francis-clairicia in #441
Documentation
- Documentation: Missing "default" note for "log_client_connection" option by @francis-clairicia in #418
Dependencies
- Replaced
bump2versionbybump-my-versionby @francis-clairicia in #415 - Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #431
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #432
- Updated pdm, dev and package dependencies, and pre-commit pinned versions by @francis-clairicia in #438
- Updated pdm, dev and package dependencies, and pre-commit pinned versions by @francis-clairicia in #442
Other Changes
- Updated project metadata to include SPDX license expression by @francis-clairicia in #414
- [dependabot]: Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #420
- Gatekeep abstract unix sockets from unsupported platforms (e.g. MacOS) by @francis-clairicia in #419
- CI: Recompile coverage dependency only on BSD by @francis-clairicia in #421
- [dependabot]: Bump actions/checkout from 4 to 5 by @dependabot[bot] in #422
- [dependabot]: Bump softprops/action-gh-release from 2.3.2 to 2.3.3 by @dependabot[bot] in #423
- CI: Run all tests at once on BSD-like platforms by @francis-clairicia in #425
- Tests: Run async API's integration tests wth
triorunner. by @francis-clairicia in #426 - CI: Updated BSD minor versions by @francis-clairicia in #427
- CI: Added python 3.12 tests on BSD-like OS by @francis-clairicia in #428
- Explicitly declare support of tested BSD plaforms by @francis-clairicia in #429
- Updated github-actions dependencies by @francis-clairicia in #439
Full Changelog: 1.1.4...1.2.0
easynetwork v1.1.4
What's Changed
Bug fixes
- Fixed data loss if
StreamProtocol.build_packet_from_chunks()raises an exception before the 1st yield by @francis-clairicia in #413
Dependencies
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #412
Other Changes
- [dependabot]: Bump softprops/action-gh-release from 2.2.2 to 2.3.2 by @dependabot[bot] in #411
Full Changelog: 1.1.3...1.1.4
easynetwork v1.1.3
What's Changed
Bug fixes
- TCP server: Fixed client connection abort on regular request handler stop by @francis-clairicia in #403
- Servers: Check timeout value sent by request handlers by @francis-clairicia in #405
- UDP servers: Fixed crash on shutdown because of queued datagrams by @francis-clairicia in #407
Features/Improvement
- Improved buffer management when using
BufferedStreamProtocolby @francis-clairicia in #402
Documentation
- Documentation: Fixed missing warning for client's
aclose()methods by @francis-clairicia in #404
Dependencies
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #406
Other Changes
- Benchmarks: Disable garbage collector during tests by @francis-clairicia in #400
- Benchmarks: Fixed server logs not shown on ping error by @francis-clairicia in #401
- Benchmarks: Added tendency graph for each test run by @francis-clairicia in #408
- Benchmarks: Reduced graph resolution from 10ms to 5ms by @francis-clairicia in #409
Full Changelog: 1.1.2...1.1.3
easynetwork v1.1.2
What's Changed
Bug fixes
- AsyncBackend: Fixed asyncio's CancelScope not catching re-raised exceptions by @francis-clairicia in #395
- AsyncBackend: Fixed asyncio's CancelScope swallowing exceptions by mistake by @francis-clairicia in #397
- Servers: Fixed race condition on server shut down if the socket was ready for reading by @francis-clairicia in #398
- Fixed
AsyncStreamServerandAsyncDatagramServershutdown when an exception is thrown by @francis-clairicia in #399
Dependencies
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #394
- Dependencies: Updated test dependencies by @francis-clairicia in #396
Other Changes
- Some internal fixes by @francis-clairicia in #392
- Improved handling of asynchronous generators by @francis-clairicia in #393
Full Changelog: 1.1.1...1.1.2
easynetwork v1.1.1
What's Changed
Bug fixes
- Improved serializers performances by @francis-clairicia in #391
Full Changelog: 1.1.0...1.1.1
easynetwork v1.1.0
What's Changed
Bug fixes
- asyncio: Fixed TCP socket listener's
accept()not cancelled if the coroutine handles capacity errors by @francis-clairicia in #346 - The
TrioListenerSocketAdapternow handlesaccept()capacity errors by @francis-clairicia in #347 - Fixed low-level API inconsistent usages by @francis-clairicia in #350
- Fixed UDP clients trying to bind sockets when it is not needed by @francis-clairicia in #354
- TCP server: Fixed
socket.accept()stopping the application for ignorable errors by @francis-clairicia in #367 - TrioBackend: Fixed UDP listener crashing down application on
recvfrom()errors by @francis-clairicia in #371 - Fixed TCP clients crash with
ssl=Truewith specific SSL versions + Fixed some tests by @francis-clairicia in #381
Features/Improvement
- Low-level API (
AsyncBackend): Addedcreate_fair_lock()method by @francis-clairicia in #348 - Improved UDP server performances with
triobackend by @francis-clairicia in #349 - Low-level API: Added stapled async/blocking transports by @francis-clairicia in #352
- Servers: Fixed slow access to client's extra attributes provided by @francis-clairicia in #355
- TCP server: Improved TLS handshake error handling by @francis-clairicia in #360
- Added support of Python 3.13 by @francis-clairicia in #361
- Low-level API: Faster access to extra attributes by @francis-clairicia in #362
- Improved server performances and memory consumption on error by @francis-clairicia in #385
- Added Unix Sockets support by @francis-clairicia in #389
Documentation
- Updated sphinx to 8.1 by @francis-clairicia in #359
- Documentation: Fixed missing documentation on socket addresses and client attributes by @francis-clairicia in #374
- Documentation: Removed
reuse_portoption from UDP clients by @francis-clairicia in #375 - Documentation: Clarify
AsyncBackend.create_condition_var()behavior withlockargument. by @francis-clairicia in #377 - Project: Updated Copyright years by @francis-clairicia in #388
Dependencies
- Dependencies: Updated build-system dependencies by @francis-clairicia in #384
Other Changes
- Trio backend: Better way to connect a socket by @francis-clairicia in #353
- Fixed UDP server's cache inconsistency by @francis-clairicia in #356
- Updated dependencies and pre-commit pinned versions by @francis-clairicia in #357
- Updated pytest to 8.3 by @francis-clairicia in #358
- Updated pdm version and install on CI by @francis-clairicia in #364
- Improved cache management for PDM on CI by @francis-clairicia in #366
- CI: Updated OS pinned versions for github actions runners and readthedocs by @francis-clairicia in #365
- CI: Add tests on FreeBSD by @francis-clairicia in #363
- CI (FreeBSD): Re-added tests which had been skipped by mistake by @francis-clairicia in #368
- CI: Cache key uses current workflow job id by @francis-clairicia in #369
- CI: Added mypy checks on FreeBSD by @francis-clairicia in #370
- CI: Coverage report was wrong for FreeBSD flag by @francis-clairicia in #372
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #376
- CI: Merged FreeBSD VM setup in a github action by @francis-clairicia in #378
- CI: Fixed workflows after changes added in gh-378 by @francis-clairicia in #380
- CI: Added tests on OpenBSD & NetBSD by @francis-clairicia in #379
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #390
Full Changelog: 1.0.0...1.1.0
easynetwork v1.0.0
What's Changed
Breaking changes
- Removed global asynchronous back-end interface by @francis-clairicia in #262
- Added
BufferedStreamProtocolobject by @francis-clairicia in #302 - Removed
BufferedStreamReadTransportclass by @francis-clairicia in #308 - Low-level API: asyncio backend is now a private implementation by @francis-clairicia in #311
- Removed
ssl_shared_lockoption from TCP clients by @francis-clairicia in #316 - Servers: Common implementation for both TCP and UDP servers by @francis-clairicia in #322
- Clients: Removed
get_(local|remote)_addressfrom abstract base classes by @francis-clairicia in #324 AsyncBackend.run_in_thread(): Removed**kwargsand addedabandon_on_cancelby @francis-clairicia in #331
Bug fixes
- Fixed: Cancelling taskgroup.start() did not cancel the spawned task by @francis-clairicia in #267
- Datagram servers: Removed slots on Generic-based dataclasses by @francis-clairicia in #269
- Added
ResourceWarningcalls for unclosed objects on destroy by @francis-clairicia in #284 - Datagram server: Fixed memory leak if the request handler have an inner loop by @francis-clairicia in #306
- TLS transport: Fixed SSL object consistency errors when sending data and closing the object by @francis-clairicia in #309
- Async TLS: Ensure wrapped transport is closed once by @francis-clairicia in #333
- TCP server: Force client tasks to yield when receiving messages by @francis-clairicia in #334
Features/Improvement
- Usage of high-level request handlers is now generic by @francis-clairicia in #272
- Standalone servers: Improved robustness by @francis-clairicia in #273
AsyncIOBackend.ignore_cancellation(): Back-propagation of context on Python 3.11 by @francis-clairicia in #276- Optional async-backend interface by @francis-clairicia in #279
- Low-level transport objects now support the context manager protocol by @francis-clairicia in #287
- Low-level API: Stream endpoints now raise ConnectionAbortedError on EOF by @francis-clairicia in #289
- Low-level API: Easier way to handle simplex/duplex endpoints by @francis-clairicia in #290
- Low-level API: Added
get_socket_linger()by @francis-clairicia in #291 - Fix: Better performances when using buffer API by @francis-clairicia in #299
- Fix: Improved server performances (slightly) by @francis-clairicia in #304
- Low-level API: Lazy asyncio import by @francis-clairicia in #313
- Low-level API: transports'
send_all_from_iterable()method are more efficient by @francis-clairicia in #315 - Clients:
iter_received_packets()default implementation is no longer a generator by @francis-clairicia in #325 - Added composite serializers by @francis-clairicia in #328
- Transports: Now
send_all_from_iterable()sends a single chunk by default by @francis-clairicia in #329 - Servers: Temporary disable async generator hooks for request handlers by @francis-clairicia in #332
- Servers: Added
backend()method to client objects by @francis-clairicia in #335 - Datagram servers: Removed task locks because it is useless by @francis-clairicia in #336
- Implemented
triobackend by @francis-clairicia in #337 MessagePackSerializercan be used withStreamProtocolandBufferedStreamProtocolby @francis-clairicia in #339- Multithreading integration in servers by @francis-clairicia in #344
Documentation
sniffiois now used differently by @francis-clairicia in #264- Rewritten
API Referencesections by @francis-clairicia in #271 - Documentation: Fixed API docstrings by @francis-clairicia in #292
- README: AnyIO license is now a link by @francis-clairicia in #298
- Documentation: Rewritten all docstrings by @francis-clairicia in #310
- Documentation: Fixed missing docstrings + invalid type aliases by @francis-clairicia in #317
- Documentation: Added more documentation for serializers by @francis-clairicia in #323
- API Reference: Add a "See Also" pointing to the corresponding User Guide by @francis-clairicia in #327
Dependencies
- Updated dependencies and pre-commit pinned versions by @francis-clairicia in #265
- Updated pytest-asyncio to 0.23.6 and other dev dependencies by @francis-clairicia in #274
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #278
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #294
- Build: Moved
hatch-vcstovcsbuild hook's dependencies by @francis-clairicia in #303 - Upgraded pytest-retry to remove ResourceWarnings by @francis-clairicia in #307
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #312
- Dependencies:
sniffiois now a required dependency by @francis-clairicia in #320 - Updated dev dependencies by @francis-clairicia in #321
- Updated dev dependencies by @francis-clairicia in #326
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #338
- Updated pdm, dev dependencies, and pre-commit pinned versions by @francis-clairicia in #340
Other Changes
- Upgrade
pdmto version 2.14.0 by @francis-clairicia in #263 test.yml: Mutualise test jobs by @francis-clairicia in #268- tox: Configuration update by @francis-clairicia in #277
- Converters: Better type hints by @francis-clairicia in #280
AsyncIOBackend: RemovedAsyncSocketclass by @francis-clairicia in #281- Revert modifications of pre-commit config done in #277 by @francis-clairicia in #282
- Server benchmarks: More accurate results by synchronizing client workers by @francis-clairicia in #283
- asyncio listener: Handle
accept()errors in the right place by @francis-clairicia in #285 - Removed unnecessary
typing.TYPE_CHECKINGusages by @francis-clairicia in #286 - asyncio backend: Some code cleanup by @francis-clairicia in #288
- Benchmarks: Timestamp report files by @francis-clairicia in #295
- Benchmarks: Add benches for SSL and easynetwork + buffered serializers by @francis-clairicia in #296
- Benchmarks: Client workers have been rewritten in Rust by @francis-clairicia in #301
- Benchmarks: Fix compilation error on Windows by @francis-clairicia in https://github.com/francis-clairicia/EasyNetwo...
easynetwork v1.0.0rc8
What's Changed
Breaking changes
- AsyncBackendFactory hook system improvements by @francis-clairicia in #211
- Servers: Removed unsafe properties by @francis-clairicia in #217
- AsyncBackend: General API improvements by @francis-clairicia in #220
AsyncTCPNetworkServer:request_handler.on_disconnection()is called only ifon_connection()succeeded by @francis-clairicia in #231- General performance improvement by @francis-clairicia in #243
- Removed
EncryptorSerializerby @francis-clairicia in #244 - Changed project architecture by @francis-clairicia in #245
- Modified packages re-exports by @francis-clairicia in #251
Bug fixes
- Async clients: Better lock usage on connection by @francis-clairicia in #204
- Fixed whole CancelScope's cancellation system by @francis-clairicia in #208
- Fixed memory leak in internal stream objects by @francis-clairicia in #212
- ThreadsPortal: Do not hide exception raised after future.cancel() by @francis-clairicia in #214
- Servers: Fixed issues on serve_forever() tear down by @francis-clairicia in #216
- Servers: Fixed CancelledError not propagated to request handler exit stack by @francis-clairicia in #218
AsyncIOBackend: OptimizedTask.wait()by @francis-clairicia in #221AsyncIOBackend.ignore_cancellation()now checks pending parent scope cancellation by @francis-clairicia in #224- Synchronous clients' threading.Lock were replaced by threading.RLock by @francis-clairicia in #228
Features/Improvement
- Serializers: Added
buffer_limitproperty by @francis-clairicia in #191 - Serializers: Added
StructSerializerimplementation by @francis-clairicia in #192 - Request handlers: Modified
service_init()type hinting by @francis-clairicia in #193 AsyncBackend: Removedwait_future()method by @francis-clairicia in #199- AsyncIOBackend: Implemented happy eyeballs delay internally by @francis-clairicia in #200
- AsyncIOBackend: Use asyncio transport/protocol system by setting an environment variable by @francis-clairicia in #203
- Moved AsyncExecutor's module in easynetwork.lowlevel by @francis-clairicia in #205
- AsyncExecutor: Added
wrappedproperty by @francis-clairicia in #207 - Improved robustness of asynchronous generator usage by @francis-clairicia in #219
- Servers: Another minor improvements by @francis-clairicia in #222
- AsyncBackendFactory: Removed intrusive methods by @francis-clairicia in #223
AsyncIOBackend.ignore_cancellation()now use the current task context (Python 3.12+) by @francis-clairicia in #225- AsyncExecutor: Minor performance improvements in
unwrap_future()by @francis-clairicia in #226 - Added
runner_optionsto standalone servers constructors by @francis-clairicia in #229 - Low-level API: Task groups optional for servers by @francis-clairicia in #230
AsyncIOBackend.ignore_cancellation()accepts any awaitable object by @francis-clairicia in #232- UDP servers: Decrease latency when receiving a datagram by @francis-clairicia in #233
- Servers: Improved load balancing by @francis-clairicia in #234
- AsyncBackendFactory: Per-thread backend instances by @francis-clairicia in #241
- Servers: Request handlers can specify the receive timeout by yielding the value by @francis-clairicia in #246
- Added
manual_buffer_allocationoption by @francis-clairicia in #253
Documentation
- Several fixes in documentation by @francis-clairicia in #248
- Docs: Added undocumented usage of high-level API by @francis-clairicia in #259
Dependencies
- Updated dependencies and tools by @francis-clairicia in #195
- Updated dependencies and pre-commit pinned versions by @francis-clairicia in #235
- Updated dependencies and tools by @francis-clairicia in #257
Other Changes
- Normalized TypeVar names by @francis-clairicia in #194
- Some of the
pragma: no coverdirectives were removed by @francis-clairicia in #196 - Servers: Ensure
GeneratorExitis re-raised in request handlers by @francis-clairicia in #197 TaskGroup.start_soon(): Removedcontextparameter by @francis-clairicia in #198- Removed twine from build environment by @francis-clairicia in #206
- Fixed several package build issues by @francis-clairicia in #209
- Servers testing: check logs at test tear down by @francis-clairicia in #213
- Standalone servers: Better async backend usage by @francis-clairicia in #215
- Tests: Setup for flaky tests behaviors by @francis-clairicia in #227
- Fixed missing copyright notices by @francis-clairicia in #240
- Updated copyright by @francis-clairicia in #247
- [CI] Skip running tests if the PR is labeled 'pr-skip-test' by @francis-clairicia in #258
- Dev post #258: Always run other-tests job by @francis-clairicia in #260
Full Changelog: 1.0.0rc7...1.0.0rc8
easynetwork v1.0.0rc7
What's Changed
Bug fixes
- FileBasedPacketSerializer: Fixed delayed deserialization errors by @francis-clairicia in #153
- Fixed client.wait_connected() concurrency issue by @francis-clairicia in #171
- AsyncSocket: shutdown() was not checking current running loop by @francis-clairicia in #172
- AsyncSocket: Fixed OSError raised by methods if aclose() is called by @francis-clairicia in #175
- TCP servers: the main loop is stopped after stop_listening() call by @francis-clairicia in #181
Features/Improvement
- Serializers: Added debug mode by @francis-clairicia in #154
- Added
UnsupportedOperationexception by @francis-clairicia in #156 - Added Python 3.12 to CI by @francis-clairicia in #159
- Implement zero copy writes for TCP socket (sync and async) transports by @francis-clairicia in #167
- Packet reception exceptions are now converted to RuntimeErrors by @francis-clairicia in #169
- Added
BufferedIncrementalPacketSerializerbase class by @francis-clairicia in #174 - Serializers can now handle two distinct object types by @francis-clairicia in #178
- Added 'family' parameter to UDP clients by @francis-clairicia in #180
- BufferedIncrementalPacketSerializer.create_deserializer_buffer() can now return a buffer with a different item size by @francis-clairicia in #184
- Packet send exceptions are now converted to RuntimeErrors by @francis-clairicia in #187
- AsyncBackendFactory: Keep singletons instead of classes by @francis-clairicia in #190
Documentation
- Updated release workflow by @francis-clairicia in #177
Dependencies
- tox now uses optional deps pinned in pdm.lock by @francis-clairicia in #155
- Updated dependencies and pre-commit pinned versions by @francis-clairicia in #157
- Updated mypy to version 1.7.0 by @francis-clairicia in #164
- Updated dependencies and tools by @francis-clairicia in #176
Other Changes
- tox.ini(mypy): Removed --no-incremental flag by @francis-clairicia in #151
- Fix links to documentation [no ci] by @francis-clairicia in #152
- CI: Functional tests must now be completed in less than 20 minutes by @francis-clairicia in #158
- CI: Run unit tests on Windows by @francis-clairicia in #160
- tox: Do not use {posargs} in setenv by @francis-clairicia in #161
- IncrementalDeserializeError.remaining_data is no longer reset by @francis-clairicia in #170
- Added missing functional tests for serializers by @francis-clairicia in #173
- Removed
easynetwork.lowlevel.socket.AddressFamilyby @francis-clairicia in #179 - Mutualized sniffio usage by @francis-clairicia in #183
- Renamed easynetwork.lowlevel.asyncio to std_asyncio by @francis-clairicia in #185
- Fixed flaky tests on uvloop by @francis-clairicia in #186
- Better pdm integration in tox by @francis-clairicia in #188
- Miscellaneous internal API improvements by @francis-clairicia in #189
Full Changelog: https://github.com/francis-clairicia/EasyNetwork/commits/1.0.0rc7