Raphaël Gomès <rgomes@octobus.net> [Fri, 06 Mar 2020 17:51:03 +0100] rev 44538
rust-status: wrap `stat_dmap_entries` to ease profiling
Differential Revision: https://phab.mercurial-scm.org/D8250
Raphaël Gomès <rgomes@octobus.net> [Fri, 06 Mar 2020 17:48:30 +0100] rev 44537
rust-status: refactor handling of unknown files
Differential Revision: https://phab.mercurial-scm.org/D8249
Raphaël Gomès <rgomes@octobus.net> [Wed, 19 Feb 2020 11:14:30 +0100] rev 44536
rust-status: move to recursive traversal to prepare for parallel traversal
I have looked into traversing the working directory in parallel either
by a recursive or an iterative algorithm. The recursive approach won quite
decisively both in terms of performance and code readability.
You can look at my experiment here:
https://heptapod.octobus.net/Alphare/rayon-recursive-traversal
The chance of a stack overflow happening because the directories get too nested
seems slim.
This change does not yet do anything in parallel.
Differential Revision: https://phab.mercurial-scm.org/D8215
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 Mar 2020 15:10:11 +0100] rev 44535
rust-pathauditor: use interior mutability for use in multi-threaded contexts
The usual recommendation for using `RwLock` or `Mutex` is that if there are
about as many write as there are reads, use `Mutex`, and if there are more
reads than writes, use `RwLock`.
If after the main bottleneck (i.e. parallel traversal) is removed this shows
up on profiles, we should investigate using the `parking_lot` since we don't
need a poisoning API, or maybe move to different types of caches entirely.
Differential Revision: https://phab.mercurial-scm.org/D8213
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 Mar 2020 15:12:08 +0100] rev 44534
rust-pathauditor: actually populate the `audited_dirs` cache
I forgot this when rewriting this logic during the review process.
Differential Revision: https://phab.mercurial-scm.org/D8212
Raphaël Gomès <rgomes@octobus.net> [Wed, 04 Mar 2020 15:10:03 +0100] rev 44533
rust-pathauditor: actually split Windows shortname aliases at `~`
Right now, splitting with a max of 1 parts is useless.
Differential Revision: https://phab.mercurial-scm.org/D8211
Raphaël Gomès <rgomes@octobus.net> [Thu, 05 Mar 2020 10:24:45 +0100] rev 44532
debuginstall: add entry about re2 Rust bindings when applicable
Differential Revision: https://phab.mercurial-scm.org/D8226
Raphaël Gomès <rgomes@octobus.net> [Thu, 05 Mar 2020 10:24:10 +0100] rev 44531
rust-cpython: add `debug` module to expose debug information to Python
This will be mostly used in `debuginstall`.
Differential Revision: https://phab.mercurial-scm.org/D8225
Raphaël Gomès <rgomes@octobus.net> [Fri, 24 Jan 2020 11:06:01 +0100] rev 44530
rust-status: use bare hg status fastpath from Python
This change also adds a test case for subrepos.
Repeating the benchmark information from the `hg-core` commit:
On the Netbeans repository:
C: 840ms
Rust+C: 556ms
Mozilla Central with the one pattern that causes a fallback removed:
C: 2.315s
Rust+C: 1.700s
Differential Revision: https://phab.mercurial-scm.org/D7931
Raphaël Gomès <rgomes@octobus.net> [Fri, 17 Jan 2020 15:09:02 +0100] rev 44529
rust-status: update rust-cpython bridge to account for the changes in core
Differential Revision: https://phab.mercurial-scm.org/D7930