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.
  • 9 commits
  • 1 file changed
  • 2 contributors

Commits on Aug 24, 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 Aug 24, 2026
    Configuration menu
    Copy the full SHA
    d413d45 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 Aug 24, 2026
    Configuration menu
    Copy the full SHA
    3ec06e7 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    428b629 View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2026

  1. Turn rapidjson.Encoder into heap type

    VestniK authored and lelit committed Aug 30, 2026
    Configuration menu
    Copy the full SHA
    683e65d View commit details
    Browse the repository at this point in the history
  2. Turn rapidjson.Validator into heap type

    VestniK authored and lelit committed Aug 30, 2026
    Configuration menu
    Copy the full SHA
    e6ecc07 View commit details
    Browse the repository at this point in the history
  3. Turn rapidjson.RawJSON into heap type

    VestniK authored and lelit committed Aug 30, 2026
    Configuration menu
    Copy the full SHA
    0786768 View commit details
    Browse the repository at this point in the history
  4. 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 Aug 30, 2026
    Configuration menu
    Copy the full SHA
    905df23 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    bda9712 View commit details
    Browse the repository at this point in the history
  6. Enable subinterpreters on Python >= 3.12

    VestniK authored and lelit committed Aug 30, 2026
    Configuration menu
    Copy the full SHA
    ec591c8 View commit details
    Browse the repository at this point in the history
Loading