⚡ Sangsakala Proxy 🏠 Home
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: sub-interpreters
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 20 commits
  • 7 files changed
  • 2 contributors

Commits on Nov 1, 2026

  1. Turn rapidjson.Decoder into heap type

    Each static type is uniq and global for all subinterpreters and can't
    access cached PyObjects. Decoder do use cached PyObjecs and must access
    cache stored in module rather than in static variables.
    
    Static type it can't access "proper module" due to its "per process
    singleton nature". The recomended way is to turn static types into heap
    types in order to use cached PyObjects.
    VestniK authored and lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    9706b40 View commit details
    Browse the repository at this point in the history
  2. Properly release the stolen StrongRef

    See
    #227 (review)
    for an explanation.
    lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    d8a3f83 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c3c5581 View commit details
    Browse the repository at this point in the history
  4. Turn rapidjson.Encoder into heap type

    VestniK authored and lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    e027049 View commit details
    Browse the repository at this point in the history
  5. Turn rapidjson.Validator into heap type

    VestniK authored and lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    0e8c7c0 View commit details
    Browse the repository at this point in the history
  6. Turn rapidjson.RawJSON into heap type

    VestniK authored and lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    7606903 View commit details
    Browse the repository at this point in the history
  7. Move PyObject caches into a single variable of struct type.

    This is a first step in the direction of subinterpreter compatibility.
    Is's recommended to keep such caches in the module state rather then
    process wide globals:
    
    https://docs.python.org/3/howto/isolating-extensions.html#managing-per-module-state
    
    Dedicated struct was created which can later on be stored in the module
    state. It can't be done right now since those members are accessed from
    static types initialization code which doesn't have access to the module.
    Turning such static types into heap types is also subinterpreter
    compatibility prerequisite:
    https://docs.python.org/3/howto/isolating-extensions.html#heap-types
    VestniK authored and lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    aa02572 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    86e3fce View commit details
    Browse the repository at this point in the history
  9. Enable subinterpreters on Python >= 3.12

    VestniK authored and lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    2d6d650 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    5475457 View commit details
    Browse the repository at this point in the history
  11. Try with a anonymous namespace

    lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    d1836e9 View commit details
    Browse the repository at this point in the history
  12. Adapt code introduced in PR #255

    lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    e797ed8 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    0991cf3 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    ee29bf5 View commit details
    Browse the repository at this point in the history
  15. Move also the datetime API into the module's state

    I'm not really sure this is required, because AFAIU all the API is
    actually static, and apparently shared by all interpreters... Anyway,
    this seems clearer.
    lelit committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    4a2fc18 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    86a8ea8 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    82b1453 View commit details
    Browse the repository at this point in the history

Commits on Nov 2, 2026

  1. Fix refcount leak in the dealloc of RawJSON and Validator

    Both are heap types now: their instances hold a reference to the type and,
    being GC-tracked, must be untracked before being freed. Their dealloc was
    only calling tp_free(), leaking one reference to the type per instance and,
    on debug interpreters, emitting a ResourceWarning.
    lelit committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    d0bcde3 View commit details
    Browse the repository at this point in the history
  2. Drop support for Python 3.10

    Python 3.10 is EOL since 2026-10-01, and its not easy for me to even
    test for it locally.
    
    This also reverts commit 82b1453.
    lelit committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    5a33e6b View commit details
    Browse the repository at this point in the history
  3. Drop tox

    Its configuration still referenced Python 3.9 and 3.10, a good evidence
    that it was abandoned lot of time ago.
    lelit committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    cc85e9a View commit details
    Browse the repository at this point in the history
Loading