René's URL Explorer Experiment


Title: (READY FOR REVIEW)Garbage collect: A stop-the-world cycle collector by discord9 · Pull Request #4180 · RustPython/RustPython · GitHub

Open Graph Title: (READY FOR REVIEW)Garbage collect: A stop-the-world cycle collector by discord9 · Pull Request #4180 · RustPython/RustPython

X Title: (READY FOR REVIEW)Garbage collect: A stop-the-world cycle collector by discord9 · Pull Request #4180 · RustPython/RustPython

Description: That might be extend to be a on-the-fly version. Based on #4158 Summary of GC Algorithm the algorithm store a buffer of object thats' "possible roots" of garbage cycles(i.e. if a object is decrement but not to zero, its a possible root) then, during gc, algorithm have three main phase: iterate over this buffer, free objects of rc==0. then in next phase tracing other object(whose rc>0) and do a "trial decrement" to all of its childrens, so to remove all the "internal reference" in the graph, so whats left is external reference, so by now,object with rc==0 is safe to be collected restore everyone elses rc, only drop garbage found from previous phase, note in here we first do a drop in place for every garbage then dealloc everything to prevent UB from deref to deallocated objects Progress basic cycle collector algorithm(stop the world version) necessary trait and cond comp flag and feature impl GcTrace for all builtin types(Some type's trace() still need tweak, see below, still have some not impl) rebase off the newest main(for rustc 1.64.0 update) export gc() as a python function(in the stdlib), now invoke gc() in python will force a cycle collect to happen, return number of cyclic garbage collected(and freed) test(especially for threading) bug: I use wrong drop in collect_white, should drop PyInner, but I drop PyInner, need correct that.(Fixed) bug: PyInner is deallocated early before PyWeak release bug: gc in drop() sometimes seems to cause deadlock(Fix by putting gc() to instruction exec loop) use PyObject directly instead of dyn dispatch in gc move gc() to its' own module in stdlib find out why stdlib::io::_io::BufferedReader(and other types in _io module) keeps double free rewrite commits drop header later to prevent UB run __del__, drop, dealloc separately to prevent UB change back to use PyMutex instead of PyRwLock(which is unacceptly slow) use proc macro to impl trace for datatype compact header's most field into one byte bug with weak ref future features for GC use MemBalancer to determine when to gc(actually tried on a new branch, but I am having difficulty sampling memory usage&memory deallocate rate so not having a very good effect) found out how to make optional trait bound without using typeid¯o(which make it hard to extend) GC condition gc will be triggered if the internal buffer(roots) have exceed 10007(Just a random reasonably large number) element and at least 100ms after last gc, that means after 10007 different objects get decref after last gc, a new gc will be trigger, gc() is only called in the loop of executing instruction, but also reexport a gc() to stdlib so one can call gc() from Python side(which will force a gc regardless of above conditon). stop-the-world is impl by try to blocking on a pausing Mutex owned by gc whenever try to deref PyObjectRef/PyRef/Py Basic ideas cycle collector algorithm: stop the world, and remove internal reference found out those with zero ref(meaning they are cyclic garbage), mark them for later free, restore others' ref count. free those marked object(also unpause the world), also for those marked object form a cycle, some check is done to make sure no double drop or deallocate happen Data struct #[repr(C)] struct PyInner { #[cfg(not(feature = "gc"))] ref_count: RefCount, #[cfg(feature = "gc")] header: GcHeader, .... /// Garbage collect header, containing ref count and other info, using repr(C) to stay consistent with PyInner 's repr #[repr(C)] pub struct GcHeader { ref_cnt: PyAtomic, color: PyMutex, buffered: PyMutex, pub exclusive: PyMutex<()>, pub gc: PyRc } Example for code as below: tot = 0 runs = 16000 for i in range(runs): a = [0] b = [a] a[0] = b del a del b a = {} b = {} a[0] = b b[0] = a del a del b With and without gc, the memory usage is(run on a win10(19044.2006) with rustc 1.64.0, might vary between different runs): loop mem with gc(MB) without gc(MB) 0 13.29 8.82 1000 13.49 10.36 2000 13.76 11.76 3000 14.29 13.32 4000 14.29 14.45 5000 14.31 16.32 6000 14.31 17.24 7000 14.31 18.32 8000 14.31 19.45 9000 15.36 21.38 10000 15.36 22.45 11000 15.26 23.71 12000 15.26 24.63 13000 15.26 25.97 14000 15.26 27.36 15000 15.26 28.36 currently GcTraced types are: // builtin types // PyRange, PyStr is acyclic PyBoundMethod, PyDict, PyEnumerate, PyFilter, PyFunction, PyList, PyMappingProxy, PyProperty, PySet, PySlice, PyStaticMethod, PySuper, PyTraceback, PyTuple, // PyType, (strange bug, see PyType's trace() for detail) PyZip, // misc PyCell, // iter in iter.rs PySequenceIterator, PyCallableIterator, // iter on types // PyList's iter PyListIterator, PyListReverseIterator, // PyTuple's iter PyTupleIterator, // PyEnumerate's iter PyReverseSequenceIterator, // PyMemory's iter PyMemoryViewIterator, // function/Arg protocol ArgCallable, ArgIterable, ArgMapping, ArgSequence, // protocol // struct like PyBuffer, PyIter, // FIXME(discord9): confirm this is ok to do PyIterIter, PyIterReturn, PyMapping, PyNumber, PySequence

Open Graph Description: That might be extend to be a on-the-fly version. Based on #4158 Summary of GC Algorithm the algorithm store a buffer of object thats' "possible roots" of garbage cycles(i.e. if a obje...

X Description: That might be extend to be a on-the-fly version. Based on #4158 Summary of GC Algorithm the algorithm store a buffer of object thats&#39; &quot;possible roots&quot; of garbage cycles(i....

Opengraph URL: https://github.com/RustPython/RustPython/pull/4180

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:41354f9b-22b8-9a8d-ea5c-f0b02cb62eaa
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idDF08:2E83F4:5C99FBC:7C4818C:6A5DE635
html-safe-nonce39fc2c5f529fac1cc61d5fa59b908c3622513c5115fd4785e84687c77712e7e0
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERjA4OjJFODNGNDo1Qzk5RkJDOjdDNDgxOEM6NkE1REU2MzUiLCJ2aXNpdG9yX2lkIjoiMTU0MjYwNTI0NjM2NzEzMTE4OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac5bda52c1c994c7d961f72f425d5ed1c4008cb44fb093644b8a88c7a73bbef5bc
hovercard-subject-tagpull_request:1064293211
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/RustPython/RustPython/pull/4180/files
twitter:imagehttps://avatars.githubusercontent.com/u/55937128?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/55937128?s=400&v=4
og:image:altThat might be extend to be a on-the-fly version. Based on #4158 Summary of GC Algorithm the algorithm store a buffer of object thats' "possible roots" of garbage cycles(i.e. if a obje...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonef068985268f2a1e272fe40dd37a3352a16d337d57ec570e56da6c2346e179f59
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/RustPython/RustPython git https://github.com/RustPython/RustPython.git
octolytics-dimension-user_id39710557
octolytics-dimension-user_loginRustPython
octolytics-dimension-repository_id135201145
octolytics-dimension-repository_nwoRustPython/RustPython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id135201145
octolytics-dimension-repository_network_root_nwoRustPython/RustPython
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
releasee36408244bcd0ded36f1cfba5db8e97f99c2117e
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/RustPython/RustPython/pull/4180/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FRustPython%2FRustPython%2Fpull%2F4180%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%2FRustPython%2FRustPython%2Fpull%2F4180%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=RustPython%2FRustPython
Reloadhttps://github.com/RustPython/RustPython/pull/4180/files
Reloadhttps://github.com/RustPython/RustPython/pull/4180/files
Reloadhttps://github.com/RustPython/RustPython/pull/4180/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
RustPython https://github.com/RustPython
RustPythonhttps://github.com/RustPython/RustPython
Notifications https://github.com/login?return_to=%2FRustPython%2FRustPython
Fork 1.5k https://github.com/login?return_to=%2FRustPython%2FRustPython
Star 22.2k https://github.com/login?return_to=%2FRustPython%2FRustPython
Code https://github.com/RustPython/RustPython
Issues 291 https://github.com/RustPython/RustPython/issues
Pull requests 102 https://github.com/RustPython/RustPython/pulls
Discussions https://github.com/RustPython/RustPython/discussions
Actions https://github.com/RustPython/RustPython/actions
Projects https://github.com/RustPython/RustPython/projects
Models https://github.com/RustPython/RustPython/models
Wiki https://github.com/RustPython/RustPython/wiki
Security and quality 0 https://github.com/RustPython/RustPython/security
Insights https://github.com/RustPython/RustPython/pulse
Code https://github.com/RustPython/RustPython
Issues https://github.com/RustPython/RustPython/issues
Pull requests https://github.com/RustPython/RustPython/pulls
Discussions https://github.com/RustPython/RustPython/discussions
Actions https://github.com/RustPython/RustPython/actions
Projects https://github.com/RustPython/RustPython/projects
Models https://github.com/RustPython/RustPython/models
Wiki https://github.com/RustPython/RustPython/wiki
Security and quality https://github.com/RustPython/RustPython/security
Insights https://github.com/RustPython/RustPython/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FRustPython%2FRustPython%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FRustPython%2FRustPython%2Fissues%2Fnew%2Fchoose
discord9https://github.com/discord9
RustPython:mainhttps://github.com/RustPython/RustPython/tree/main
discord9:mainhttps://github.com/discord9/RustPython/tree/main
Conversation 76 https://github.com/RustPython/RustPython/pull/4180
Commits 4 https://github.com/RustPython/RustPython/pull/4180/commits
Checks 0 https://github.com/RustPython/RustPython/pull/4180/checks
Files changed https://github.com/RustPython/RustPython/pull/4180/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
(READY FOR REVIEW)Garbage collect: A stop-the-world cycle collector https://github.com/RustPython/RustPython/pull/4180/files#top
Show all changes 4 commits https://github.com/RustPython/RustPython/pull/4180/files
36f70ec feat: Garbage Collect in one squashed commit discord9 Oct 23, 2022 https://github.com/RustPython/RustPython/pull/4180/commits/36f70ec1635323b58b169070d671e0808c9b30c0
6e88691 minimize diff youknowone Mar 26, 2023 https://github.com/RustPython/RustPython/pull/4180/commits/6e886919e48b23636b48fe73e000898550dbf6bf
823a80f isolate gc from bare object module youknowone Mar 28, 2023 https://github.com/RustPython/RustPython/pull/4180/commits/823a80f368781380926735a80b1c42b22ab7d487
9ed5137 fix: check buf in drop_slow discord9 Mar 28, 2023 https://github.com/RustPython/RustPython/pull/4180/commits/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e
Clear filters https://github.com/RustPython/RustPython/pull/4180/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
ci.yaml https://github.com/RustPython/RustPython/pull/4180/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
Cargo.toml https://github.com/RustPython/RustPython/pull/4180/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542
test_ordered_dict.py https://github.com/RustPython/RustPython/pull/4180/files#diff-f19d3282864344be60adeaf4a9307e192a8e871155bca771d000449d74aa5639
test_sys_setprofile.py https://github.com/RustPython/RustPython/pull/4180/files#diff-da6ca4feab0ee00ce2b59b80d1aec01f8cc39f4e01432abfe08d0ef9ed397bc8
test_weakref.py https://github.com/RustPython/RustPython/pull/4180/files#diff-937b32719db22ef614ad443f33d3c274ccc905bb58badd4167d6720e0e45d575
lib.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-aa91ce29144db9ba058b426b31f96033861d0ee58b2c4980c0aa489fb5d01845
pyclass.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-adc9462e066e330995f8997f2d8fb0e0ac629b758c34be26e283a1804c9edd1c
pytrace.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-17f9b168197725b43767a72a7b47c8b7d4ce0d2f418044d648fcf7c766424c19
util.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
lib.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-60da9bde79deaa50c0ce6f42d1f47205ba31f448dc2713cc746339343581b699
Cargo.toml https://github.com/RustPython/RustPython/pull/4180/files#diff-18568e5aabf9b8330744cb4c24bdfe9ed6a0effe6efe54578b86a4e54674075d
gc.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-7a75a7f6c969d7bea1691cbfeebc75cd4813d1b52c7993af63cc46e255cb96c1
Cargo.toml https://github.com/RustPython/RustPython/pull/4180/files#diff-98def556b29f953c96db531b74917518dd012025da819292b7d0a956710c2d2d
dict.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-aec5b89f34446c0d6c48bc4c4ddd59a83757612cc4b9705186d967c7234f7984
enumerate.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-4935a9313b8c01d9ba55d23a42de1e0706925b34e6d2398878240f417b4bcb01
filter.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-bc6a825b7b525e286a5944fc93043a2b044e5e9b73ecfd985c310661cf5e27a0
function.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-3a6828aa0472686b86bbf88cc31f88f7877310138fe2cfbbcb8f36a752825e46
iter.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-f664cf0b6ae7c616697ebb8ef41329a9a9fa4632ce568177640a85e5ceba284a
list.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-cf69cd941706585c03d2f19797d6ead7a3d9d789be406bab23d454a830ee625a
map.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-6c8938010660955af33470f06c0c277dca786693a5aed6e15baea14177715ace
mappingproxy.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-36bf074b4b7a51cd3e0cff9c8870276208a6801bfe40332387145fbae24810bc
memory.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-fdff305a567c1f12d8353d9fbc7f66ea4f2b1f16076910efc2921088ad34b774
property.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-4ebbf70a9ebd2d604fa46184451dbe0e6ab38922272c65478135099532cd6da6
range.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-4515b958c2fbf3d6d592d7c311c7b5e54622a42ae95469f07eb06b9f8916e6d7
set.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-4b9baee4a92f1cb13612c9d26fc8b88eff2477a7c55748062c5e0416b92cd20a
slice.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-6a749add4487b1544e3d9e2aac70ceb984a79ca15ec8597b6b1c3b04cc36ad6b
staticmethod.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-7a971454ae86f3c8cb82c627bfef3e6b35661569ad503dd0de6575b3408df491
super.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-33dde1cc740741e2847ef0213dc0795ec3dc027580a18f56381f7f616235af5f
traceback.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-d7e600e384601727cc75caef580d0574090a16614f93a095a3503962f8c25b7a
tuple.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-7cc7d59c8de9ba6179fed9b27c67ae7b07dd41280ea8a6da4b3939137eb303c7
type.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-0ca77af56591d98b018115c1185808b8de45118be0b97b27b757a0697e68f7a1
union.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-956df79fe4ef84a8e381a06e29cf23230a626cd1851c8053c9bf33173089cec2
weakproxy.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-b02ed26ad965faa10d8c6d3c844acbeeadc606b9e65c958497588ee189b2c885
zip.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-3bf44ecf9fbd979769c3c1324b9c222f4d627bf6348fa1fe64d3b9a3db363c01
dictdatatype.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-c0addcccfa43701f0715aedb612d613ae5805693bdc6eb65f1870d33982df656
exceptions.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-d19484f26ba252a3b3ff27867db9682f948572dd37e83e811d6f073bfc2f07c2
frame.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-b12bfe4c8654c4d3a81839ecf8fe1e9f41a1bac245ef944a0e3d8639a252ad15
argument.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-dbb5bcdfadd0cd486f65577f635cf877f08a9f12a0f8a8e3f9b20fe704d7178e
protocol.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-b38a5f6f602281b7969532cf0ad06f9c5e677d18b7f769b288f0ec3dfbd9ed3b
core.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-1a9cd08485d2d03dba03d49cb7b9515be1390758286ce659751e384783cd7744
collector.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-20f00351926c707a30d66f8176de891ff676155c0b11f12fd747b660908cbb47
header.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-6de00aef4bc63bfe8e4652e2289aa961703dc93de35f96a1b288f1c26eb40e7c
mod.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-1dbc08253a6fab97e5e46d7fd02954212604906643d5270026ec569082ab742f
object.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-700e00252561941fc380efcb80e4e694e04dafcf8a80601c9c8f872cb3084027
trace.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-8867adbcc0d9aabbd7d23dde24bbea5f0bcbdf180fd742a0d941ba5896e8c413
mod.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-60aee7e2b310cecdcf954ab472aad74f37f3320591eed3b7384847f5cae53f3c
payload.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-354365d10b6f72d081a6c90d091409aee79d8c546bbbc0a4db12c5af1f88f6ae
buffer.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-58f85f1bbffd4a5e630e840dddacba7ce64641f2ca33cb94bbf54c7c2cd5dc52
iter.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-688a17d340aa55627e0e307b8cef31b99d478c8b41664cd92f5c2572b6688097
mapping.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-ce7fa3a579ab1d7efc1d8b29c74b8cb597816873ae9f40a04f3055e5c423c3b2
number.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-84ab4be000b45c485f98f407e3111c21cf7529d6eb960911dfac3e28a499f509
sequence.rs https://github.com/RustPython/RustPython/pull/4180/files#diff-00cda750bd6a4c292be509c3291d7ee7c576ab8f56b9e4d583374b1a14f3560e
Cargo.toml https://github.com/RustPython/RustPython/pull/4180/files#diff-84f2d47f2345c0f63b9bbaef162205b574e0b9167638198fcc01eca7a885b3df
.github/workflows/ci.yamlhttps://github.com/RustPython/RustPython/pull/4180/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/.github/workflows/ci.yaml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
https://github.com/RustPython/RustPython/pull/4180/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
Cargo.tomlhttps://github.com/RustPython/RustPython/pull/4180/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/Cargo.toml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542
https://github.com/RustPython/RustPython/pull/4180/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542
Lib/test/test_ordered_dict.pyhttps://github.com/RustPython/RustPython/pull/4180/files#diff-f19d3282864344be60adeaf4a9307e192a8e871155bca771d000449d74aa5639
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/Lib/test/test_ordered_dict.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-f19d3282864344be60adeaf4a9307e192a8e871155bca771d000449d74aa5639
https://github.com/RustPython/RustPython/pull/4180/files#diff-f19d3282864344be60adeaf4a9307e192a8e871155bca771d000449d74aa5639
Lib/test/test_sys_setprofile.pyhttps://github.com/RustPython/RustPython/pull/4180/files#diff-da6ca4feab0ee00ce2b59b80d1aec01f8cc39f4e01432abfe08d0ef9ed397bc8
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/Lib/test/test_sys_setprofile.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-da6ca4feab0ee00ce2b59b80d1aec01f8cc39f4e01432abfe08d0ef9ed397bc8
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
https://github.com/RustPython/RustPython/pull/4180/files#diff-da6ca4feab0ee00ce2b59b80d1aec01f8cc39f4e01432abfe08d0ef9ed397bc8
Lib/test/test_weakref.pyhttps://github.com/RustPython/RustPython/pull/4180/files#diff-937b32719db22ef614ad443f33d3c274ccc905bb58badd4167d6720e0e45d575
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/Lib/test/test_weakref.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-937b32719db22ef614ad443f33d3c274ccc905bb58badd4167d6720e0e45d575
https://github.com/RustPython/RustPython/pull/4180/files#diff-937b32719db22ef614ad443f33d3c274ccc905bb58badd4167d6720e0e45d575
derive-impl/src/lib.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-aa91ce29144db9ba058b426b31f96033861d0ee58b2c4980c0aa489fb5d01845
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/derive-impl/src/lib.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-aa91ce29144db9ba058b426b31f96033861d0ee58b2c4980c0aa489fb5d01845
https://github.com/RustPython/RustPython/pull/4180/files#diff-aa91ce29144db9ba058b426b31f96033861d0ee58b2c4980c0aa489fb5d01845
https://github.com/RustPython/RustPython/pull/4180/files#diff-aa91ce29144db9ba058b426b31f96033861d0ee58b2c4980c0aa489fb5d01845
derive-impl/src/pyclass.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-adc9462e066e330995f8997f2d8fb0e0ac629b758c34be26e283a1804c9edd1c
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/derive-impl/src/pyclass.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-adc9462e066e330995f8997f2d8fb0e0ac629b758c34be26e283a1804c9edd1c
https://github.com/RustPython/RustPython/pull/4180/files#diff-adc9462e066e330995f8997f2d8fb0e0ac629b758c34be26e283a1804c9edd1c
https://github.com/RustPython/RustPython/pull/4180/files#diff-adc9462e066e330995f8997f2d8fb0e0ac629b758c34be26e283a1804c9edd1c
derive-impl/src/pytrace.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-17f9b168197725b43767a72a7b47c8b7d4ce0d2f418044d648fcf7c766424c19
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/derive-impl/src/pytrace.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
derive-impl/src/util.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/derive-impl/src/util.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
https://github.com/RustPython/RustPython/pull/4180/files#diff-138c75dd949f091831c85a6a66026a402cbf77f39f7aa52ebed6193b9c65ccbb
derive/src/lib.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-60da9bde79deaa50c0ce6f42d1f47205ba31f448dc2713cc746339343581b699
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/derive/src/lib.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-60da9bde79deaa50c0ce6f42d1f47205ba31f448dc2713cc746339343581b699
coolreader18https://github.com/coolreader18
Nov 21, 2022https://github.com/RustPython/RustPython/pull/4180/files#r1027569704
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
discord9https://github.com/discord9
Dec 8, 2022https://github.com/RustPython/RustPython/pull/4180/files#r1042859396
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/files
stdlib/Cargo.tomlhttps://github.com/RustPython/RustPython/pull/4180/files#diff-18568e5aabf9b8330744cb4c24bdfe9ed6a0effe6efe54578b86a4e54674075d
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/stdlib/Cargo.toml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-18568e5aabf9b8330744cb4c24bdfe9ed6a0effe6efe54578b86a4e54674075d
https://github.com/RustPython/RustPython/pull/4180/files#diff-18568e5aabf9b8330744cb4c24bdfe9ed6a0effe6efe54578b86a4e54674075d
stdlib/src/gc.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-7a75a7f6c969d7bea1691cbfeebc75cd4813d1b52c7993af63cc46e255cb96c1
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/stdlib/src/gc.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-7a75a7f6c969d7bea1691cbfeebc75cd4813d1b52c7993af63cc46e255cb96c1
https://github.com/RustPython/RustPython/pull/4180/files#diff-7a75a7f6c969d7bea1691cbfeebc75cd4813d1b52c7993af63cc46e255cb96c1
vm/Cargo.tomlhttps://github.com/RustPython/RustPython/pull/4180/files#diff-98def556b29f953c96db531b74917518dd012025da819292b7d0a956710c2d2d
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/vm/Cargo.toml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-98def556b29f953c96db531b74917518dd012025da819292b7d0a956710c2d2d
https://github.com/RustPython/RustPython/pull/4180/files#diff-98def556b29f953c96db531b74917518dd012025da819292b7d0a956710c2d2d
vm/src/builtins/dict.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-aec5b89f34446c0d6c48bc4c4ddd59a83757612cc4b9705186d967c7234f7984
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/vm/src/builtins/dict.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-aec5b89f34446c0d6c48bc4c4ddd59a83757612cc4b9705186d967c7234f7984
https://github.com/RustPython/RustPython/pull/4180/files#diff-aec5b89f34446c0d6c48bc4c4ddd59a83757612cc4b9705186d967c7234f7984
vm/src/builtins/enumerate.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-4935a9313b8c01d9ba55d23a42de1e0706925b34e6d2398878240f417b4bcb01
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/vm/src/builtins/enumerate.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-4935a9313b8c01d9ba55d23a42de1e0706925b34e6d2398878240f417b4bcb01
https://github.com/RustPython/RustPython/pull/4180/files#diff-4935a9313b8c01d9ba55d23a42de1e0706925b34e6d2398878240f417b4bcb01
https://github.com/RustPython/RustPython/pull/4180/files#diff-4935a9313b8c01d9ba55d23a42de1e0706925b34e6d2398878240f417b4bcb01
https://github.com/RustPython/RustPython/pull/4180/files#diff-4935a9313b8c01d9ba55d23a42de1e0706925b34e6d2398878240f417b4bcb01
vm/src/builtins/filter.rshttps://github.com/RustPython/RustPython/pull/4180/files#diff-bc6a825b7b525e286a5944fc93043a2b044e5e9b73ecfd985c310661cf5e27a0
View file https://github.com/discord9/RustPython/blob/9ed51374125b5f1a9e5cee5dd7e27023b8591f1e/vm/src/builtins/filter.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/4180/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/4180/files#diff-bc6a825b7b525e286a5944fc93043a2b044e5e9b73ecfd985c310661cf5e27a0
https://github.com/RustPython/RustPython/pull/4180/files#diff-bc6a825b7b525e286a5944fc93043a2b044e5e9b73ecfd985c310661cf5e27a0
Please reload this pagehttps://github.com/RustPython/RustPython/pull/4180/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.