Skip to content

Latest commit

 

History

History
1086 lines (687 loc) · 26.2 KB

CHANGES.rst

File metadata and controls

1086 lines (687 loc) · 26.2 KB

Changelog

v10.0.1

(2024-04-22)

Bug fixes

Packaging updates and notes for downstreams

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

    Related commits on GitHub: :commit:`27a3c944`, :commit:`c45f184e`.

  • The changelog management is now implemented through the :std:doc:`Towncrier <towncrier:index>` tool -- by :user:`webknjaz`.

    The contributors are now expected to :std:ref:`include 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: :issue:`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 :user:`webknjaz`.

    Related commits on GitHub: :commit:`4fa1e663`, :commit:`676edc4e`, :commit:`be9dbc41`.

  • The project how has a :file:`.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 :user:`webknjaz`

    Related commits on GitHub: :commit:`5980a3fb`, :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 PEP 8 violations, avoiding changes to compliant snippets.

    -- by :user:`webknjaz`

    Related commits on GitHub: :commit:`65ba7e69`.

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

    Related commits on GitHub: :commit:`a7149e0c`.

  • Documented the upgraded :std:doc:`release process <contributing/release_guide>` -- by :user:`webknjaz`.

    Related commits on GitHub: :commit:`df0d1a08`.

  • The changelog management is now implemented through the :std:doc:`Towncrier <towncrier:index>` tool -- by :user:`webknjaz`.

    The contributors are now expected to :std:ref:`include 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: :issue:`654`.


v10.0.0

(2023-05-20)

  • :issue:`504` via :pr:`505`: Cheroot now accepts a reuse_port parameter on the HTTPServer object. Subclasses overriding prepare_socket will no longer work and will need to adapt to the new interface.

v9.0.0

(2022-11-19)

v8.6.0

(2022-01-03)

Significant improvements:

  • :issue:`384` via :pr:`385`, :pr:`406`: Exposed type stubs with annotations for public API -- by :user:`kasium`.
  • :pr:`401` (related to the :pr:`352` effort): Started reusing the the expriration_interval setting as timeout in the low-level :py:func:`~select.select` invocation, effectively reducing the system load when idle, that is noticeable on low-end hardware systems. On Windows OS, due to different :py:func:`~select.select` behavior, the effect is less significant and comes with a theoretically decreased performance on quickly repeating requests, which has however found to be not significant in real world scenarios. -- 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 :user:`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.5.2

(2021-01-18)

v8.5.1

(2020-12-12)

v8.5.0

(2020-12-05)

v8.4.8

(2020-11-24)

v8.4.7

(2020-11-15)

v8.4.6

(2020-11-15)

v8.4.5

(2020-08-24)

v8.4.4

(2020-08-12)

v8.4.3

(2020-08-12)

  • :pr:`282`: Fixed a race condition happening when an HTTP client attempts to reuse a persistent HTTP connection after it's been discarded on the server in :py:class:`~cheroot.\ server.HTTPRequest` but no TCP FIN packet has been received yet over the wire -- by :user:`meaksh`.

    This change populates the Keep-Alive header exposing the timeout value for persistent HTTP/1.1 connections which helps mitigate such race conditions by letting the client know not to reuse the connection after that time interval.

v8.4.2

(2020-07-28)

  • Fixed a significant performance regression introduced in v8.1.0 (:issue:`305` via :pr:`308`) - by :user:`mar10`.

    The issue turned out to add 0.1s delay on new incoming connection processing. We've lowered that delay to mitigate the problem short-term, better fix is yet to come.

v8.4.1

(2020-07-26)

v8.4.0

(2020-07-23)

v8.3.1

(2020-07-13)

v8.3.0

(2020-02-09)

  • :cp-issue:`910` via :pr:`243`: Provide TLS-related details via WSGI environment interface.
  • :pr:`248`: Fix parsing of the --bind CLI option for abstract UNIX sockets.

v8.2.1

(2019-10-17)

  • :cp-issue:`1818`: Restore support for None default argument to WebCase.getPage().

v8.2.0

(2019-10-14)

  • Deprecated use of negative timeouts as alias for infinite timeouts in ThreadPool.stop.
  • :cp-issue:`1662` via :pr:`74`: For OPTION requests, bypass URI as path if it does not appear absolute.

v8.1.0

(2019-10-09)

  • Workers are now request-based, addressing the long-standing issue with keep-alive connections (:issue:`91` via :pr:`199`).

v8.0.0

(2019-10-09)

  • :issue:`231` via :pr:`232`: Remove custom setup.cfg parser handling, allowing the project (including sdist) to build/run on setuptools 41.4. Now building cheroot requires setuptools 30.3 or later (for declarative config support) and preferably 34.4 or later (as indicated in pyproject.toml).

v7.0.0

(2019-09-26)

v6.6.0

(2019-09-25)

v6.5.8

(2019-09-05)

v6.5.7

(2019-09-03)

v6.5.6

(2019-08-19)

  • :issue:`218` via :pr:`219`: Fix HTTP parser to return 400 on invalid major-only HTTP version in Request-Line.

v6.5.5

(2019-04-25)

v6.5.4

(2019-01-01)

v6.5.3

(2018-12-20)

  • :pr:`149`: Make SCRIPT_NAME optional per PEP 333.

v6.5.2

(2018-09-03)

v6.5.1

(2018-09-02)

v6.5.0

(2018-08-29)

v6.4.0

(2018-08-01)

v6.3.3

(2018-07-10)

v6.3.2

(2018-06-16)

v6.3.1

(2018-05-21)

  • :cp-issue:`1618`: Ignore OpenSSL's 1.1+ Error 0 under Python 2 while wrapping a socket.

v6.3.0

(2018-05-17)

  • :pr:`87`: Add cheroot command and runpy launcher to launch a WSGI app from the command-line.

v6.2.4

(2018-04-19)

v6.2.3

(2018-04-14)

  • :pr:`85`: Skip installing dependencies from backports namespace under Python 3.

v6.2.2

(2018-04-14)

v6.2.1

(2018-04-10)

  • :pr:`83`: Fix regression, caused by inverted check for Windows OS.
  • Add more URLs to distribution metadata

v6.2.0

(2018-04-10)

  • :pr:`37`: Implement PEERCRED lookup over UNIX-socket HTTP connection.
    • Discover connected process' PID/UID/GID
    • Respect server switches: peercreds_enabled and peercreds_resolve_enabled
    • get_peer_creds and resolve_peer_creds methods on connection
    • peer_pid, peer_uid, peer_gid, peer_user and peer_group properties on connection
    • X_REMOTE_PID, X_REMOTE_UID, X_REMOTE_GID, X_REMOTE_USER (REMOTE_USER) and X_REMOTE_GROUP WSGI environment variables when enabled and supported
    • Per-connection caching to reduce lookup cost

v6.1.2

(2018-04-08)

v6.1.1

(2018-04-07)

v6.1.0

(2018-04-05)

v6.0.0

(2017-12-04)

  • Drop support for Python 2.6, 3.1, 3.2, and 3.3.
  • Also drop built-in SSL support for Python 2.7 earlier than 2.7.9.

v5.11.0

(2017-12-04)

v5.10.0

(2017-11-23)

  • Minor refactorings of cheroot/server.py to reduce redundancy of behavior.
  • Delinting with fewer exceptions.
  • Restored license to BSD.

v5.9.2

(2017-11-23)

  • :issue:`61`: Re-release without spurious files in the distribution.

v5.9.1

(2017-11-17)

  • :issue:`58`: Reverted encoding behavior in wsgi module to correct regression in CherryPy tests.

v5.9.0

(2017-11-16)

  • :cp-issue:`1088` and :pr:`53`: Avoid using SO_REUSEADDR on Windows where it has different semantics.
  • cheroot.tests.webtest adopts the one method that was unique in CherryPy, now superseding the implementation there.
  • Substantial cleanup around compatibility functions (:py:mod:`~cheroot._compat` module).
  • License unintentionally changed to MIT. BSD still declared and intended.

v5.8.3

(2017-08-11)

  • Improve HTTP request line validation:
    • Improve HTTP version parsing
  • Fix HTTP CONNECT method processing:
    • Respond with 405 Method Not Allowed if proxy_mode is False
    • Validate that request-target is in authority-form
  • Improve tests in test.test_core
  • :pr:`44`: Fix EPROTOTYPE @ Mac OS

v5.8.2

(2017-08-07)

  • Fix :pr:`39` regression. Add HTTP request line check: absolute URI path must start with a forward slash ("/").

v5.8.1

(2017-08-05)

v5.8.0

(2017-08-01)

  • CI improvements:
    • Switch to native PyPy support in Travis CI
    • Take into account PEP 257 compliant modules
    • Build wheel in AppVeyor and store it as an artifact
  • Improve urllib support in :py:mod:`cheroot._compat`
  • :issue:`38` via :pr:`39`: Improve URI parsing:
    • Make it compliant with RFC 7230, RFC 7231 and RFC 2616
    • Fix setting of environ['QUERY_STRING'] in WSGI
    • Introduce proxy_mode and strict_mode argument in server.HTTPRequest
    • Fix decoding of Unicode URIs in WSGI 1.0 gateway

v5.7.0

(2017-06-24)

  • CI improvements:
    • Don't run tests during deploy stage
    • Use VM based build job environments only for pyenv environments
    • Opt-in for beta trusty image @ Travis CI
    • Be verbose when running tests (show test names)
    • Show xfail/skip details during test run
  • :issue:`34`: Fix _handle_no_ssl error handler calls
  • :issue:`21`: Fix test_conn tests:
    • Improve setup_server def in HTTP connection tests
    • Fix HTTP streaming tests
    • Fix HTTP/1.1 pipelining test under Python 3
    • Fix test_readall_or_close test
    • Fix test_No_Message_Body
    • Clarify test_598 fail reason
  • :issue:`36`: Add GitHub templates for PR, issue && contributing
  • :issue:`27`: Default HTTP Server header to Cheroot version str
  • Cleanup :py:mod:`~cheroot._compat` functions from server module

v5.6.0

(2017-06-20)

  • Fix all PEP 257 related errors in all non-test modules.

    cheroot/test/* folder is only one left allowed to fail with this linter.

  • :cp-issue:`1602` and :pr:`30`: Optimize chunked body reader loop by returning empty data is the size is 0.

  • :cp-issue:`1486`: Reset buffer if the body size is unknown

  • :cp-issue:`1131`: Add missing size hint to SizeCheckWrapper

v5.5.2

(2017-06-18)

v5.5.1

(2017-06-18)

v5.5.0

(2017-05-02)

v5.4.0

(2017-03-19)

  • :pr:`22`: Add "ciphers" parameter to SSLAdapter.

v5.3.0

(2017-03-12)

v5.2.0

(2017-03-02)

  • :issue:`5`: Set Server.version to Cheroot version instead of CherryPy version.
  • :pr:`4`: Prevent tracebacks and drop bad HTTPS connections in the BuiltinSSLAdapter, similar to pyOpenSSLAdapter.
  • :issue:`3`: Test suite now runs and many tests pass. Some are still failing.

v5.1.0

(2017-01-22)

v5.0.1

(2017-01-14)

v5.0.0

(2017-01-14)