~/talk

A journey to performance: using Rust in Mercurial

Talkat linux.conf.au 2021 · 2021-01-23..01-25· [rust]
slides:none on file

Mercurial replaces its flat dirstate with a compact, mmap-backed, append-only tree and rewrites hot paths in Rust, using Rayon and crossbeam for parallel directory traversal plus mtime caching to skip work; on large repos status moves from ~1.1s to ~0.04s (×25) in one reported case and earlier Rust rewrites give up to ×4 speedups versus the Python+C mix. The new dirstate format is vacuumable and safe for concurrent readers and already lands real-world wins on Mozilla-sized repositories. ×25 faster on Mozilla: 1.1s → 0.04s append-only mmap-backed dirstate with mtime caching

AI-written summary · about

  1. 0:00Introduction
  2. 1:46About Raphal
  3. 3:33Maintainability
  4. 6:37Attack from both sides
  5. 9:13Status command
  6. 10:15Multithreading
  7. 13:29Unrealistic target
  8. 14:50Performance comparison
  9. 15:52dirstate
  10. 16:55filesystem
  11. 18:16costs
  12. 19:52tree
  13. 21:55data
  14. 23:47appendonly storage
  15. 24:32dependonly storage
  16. 25:45docket
  17. 27:35memory usage
  18. 28:47tree optimization
  19. 30:38recursive implementation
  20. 34:14not reliable
  21. 35:47mtime caching
  22. 36:54durstate
  23. 37:08update
  24. 38:03file systems
  25. 41:17red deer
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.