Skip to content
zit Artifact [9b4f7ae683]
Login

Artifact [9b4f7ae683]

Artifact 9b4f7ae683dcc460835c07f5d56647e1a32605816433bc457bc016eeee24428a:

Manifest of check-in [9b4f7ae683] - memo: evict by recency instead of freezing at the budget

SubManifestMemo filled to 4 MiB then stopped interning, so the retained set froze on whatever arrived first and later resolves paid a lookup that could not hit. Measured at 30,000 files: working set 7,494 KiB against a 4,096 KiB ceiling, costing 23 points of hit rate (92->69%) and ~27% of wall time.

Now per-entry allocation with an LRU list, trimmed in beginWalk. Eviction cannot happen in resolve: TreeWalk frames borrow the views that resolved them, so freeing mid-walk is a use-after-free -- the arena hid that by never freeing. Budget 64 MiB, from the measured working set scaled to pkgsrc.

Same corpus: 92%, 0 evicted, 26s->19s. Unchanged where budget isn't binding.

repository.zig and git_import_verify.zig halves landed in 76a2905055, swept in by a concurrent commit. (#35) by dmestas on 2026-08-06 16:55:12.


C memo:\sevict\sby\srecency\sinstead\sof\sfreezing\sat\sthe\sbudget\n\nSubManifestMemo\sfilled\sto\s4\sMiB\sthen\sstopped\sinterning,\sso\sthe\sretained\sset\nfroze\son\swhatever\sarrived\sfirst\sand\slater\sresolves\spaid\sa\slookup\sthat\scould\nnot\shit.\sMeasured\sat\s30,000\sfiles:\sworking\sset\s7,494\sKiB\sagainst\sa\s4,096\sKiB\nceiling,\scosting\s23\spoints\sof\shit\srate\s(92->69%)\sand\s~27%\sof\swall\stime.\n\nNow\sper-entry\sallocation\swith\san\sLRU\slist,\strimmed\sin\sbeginWalk.\sEviction\ncannot\shappen\sin\sresolve:\sTreeWalk\sframes\sborrow\sthe\sviews\sthat\sresolved\nthem,\sso\sfreeing\smid-walk\sis\sa\suse-after-free\s--\sthe\sarena\shid\sthat\sby\snever\nfreeing.\sBudget\s64\sMiB,\sfrom\sthe\smeasured\sworking\sset\sscaled\sto\spkgsrc.\n\nSame\scorpus:\s92%,\s0\sevicted,\s26s->19s.\sUnchanged\swhere\sbudget\sisn't\sbinding.\n\nrepository.zig\sand\sgit_import_verify.zig\shalves\slanded\sin\s76a2905055,\sswept\nin\sby\sa\sconcurrent\scommit.\s(#35)
D 2026-08-06T16:55:12.095
F .fossil-settings/ignore-glob 1e7a8c10ad58e9784eb011bcc04beb837ad043d54285d340040fae68baf34f86
F .github/workflows/ci.yml 0f90c30d0ed6d091d65a6f982b83a081c85daba0dc56ddf7e5fec03e36f17310
F LICENSE 702ae7ff835a2a971dae11c5cae039803bf394b77a6d8ec9f18693e449eaaf26
F README.md 67bb1afa5bff033e7ce51ff92e782a8a22a5e64541c219b338147da4b1ad8f47
F build.zig 81c5a04b7dc45670de3ad77072cf5202ae032c77ee40994ec8e88b59d4e44c0f
F build.zig.zon dd3992bfc8da12e09a018c4697e38ddf79d07e225405af448ecca1ebefc3ea0c
F docs/RELEASE-NOTES-0.1.0.md 5ed8b4d35ee23b7990261f8af34f5fa3cc629baf63b0059d9f7bb2d2c48dc802
F docs/RELEASE-NOTES-0.1.1.md 59eea8c487dc1e9190c44c371656e430cd5621031a71c502ecbae96802712857
F docs/RELEASE-NOTES-0.1.2.md 7c968ab247ad1194f9163e625a37452ae72bdc23f3e66e8ea26b39f6e0a52914
F docs/RELEASE-NOTES-0.1.3.md c8f703b8717040f96a9b77ad132bbe309ba4368ead5362739e4d5ef23f2d3286
F docs/rfcs/draft-fossil-artifact-format-00.txt a6d542a5effeb41d0ea1e916058ccdc0a5819787f167ef1ebad7814f5680e7ad
F docs/rfcs/draft-fossil-delta-format-00.txt d8025d6d75322e33887c3334a4b9cc729960028b3c994ed01e5a474e4b388fd2
F docs/rfcs/draft-fossil-repo-state-00.txt b35480166caaf5d2c220086140a1d47034e9b4967689be8f4cd8779bbdbbc3da
F docs/rfcs/draft-fossil-submanifests-00.txt eaef2e2e36f4fab96ec4ba9654a8e7c02317086918f6e32e45fd62897dfd48e9
F docs/rfcs/draft-fossil-sync-protocol-00.txt 153d31ec11ff6636793514df711389883d5dd3111b97d3da295a30308fb400b4
F scripts/check-citations.py 61ee163492d3c3fbace223afe1872047d47db1277d398c1cfd3458391a52c579 x
F scripts/mirror-export.sh cc1130129e3c320cb9c1c5a05f505e45ece23d6bb3e0228da8e7ffe97bd5612b x
F scripts/soak.README 3a2f028e4f87a395b2b779ac63260fcb68a7a9c7ffc9fea5b065d5bc065c4719
F scripts/soak.sh e184de2f7396ae88c1266d565092282dc9aff151fab8f971840d867562f7d1be x
F src/annotate.zig 0a6b6728099e63c84681d1e5228ebb45fafb55d65df1720358247fd6e6532c63
F src/artifact.zig 42f08b15e0a38f3f85576d65dcc9a9675d422523cdd4e9f681043a2d67d8f0ca
F src/artifact_fuzz.zig 98000540f71b1f8fa8a33d2f1da885a6c9c2507108fb1bc95630c3b6b4fab0dc
F src/artifact_test.zig 13e3b0371b8d832030a183a5e6409d2d26d33db3ec7a0d940fd949b65b0856d2
F src/bisect.zig 70a0b3561380f216a0cea9ee9419bb1cd1b77d9b6a73786f41992dfd70ceb04a
F src/checkout.zig 64f348e09318a40c09964e9a84fbfdf6825793fe60bf8fae0a36a5598d780db8
F src/ci_test.zig 58bfed5b61497fef337c2557dce346de211a98442d7d92f63aaf1385cd7e8078
F src/cli.zig 4555d8127c54bf5d08356ed6a0abab01f53f6eea910151282f16615ad596ece0
F src/cmd/checkout.zig 7af438cabc278bfe964817ac388d8fab51e96154c105be8c016dce5f0862c37a
F src/cmd/history.zig c9c478c17e448333103a8bbdc92469efe06b869e982729889f47e4e1d4da93b5
F src/cmd/sync.zig b0783e5125ce7a186c53e92201277dd761e187a72a7d2f784188e287c8d2c9e6
F src/cmd/tracking.zig 22c6949b2c30745d3dc65454223c5786a51afe5427476bc3893cea9127472f9e
F src/cmd/verify.zig 59e75a6fefe9fdb951bc6bd1e3479b2fa557f80eabb65e8ea73d060d76ce2092
F src/container.zig 66b5496f49d2c7892bab36e35a92f31d8efcc22799c47908c7a9695e0aeb82fa
F src/container_test.zig 36dd76e86a86be036ed5350dcfb439d8791665360bed0a051fbcaf03e00c52c7
F src/control_paths.zig bc1a94f35675065cee6bf29e9236b443e2a1879ec2f9b65ef0141b1042a77219
F src/crc32.zig 57429c29f4a67a9bfaebad8d5826471f9ff26cfd085c5424bf8e0fccba376bb4
F src/crc32_fuzz.zig 2e6c3425989051ec826b0f1208fa9716808011e71c98ff0a5ae2e38de524caea
F src/delta.zig d489bfd517759021e4f006355c1b9f99717ceda2068739eb3a9f84e291a95a89
F src/delta_fuzz.zig 5e5c715722760d6f45c4eaaf9b5d495bf83c59e5869a0e0dd76bb57b007e3b53
F src/delta_test.zig a2774c0cb1799fab9eebf89bb85035e14a11af87f36349462d747b5c4b3b2b22
F src/dst.zig 5296a281d8c65b0ed2ff200c74f8fa3088f3d04bd4bd95badcddb6604ebeb95c
F src/e2e.zig f1878373b405fc224d32d19ded20788258e429660eae889453d0c7e14d976135
F src/extras.zig a105769691ce5fd17f67f037c3d773b6ac546798aa6d49ff1acc064d90b8b177
F src/fuzz_tests.zig 60f1db664e0540a05944c3ddb230125ecfaa971e30aaa18c1001c349e861a083
F src/git_fast_export.zig 5ce982e47159005c6cde2bfb81b62d5329a2bc4353659ce7fe70cccc21b9208a
F src/git_fast_export_test.zig 5c3e5e7a8aaeb2de28d75d651b3c81d7dc9d4d48990865d6c2deec37c0c08ce9
F src/git_import.zig 9711139658621beb10c17b8ff6d401da2a88615273fed9fa27d03a65bdc71970
F src/git_import_benchmark.zig 1f1d08f238257c1d2a5ec2433c337a889de871c51afc48bd00f9ea98bdf7de89
F src/git_import_benchmark_support.zig 1e9bc27aed47e63f315cb5c8a4fea2f43a4ccd410e4aeb35c4a8a81391588f68
F src/git_import_cli.zig 9e23f1b2f343a055b2d91a47717cbb6b70d093d90092b0758345ff6c435e8fe3
F src/git_import_cli_pipe_helper.zig 0cbb3eba0d56a9d4fb26b74f20565532372c4fbace16742d6943d04b13bdcdec
F src/git_import_cli_test.zig 896b410904f5230f14acbcaaf4b8af3557d08e801d9bba7a462f9efaa9053e22
F src/git_import_e2e.zig 775f056ce40637801fb00a025e3c2d59cd6be1a26be3f33d567b6698361b7fde
F src/git_import_impl.zig dfccb1ffa9d86b88922e2e258e28b1e3dab0f9b8679b82b8f7cd5f12a80f6540
F src/git_import_refs_test.zig a5caef97633703ae14210a5b3a3882d45b1b01e9de41a8919819414f70a98e0f
F src/git_import_test.zig b4d8ae803346cd75b04f26285b324da8e55594484d9dee6965c9805d316634a8
F src/git_import_verify.zig 049ace0eda7bbeaf8f42d7ab7d2a6820db3307339305fde35df20633edeaa88e
F src/logstore.zig da2fdb01dd1984d3dc879fb2055e2484a6690f028346f74543b337c0fc145496
F src/logstore_benchmark.zig dcfcd1d5ca8767e72440521c564f9b21b30d33b81cb2bf5334d1581aee0fc6bb
F src/logstore_fuzz.zig 87d73166e13152fae8290e17f5dc4030c0f8a2cc15b570e9b8d3d39d667332d7
F src/logstore_test.zig b8f121d3caf4c66b6a197bb0d973c6449696b5306e0ddeb4182f85da86fc6ae7
F src/main.zig 80afeb76e029f819c1649aca0aba3feae5ff6daab90c902eab6f0475384366d9
F src/managed.zig 3c774085304e91cc1e1d7cf82ec35f754e8a74f8870c3fb27e4c0af6abe3cb83
F src/merge3.zig 7fc52445688751bb8af30462549650660bcdbadabef54d892b6505d628248d0b
F src/merge3_fuzz.zig 83dcd4d9f2f9c208baa15e79ceeea80a0ebf47456a9b045f6d1c1efe3a927582
F src/pack.zig da549a0c79ab5806f1a9ae13f6f1242921c87b4aedc4bbf3ae75833afc591e06
F src/packaging_test.zig 87e272e5a1487c035fe2f71463fa68006a04764cb7910f8acbb88805f9d4114f
F src/release_assert_test.zig c4f044ebc6abdf46d0d61e4ae870ca1aa3c76487d61e14ddd61f14dfc05f69b0
F src/repocache.zig 32af5b54b011fef358a134273b5e6f43da4282122c05a85ad503a8f7796c6c66
F src/repoimage.zig 7d2dc2f3c145e10e2d9ba6997705fd61a0cc0aedde8e171c253163d1279ccdd5
F src/repository.zig 7fd5f37ca0f034d1c3f3537abccbd7acac1e3ed458807d81c94352dd5fcd5343
F src/repository_test.zig ffcb406f6a80facde45696b7af8ac321b3972babf636eb26b903c63b6c9f6b56
F src/repostate.zig 49f217ea0b44e1c6d0aa10af69851aa47ac66dd13aab7e3d61f8b8ce800eed8e
F src/repostate_test.zig 79f3f9ee2a2c625abdcace58f18068a07829a86bb09158c41175bd7e7b802ea3
F src/repoview.zig b5635f6a53b64f0d2533ee0640c39760672ffb53805f9233239c9a67981fe6d0
F src/rfc_vectors/artifact_a1_1_sha1_manifest.txt 82d8fc78b3fbf85efe80cb05e79db40c910bf0551e55b728c6f9c2ca7a42ddb6
F src/rfc_vectors/artifact_a1_2_sha3_technote.txt 832e850f83aab2e2a754aa97591109f7f05fb41e4126c7e71c88a59d6d17e55d
F src/rfc_vectors/artifact_a3_rcard_manifest.txt 47e412ef211f095e93275fadf527909e581eef42357d8437fc7e299bfc3e62a7
F src/rfc_vectors/submanifest_a2_1_leaf.txt aa9d404c14fe4dadd2ab398961fb0dfe650a877c061f650d8233a5888e920acf
F src/rfc_vectors/submanifest_a2_2_leaf.txt a50a722b465ed67b42ee0fbe61e4a19d6b1d22940ba5740e99e450921e3f52ea
F src/rfc_vectors/submanifest_a3_tree_manifest.txt 95fba39cbaba76fccb15571516659cea6a0e8a60123c3e7bda1397649d87c509
F src/rfc_vectors/submanifest_a4_1_leaf.txt b8e53d0c46cb57b616cc0ed6de5ce2453715be6157b73d247bcd5de8a6510aaa
F src/rfc_vectors/submanifest_a4_2_leaf.txt cff23e5ba71569397c1d816afa2dd0bfffc42339e402df36b63623846bd5fcbe
F src/rfc_vectors/submanifest_a4_3_leaf.txt 9604c3f9774f7472d7bff44d5965f30250358a3e7a18046eeaf5f9d83bd5cdc6
F src/rfc_vectors/submanifest_a4_tree_manifest.txt 02dad8d4451ecf930c0c8637cf66351579aa746aebf0cf10f249b2a6dea37caa
F src/rfc_vectors/submanifest_a5_delta_manifest.txt c74e37f650677523f7b6c2b4f094f766c4427a8ea180768ad75fa2de6bd14902
F src/rfc_vectors/submanifest_a5_encoding_leaf_1.txt e2899273b6a258ee18e053a79903d02469a275e2c80279c3657c7b803e2af6c0
F src/rfc_vectors/submanifest_a5_encoding_leaf_2.txt d7edb65681faaa4fd4f3541f04370421b057bf299098b781c7ec50d609869082
F src/rfc_vectors/submanifest_a5_encoding_leaf_3.txt c634332663f1cc0298aae6b61c799214a522877102cd6acdfe633f29fd79eeaf
F src/rfc_vectors/submanifest_a5_encoding_manifest.txt deb0cb8b56fddfc4eebbab0f928cbdb19e64a6ba568064d5b43663dc1ef7263f
F src/rfc_vectors/submanifest_a5_merge_leaf_1.txt 4bf4476e3aa41a1e3d26c85173c18fcd19f61871d4fc31215e523d7502078cc8
F src/rfc_vectors/submanifest_a5_merge_leaf_2.txt 6f3c993caa208b6fd44332d241676f9aa6a8c29dc7e28f287d5cdc088005a842
F src/rfc_vectors/submanifest_a5_merge_manifest.txt cef55b9b325fbc8abd59a044acafa57603c1b11a605e7fbba02d511a6da7a806
F src/rfc_vectors/submanifest_a5_three_level_interior_1.txt d42946de7b59647235f2166d964e9e5878bb1b3aba796b5e9c5e9dc719784e23
F src/rfc_vectors/submanifest_a5_three_level_interior_2.txt c1cc48fa9a3fbc34da7614632137890b4b09b33e750abc75514836c533e5f42e
F src/rfc_vectors/submanifest_a5_three_level_manifest.txt c136ef62f5f13c18d06564649da6022d9fe25cde5be15dd1ad10b04015096424
F src/rfc_vectors/sync_a1_round1_reply.txt 638813029b10f81303b88859279afb17095d7c779c993f4267870909acabbeb9
F src/rfc_vectors/sync_a1_round2_file_cards.txt 4fa397741f7521cc4181d5d6b04dc143187f57602384eaa688552115ecda27c2
F src/rfc_vectors/sync_a1_round2_reply.txt af956808190c79b37a384041690c36b78845b471d6c6c01d1cced6e3ee92e6b1
F src/rfc_vectors/sync_a2_reply.txt aa130a127cde210f793c7842960083c765e0ffc7b673374fabc8f0edfe03d763
F src/root.zig 292ee5328e3828ae457aa4d8dfbf08e210153d8f04b3a039b6f35ce2ccc71059
F src/serve.zig e8689e787bd7ad86d1dac427343206cbfbec67080aaed49269e0c6fe3b337786
F src/serve_benchmark.zig ff55c6148e961c9374ad60a756d9d997fadbc854d2a79d625235b580aefb8656
F src/serve_fuzz.zig 3c39ea768ffa37599e2cc00c588f053870766ab91500aceb0d844a4322174687
F src/sim/assembly_sweep.zig 65016d6ae15579b7e4c7db91ea4659b21dc67533b3807ad30619a3b517ef4ed1
F src/sim/checkout_sweep.zig 80bb6fef67c88a29a2b6bdc372996c9f2c4ad65db289cddebc7a427b42ee5d39
F src/sim/faulty_dir.zig 35daf0603aca3093b88498b51feccad8297f85f49a5c9a7a9d61b02e834081f5
F src/sim/faulty_file.zig 720be41b7f9bd64b9fd2586201e2f62d79c6d60452196eedeb9708b170093424
F src/sim/gen.zig 8189752613ae0c87a34d3ea9ec612db7f2fd8a785b72264957563db478019eb3
F src/sim/net.zig 8fb057012ce0a33f67c928cd696bc2761fea8ba4012b2daa33871b2ba5dfe772
F src/sim/oracle.zig bc9e272bb3332b7b715fbcc254b63583aa294b769d423f4be48593152717dfb2
F src/sim/shun_sweep.zig 8b7b2a106a9eaaeb4d041ec0faa061d51a8c2a866f8fcae5d245f814085b063d
F src/sim/storage_sweep.zig 1f1334ff9a66dd42820a5e378c1f67ea2529adb62ba79add06602323cac01ca6
F src/sim/sync_gen.zig 238d46942915b5c0e989dfc738b5927b5228468ea123e6f17b6fb593aa5cbf6e
F src/sim/sync_sweep.zig be94610d574a32ac7cf46a73eb1db3bcf44574f0f16bb1b983e369e797369956
F src/smoke.zig f92f9c0bca43eed62fde54e24b72cbd7b9a1f3071f5530d582fa0010cb4c20df
F src/storage.zig 512205eb629d5af8d50ad336f1ef49f53b455abd52ee2f9b56d20893cafad39f
F src/storage_benchmark.zig 9bc22dc2b683bd3924756979f0c2efa075429540ed23a80fec57327bb77b4890
F src/storestat.zig 297034abc95ce5408fd2d2280384558698c1e888c892a8a9776cb0cc0fc0d33f
F src/submanifest_benchmark.zig f2dfff89ef97406251120eeb2c351e6e31526fb8c15ca94369f0806f66980204
F src/submanifest_editor.zig 913cd7f7a26dd2b9c6a2a3cf4a6e4b9ed5b0e0489f9522bd6629a69a94ee026e
F src/submanifest_editor_test.zig aa2ba7de6b68cdf83e4f16d1cd8494cfb91631d45a61acbebe3208fbe86951d8
F src/submanifest_partition.zig 1d06059185986c977d20433ea8318f0e48e7f58a59a7432fb5e93de75a64c932
F src/sync.zig 9833411081853f1f1e8f72aa7ba353f80ebb892b02f3f18ef23bf81e372b7918
F src/sync_benchmark.zig bc0573274e9a2ee8cca0f2ac9defc63b02c75338d9f4a56500e06aa20e7aa086
F src/sync_driver.zig c20a7b08fba551294060fbc1f100f7dba4e929568c400d0a181c90d4f22bc5d8
F src/sync_driver_test.zig cc818b370aa62f64e93a634892388854c947b66b8258abcdd3c89f78d0c42acf
F src/sync_fuzz.zig 0ab9b7195535468db561cdcb405b7bf17536e2c6cb77a115ab1fe2badb001194
F src/sync_test.zig 31fa8001809f2b623fe4c1f28597e77770b0e22c8ccf253e692f245529c4fbb4
F src/tidy.zig 59fba497b6a9a39314fc24a08334321ecaad1c026cc0a7d35c67a1e2066458a8
F src/transport.zig e90b182d5c4c14c7316c084503583122ac776f82d3aee74d3c4ef64d18f146ce
F src/transport_fuzz.zig 43c310c51a6502fb2e049e6f43dfa151b1a632e6c885554ec6edce4ec62a8a48
F src/undo.zig a64d280ee2bee87497a26bcf0f9566195f07d4b60f0ed3a2a697df3b19ff1d23
F src/update.zig 3c1b0a42d56778a82502093b5974077442beaa6cedb014cbc053fff4d3ffd0ed
F src/update_test.zig 5185a994e37dc3d3d73e37facdc5d85548f14a54e8ca8e32a26216d2a8437818
F src/warmread_benchmark.zig 290887ab34f7777effcd4062c000456b1fcf8a59f84617a96a740d15a0245776
P 76a29050559f86a3b2348822db402a958fe4496635bafdc10780d576b5e4a277
R 24090b1243f97c8741624e9d86968d85
U dmestas
Z b9de882ee1e2aeb31bbda2c62b025ed9