Fune (船) is a Firefox ESR fork with the intent of bringing back the Firefox 2.0 look and overall decrapifying the browser.
Find a file
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
.cargo Bug 1884879 - [css-syntax] Implement recent syntax spec change to avoid parsing custom properties that look like selectors. r=firefox-style-system-reviewers,zrhoffman,supply-chain-reviewers,glandium 2024-04-30 23:49:44 +00:00
.github/workflows
.vscode
accessible Bug 1878356: Remove nbsp trimming from acc names, r=Jamie 2024-04-30 00:35:45 +00:00
browser Bug 1892105 - Flesh out test_backup.py with some data to backup and recover. r=backup-reviewers,kpatenio 2024-05-01 14:54:35 +00:00
build Bug 1893677 - Stop making some automation tiers print their own BUILDSTATUS. r=firefox-build-system-reviewers,ahochheiden 2024-05-01 03:50:06 +00:00
caps Bug 1892481 - More consistently enforce noscript and builtinclass in xpidl, r=xpcom-reviewers,necko-reviewers,valentin,media-playback-reviewers,mccr8,padenot 2024-04-22 18:19:58 +00:00
chrome
config Backed out changeset 83262589f4b6 (bug 1877926) for causing build bustages. CLOSED TREE 2024-05-01 14:04:49 +03:00
devtools Backed out 2 changesets (bug 1883693) for causing xpc failures @ test_fetch-file.js CLOSED TREE 2024-05-01 04:08:52 +03:00
docs Bug 1893159 - add technical docs for phabricator to fx-source-docs, r=bgrins 2024-04-30 22:58:13 +00:00
docshell Bug 1677190 - Introduce SessionStoreFunctions for GeckoView package and move the existing SessionStoreFunctions from toolkit to the browser package. r=geckoview-reviewers,farre,nika,owlish 2024-04-30 11:17:55 +00:00
dom Bug 1881647, 1892747: apply code formatting via Lando 2024-05-01 04:27:23 +00:00
editor Bug 1877513 - Make HTMLEditor deletes only preceding lines of right child block if the range starts from start of a line r=m_kato 2024-04-27 00:36:26 +00:00
extensions Bug 1893434 - Test, r=manuel,anti-tracking-reviewers 2024-04-30 09:30:33 +00:00
gfx Bug 1894424 - Optimize gfxFont::AlwaysNeedsMaskForShadow check by caching the answer in the font entry. r=gfx-reviewers,lsalzman 2024-05-01 14:28:56 +00:00
gradle/wrapper
hal
image Bug 1864255. Remove skip wayland annotations for various crashtests that no longer need it. r=gfx-reviewers,dholbert,nical 2024-04-28 10:02:10 +00:00
intl Bug 1868440 - [ci] Upgrade taskcluster-taskgraph to v7.4.0, r=perftest-reviewers,geckoview-reviewers,ci-and-tooling,devtools-reviewers,taskgraph-reviewers,releng-reviewers,mach-reviewers,omc-reviewers,jmaher,hneiva,aminomancer,jari,dom-storage-reviewers,afinder,asuth,bhearsum,owlish 2024-04-18 20:39:09 +00:00
ipc Bug 1893087 - Part 2: Add test for constructing an actor under an already dead manager, r=ipc-reviewers,mccr8 2024-04-30 21:27:34 +00:00
js Bug 1853400 - Part 2: Don't call the helper thread task dispatch callback with the helper thread lock held r=jandem 2024-05-01 12:13:12 +00:00
layout Bug 1894432. Call setTimeAndSnapshot from MozReftestInvalidate event instead of onload in some svg filter reftests. r=hiro 2024-05-01 10:00:25 +00:00
media Bug 1894067 - Update opus to 20568812ae92bb148fe3fb0190b7629f1c4d0b96 r=kinetik DONTBUILD 2024-05-01 00:39:33 +00:00
memory
mfbt Bug 1894147 - Fix C++20 std::memory_order build errors in MPSCQueue.h. r=xpcom-reviewers,emilio 2024-04-30 15:37:35 +00:00
mobile Backed out changeset 8ccc8a33afa8 (bug 1893993) for causing gradle related failures CLOSED TREE 2024-05-01 22:59:27 +03:00
modules Bug 1893949 - Don't use a semi-transparent autofill background. r=issammani 2024-04-30 23:34:27 +00:00
mozglue Bug 1893532 - Improve error message of HTMLInputElement.stepUp/stepDown. r=dom-core,sefeng 2024-05-01 00:11:33 +00:00
netwerk Bug 1894212 - Bench IDNA via URL parsing. r=necko-reviewers,valentin 2024-04-30 13:07:19 +00:00
nsprpub
other-licenses
parser
python Bug 1894160: vendor-python: explicitly add the content of the .egg-info directory; r=ahochheiden 2024-05-01 14:54:58 +00:00
remote Bug 1893664 - [puppeteer] Mark Page.authenticate test as FAIL/PASS because use_redirect_for_retries changes value on late beta r=webdriver-reviewers,whimboo 2024-04-30 08:46:09 +00:00
security Bug 1891763 - land NSS NSS_3_100_BETA2 UPGRADE_NSS_RELEASE, r=nss-reviewers,jschanck 2024-05-01 09:24:48 +00:00
services Backed out 5 changesets (bug 1552815) for causing bp-nu bustages in nsFaviconService.cpp. CLOSED TREE 2024-05-01 09:58:57 +03:00
servo Bug 1884879 - [css-syntax] [css-nesting] Implement recent spec change about blocks and custom / non-custom properties. r=firefox-style-system-reviewers,zrhoffman 2024-04-30 23:49:45 +00:00
startupcache
storage
supply-chain Bug 1884879 - [css-syntax] Implement recent syntax spec change to avoid parsing custom properties that look like selectors. r=firefox-style-system-reviewers,zrhoffman,supply-chain-reviewers,glandium 2024-04-30 23:49:44 +00:00
taskcluster Bug 1894155 - Replace mhentges@mozilla.com with ahochheiden@mozilla.com as MAINTAINER for the sentry Dockerfile r=sylvestre 2024-05-01 00:12:25 +00:00
testing Bug 1894022 - Add aarch64 msix to bouncer-check configs r=releng-reviewers,bhearsum 2024-05-01 14:35:14 +00:00
third_party Bug 1884879 - [css-syntax] Implement recent syntax spec change to avoid parsing custom properties that look like selectors. r=firefox-style-system-reviewers,zrhoffman,supply-chain-reviewers,glandium 2024-04-30 23:49:44 +00:00
toolkit Bug 1894349 - Document for the contentrelevancy component r=bdk,ttran DONTBUILD 2024-05-01 14:10:11 +00:00
tools Bug 1889978 - Vendor ffmpeg 7.0 headers. r=media-playback-reviewers,frontend-codestyle-reviewers,alwu 2024-04-30 14:21:45 +00:00
uriloader Backed out 2 changesets (bug 1883693) for causing xpc failures @ test_fetch-file.js CLOSED TREE 2024-05-01 04:08:52 +03:00
view Bug 1893357 - Drop |aRepaintExposedAreaOnly| argument from nsViewManager::ResizeView(). r=tnikkel 2024-04-25 02:37:26 +00:00
widget Bug 1894412 - When reading /etc/os-release, fall back to BUILD_ID when VERSION_ID is not set. r=xpcom-reviewers,emilio 2024-05-01 08:06:47 +00:00
xpcom Bug 1894077 - Fix subsystem id parsing. r=xpcom-reviewers,emilio 2024-04-30 16:29:55 +00:00
xpfe/appshell Bug 1893918 - A not-yet-loaded browser window shouldn't stop being an early blank window. r=win-reviewers,rkraesig 2024-04-30 08:39:59 +00:00
.arcconfig
.babel-eslint.rc.js
.clang-format
.clang-format-ignore Bug 1889978 - Vendor ffmpeg 7.0 headers. r=media-playback-reviewers,frontend-codestyle-reviewers,alwu 2024-04-30 14:21:45 +00:00
.cron.yml
.eslintignore Bug 1864255. Move crashtests that leave window(s) open to the very end. r=dholbert,frontend-codestyle-reviewers 2024-04-21 21:37:49 +00:00
.eslintrc-test-paths.js
.eslintrc.js Bug 1891982 - Part 1: Copy Top Sites Feed into the Top Sites component - r=dao,frontend-codestyle-reviewers,Standard8 2024-04-23 18:32:30 +00:00
.git-blame-ignore-revs
.gitattributes
.gitignore Bug 1894160: hgignore: simplify the egginfo pattern; r=sheehan 2024-05-01 14:54:59 +00:00
.hg-annotate-ignore-revs
.hg-format-source
.hgignore Bug 1894160: hgignore: simplify the egginfo pattern; r=sheehan 2024-05-01 14:54:59 +00:00
.hgtags
.lando.ini
.lldbinit
.mailmap Bug 1892339 - Add my name to .mailmap r=nika 2024-04-19 13:42:34 +00:00
.prettierignore Bug 1889978 - Vendor ffmpeg 7.0 headers. r=media-playback-reviewers,frontend-codestyle-reviewers,alwu 2024-04-30 14:21:45 +00:00
.prettierrc.js
.stylelintignore Bug 1864255. Move crashtests that leave window(s) open to the very end. r=dholbert,frontend-codestyle-reviewers 2024-04-21 21:37:49 +00:00
.stylelintrc.js
.taskcluster.yml
.trackerignore
.yamllint
.ycm_extra_conf.py
aclocal.m4
AUTHORS
build.gradle Bug 1892641 - include timestamps in BUILDSTATUS lines from gradle, r=glandium. 2024-04-30 08:17:13 +00:00
Cargo.lock Bug 1884879 - [css-syntax] Implement recent syntax spec change to avoid parsing custom properties that look like selectors. r=firefox-style-system-reviewers,zrhoffman,supply-chain-reviewers,glandium 2024-04-30 23:49:44 +00:00
Cargo.toml Bug 1884879 - [css-syntax] Implement recent syntax spec change to avoid parsing custom properties that look like selectors. r=firefox-style-system-reviewers,zrhoffman,supply-chain-reviewers,glandium 2024-04-30 23:49:44 +00:00
client.mk
client.py
CLOBBER Bug 1889978 - Vendor ffmpeg master, after 7.0, update and reapply patch, remove old files, move bsf files into the bsf directory. r=media-playback-reviewers,alwu 2024-04-30 14:21:45 +00:00
configure
configure.py
GNUmakefile
gradle.properties
gradlew
gradlew.bat
LICENSE
mach
mach.cmd
mach.ps1
Makefile.in
mots.yaml
moz.build
moz.configure
mozilla-config.h.in
old-configure.in
package-lock.json
package.json
pyproject.toml
README.txt
settings.gradle
substitute-local-geckoview.gradle
test.mozbuild

An explanation of the Firefox Source Code Directory Structure and links to
project pages with documentation can be found at:

    https://firefox-source-docs.mozilla.org/contributing/directory_structure.html

For information on how to build Firefox from the source code and create the patch see:

    https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html

If you have a question about developing Firefox, and can't find the solution
on https://firefox-source-docs.mozilla.org/, you can try asking your question on Matrix at chat.mozilla.org in `Introduction` (https://chat.mozilla.org/#/room/#introduction:mozilla.org) channel.


Nightly development builds can be downloaded from:

    https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/
            - or -
    https://www.mozilla.org/firefox/channel/desktop/#nightly

Keep in mind that nightly builds, which are used by Firefox developers for
testing, may be buggy.