GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |
GeezerVison is showing github.com — Sub interpreters by lelit · Pull Request #256 · python-rapidjson/python-rapidjson Conversation
Contributor
This implements PEP-684, and thus issue #226.
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactionsEach 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. See #227 (review) for an explanation. 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 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. 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. 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.
Contributor
Author
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ReviewersNo reviewsUh oh!
There was an error while loading. Please reload this page. AssigneesNo one assignedLabels
None yet
ProjectsMilestoneNo milestoneDevelopmentSuccessfully merging this pull request may close these issues. Uh oh!
There was an error while loading. Please reload this page. Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later. | |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |