Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: python-rapidjson/python-rapidjson
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: python-rapidjson/python-rapidjson
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: free-threaded
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 5 commits
  • 4 files changed
  • 2 contributors

Commits on Aug 22, 2025

  1. Support the "free-threaded" variant of Python (PEP-703)

    DISCLAIMER: at this point, this is just an experiment, so don't rely on
    this branch unless you know what you are doing.
    lelit committed Aug 22, 2025
    Configuration menu
    Copy the full SHA
    85e9cda View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    fe16103 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    8798483 View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2026

  1. Run CI on the free-threaded branch, and on a free-threaded interpreter

    The workflow only triggers on master, so nothing on this branch — including
    pull requests into it — has ever been exercised by CI. And no job uses a
    free-threaded interpreter, so the branch that exists in order to be
    free-threaded is not tested as one.
    
    This adds `free-threaded` to the push and pull_request filters, and one job
    that runs the test suite on 3.14t.
    
    The job asserts `sys._is_gil_enabled()` is False before it installs anything.
    Without that check the job can go green while proving nothing: if the runner
    ever resolves 3.14t to a GIL-enabled interpreter, every test below still
    passes, and the tick would mean "the default build works", which the existing
    job already covers.
    
    Deliberately minimal — build and pytest only. Doctests and stubtest are left
    to the existing job rather than duplicated here.
    espressolee committed Aug 8, 2026
    Configuration menu
    Copy the full SHA
    e5f3e0d View commit details
    Browse the repository at this point in the history
  2. Guard the free-threading skips so they import on Python < 3.13

    Both skip conditions call sys._is_gil_enabled() at module scope, and that
    attribute only exists on 3.13+. On anything older the call raises
    AttributeError during collection, so pytest aborts before running a single
    test:
    
        ERROR collecting tests/test_circular.py
            not sys._is_gil_enabled(),
        E   AttributeError: module 'sys' has no attribute '_is_gil_enabled'
    
    That is not hypothetical on this branch. Its CI pins 3.11, and cibuildwheel
    runs the suite against every wheel it builds, so the same error takes out the
    test job, the debug job and the macOS wheel job — one cause, three red jobs.
    It went unseen because the workflow only triggers on master, so CI has never
    run on this branch at all; the previous commit fixes that half.
    
    getattr(..., lambda: True) keeps the behaviour identical on 3.13+ and treats
    older interpreters as GIL-enabled, which they are.
    espressolee committed Aug 8, 2026
    Configuration menu
    Copy the full SHA
    851369b View commit details
    Browse the repository at this point in the history
Loading