Cheroot Versions Save

Cheroot is the high-performance, pure-Python HTTP server used by CherryPy. Docs -->

v10.0.1

4 weeks ago

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/10.0.1

🌱 v10.0.1 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8786461123

v10.0.1

(2024-04-22)

Bug fixes

  • Fixed a flaw where internally unhandled exceptions could crash the worker threads and eventually starve the server of its processing resources. It is no longer and issue and the unhandled errors are now logged and suppressed except for a few expected exceptions that are used for normal interruption requests.

    -- by @cameronbrunner and @webknjaz

    Related issues and pull requests on GitHub: #310, #346, #354, #358, #365, #375, #599, #641, #649.

  • Fixed compatibility with Python 3.8 in the built-in TLS adapter that relies on :pypython:ssl.

    Modern Python versions communicate specialized exceptions :pyssl.SSLEOFError and :pyssl.SSLZeroReturnError where the older versions errored out in a very generic way.

    -- by @toppk and @webknjaz

    Related issues and pull requests on GitHub: #517, #518.

Packaging updates and notes for downstreams

  • Started signing the package distribution artifacts in CI/CD with Sigstore and uploading them to GitHub Releases -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/27a3c944, https://github.com/cherrypy/cheroot/commit/c45f184e.

  • The changelog management is now implemented through the :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude change log fragment files in their pull requests <adding change notes with your prs>.

    These news snippets can link one or more issues or pull requests, and be of one or more of the following categories:

    • bugfix: A bug fix for something we deemed an improper undesired behavior that got corrected in the release to match pre-agreed expectations.
    • feature: A new behavior, public APIs. That sort of stuff.
    • deprecation: A declaration of future API removals and breaking changes in behavior.
    • breaking: When something public gets removed in a breaking way. Could be deprecated in an earlier release.
    • doc: Notable updates to the documentation structure or build process.
    • packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions.
    • contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment.
    • misc: Changes that are hard to assign to any of the above categories.

    Related issues and pull requests on GitHub: #654.

Contributor-facing changes

  • Started type-checking the project with MyPy against a range of versions instead of just one — Python 3.8–3.12 -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/4fa1e663, https://github.com/cherrypy/cheroot/commit/676edc4e, https://github.com/cherrypy/cheroot/commit/be9dbc41.

  • The project how has a .git-blame-ignore-revs letting GitHub know which auto-formatting revisions to ignore. It is also possible to integrate it locally, if one wants to do so.

    -- by @webknjaz

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/5980a3fb, https://github.com/cherrypy/cheroot/commit/f8a1cc4d.

  • The project adopted the autopep8 tool to assist with automatic code formatting. It is chosen over black because it is less intrusive which is important to the maintainer as it promotes inclusivity. autopep8 is integrated into the pre-commit check runner and is configured to only correct 8 violations, avoiding changes to compliant snippets.

    -- by @webknjaz

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/65ba7e69.

  • The continuous integration and pull request merges have been set up to only merge pull requests through merge queues -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/a7149e0c.

  • Documented the upgraded :stdrelease process <contributing/release_guide> -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/df0d1a08.

  • The changelog management is now implemented through the :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude change log fragment files in their pull requests <adding change notes with your prs>.

    These news snippets can link one or more issues or pull requests, and be of one or more of the following categories:

    • bugfix: A bug fix for something we deemed an improper undesired behavior that got corrected in the release to match pre-agreed expectations.
    • feature: A new behavior, public APIs. That sort of stuff.
    • deprecation: A declaration of future API removals and breaking changes in behavior.
    • breaking: When something public gets removed in a breaking way. Could be deprecated in an earlier release.
    • doc: Notable updates to the documentation structure or build process.
    • packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions.
    • contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment.
    • misc: Changes that are hard to assign to any of the above categories.

    Related issues and pull requests on GitHub: #654.


v10.0.1rc0

1 month ago

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/10.0.1rc0

🚧 v10.0.1rc0 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8725529391

v10.0.1rc0

(2024-04-17)

Bug fixes

  • Fixed a flaw where internally unhandled exceptions could crash the worker threads and eventually starve the server of its processing resources. It is no longer and issue and the unhandled errors are now logged and suppressed except for a few expected exceptions that are used for normal interruption requests.

    -- by @cameronbrunner and @webknjaz

    Related issues and pull requests on GitHub: #310, #346, #354, #358, #365, #375, #599, #641, #649.

  • Fixed compatibility with Python 3.8 in the built-in TLS adapter that relies on :pypython:ssl.

    Modern Python versions communicate specialized exceptions :pyssl.SSLEOFError and :pyssl.SSLZeroReturnError where the older versions errored out in a very generic way.

    -- by @toppk and @webknjaz

    Related issues and pull requests on GitHub: #517, #518.

Packaging updates and notes for downstreams

  • Started signing the package distribution artifacts in CI/CD with Sigstore and uploading them to GitHub Releases -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/27a3c944, https://github.com/cherrypy/cheroot/commit/c45f184e.

  • The changelog management is now implemented through the :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude change log fragment files in their pull requests <adding change notes with your prs>.

    These news snippets can link one or more issues or pull requests, and be of one or more of the following categories:

    • bugfix: A bug fix for something we deemed an improper undesired behavior that got corrected in the release to match pre-agreed expectations.
    • feature: A new behavior, public APIs. That sort of stuff.
    • deprecation: A declaration of future API removals and breaking changes in behavior.
    • breaking: When something public gets removed in a breaking way. Could be deprecated in an earlier release.
    • doc: Notable updates to the documentation structure or build process.
    • packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions.
    • contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment.
    • misc: Changes that are hard to assign to any of the above categories.

    Related issues and pull requests on GitHub: #654.

Contributor-facing changes

  • Started type-checking the project with MyPy against a range of versions instead of just one — Python 3.8–3.12 -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/4fa1e663, https://github.com/cherrypy/cheroot/commit/676edc4e, https://github.com/cherrypy/cheroot/commit/be9dbc41.

  • The project how has a .git-blame-ignore-revs letting GitHub know which auto-formatting revisions to ignore. It is also possible to integrate it locally, if one wants to do so.

    -- by @webknjaz

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/5980a3fb, https://github.com/cherrypy/cheroot/commit/f8a1cc4d.

  • The project adopted the autopep8 tool to assist with automatic code formatting. It is chosen over black because it is less intrusive which is important to the maintainer as it promotes inclusivity. autopep8 is integrated into the pre-commit check runner and is configured to only correct 8 violations, avoiding changes to compliant snippets.

    -- by @webknjaz

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/65ba7e69.

  • The continuous integration and pull request merges have been set up to only merge pull requests through merge queues -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/a7149e0c.

  • Documented the upgraded :stdrelease process <contributing/release_guide> -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/df0d1a08.

  • The changelog management is now implemented through the :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude change log fragment files in their pull requests <adding change notes with your prs>.

    These news snippets can link one or more issues or pull requests, and be of one or more of the following categories:

    • bugfix: A bug fix for something we deemed an improper undesired behavior that got corrected in the release to match pre-agreed expectations.
    • feature: A new behavior, public APIs. That sort of stuff.
    • deprecation: A declaration of future API removals and breaking changes in behavior.
    • breaking: When something public gets removed in a breaking way. Could be deprecated in an earlier release.
    • doc: Notable updates to the documentation structure or build process.
    • packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions.
    • contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment.
    • misc: Changes that are hard to assign to any of the above categories.

    Related issues and pull requests on GitHub: #654.


v11.0.0rc0

1 month ago

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/11.0.0rc0

🚧 v11.0.0rc0 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8713203309

v11.0.0rc0

(2024-04-16)

Bug fixes

  • Fixed a flaw where internally unhandled exceptions could crash the worker threads and eventually starve the server of its processing resources. It is no longer and issue and the unhandled errors are now logged and suppressed except for a few expected exceptions that are used for normal interruption requests.

    -- by @cameronbrunner and @webknjaz

    Related issues and pull requests on GitHub: #310, #346, #354, #358, #365, #375, #599, #641, #649.

  • Fixed compatibility with Python 3.8 in the built-in TLS adapter that relies on :pypython:ssl.

    Modern Python versions communicate specialized exceptions :pyssl.SSLEOFError and :pyssl.SSLZeroReturnError where the older versions errored out in a very generic way.

    -- by @toppk and @webknjaz

    Related issues and pull requests on GitHub: #517, #518.

Removals and backward incompatible breaking changes

  • Cheroot dropped support for Python 3.6 and 3.7. It now requires Python 3.8 or later.

    -- by @jaraco

    Related issues and pull requests on GitHub: #565, #633.

Packaging updates and notes for downstreams

  • Started signing the package distribution artifacts in CI/CD with Sigstore and uploading them to GitHub Releases -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/27a3c944, https://github.com/cherrypy/cheroot/commit/c45f184e.

  • The minimum version of the setuptools-scm build dependency has been set to 7. The Git archives are now produced by it natively, instead of relying on a third party plugin which is no longer being used.

    -- by @serhii73

    Related issues and pull requests on GitHub: #628.

  • The changelog management is now implemented through the :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude change log fragment files in their pull requests <adding change notes with your prs>.

    These news snippets can link one or more issues or pull requests, and be of one or more of the following categories:

    • bugfix: A bug fix for something we deemed an improper undesired behavior that got corrected in the release to match pre-agreed expectations.
    • feature: A new behavior, public APIs. That sort of stuff.
    • deprecation: A declaration of future API removals and breaking changes in behavior.
    • breaking: When something public gets removed in a breaking way. Could be deprecated in an earlier release.
    • doc: Notable updates to the documentation structure or build process.
    • packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions.
    • contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment.
    • misc: Changes that are hard to assign to any of the above categories.

    Related issues and pull requests on GitHub: #654.

Contributor-facing changes

  • Started type-checking the project with MyPy against a range of versions instead of just one — Python 3.8–3.12 -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/4fa1e663, https://github.com/cherrypy/cheroot/commit/676edc4e, https://github.com/cherrypy/cheroot/commit/be9dbc41.

  • The project how has a .git-blame-ignore-revs letting GitHub know which auto-formatting revisions to ignore. It is also possible to integrate it locally, if one wants to do so.

    -- by @webknjaz

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/5980a3fb, https://github.com/cherrypy/cheroot/commit/f8a1cc4d.

  • The project adopted the autopep8 tool to assist with automatic code formatting. It is chosen over black because it is less intrusive which is important to the maintainer as it promotes inclusivity. autopep8 is integrated into the pre-commit check runner and is configured to only correct 8 violations, avoiding changes to compliant snippets.

    -- by @webknjaz

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/65ba7e69.

  • The continuous integration and pull request merges have been set up to only merge pull requests through merge queues -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/a7149e0c.

  • Documented the upgraded :stdrelease process <contributing/release_guide> -- by @webknjaz.

    Related commits on GitHub: https://github.com/cherrypy/cheroot/commit/df0d1a08.

  • The changelog management is now implemented through the :stdTowncrier <towncrier:index> tool -- by @webknjaz.

    The contributors are now expected to :stdinclude change log fragment files in their pull requests <adding change notes with your prs>.

    These news snippets can link one or more issues or pull requests, and be of one or more of the following categories:

    • bugfix: A bug fix for something we deemed an improper undesired behavior that got corrected in the release to match pre-agreed expectations.
    • feature: A new behavior, public APIs. That sort of stuff.
    • deprecation: A declaration of future API removals and breaking changes in behavior.
    • breaking: When something public gets removed in a breaking way. Could be deprecated in an earlier release.
    • doc: Notable updates to the documentation structure or build process.
    • packaging: Notes for downstreams about unobvious side effects and tooling. Changes in the test invocation considerations and runtime assumptions.
    • contrib: Stuff that affects the contributor experience. e.g. Running tests, building the docs, setting up the development environment.
    • misc: Changes that are hard to assign to any of the above categories.

    Related issues and pull requests on GitHub: #654.


v11.0.0b3

1 month ago

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/11.0.0b3

🚧 v11.0.0b3 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8623097213

v11.0.0b3

(2024-04-09)

Removals and backward incompatible breaking changes

  • Cheroot requires Python 3.8 or later.

    Related issues and pull requests on GitHub: #565.


v11.0.0b1

1 month ago

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/11.0.0b1

🚧 v11.0.0b1 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8615981862

v11.0.0b1

(2024-04-09)

Removals and backward incompatible breaking changes

  • Cheroot requires Python 3.8 or later.

    Related issues and pull requests on GitHub: #565.


v11.0.0b0

1 month ago

📝 Release notes

📦 PyPI page: https://pypi.org/project/cheroot/11.0.0b0

🔗 This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/8608000378

v11.0.0b0

(2024-04-08)

Removals and backward incompatible breaking changes

  • Cheroot requires Python 3.8 or later.

    Related issues and pull requests on GitHub: #565.


v10.0.0

1 year ago

Release v10.0.0

This release is published to https://pypi.org/project/cheroot/10.0.0.

This release has been produced by the following workflow run: https://github.com/cherrypy/cheroot/actions/runs/5032474797.

v9.0.0

1 year ago

Significant Changes

  • #252 via #339 and #510: Cheroot now requires Python 3.6 or later. Python 3.5 and Python 2.7 are still supported by the maint/8.x branch and stabilizing bugfixes will be accepted to that branch -- by @jaraco

Bugfixes

What Else Changed

Internal Changes

New Contributors

Full Diff: https://github.com/cherrypy/cheroot/compare/v8.6.0...v9.0.0

v8.6.0

2 years ago

Significant improvements:

  • #384 via PR #385, PR #406: Exposed type stubs with annotations for public API -- by @kasium.

  • PR #401 (related to the PR #352 effort): Started reusing the the expriration_interval setting in the low-level select.select() invocation, effectively reducing the system load under the Windows OS when idle, that is noticeable on low-end hardware systems -- by :user:MichaIng.

Internal changes:

  • Implemented a manual-trigger-based release workflow.
  • Integrated publishing GitHub Releases into the workflow.
  • Migrated the docs theme to Furo (created by @pradyunsg).
  • Attempted to improve the stability of testing.
  • Configured the CI to test the same distribution as will be shipped.
  • Improved the linting setup and contributor checklists.
  • Stopped running tests under Ubuntu 16.04.
  • Tweaked the distribution packages metadata to satisfy strict checks.
  • Implemented distribution build reproducibility using a pip constraints lock-file.
  • Added per-environment lock-files into the tox test environments.

v8.4.5

3 years ago
  • #312 via #313: Fixed a regression introduced in the earlier refactoring in v8.4.4 via #309 that caused the connection manager to modify the selector map while looping over it — by @liamstask.
  • #312 via #316: Added a regression test for the error handling in cheroot.connections.ConnectionManager.get_conn to ensure more stability — by @cyraxjoe.