Skip to content

Releases: emmett-framework/granian

Granian 2.0.1

04 Mar 23:18
577359e
Compare
Choose a tag to compare

Patch release

Changes since 2.0.0:

  • Fix a regression bug preventing anyio.to_thread.run_sync to run properly

Granian 2.0.0

03 Mar 11:12
9c1fac1
Compare
Choose a tag to compare

What's Changed

New features

  • Experimental support for free-threaded Python
  • runtime-blocking-threads option
  • blocking-threads-idle-timeout option
  • http1-header-read-timeout option
  • PyPy 3.11 support
  • Embeddable server variant in granian.server.embed module

Changes

  • uvloop dependency is now optional and gated behind the relevant dependency extra
  • BREAKING renamed threads option to runtime-threads
  • BREAKING blocking-threads option now affects Python interop threads only
  • BREAKING removed threading-mode in favor of runtime-mode
    • previous workers option is now st
    • previous runtime option is now mt
  • BREAKING blocking-threads is now limited to 1 on ASGI and RSGI protocols
  • rust task implementation is now available on Python < 3.12 only
  • Removed PGO builds
  • Bump dependencies

Enhancements

  • Refactor the Rust task implementation
  • Refactor the Python blocking threadpool
  • Refactor application protocols failure handling
  • Re-export loops registry to facilitate customisations
  • Added warn messages for most common workers/threads misconfigurations
  • Review README's workers, threads and backpressure sections
  • Added range validations on all the relevant HTTP/2 options
  • Added back custom allocators, with jemalloc as default option and mimalloc as gated feature, used by default in the following cases:
    • MUSL builds
    • Windows builds
    • Python 3.13t
  • Avoid to strip symbols from release builds

Granian 1.7.6

30 Jan 00:52
338f813
Compare
Choose a tag to compare

Patch release

Changes since 1.7.5:

  • Fix a utf8 decoding bug on request paths leading to panics (#492 by @ritesh)
  • Allow watchfiles dependency versions >= 1.0 (#496 by @RafaelWO)
  • Made asyncio the default task implementation due to instability of the rust one

Granian 1.7.5

14 Jan 16:22
22e3145
Compare
Choose a tag to compare

Patch release

Changes since 1.7.4:

  • Fix a bug in Rust task implementation leading to panics under some circumstances
  • Refactor GIL acquisition/release in async protocols
  • Bump dependencies

Granian 1.7.4

08 Jan 18:48
b5425a1
Compare
Choose a tag to compare

Patch release

Changes since 1.7.3:

  • Fix a regression bug causing wrong contextvars.Context to be picked with Rust task implementation under some circumstances
  • Fix IPv6 addresses in access logs (#477 by @jyelloz)
  • Bump dependencies

Granian 1.7.3

28 Dec 17:35
3ab82a7
Compare
Choose a tag to compare

Patch release

Changes since 1.7.2:

  • Fix a regression bug preventing asyncio.wait_for to work with Rust task implementation

Granian 1.7.2

24 Dec 17:55
9465a8b
Compare
Choose a tag to compare

Patch release

Changes since 1.7.1:

  • Fix a regression bug preventing PyFutureAwaitable objects to be correctly GCollected in some circumstances
  • Fix a regression bug causing the wrong context to be used in some async calls
  • Prevent async callbacks tasks to be GCollected before completion with pure-python asyncio task implementation

Granian 1.7.1

17 Dec 10:10
1ad1278
Compare
Choose a tag to compare

Patch release

Changes since 1.7.0:

  • Add a pure-asyncio task implementation to prevent type checks issues in libs like anyio

Granian 1.7.0

15 Dec 18:58
693af47
Compare
Choose a tag to compare

What's Changed

New features

Changes

  • BREAKING removed loop optimizations option and relevant code
  • Bump PyO3 to 0.23
  • Drop Python 3.8 support
  • Remove custom allocators

Enhancements

  • WSGI implementation no longer run asyncio event loop
  • Use a custom asyncio.Task implementation in async protocols application calls
  • Add information about logging in README (#446 by @hynek)

Granian 1.6.4

22 Nov 18:20
a6cfc2f
Compare
Choose a tag to compare

Patch release

Changes since 1.6.3:

  • Prevent async callbacks tasks to be GCollected before completion
  • Avoid logger configuration errors when _granian logger is missing (#438 by @monosans)