Commit Graph

914949 Commits

Author SHA1 Message Date
Botond Ballo
0d059931c0 Bug 1874199 - Split the handling of StickyFrame and ScrollFrame in SpatialNode::update_transform(). r=gw
The two cases share some code, but the next patch will add extra logic
specific to the StickyFrame case, which makes it cleaner to split them.

Differential Revision: https://phabricator.services.mozilla.com/D208236
2024-05-02 00:14:01 +00:00
Butkovits Atila
7e081144d7 Backed out 2 changesets (bug 1868423) for causing failures at test_xrayToJS.xhtml. CLOSED TREE
Backed out changeset fede39fbed59 (bug 1868423)
Backed out changeset 3f56b016ee4c (bug 1868423)
2024-05-02 03:46:38 +03:00
Mozilla Releng Treescript
c245cd212a no bug - Import translations from android-l10n r=release a=l10n CLOSED TREE 2024-05-02 00:19:37 +00:00
Randell Jesup
8d55ed8d4e Bug 1207753 - Fix mutex annotation in audio code r=padenot
Differential Revision: https://phabricator.services.mozilla.com/D130586
2024-05-01 21:32:56 +00:00
Mike Hommey
314c6ec544 Bug 1894549 - Make cpu.cores null instead of 0. r=xpcom-reviewers,mccr8
The telemetry schema doesn't want a value below 1, and 0 is a value that
doesn't make sense anyways. So in the case where we didn't get a proper
value, set to null, which the schema will accept.

Differential Revision: https://phabricator.services.mozilla.com/D209163
2024-05-01 21:30:20 +00:00
Jonathan Kew
7fd08efe72 Bug 1894498 - Remove unused method gfxASurface::CopyToARGB32ImageSurface. r=gfx-reviewers,lsalzman
According to searchfox, there are no callers.

Differential Revision: https://phabricator.services.mozilla.com/D209142
2024-05-01 21:05:05 +00:00
Edgar Chen
5686155143 Bug 1892976 - Propagate the error returned by nsIClipboard::GetData() over IPC; r=nika
Differential Revision: https://phabricator.services.mozilla.com/D208127
2024-05-01 20:49:09 +00:00
Edgar Chen
01c5a3987a Bug 1892976 - Stop throwing error on nsIClipboard::GetData() when the type isn't available on android; r=geckoview-reviewers,m_kato
Other platforms don't throw error; this patch makes android behave consistently
with other platforms.

Differential Revision: https://phabricator.services.mozilla.com/D208470
2024-05-01 20:49:08 +00:00
Daisuke Akatsuka
03fe5e116a Bug 1552815: Remove replaceFaviconData and replaceFaviconDataFromDataURL from nsIFaviconService r=mak
Depends on D192919

Differential Revision: https://phabricator.services.mozilla.com/D192920
2024-05-01 20:40:51 +00:00
Daisuke Akatsuka
82ee5059f3 Bug 1552815: Use setFaviconForPage() to tests that can apply r=mak
Depends on D192537

Differential Revision: https://phabricator.services.mozilla.com/D192919
2024-05-01 20:40:50 +00:00
Daisuke Akatsuka
daa9cee106 Bug 1552815: Use setFaviconForPage() instead of replaceFaviconData() r=mak,migration-reviewers,mconley
Depends on D192536

Differential Revision: https://phabricator.services.mozilla.com/D192537
2024-05-01 20:40:50 +00:00
Daisuke Akatsuka
22fab2b70a Bug 1552815: Use setFaviconForPage() instead of replaceFaviconDataFromDataURL() r=sync-reviewers,mak
Depends on D192535

Differential Revision: https://phabricator.services.mozilla.com/D192536
2024-05-01 20:40:50 +00:00
Daisuke Akatsuka
448dd613e7 Bug 1552815: Introduce setFaviconForPage() API to nsIFaviconService r=mak
Differential Revision: https://phabricator.services.mozilla.com/D192535
2024-05-01 20:40:49 +00:00
Nipun Shukla
036938035b Bug 1893131 - Fixed memory leak in readstrings.cpp r=application-update-reviewers,nrishel,bytesized
Differential Revision: https://phabricator.services.mozilla.com/D208495
2024-05-01 20:30:56 +00:00
Sam Foster
7e5533c799 Bug 1894389 - Update the donate link per MoFo's request. r=mkaply
Differential Revision: https://phabricator.services.mozilla.com/D209157
2024-05-01 20:27:47 +00:00
Mike Hommey
823106ac42 Bug 1894392 - Update wasi-libc build-time check for latest LLVM trunk. r=firefox-build-system-reviewers,ahochheiden
Submitted upstream at https://github.com/WebAssembly/wasi-libc/pull/493.

Differential Revision: https://phabricator.services.mozilla.com/D209098
2024-05-01 19:36:19 +00:00
Joel Maher
7a2adbd2e1 Bug 1893537 - Add reftest modifiers to errorsummary upon failure. r=gbrown
Differential Revision: https://phabricator.services.mozilla.com/D209156
2024-05-01 19:25:43 +00:00
Daniel Minor
05c2ccf272 Bug 1868423 - Update shipping instructions; r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D209147
2024-05-01 19:12:53 +00:00
Daniel Minor
132cf56dbe Bug 1868423 - Ship New Set Methods; r=mgaudet
As well shipping new set methods, this collapsed a few #ifdef NIGHTLY blocks together.

Differential Revision: https://phabricator.services.mozilla.com/D209144
2024-05-01 19:12:52 +00:00
Emilio Cobos Álvarez
73271a6e76 Bug 1894135 - Fix tooltip / unaccelerated transparent window rendering regression. r=win-reviewers,rkraesig
This restores the "repaint the world" code-path only for unaccelerated
windows, which apparently rely on it.

Differential Revision: https://phabricator.services.mozilla.com/D209035
2024-05-01 19:07:50 +00:00
Mike Conley
6093445ff2 Bug 1894301 - Avoid schema violation before writing backup manifest when not signed into an account. r=backup-reviewers,kpatenio
Differential Revision: https://phabricator.services.mozilla.com/D209040
2024-05-01 19:01:56 +00:00
Greg Mierzwinski
c725015b9b Bug 1890379 - Increase pdfpaint page cycles, and enable subtest alerting. r=perftest-reviewers,aglavic
This patch increases the pdfpaint page cycles to 15, and also enables subtest alerting for the individual PDFs.

Differential Revision: https://phabricator.services.mozilla.com/D208743
2024-05-01 18:56:52 +00:00
Greg Mierzwinski
7ca38bf702 Bug 1894367 - Update perfdocs with profiler features changes. r=kshampur,perftest-reviewers DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D209133
2024-05-01 18:55:45 +00:00
James Graham
11d7f4b56b Bug 1894465 - Update mozdevice version to 4.1.2, r=gbrown
Differential Revision: https://phabricator.services.mozilla.com/D209134
2024-05-01 18:46:44 +00:00
Dianna Smith
d8a79883a1 Bug 1891605 - Change update check interval for non-nightly channels to 6 hours r=release-managers,application-update-reviewers,nalexander,bytesized,RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D207485
2024-05-01 18:44:33 +00:00
gela
e08fb78e4b Bug 1499453 - Use GeckoResult.ALLOW/DENY shortcuts in GeckoView code r=android-reviewers,owlish,tchoh
Differential Revision: https://phabricator.services.mozilla.com/D208415
2024-05-01 18:08:13 +00:00
James Teow
e9b9a5408b Bug 1851907 - Remove SERP Telemetry v1 feature gating pref - r=scunnane
Differential Revision: https://phabricator.services.mozilla.com/D207947
2024-05-01 17:41:04 +00:00
Norisz Fay
1704458d1c Backed out changeset 8155e4688d45 (bug 1894424) for causing reftest failures CLOSED TREE 2024-05-02 01:25:08 +03:00
Norisz Fay
908821ac99 Backed out changeset 4459d106a011 (bug 1893661) for causing failures on test_moz_button.html 2024-05-02 00:58:15 +03:00
Norisz Fay
f8bdc8e5bb Backed out changeset c89881d85f2e (bug 1894022) as requested by dev 2024-05-02 00:56:33 +03:00
Butkovits Atila
cb1e78cecb Backed out 2 changesets (bug 1893458, bug 1890634) for causing bustages at TaskbarPinningMetricsTests.cpp. CLOSED TREE
Backed out changeset 29ad5906bfb0 (bug 1890634)
Backed out changeset bfcfe75b775a (bug 1893458)
2024-05-02 00:22:14 +03:00
Butkovits Atila
5dab53be17 Backed out changeset a8e17efc1b46 (bug 1888227) for causing Xpcshell failures at test_cookies_privatebrowsing.js. 2024-05-02 00:20:22 +03:00
Noah Bond
169dae7fd2 Bug 1894120 - Fix bug causing duplicate CFRs to display r=android-reviewers,matt-tighe
Differential Revision: https://phabricator.services.mozilla.com/D208949
2024-05-01 17:24:54 +00:00
Rob Lemley
32fab3f035 Bug 1885361 - Convert mozlint CI jobs to use skip-unless-mozlint optimization. (part 3) r=taskgraph-reviewers,ahal
Differential Revision: https://phabricator.services.mozilla.com/D207579
2024-05-01 17:15:34 +00:00
Rob Lemley
ce6e44b823 Bug 1885361 - Convert mozlint CI jobs to use skip-unless-mozlint optimization. (part 2) r=taskgraph-reviewers,ahal
Differential Revision: https://phabricator.services.mozilla.com/D207578
2024-05-01 17:15:33 +00:00
Michael Hughes
44a3c9e85c Bug 1890634 - add telemetry for tab pinning r=nrishel
Differential Revision: https://phabricator.services.mozilla.com/D207789
2024-05-01 17:11:53 +00:00
Michael Hughes
40d0fc5e64 Bug 1893458 - attempt to fix tab pinning not working sometimes on the first time r=nalexander,nrishel
Differential Revision: https://phabricator.services.mozilla.com/D208669
2024-05-01 17:11:53 +00:00
Nuohan Li
6d94b98e3a Bug 1894306 - WebCrypto web platform tests failure due to wrong return value r=jschanck
Differential Revision: https://phabricator.services.mozilla.com/D209042
2024-05-01 16:31:33 +00:00
az
476ed793c6 Bug 1848073 - Fix coverity UNUSED_VALUE error in OggDemuxer::SeekBisection r=padenot
`mustBackoff` is set to `false` immediately before entering a `while(true)` loop. The loop's final line is `break`, meaning that reaching a `continue` statement is necessary to loop. However, each `continue` statement is preceded by assigning `mustBackoff` to `true`. This means that `mustBackoff` will always evaluate to `false` for this loop's first iteration, and `true` for any subsequent iterations. As `mustBackoff` is only evaluated once and the evaluation happens at the beginning of the loop, assigning `mustBackoff` to `false` afterwards will have no impact on execution and the line can safely be removed.

Differential Revision: https://phabricator.services.mozilla.com/D185966
2024-05-01 16:23:39 +00:00
Andrew Osmond
364416fb13 Bug 1887559 - Ensure we delete temporary zip files when installing GMP plugins. r=media-playback-reviewers,alwu
Differential Revision: https://phabricator.services.mozilla.com/D207945
2024-05-01 16:15:11 +00:00
Hanna Jones
7a1a08adcc Bug 1893661 - fix moz-button icon buttons when label is empty string r=kcochrane,reusable-components-reviewers,mstriemer
Differential Revision: https://phabricator.services.mozilla.com/D208751
2024-05-01 16:01:16 +00:00
Heitor Neiva
9cbf289920 Bug 1889223 - Switch notarization behavior to apple_notarization_stacked r=releng-reviewers,taskgraph-reviewers,bhearsum
Differential Revision: https://phabricator.services.mozilla.com/D208808
2024-05-01 15:42:34 +00:00
Michael Froman
577412e4ee Bug 1889460 - pt2 - add error checking for resume cases in prep_repo.sh. r=dbaker DONTBUILD
- detect failed upstream merge from fetch
- make the user specify they want to rerun the script

Differential Revision: https://phabricator.services.mozilla.com/D209069
2024-05-01 15:19:40 +00:00
Michael Froman
69d71ddace Bug 1889460 - pt1 - add sanity checking for resume cases in fetch_github_repo.py. r=dbaker DONTBUILD
- make sure we've fetched upstream (upstream/master exists)
- add sanity check for old branch-head to fetch

Differential Revision: https://phabricator.services.mozilla.com/D209068
2024-05-01 15:19:40 +00:00
edgul
d98f60f3b1 Bug 1888227 - Fix cookie clearing in private browsing test on Android Fission r=valentin,timhuang,necko-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D207063
2024-05-01 15:04:31 +00:00
Pierre-Yves David
3d9d459e52 Bug 1894160: hgignore: simplify the egginfo pattern; r=sheehan
This lookahead expression prevents the use of more modern and efficient regexp
engine. This slows down "hg status" and other operations.

Since the exception are only about vendored content whose addition is managed by
a script (`match vendor`), that script can deal with this exception by itself,
and it does since the last changeset..

So we drop the exception to unlock various performance improvements for status.

### Why does this improves things?

There improvement can come from different sources:

* Using the "re2" regexp engine to match ignored files and directories provide
  a performance boost for vanillia mercurial installation and fs-monitor one in
  various cases. To benefit from it, just install the "google-re2" packages and
  mercurial will automatically uses it.

* Installing a Mercurial compiled with the Rust extensions unlock the use of a
  more efficient code path for status that performs the necessary action in a
  smarter and parallel ways, providing a significant boost. These extensions
  are available on Linux and MacOs and some distribution have started to enable
  them by default.

* Moving to a more modern "dirstate" format. The dirstate tracks the state of
  the working copy. For a couple of years, Mercurial has a new format for this
  information that is more efficient to read and update and tracks finer
  grained information. This allow substantial improvement in the way we run
  status. The Rust extensions are required to efficiently using this format.

* Using a pure-rust executable. Mercurial has a pure rust version (called
  "rhg") that can handled a limited set of commands. It run without the
  overhead of starting and initializing Python providing another very
  significant boost to performance… but obviously requiring the Rust code path
  to be usable.

### Quick Conclusion of the Benchmarks

(Putting that first for people who just want a quick read.)

* fsmonitor struggle on working copy with many modication,

* Using the "re2" binding from "google-re2" helps, especially for these cases

* On typical mozilla developer machine, the Rust variants match the fsmonitor
  performance at worse and exceed it in multiple cases. Especially it does not
  stuggle with the "many modification" case.

* On smaller machine, the Rust variants still provide a solid and reliable
  performance win accross all operation. That make them preferable to fsmonitor.

* The rust variants matches "git status" performance on equivalement workload.
  The pure Rust version significantly outperforms it.


### Benchmarks descriptions

Machines
--------

We ran benchmark on two different machines:

* A i7-7700K 4 physical / 4 logical cores released in Jan 2017

  To see performance in "low" parallelism case.

* A i9-9900K 8 physical / 16 logical cores released in October 2019

  To see performance in a "high" parallism case.

In both cases the repositories lived in a btrfs file system backed by solid
state disks (ssd or nvme) and the machines had enough ram to keep caches in
memory.

I also ran benchmarks on a more modern i7-1370P release on Jan 2023, and the
results were consistent with the i9-9900K ones.

Variants
--------

Benchmarks were run with multiple variants of Mercurial:

  * python-re:
    * no Rust extensions used,
    * regex engine is the std-lib "re" module.
    * fsmonitor is disabled
    * using the dirstate-v1 format
  * python-re2:
    * no Rust extensions used,
    * regex engine is the std-lib "re" module.
    * fsmonitor is disabled
    * using the dirstate-v1 format
  * fsmonitor-re:
    * no Rust extensions used,
    * regex engine is the std-lib "re" module.
    * fsmonitor is enabled and working at its best
    * using the dirstate-v1 format
  * fsmonitor-re2:
    * no Rust extensions used,
    * regex engine is the std-lib "re" module.
    * fsmonitor is enabled and working at its best
    * using the dirstate-v1 format
  * rust-ds1:
    * Rust extensions are used,
    * regex engine from the Rust "regexp" crate.
    * fsmonitor is disabled
    * using the dirstate-v1 format
  * rust-ds2:
    * Rust extensions are used,
    * regex engine from the Rust "regexp" crate.
    * fsmonitor is disabled
    * using the dirstate-v2 format
  * rgh-ds1:
    * Pure rust executable is used,
    * regex engine from the Rust "regexp" crate.
    * fsmonitor is disabled
    * using the dirstate-v1 format
  * rgh-ds2:
    * Pure rust executable is used,
    * regex engine from the Rust "regexp" crate.
    * fsmonitor is disabled
    * using the dirstate-v2 format

Commands
--------

We ran two kind of operations:

* `hg status` with the default output.
    This command need to search for ignored and unknown files.
    In this case improving the regex engine usually provides significant performance gain.

* `hg status --modified --added --removed --deleted`.
    This command only need to check the state of tracked files.
    In this case, improving the regex engine does not have much effect, but it
    is interesting to compare the performance of the various implementation.

Working copies
--------------

Case 1: pristine-928b0540e421

    Working copy parent is 928b0540e421
      * 341 759 tracked files
      *  21 253 directories
      * no untracked files

Case 2: pristine-8f96f8c756ae

    Working copy parent is 8f96f8c756ae
        (an older changeset I had dirty working copy for)
      * 246 855 tracked files
      *  15 047 directory
      * no untracked files

Case 3: clean-8f96f8c756ae

    Working copy parent is 8f96f8c756ae
      * 246 855 tracked files
      *  23 540 directories
      *  79 901 ignored files

Case 4: dirty-8f96f8c756ae

    Working copy parent is 8f96f8c756ae
      * 246 855 tracked files
      *  33 720 directories
      * 244 386   clean files
      *   1 065 modified files
      *     247   added files
      *   1 040 removed
      *     364 missing files
      *  63 455 unknown files
      *  79 915 ignored files

### Results Analysis

(full, raw number after this section)

About fsmonitor
---------------

Before diving into the improvements related to regex engine, we can note that
the benchmark show that fsmonitor provides a good boost in the pristine/clean cases, and
a noticeable but disappointing improvement in the very dirty case.

                           python-re fsmonitor-re
    pristine-928b0540e421:     1.884 →      0.293 (-85%)
    dirty-8f96f8c756ae:        2.157 →      1.440 (-33%)

Surprisingly when only listing tracked file (during commit for example), fsmonitor actually
get counter productive in the very dirty case

    pristine-928b0540e421:     1.313 →      0.297 (-77%)
    dirty-8f96f8c756ae:        0.993 →      1.272 (+28%)

In addition to being disappointing in the the very dirty case. The performance
with fsmonitor collapses when fsmonitor cannot use its cache. I observed 4
seconds execution time while setting up the brenchmark..

Improvement without involving Rust:
-----------------------------------

Using the re2 binding from the google-re2 package provides a small improvement
to plain python execution (about 15%). This case is relevant because this is
the one that will be used when fsmonitor cannot help or start.

                           python-re  python-re2
    pristine-928b0540e421:      1.884 →   1.650 (-15%)
    dirty-8f96f8c756ae:         2.157 →   1.718 (-20%)

It does not make a difference when only listing tracked files as the hgignore is not involved.

                           python-re  python-re2
    pristine-928b0540e421:      1.313 →    1.332
    dirty-8f96f8c756ae:         0.993 →    0.998

However, surprisingly, it helps fsmonitor quite a lot in in the dirty case
(dirty-8f96f8c756ae). Bringing fsmonitor performance in line with the plain
python one.

                   fsmonitor-re fsmonitor-re2
    list-unknown          1.440 →       1.012 (-30%)
    tracked only          1.272 →       0.840 (-34%)

So to conclude being able to use the "re2" regex engine save up to ⅓ of the
runtime of some operation and never slow things down. So that's a good win.


Improvement involving Rust variants:
------------------------------------

For the pristine-928b0540e421 case (all tracked files clean, no ignored files),
Rust provides speed boost "equivalent" (or better) to the one from fsmonitor.
The precise comparison depends of the parallelism level.

With the 4 physical / 4 logical core machine. The Python+Rust version is slower
than fsmonitor, using dirstate-v2 helping to close some of the gap with
fsmonitor.  Using dirstate-v2 also allow the "rhg" version to become twice
faster than the fsmonitor version. Also keep in mind that even when a bit
slower, the performance of the rust version will be much more stable than
fsmonitor.

    python-re2:    1.650
    fsmonitor-re2: 0.296 (-82%)
    rust-ds1:      0.542 (-67%)
    rust-ds2:      0.368 (-77%)
    rhg-ds1:       0.401 (-75%)
    rhg-ds2:       0.132 (-92%)

With the 8 physical / 16 physical code machine, the Rust catch up with
fsmonitor performance much quicker. The dirstate-v1 is a little slower, but the
dirstate-v2 version is already faster. The pure rust is always faster.

    python-re2:    1.430
    fsmonitor-re2: 0.278 (-80%)
    rust-ds1:      0.359 (-74%)
    rust-ds2:      0.259 (-81%)
    rhg-ds1:       0.235 (-83%)
    rhg-ds2:       0.052 (-96%)


Talking about parallism. We see that the code scale well, doubling the
number of core bring about twice the performance which is great.


    pristine-928b0540e421     4/4    8/16
        rhg-ds1:            0.401 → 0.235 (× 1.70)
        rhg-ds2:            0.132 → 0.052 (× 2.54)
    clean-8f96f8c756ae
        rhg-ds1:            0.286 → 0.169 (× 1.70)
        rhg-ds2:            0.101 → 0.040 (× 2.52)
    dirty-8f96f8c756ae
        rhg-ds1:            0.380 → 0.234 (x 1.62)
        rhg-ds2:            0.232 → 0.124 (x 1.87)


Comparing with git performance on the pristine-928b0540e421 case also yield
great results. Surprisingly, the variant with a Python overhead still beat (or
match) git performance in this case. The pure Rust executable is always
significantly faster. Below is a comparison grouped by comparable formats.

    git status -s: 0.554 (without untracked cache)
    rust-ds1:      0.359 (- 35%)
    rhg-ds1:       0.235 (- 57%)

    git status -s: 0.232 (with untracked cache)
    rust-ds2:      0.259 (+ 11%)
    rhg-ds2:       0.052 (- 77%)


The clean-8f96f8c756ae case (all tracked clean, many ignored files) show result
result similar to pristine-928b0540e421. "Low" parallism give good gains
without fully matching the fs monitor performance. The High parallism provide
similar performance. In both case we gain the benefit of more stable
performances.

        (cores)          4/4           8/16
        python-re2:    1.282        | 1.119
        fsmonitor-re2: 0.243 (-81%) | 0.225 (-80%)
        rust-ds1:      0.416 (-68%) | 0.282 (-75%)
        rust-ds2:      0.303 (-76%) | 0.222 (-80%)
        rhg-ds1:       0.286 (-78%) | 0.169 (-85%)
        rhg-ds2:       0.101 (-92%) | 0.040 (-96%)

Things change quite a lot in the dirty-8f96f8c756ae case, where fsmonitor
struggled. The Rust variants still provides great speedup, significantly
beating the fsmonitor variants for both machines. (comparing to fsmonitor-re
this time)

        (cores)          4/4           8/16
        fsmonitor-re:  1.440        | 1.501
        fsmonitor-re2: 1.012 (-30%) | 1.051 (-30%)
        rust-ds1:      0.624 (-56%) | 0.519 (-65%)
        rust-ds2:      0.553 (-62%) | 0.483 (-68%)
        rhg-ds1:       0.380 (-73%) | 0.234 (-84%)
        rhg-ds2:       0.232 (-83%) | 0.124 (-91%)


Things is confirmed in the "listing tracked only" version of dirty-8f96f8c756ae
case were fs monitor was not really improving the situation compared to Python.

        (cores)          4/4           8/16
        python-re:     0.993        | 0.843076
        python-re2:    0.998        | 0.843324
        fsmonitor-re:  1.272 (+28%) | 1.291313 (+53%)
        fsmonitor-re2: 0.840 (-15%) | 0.844374
        rust-ds1:      0.364 (-63%) | 0.273305 (-68%)
        rust-ds2:      0.301 (-70%) | 0.233230 (-72%)
        rhg-ds1:       0.231 (-77%) | 0.153346 (-82%)
        rhg-ds2:       0.099 (-90%) | 0.039545 (-95%)

### Full benchmark numbers for `hg status`

Here are the exhaustive number, all time in seconds.

Case 1: pristine-928b0540e421

    (4/4 cores i7-7700K Jan 2017)

        python-re:     1.884
        python-re2:    1.650
        fsmonitor-re:  0.293 (more about 4 second when confused)
        fsmonitor-re2: 0.296
        rust-ds1:      0.542
        rust-ds2:      0.368
        rhg-ds1:       0.401
        rhg-ds2:       0.132

    (8/16 cores i9-9900K CPU October 2018)

        python-re:     1.674
        python-re2:    1.430
        fsmonitor-re:  0.272
        fsmonitor-re2: 0.278
        rust-ds1:      0.359
        rust-ds2:      0.259
        rhg-ds1:       0.235
        rhg-ds2:       0.052

        For reference, I also gathered timing for `git status` on this machine and repo

        git status -s: 0.554 (without untracked cache)
        git status -s: 0.232 (with untracked cache)

Case 2: pristine-8f96f8c756ae

    (4/4 cores i7-7700K)

        python-re:     1.306
        python-re2:    1.227
        fsmonitor-re:  0.243
        fsmonitor-re2: 0.242
        rust-ds1:      0.416
        rust-ds2:      0.308
        rhg-ds1:       0.287
        rhg-ds2:       0.102

    (8/16 cores i9-9900K CPU)

        python-re:     1.131
        python-re2:    1.076
        fsmonitor-re:  0.222
        fsmonitor-re2: 0.222
        rust-ds1:      0.279
        rust-ds2:      0.222
        rhg-ds1:       0.168
        rhg-ds2:       0.038

Case 3: clean-8f96f8c756ae

    (4/4 cores i7-7700K)

        python-re:     1.294
        python-re2:    1.282
        fsmonitor-re:  0.241
        fsmonitor-re2: 0.243
        rust-ds1:      0.416
        rust-ds2:      0.303
        rhg-ds1:       0.286
        rhg-ds2:       0.101

    (8/16 cores i9-9900K CPU)

        python-re:     1.170
        python-re2:    1.119
        fsmonitor-re:  0.224
        fsmonitor-re2: 0.225
        rust-ds1:      0.282
        rust-ds2:      0.222
        rhg-ds1:       0.169
        rhg-ds2:       0.040

Case 4: dirty-8f96f8c756ae

    (4/4 cores i7-7700K)

        python-re:     2.157
        python-re2:    1.718
        fsmonitor-re:  1.440
        fsmonitor-re2: 1.012
        rust-ds1:      0.624
        rust-ds2:      0.553
        rhg-ds1:       0.380
        rhg-ds2:       0.232

    (8/16 cores i9-9900K CPU)

        python-re:     2.031
        python-re2:    1.560
        fsmonitor-re:  1.501
        fsmonitor-re2: 1.051
        rust-ds1:      0.519
        rust-ds2:      0.483
        rhg-ds1:       0.234
        rhg-ds2:       0.124

### Benchmark numbers for `hg status --modified --added --removed --deleted`

With this invocation, status no longer need to list directory content (or use
cache to skip that step). Status just need to check the known list of tracked
files.

Case 1: pristine-928b0540e421

    (4/4 cores i7-7700K CPU)

        python-re:     1.313
        python-re2:    1.332
        fsmonitor-re:  0.297
        fsmonitor-re2: 0.296
        rust-ds1:      0.455
        rust-ds2:      0.369
        rhg-ds1:       0.316
        rhg-ds2:       0.130

    (8/16 cores i9-9900K CPU)

        python-re:     1.129
        python-re2:    1.133
        fsmonitor-re:  0.273
        fsmonitor-re2: 0.271
        rust-ds1:      0.330
        rust-ds2:      0.244
        rhg-ds1:       0.207
        rhg-ds2:       0.050

        For reference, I also gathered timing for `git status` on this machine and repo

        git status -s --untracked-files=no: 0.110

Case 2: pristine-8f96f8c756ae

    (4/4 cores i7-7700K)

        python-re:     0.993
        python-re2:    0.987
        fsmonitor-re:  0.241
        fsmonitor-re2: 0.243
        rust-ds1:      0.358
        rust-ds2:      0.307
        rhg-ds1:       0.228
        rhg-ds2:       0.100

    (8/16 cores i9-9900K CPU)

        python-re:     0.856
        python-re2:    0.839
        fsmonitor-re:  0.221
        fsmonitor-re2: 0.222
        rust-ds1:      0.262
        rust-ds2:      0.221
        rhg-ds1:       0.152
        rhg-ds2:       0.038

Case 3: clean-8f96f8c756ae

    (4/4 cores i7-7700K)

        python-re:     0.973
        python-re2:    0.979
        fsmonitor-re:  0.242
        fsmonitor-re2: 0.242
        rust-ds1:      0.357
        rust-ds2:      0.304
        rhg-ds1:       0.224
        rhg-ds2:       0.098

    (8/16 cores i9-9900K CPU)

        python-re:     0.838
        python-re2:    0.837
        fsmonitor-re:  0.222
        fsmonitor-re2: 0.221
        rust-ds1:      0.263
        rust-ds2:      0.219
        rhg-ds1:       0.152
        rhg-ds2:       0.037


Case 4: dirty-8f96f8c756ae

    (4/4 cores i7-7700K)

        python-re:     0.993
        python-re2:    0.998
        fsmonitor-re:  1.272
        fsmonitor-re2: 0.840
        rust-ds1:      0.364
        rust-ds2:      0.301
        rhg-ds1:       0.231
        rhg-ds2:       0.099

    (8/16 cores i9-9900K CPU)

        python-re:     0.843
        python-re2:    0.843
        fsmonitor-re:  1.291
        fsmonitor-re2: 0.844
        rust-ds1:      0.273
        rust-ds2:      0.233
        rhg-ds1:       0.153
        rhg-ds2:       0.040

Differential Revision: https://phabricator.services.mozilla.com/D208966
2024-05-01 14:54:59 +00:00
Pierre-Yves David
cb9b39fc56 Bug 1894160: vendor-python: explicitly add the content of the .egg-info directory; r=ahochheiden
We are about to change the hgignore to remove the lookahead expression. This
means the "*.egg-info/" directories will be ignored everywhere again. To
prevent this causing issue with the vendoring logic, we add a new call to
add-remove explicitly listing file in ".egg-info" directories to override the
ignore pattern.

Once tracked, the ignore pattern will no longer affects these file and all will
be good.

Check the next commit for more information on the motivation.

Differential Revision: https://phabricator.services.mozilla.com/D208968
2024-05-01 14:54:58 +00:00
Pierre-Yves David
debf431a77 Bug 1894160: hgignore: drop the negative lookahead assertion around vscode; r=sheehan
This lookahead prevents the use of more modern and efficient regexp engine
slowing down status.

In practice we only have two vscode directory tracked in Mercurial:
* the root one, that see active development,
* the one in "remote/test/puppeteer/" that was never touched since its addition.

It is easy to not match the root in the hgignore, but harder for the other one.

Please note that once a file is tracked by Mercurial, the fact it is ignored or
not no longer matters, so in practice this will only affect "future" addition.

However the history shows that this addition are extremely rare (one in over 15
years) and that the only occurrence is some venturing, where the vscode file
seems less important.

So dropping this exception seems fine, the small inconvenience of having to
manually add the file in an hypothetical future is negligible compared to
concrete performance improvement of common operation to everyone.

See the other changesets dropping the second lookahead patterns for performance
number.

Differential Revision: https://phabricator.services.mozilla.com/D208967
2024-05-01 14:54:58 +00:00
Mike Conley
d46f8f0571 Bug 1892105 - Flesh out test_backup.py with some data to backup and recover. r=backup-reviewers,kpatenio
This patch updates test_backup.py to write some testing data into various data stores
that BackupService is backing up, create a backup, recover from that backup, and check
to see if the written data exists in the recovered profile.

This isn't exactly exhaustive - there are a number of data stores that aren't accounted
for here yet. Chiefly AddonsBackupResource and SessionStoreBackupResource (bug 1894004),
but also:

1. FxA sign-in status
2. Logins backups
3. Site Security Service State
4. ProfileAge data
5. WebRTC device ID mappings
6. Favicons
7. XUL Store data
8. Content preferences
9. Containers preferences
10. File handler preferences
11. Search preferences
12. user.js and chrome/ customizations

Still, this is a start, and certainly better than nothing. Bug 1894089 has been filed
to add more data to test the listed 12 items.

Differential Revision: https://phabricator.services.mozilla.com/D208939
2024-05-01 14:54:35 +00:00
Mike Conley
44105aba59 Bug 1892105 - Add a postRecoveryComplete Promise getter to BackupService. r=backup-reviewers,kpatenio
This Promise is mainly for use by Marionette tests to know when to check
data stores that might have been updated by postRecovery steps.

Differential Revision: https://phabricator.services.mozilla.com/D208938
2024-05-01 14:54:35 +00:00