René's URL Explorer Experiment


Title: perf(fmt): reuse compiled gitignore rules and release traversal state by chenjiahan · Pull Request #590 · rstackjs/rstack-cli · GitHub

Open Graph Title: perf(fmt): reuse compiled gitignore rules and release traversal state by chenjiahan · Pull Request #590 · rstackjs/rstack-cli

X Title: perf(fmt): reuse compiled gitignore rules and release traversal state by chenjiahan · Pull Request #590 · rstackjs/rstack-cli

Description: Motivation Monorepos often repeat the same .gitignore contents across packages. rs fmt currently compiles each copy independently and leaves native matcher cleanup to garbage collection. Changes Share compiled rules by exact contents using Arc, while keeping each directory's matching state independent. Explicitly release compiled rules and directory caches after traversal, including failure paths, once all concurrent traversals have settled. Benchmarked on a large monorepo with 56,583 formatted files and 258 .gitignore sources (60 unique contents), using Node.js 22.16.0, 8 workers, no format cache, and the same patched Prettier 3.9.10 in both variants: Metric Before After File discovery, median of 8 fresh processes 420.9 ms 358.2 ms Matcher live allocations before cleanup 37.9 MiB 12.8 MiB Whole-repository check, median of 10 fresh processes 16.75 s 16.73 s Discovery is 14.9% faster; whole-repository timings are effectively unchanged within run-to-run variation. Allocation tracking confirms explicit cleanup releases matcher data to the same level as dropping the matcher. With 258 distinct contents, the cache adds about 114 KiB. Validation: Rust and formatting-related tests passed, along with lint, type, and format checks. All 59,817 discovery requests, 38,556 replayed native call results, and existing benchmark diagnostics match the baseline.

Open Graph Description: Motivation Monorepos often repeat the same .gitignore contents across packages. rs fmt currently compiles each copy independently and leaves native matcher cleanup to garbage collection. Changes Sh...

X Description: Motivation Monorepos often repeat the same .gitignore contents across packages. rs fmt currently compiles each copy independently and leaves native matcher cleanup to garbage collection. Changes Sh...

Opengraph URL: https://github.com/rstackjs/rstack-cli/pull/590

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:1fc88266-419e-165f-d25e-7ded052d5ee0
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idCACC:1DA4E1:109B116:168AA2B:6AEC29E9
html-safe-noncee0ec0a8090db6242bcd6cd541ba66c210146af0af39df6728a823cff7f740e5e
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQUNDOjFEQTRFMToxMDlCMTE2OjE2OEFBMkI6NkFFQzI5RTkiLCJ2aXNpdG9yX2lkIjoiMzgwMTk0MzYwODEzNDQ3ODMxMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac34b236a59d187c4af09589ffc87267b2037d5d220beb3d6f2f30d3b5f2f8bea8
hovercard-subject-tagpull_request:4960371139
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/rstackjs/rstack-cli/pull/590/files
twitter:imagehttps://avatars.githubusercontent.com/u/7237365?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/7237365?s=400&v=4
og:image:altMotivation Monorepos often repeat the same .gitignore contents across packages. rs fmt currently compiles each copy independently and leaves native matcher cleanup to garbage collection. Changes Sh...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonef290b7f408d9675a032f84ceb13aaf80220f947c681b4c5d9a7560a59ee32f02
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/rstackjs/rstack-cli git https://github.com/rstackjs/rstack-cli.git
octolytics-dimension-user_id129049372
octolytics-dimension-user_loginrstackjs
octolytics-dimension-repository_id1138027854
octolytics-dimension-repository_nworstackjs/rstack-cli
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1138027854
octolytics-dimension-repository_network_root_nworstackjs/rstack-cli
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
releasead9a37a663eb727a42b8bacc5e035cc3a24dd058
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/rstackjs/rstack-cli/pull/590/files#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Frstackjs%2Frstack-cli%2Fpull%2F590%2Ffiles
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
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
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://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
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Frstackjs%2Frstack-cli%2Fpull%2F590%2Ffiles
Sign uphttps://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=rstackjs%2Frstack-cli
Reloadhttps://github.com/rstackjs/rstack-cli/pull/590/files
Reloadhttps://github.com/rstackjs/rstack-cli/pull/590/files
Reloadhttps://github.com/rstackjs/rstack-cli/pull/590/files
rstackjshttps://github.com/rstackjs
rstack-clihttps://github.com/rstackjs/rstack-cli
Codehttps://github.com/rstackjs/rstack-cli
Issues3 (3)https://github.com/rstackjs/rstack-cli/issues
Pull requests1 (1)https://github.com/rstackjs/rstack-cli/pulls
Discussionshttps://github.com/rstackjs/rstack-cli/discussions
Actionshttps://github.com/rstackjs/rstack-cli/actions
Projectshttps://github.com/rstackjs/rstack-cli/projects
Security and qualityhttps://github.com/rstackjs/rstack-cli/security
Insightshttps://github.com/rstackjs/rstack-cli/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Frstackjs%2Frstack-cli%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Frstackjs%2Frstack-cli%2Fissues%2Fnew%2Fchoose
chenjiahanhttps://github.com/chenjiahan
mainhttps://github.com/rstackjs/rstack-cli/tree/main
chenjiahan/reuse-gitignore-compilationhttps://github.com/rstackjs/rstack-cli/tree/chenjiahan/reuse-gitignore-compilation
Conversation 2 https://github.com/rstackjs/rstack-cli/pull/590
Commits 4 https://github.com/rstackjs/rstack-cli/pull/590/commits
Checks 5 https://github.com/rstackjs/rstack-cli/pull/590/checks
Files changed https://github.com/rstackjs/rstack-cli/pull/590/files
Please reload this pagehttps://github.com/rstackjs/rstack-cli/pull/590/files
perf(fmt): reuse compiled gitignore rules and release traversal state https://github.com/rstackjs/rstack-cli/pull/590/files#top
Show all changes 4 commits https://github.com/rstackjs/rstack-cli/pull/590/files
db53640 perf(fmt): reuse compiled gitignore rules and release traversal state chenjiahan Oct 22, 2026 https://github.com/rstackjs/rstack-cli/pull/590/commits/db53640552791b830cbde96db3eb3bd4cb7fe4c8
627d9d6 test(fmt): simplify gitignore reuse and cleanup coverage chenjiahan Oct 22, 2026 https://github.com/rstackjs/rstack-cli/pull/590/commits/627d9d6821f4c2d29490cf8899dd3d10db6bb5d2
2c65523 perf(fmt): skip settled load draining after successful traversal chenjiahan Oct 22, 2026 https://github.com/rstackjs/rstack-cli/pull/590/commits/2c65523e14c6e4f7d0d5cecab00ffcfd0e839c62
0a5e53a chore: retry CI chenjiahan Oct 22, 2026 https://github.com/rstackjs/rstack-cli/pull/590/commits/0a5e53a873b0a7828da80d7847e399ab9b7f87e3
Clear filters https://github.com/rstackjs/rstack-cli/pull/590/files
Please reload this pagehttps://github.com/rstackjs/rstack-cli/pull/590/files
Please reload this pagehttps://github.com/rstackjs/rstack-cli/pull/590/files
lib.rs https://github.com/rstackjs/rstack-cli/pull/590/files#diff-f5921325c98ea1bc1f3f5d4009deab65c40bffc463bce861dd118b3b5f5cd7fb
lib.rs https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
binding.d.cts https://github.com/rstackjs/rstack-cli/pull/590/files#diff-e40292389d98fa2c6660a5ff37431f76d5ad48646235bafc56e8587c3030f129
discoverPaths.ts https://github.com/rstackjs/rstack-cli/pull/590/files#diff-b8d8b857d34cbf4944377fe4aec873df2f56d610b41572829a2bd904df1f751d
discoveryCleanup.test.ts https://github.com/rstackjs/rstack-cli/pull/590/files#diff-843bcc65fc732893b0d2b46de17d829b2b1980374e9b0940a5c0aa31bfb6767b
crates/rstack-binding/src/lib.rshttps://github.com/rstackjs/rstack-cli/pull/590/files#diff-f5921325c98ea1bc1f3f5d4009deab65c40bffc463bce861dd118b3b5f5cd7fb
View file https://github.com/rstackjs/rstack-cli/blob/0a5e53a873b0a7828da80d7847e399ab9b7f87e3/crates/rstack-binding/src/lib.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/rstackjs/rstack-cli/pull/590/{{ revealButtonHref }}
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-f5921325c98ea1bc1f3f5d4009deab65c40bffc463bce861dd118b3b5f5cd7fb
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-f5921325c98ea1bc1f3f5d4009deab65c40bffc463bce861dd118b3b5f5cd7fb
crates/rstack-ignore/src/lib.rshttps://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
View file https://github.com/rstackjs/rstack-cli/blob/0a5e53a873b0a7828da80d7847e399ab9b7f87e3/crates/rstack-ignore/src/lib.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/rstackjs/rstack-cli/pull/590/{{ revealButtonHref }}
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-d4d6755c1cc38aec6fed9dae2ad861280bbae1f572042dfec364a85d841f8776
packages/rstack/binding.d.ctshttps://github.com/rstackjs/rstack-cli/pull/590/files#diff-e40292389d98fa2c6660a5ff37431f76d5ad48646235bafc56e8587c3030f129
View file https://github.com/rstackjs/rstack-cli/blob/0a5e53a873b0a7828da80d7847e399ab9b7f87e3/packages/rstack/binding.d.cts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/rstackjs/rstack-cli/pull/590/{{ revealButtonHref }}
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-e40292389d98fa2c6660a5ff37431f76d5ad48646235bafc56e8587c3030f129
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-e40292389d98fa2c6660a5ff37431f76d5ad48646235bafc56e8587c3030f129
packages/rstack/src/fmt/discoverPaths.tshttps://github.com/rstackjs/rstack-cli/pull/590/files#diff-b8d8b857d34cbf4944377fe4aec873df2f56d610b41572829a2bd904df1f751d
View file https://github.com/rstackjs/rstack-cli/blob/0a5e53a873b0a7828da80d7847e399ab9b7f87e3/packages/rstack/src/fmt/discoverPaths.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/rstackjs/rstack-cli/pull/590/{{ revealButtonHref }}
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-b8d8b857d34cbf4944377fe4aec873df2f56d610b41572829a2bd904df1f751d
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-b8d8b857d34cbf4944377fe4aec873df2f56d610b41572829a2bd904df1f751d
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-b8d8b857d34cbf4944377fe4aec873df2f56d610b41572829a2bd904df1f751d
https://github.com/rstackjs/rstack-cli/pull/590/files#diff-b8d8b857d34cbf4944377fe4aec873df2f56d610b41572829a2bd904df1f751d
packages/rstack/tests/fmt/discoveryCleanup.test.tshttps://github.com/rstackjs/rstack-cli/pull/590/files#diff-843bcc65fc732893b0d2b46de17d829b2b1980374e9b0940a5c0aa31bfb6767b
View file https://github.com/rstackjs/rstack-cli/blob/0a5e53a873b0a7828da80d7847e399ab9b7f87e3/packages/rstack/tests/fmt/discoveryCleanup.test.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/rstackjs/rstack-cli/pull/590/{{ revealButtonHref }}
Please reload this pagehttps://github.com/rstackjs/rstack-cli/pull/590/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.