Skip to content
Snippets Groups Projects
Raphaël Gomès's avatar
Raphaël Gomès authored
Some commands (`hg purge` notably) register the `traversedir` callback on their
matcher to run said callback every time a directory is traversed.

This is the first of three patches, further broadening Rust support for status.

Unfortunately, there is no way around collecting a full `Vec` (or any other
owned datastructure, like a radix tree) and pushing it back up the Python layer
since keeping the Python callback in a closure would mean giving up
multithreading because of the GIL, which is obviously unacceptable.

Performance is still a lot better than the Python+C path.

Running `hg clean/purge` on Netbeans' repo (100k files):

```
     | No-op | 30% unknown
--------------------------
Rust | 1.0s  | 1.67s
C    | 2.0s  | 2.87s
```

Differential Revision: https://phab.mercurial-scm.org/D8518
c802ec4f
History
Name Last commit Last update