Releases: francis-clairicia/EasyNetwork
Releases · francis-clairicia/EasyNetwork
easynetwork v1.0.0
What's Changed
Breaking changes
- Removed global asynchronous back-end interface by @francis-clairicia in #262
- Added
BufferedStreamProtocol
object by @francis-clairicia in #302 - Removed
BufferedStreamReadTransport
class by @francis-clairicia in #308 - Low-level API: asyncio backend is now a private implementation by @francis-clairicia in #311
- Removed
ssl_shared_lock
option 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)_address
from abstract base classes by @francis-clairicia in #324 AsyncBackend.run_in_thread()
: Removed**kwargs
and addedabandon_on_cancel
by @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
ResourceWarning
calls 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
trio
backend by @francis-clairicia in #337 MessagePackSerializer
can be used withStreamProtocol
andBufferedStreamProtocol
by @francis-clairicia in #339- Multithreading integration in servers by @francis-clairicia in #344
Documentation
sniffio
is now used differently by @francis-clairicia in #264- Rewritten
API Reference
sections 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-vcs
tovcs
build 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:
sniffio
is 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
pdm
to 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
: RemovedAsyncSocket
class 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_CHECKING
usages 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
EncryptorSerializer
by @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_limit
property by @francis-clairicia in #191 - Serializers: Added
StructSerializer
implementation 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
wrapped
property 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_options
to 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_allocation
option 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 cover
directives were removed by @francis-clairicia in #196 - Servers: Ensure
GeneratorExit
is re-raised in request handlers by @francis-clairicia in #197 TaskGroup.start_soon()
: Removedcontext
parameter 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
UnsupportedOperation
exception 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
BufferedIncrementalPacketSerializer
base 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.AddressFamily
by @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