René's URL Explorer Experiment


Title: Python 3.14 free-threaded support by greateggsgreg · Pull Request #2721 · pythonnet/pythonnet · GitHub

Open Graph Title: Python 3.14 free-threaded support by greateggsgreg · Pull Request #2721 · pythonnet/pythonnet

X Title: Python 3.14 free-threaded support by greateggsgreg · Pull Request #2721 · pythonnet/pythonnet

Description: First step toward Python 3.14 free-threaded (Py_GIL_DISABLED) support, tracked under #2720 (and the umbrella #2610). After this PR, pythonnet runs the full pytest suite on python3.14t against both .NET 8 and .NET 10 on Linux. Existing GIL builds (3.11 - 3.14) are unaffected. What changes Free-threaded PyObject layout + refcount FT PyObject is 16 bytes longer (ob_tid + ob_flags + ob_mutex + ob_gc_bits + ob_ref_local + ob_ref_shared replaces ob_refcnt) and the refcount is split, so there is no single offset to read. ABI.Initialize detects the build via sys._is_gil_enabled() and sets ObjectHeadOffset = 16 on FT, shifting the generated TypeOffset* values to absolute PyHeapTypeObject offsets. Runtime.Refcount prefers a P/Invoke into Py_REFCNT (a real symbol on CPython 3.14+, required on FT). Older Pythons fall back to the existing direct read. Atomic type creation in ReflectedClrType.GetOrCreate / TypeManager.GetType The classic check-then-act on ClassManager.cache and TypeManager.cache raced two ways under FT: duplicate cache.Add (ArgumentException), and partial-type visibility from outside-the-lock readers observing a half-initialised type during recursive class init. Two-cache design: cache — only fully-initialised types; outside-the-lock fast path is safe. _inProgressCache — partial types visible only to the lock-holding builder, so self-referential definitions resolve via the reentrant lock. Serialisation snapshots remain Dictionary<,> on the wire for binary compatibility. Atomic GCHandle ownership in tp_clear / tp_dealloc subtype_clear (main thread) and the .NET finalizer thread can both reach a CLR-bound Python object's GCHandle slot. Previous read-then-zero in ManagedType.TryFreeGCHandle and ClassDerivedObject.tp_dealloc (strong→weak swap) let two threads observe the same handle and double-free it. Both paths now use Interlocked.Exchange to atomically claim the slot. Reflection.Emit is not thread-safe Concurrent TypeBuilder / ModuleBuilder operations corrupt the IL stream or throw "Duplicate type name within an assembly". Two emit-and-bake sequences are now serialised: ClassDerivedObject.CreateDerivedType (Python subclasses of CLR types) on _buildersLock. DelegateManager.GetDispatcher (Python callables → CLR delegates) on a new _emitLock. Concurrent collections / atomics on shared state Plain Dictionary<,>, HashSet<>, and counters that the GIL implicitly serialised tear under FT. ConcurrentDictionary<,>: ExtensionType.loadedExtensions, CLRObject.reflectedObjects, ClassManager.cache, TypeManager.cache, ModuleObject.cache / allNames, Interop.delegateTypes, ClassBase.ClearVisited, InternString._string2interns / _intern2strings. Interlocked + Volatile: Finalizer._throttled (counter), Runtime.run (epoch), PyBuffer.disposedValue (dispose flag — finalizer + explicit Dispose no longer double-free _view). Lock-protected (where nested mutation or list-with-equality semantics rule out lock-free containers): GenericUtil.mapping (nested Dictionary/List), PythonEngine.ShutdownHandlers, Runtime._pyRefs. volatile bool: Runtime._isInitialized / _typesInitialized, PythonEngine.initialized, Finalizer.started. Guard the .NET-finalizer / Python-shutdown interaction The .NET finalizer thread can dispatch Py_DecRef concurrently with Py_Finalize; a stale ob_ref_local read after teardown crashes the process. Runtime._Py_IsFinalizing() guards on Finalizer.ThrottledCollect, PyObject's finalizer, and the Refcount > 0 Debug.Assert in XDecref / AddFinalizedObject (kept on GIL, skipped on FT). Tests + CI New tests in tests/test_thread.py cover the refcount/ABI invariants, the ConcurrentDictionary caches, atomic GCHandle ownership, the two Reflection.Emit locks, and the ShutdownHandlers lock. Some tests are marked @freethreaded_only because the GIL-build code path triggers a separate pre-existing pythonnet crash under high-contention CLR allocation that's reproducible on master and out of scope for this PR. .github/workflows/main.yml adds 3.14t to the Linux/macOS matrix and skips Mono on 3.14t (clr-loader's mono backend isn't yet validated against free-threaded Python). Verification Linux aarch64, full pytest suite (tests/, --ignore=tests/domain_tests): .NET 8 .NET 10 3.11 - 3.14 478 passed, 11 skipped 478 passed, 11 skipped 3.14t 484 passed, 5 skipped 484 passed, 5 skipped (11 skipped on GIL = 5 pre-existing + 6 FT-only tests; 5 skipped on FT = the 5 pre-existing skips.) 3.13t is not in the matrix because cffi <2.0 does not support free-threaded 3.13 and clr-loader requires cffi.

Open Graph Description: First step toward Python 3.14 free-threaded (Py_GIL_DISABLED) support, tracked under #2720 (and the umbrella #2610). After this PR, pythonnet runs the full pytest suite on python3.14t against both ...

X Description: First step toward Python 3.14 free-threaded (Py_GIL_DISABLED) support, tracked under #2720 (and the umbrella #2610). After this PR, pythonnet runs the full pytest suite on python3.14t against both ...

Opengraph URL: https://github.com/pythonnet/pythonnet/pull/2721

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:3a92a9b1-2111-bf72-9e52-7823841b084b
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idA4B0:DFA78:717E2D:9BD3A3:6A55A672
html-safe-nonce93ca0f3ae08e4cb3a301dfe510b284cae3ff230e5d5fa50f7559426de91aa27d
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNEIwOkRGQTc4OjcxN0UyRDo5QkQzQTM6NkE1NUE2NzIiLCJ2aXNpdG9yX2lkIjoiNzY1NDc3MTUzODg1Njg3OTczMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac1e74c87b45889d9517a2cef91b94a85add315e2cb5e64519b65e5666e289fb7e
hovercard-subject-tagpull_request:3655997459
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/pythonnet/pythonnet/pull/2721/files
twitter:imagehttps://avatars.githubusercontent.com/u/36009512?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/36009512?s=400&v=4
og:image:altFirst step toward Python 3.14 free-threaded (Py_GIL_DISABLED) support, tracked under #2720 (and the umbrella #2610). After this PR, pythonnet runs the full pytest suite on python3.14t against both ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb5665c84831ed9ac4fb79519c16c9c5580ba8092fb8bb6e3e72972ec7197348e
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/pythonnet/pythonnet git https://github.com/pythonnet/pythonnet.git
octolytics-dimension-user_id6050430
octolytics-dimension-user_loginpythonnet
octolytics-dimension-repository_id14748123
octolytics-dimension-repository_nwopythonnet/pythonnet
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id14748123
octolytics-dimension-repository_network_root_nwopythonnet/pythonnet
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release653fccf1e27344851c0d3de3fa6faa526197f072
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/pythonnet/pythonnet/pull/2721/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpythonnet%2Fpythonnet%2Fpull%2F2721%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpythonnet%2Fpythonnet%2Fpull%2F2721%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=pythonnet%2Fpythonnet
Reloadhttps://github.com/pythonnet/pythonnet/pull/2721/files
Reloadhttps://github.com/pythonnet/pythonnet/pull/2721/files
Reloadhttps://github.com/pythonnet/pythonnet/pull/2721/files
Please reload this pagehttps://github.com/pythonnet/pythonnet/pull/2721/files
pythonnet https://github.com/pythonnet
pythonnethttps://github.com/pythonnet/pythonnet
Notifications https://github.com/login?return_to=%2Fpythonnet%2Fpythonnet
Fork 777 https://github.com/login?return_to=%2Fpythonnet%2Fpythonnet
Star 5.5k https://github.com/login?return_to=%2Fpythonnet%2Fpythonnet
Code https://github.com/pythonnet/pythonnet
Issues 151 https://github.com/pythonnet/pythonnet/issues
Pull requests 15 https://github.com/pythonnet/pythonnet/pulls
Discussions https://github.com/pythonnet/pythonnet/discussions
Actions https://github.com/pythonnet/pythonnet/actions
Projects https://github.com/pythonnet/pythonnet/projects
Wiki https://github.com/pythonnet/pythonnet/wiki
Security and quality 0 https://github.com/pythonnet/pythonnet/security
Insights https://github.com/pythonnet/pythonnet/pulse
Code https://github.com/pythonnet/pythonnet
Issues https://github.com/pythonnet/pythonnet/issues
Pull requests https://github.com/pythonnet/pythonnet/pulls
Discussions https://github.com/pythonnet/pythonnet/discussions
Actions https://github.com/pythonnet/pythonnet/actions
Projects https://github.com/pythonnet/pythonnet/projects
Wiki https://github.com/pythonnet/pythonnet/wiki
Security and quality https://github.com/pythonnet/pythonnet/security
Insights https://github.com/pythonnet/pythonnet/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpythonnet%2Fpythonnet%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpythonnet%2Fpythonnet%2Fissues%2Fnew%2Fchoose
greateggsgreghttps://github.com/greateggsgreg
pythonnet:masterhttps://github.com/pythonnet/pythonnet/tree/master
greateggsgreg:freethreading-prephttps://github.com/greateggsgreg/pythonnet/tree/freethreading-prep
Conversation 1 https://github.com/pythonnet/pythonnet/pull/2721
Commits 37 https://github.com/pythonnet/pythonnet/pull/2721/commits
Checks 33 https://github.com/pythonnet/pythonnet/pull/2721/checks
Files changed https://github.com/pythonnet/pythonnet/pull/2721/files
Please reload this pagehttps://github.com/pythonnet/pythonnet/pull/2721/files
Python 3.14 free-threaded support https://github.com/pythonnet/pythonnet/pull/2721/files#top
Show all changes 37 commits https://github.com/pythonnet/pythonnet/pull/2721/files
ebd0a95 Thread-safety prep for free-threading builds greateggsgreg May 9, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/ebd0a95717fb69cb1fa274230b497807a06c8138
cf8372a Initialise pythonnet on free-threaded Python (#2720) greateggsgreg May 9, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/cf8372ad89d6cdf61829c7bf5142d16dd0cd426c
441954f Make extension/CLR-object registries thread-safe greateggsgreg May 9, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/441954f7e589554c988ce1f7026115bcc88ad41b
19c7f59 Atomic type creation in ReflectedClrType.GetOrCreate / TypeManager.Ge… greateggsgreg May 9, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/19c7f591be318824450ebd89d949d4db99f3f2f5
1029c62 Add free-threaded thread-stress tests and 3.14t to CI matrix greateggsgreg May 9, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/1029c62c72f4a048d630477e573bbc177142af78
3158ca5 Atomic GCHandle ownership and finalizer-thread shutdown guards greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/3158ca5a57de6277296f67604fc0056b915e31b7
1149295 Make additional internal registries thread-safe greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/11492952e27bab10d51919a9c0673e223b16a44d
e8afa85 test_thread: join worker threads before returning greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/e8afa853766973f5a2c948cc5dd445a46689b987
3954df3 test_thread: cover ModuleObject thread-safe registries greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/3954df302a7a01480acfc78406430fddf9c0c3ef
28013af Wider thread-safety audit fixes for free-threaded Python greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/28013af87cf80112e872bf95730ff4d6df03fa2b
9a3dd59 Document lock acquisition sites and strong->weak GCHandle swap greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/9a3dd59bb7e0d02ffe476fdebc37c1344804da48
cb1dcde Preserve InternString single-write invariant under DEBUG greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/cb1dcde69dbbdfa4f1e122ea1f214dda3e7caffd
74d12f1 test_thread: cover real-world consumer patterns greateggsgreg May 10, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/74d12f14298d602510b15fc8881f0a626ea41abb
a30c84e Auto-detect free-threaded libpython in venv home greateggsgreg May 12, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/a30c84ec7fa70a3d9f6a3c59f6d7f0d67d77dde3
be5ba34 Snapshot pypath, use ConcurrentDictionary for thunks and slot holders greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/be5ba3473218927187d278f2b24877bee3165266
946785e Fix handling of python runtime suffixes m/t greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/946785e9c09707aa235b04110f9e6fe2f272b258
77ca497 Fix threadtest race greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/77ca4972edbefabec8e76beb56fff09f3e1000e6
af518bb Fix double-free in chained ClassDerived Finalize greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/af518bb57bfc5f3eaf0529a20b1f7d716112e8ff
ed735ac Enable Mono CI jobs on free-threaded Python 3.14 greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/ed735ac587ad1847c9a2d90643c31a138f138cb0
bd3f0bf Inline freethreaded_only as pytest.mark.skipif at call sites greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/bd3f0bfef07a01f4b8120b117507fc68ddefc461
c4688b3 Fix InterruptTest assertion on free-threaded Python 3.14 greateggsgreg May 13, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/c4688b39676d74442154806b909810aa93461b3d
84cd07c Add concurrent stress tests for PyBuffer.Dispose and CLR-cycle gc.col… greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/84cd07cebb327ff1a68272adc6e0a61db9c55e3f
d9b658d Trim concurrent overhead on hot paths from free-threading prep greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/d9b658dc283c3a9a5f291eac06730161d123e1d4
20c51ad Pre-warm ctor binder in concurrent-gc test to avoid first-call race greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/20c51ad560ec5af4dddcf8b1dee5bf25e3cd7161
f5f8ab0 Make MethodBinder.GetMethods lazy init thread-safe under free-threading greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/f5f8ab0dd32abcbd992a19d86d742aaf012ef3ea
c5097eb Precompute method precedence to avoid quadratic GetParameters allocat… greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/c5097ebaf563ccbf0196e5acab30a6a55b1bef7b
18e4901 Zero the slot in ClassDerived.tp_dealloc when tp_clear already ran to… greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/18e4901b6f329afe4d0a35be86bc702e8c95b46a
e0569d0 Keep ClassDerived wrapper alive across the NewObjectToPython slot dem… greateggsgreg May 15, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/e0569d0f46a05f3c91517867a9fad1d719e35abb
2c9f861 Document private helpers added during free-threading prep greateggsgreg May 16, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/2c9f861ed2be795a57a861b356a63b44f1c1aae6
ee3add4 Add debug echoes and a 6-minute step timeout to the Mono test job greateggsgreg May 16, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/ee3add404dbc34ddf6a7d84c7351884a811e6c99
414ce70 Drop the per-loop CLR GC.Collect from concurrent-gc test to avoid Mon… greateggsgreg May 16, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/414ce700d6e127e6f769f95105e7bec503614baa
99a99db Add temporary Mono-step diagnostics on Linux/macOS to locate the x64-… greateggsgreg May 16, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/99a99db0646cc5e81a74074eadeb67d16a9fa99c
8e7c2ba Revert temporary Mono-step diagnostics now that the underlying race i… greateggsgreg May 16, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/8e7c2bac47579bcbcc0cdca997ab6d8850424ae0
f8b69a2 Merge branch 'master' into freethreading-prep greateggsgreg May 16, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/f8b69a21cb12c6ac0a01c66c4e1165e7cbaf2afa
8f2804c Add user-facing threading guide covering GIL, free-threading, and com… greateggsgreg May 18, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/8f2804ca6498f2d152cf1a3ed864526554220413
9c369ed Harden CollectBasicObject against .NET-GC timing differences greateggsgreg May 18, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/9c369edb84e5d9b110aaa2ab0b2d6eeb7208238a
d1b4daa Merge branch 'master' into freethreading-prep greateggsgreg May 25, 2026 https://github.com/pythonnet/pythonnet/pull/2721/commits/d1b4daae358028400bfe95a4ef356717f07637a4
Clear filters https://github.com/pythonnet/pythonnet/pull/2721/files
Please reload this pagehttps://github.com/pythonnet/pythonnet/pull/2721/files
Please reload this pagehttps://github.com/pythonnet/pythonnet/pull/2721/files
main.yml https://github.com/pythonnet/pythonnet/pull/2721/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
index.rst https://github.com/pythonnet/pythonnet/pull/2721/files#diff-1e3ed06e90fe3bf5ecf311ac1bd22215144cfc8c0924f5e05e3394573d630ceb
threading.rst https://github.com/pythonnet/pythonnet/pull/2721/files#diff-7ca4f693e87c3e44d68b336ec7d2c5f442a3bd8617496da352060fb23c9dc4b0
TestFinalizer.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e9a94cc6a88676dbefe363a0819da5a6c2ab46beab1af5eb242966c5cbb35423
TestInterrupt.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e846713ba20ecf06af2cc88cc1e92bae49d519998b093d2fb0f7fd6644b10092
TestNativeTypeOffset.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-48f283d3389166e76d8b9a213ba6c6f35919fc91fa971a954c5627500227a127
TestPyBuffer.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-114d6674704fa10f1d7a3102463c8b146e57a8c643ba9356ccb7451422fe4d6f
AssemblyManager.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-fee39f41b1ef9f47aeb47c51335d9c6bec6041dc1acbeb723654a296ab9ec485
ClassManager.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-52d09e532b78e00df47c2cac8247ee1fa57c17190a628ae4cce0d4c156df0f34
DelegateManager.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-533bec608b2285b45669df263043f99e21d95250f0a60e5892ccb324ff6950e3
Finalizer.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-8856f8173910a2ee97a6131d24e0a40796b61281875f1a447442ca600aac4629
InternString.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-f6832b8a07c1116418c4413c26ed044afa5072f50b222cc4ea9a3a49722a8def
Interop.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-1f7b3ddd4bc140b24dce175a8490e9a6a9a63a2801100a7431dd6cd516cbc7ff
MethodBinder.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-a156168a143448be85630d5b0da89eae902a146b4eba4dbd21b762098f6ffe1c
ABI.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-0ab49fd3ddb35517e14d2e1b0b9a53378aa7d6d6bef4ecb9d2a54b3ee5beef51
PythonEngine.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-4da8ae86d58aa20cd6e439886d4c8ded46d02f69f2e557655094fac05a9bddb1
PyBuffer.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e493161d215f6f91a7536eee515f99fbbd5587bd13fa466bf7509f5abd80e04a
PyObject.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-0e47fd064cada6ce984f46f074f9f23c9b2d9dbef5a7abf1129b75f753bf2152
Runtime.Delegates.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-4a3e252cf6aef7c6facc2e736db02283952a616a1a0645447ffe439d78b8ac9b
Runtime.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-010beffcb32e19ccddb5f2d7b87077b1606b7b4acc4c22d6803091b7a53ba8c2
RuntimeData.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-b8c90b19c608503041e1525365474fea9961c8130eb938e9517e39ca62081cf3
TypeManager.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-a3d8f0a249eb8c6667815dca5cff30765b8a781031d91b0768fdf07af65d52d7
ClassBase.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-2fbe017ba2d216662ee654332eda5bee249925358e8c11bed45d4408f72865aa
ClassDerived.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-3ba8dfb545848c99f724a80c82acfd41c8fdd8667991123149c3577c8ed30554
ClrObject.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-ca6091a740e6b55ddfe1a561219282c7f2ab60e4049a12f6f35917a4b6e9870b
ExtensionType.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-7822538b9548408405becb1d833ee66584fafa4c37c95190a27eda17780005bb
ManagedType.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-074927cdf5face063630acab3f231b79cda8b99dae2a701cda7c964b739a75b1
ModuleObject.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-1e33d9fb15eb911b918dbad0042fc3633f81c7db87147bfc15e4400652ed1138
ReflectedClrType.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-d0c776c5a2a85b17ab26c64f8012ebf5b6b3cda0b6146edf33d0e396284b92f3
GenericUtil.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-c99e87eb95f3456bdb5a28061cf451150309189e8bad265f92130e927a7b4676
PythonEnvironment.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-6e4880d96b3eb58875f1c4ca39060a043481831a312d508b798dd09a162cc057
threadtest.cs https://github.com/pythonnet/pythonnet/pull/2721/files#diff-247df782a64aaf3376b5026d63168610d8d35ef5521563af5794b34aba93686e
test_subclass.py https://github.com/pythonnet/pythonnet/pull/2721/files#diff-9ceab272e311025773bd11942d035ca436bc3de11cca28ef924e34104e8115ca
test_thread.py https://github.com/pythonnet/pythonnet/pull/2721/files#diff-b284bcf0ce236beba3f16176f1ea85f8538ea1c1565756b8bfeb375c66fbe443
.github/workflows/main.ymlhttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/.github/workflows/main.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-7829468e86c1cc5d5133195b5cb48e1ff6c75e3e9203777f6b2e379d9e4882b3
doc/source/index.rsthttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-1e3ed06e90fe3bf5ecf311ac1bd22215144cfc8c0924f5e05e3394573d630ceb
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/doc/source/index.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-1e3ed06e90fe3bf5ecf311ac1bd22215144cfc8c0924f5e05e3394573d630ceb
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-1e3ed06e90fe3bf5ecf311ac1bd22215144cfc8c0924f5e05e3394573d630ceb
doc/source/threading.rsthttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-7ca4f693e87c3e44d68b336ec7d2c5f442a3bd8617496da352060fb23c9dc4b0
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/doc/source/threading.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
src/embed_tests/TestFinalizer.cshttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-e9a94cc6a88676dbefe363a0819da5a6c2ab46beab1af5eb242966c5cbb35423
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/src/embed_tests/TestFinalizer.cs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e9a94cc6a88676dbefe363a0819da5a6c2ab46beab1af5eb242966c5cbb35423
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e9a94cc6a88676dbefe363a0819da5a6c2ab46beab1af5eb242966c5cbb35423
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e9a94cc6a88676dbefe363a0819da5a6c2ab46beab1af5eb242966c5cbb35423
src/embed_tests/TestInterrupt.cshttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-e846713ba20ecf06af2cc88cc1e92bae49d519998b093d2fb0f7fd6644b10092
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/src/embed_tests/TestInterrupt.cs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-e846713ba20ecf06af2cc88cc1e92bae49d519998b093d2fb0f7fd6644b10092
src/embed_tests/TestNativeTypeOffset.cshttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-48f283d3389166e76d8b9a213ba6c6f35919fc91fa971a954c5627500227a127
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/src/embed_tests/TestNativeTypeOffset.cs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-48f283d3389166e76d8b9a213ba6c6f35919fc91fa971a954c5627500227a127
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-48f283d3389166e76d8b9a213ba6c6f35919fc91fa971a954c5627500227a127
src/embed_tests/TestPyBuffer.cshttps://github.com/pythonnet/pythonnet/pull/2721/files#diff-114d6674704fa10f1d7a3102463c8b146e57a8c643ba9356ccb7451422fe4d6f
View file https://github.com/pythonnet/pythonnet/blob/d1b4daae358028400bfe95a4ef356717f07637a4/src/embed_tests/TestPyBuffer.cs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/pythonnet/pythonnet/pull/2721/{{ revealButtonHref }}
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-114d6674704fa10f1d7a3102463c8b146e57a8c643ba9356ccb7451422fe4d6f
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-114d6674704fa10f1d7a3102463c8b146e57a8c643ba9356ccb7451422fe4d6f
https://github.com/pythonnet/pythonnet/pull/2721/files#diff-114d6674704fa10f1d7a3102463c8b146e57a8c643ba9356ccb7451422fe4d6f
Please reload this pagehttps://github.com/pythonnet/pythonnet/pull/2721/files
Please reload this pagehttps://github.com/pythonnet/pythonnet/pull/2721/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.