1
Fork 0
Empowering everyone to build reliable and efficient software. Gabriel's commits. https://www.rust-lang.org/
Find a file
León Orell Valerian Liehr b493369df8
Rollup merge of #133946 - Zalathar:ready-first, r=oli-obk
coverage: Prefer to visit nodes whose predecessors have been visited

In coverage instrumentation, we need to traverse the control-flow graph and decide what kind of counter (physical counter or counter-expression) should be used for each node that needs a counter.

The existing traversal order is complex and hard to tweak. This new traversal order tries to be a bit more principled, by always preferring to visit nodes whose predecessors have already been visited, which is a good match for how the counter-creation code ends up dealing with a node's in-edges and out-edges.

For several of the coverage tests, this ends up being a strict improvement in reducing the size of the coverage metadata, and also reducing the number of physical counters needed.

(The new traversal should hopefully also allow some further code simplifications in the future.)

---

This is made possible by the separate simplification pass introduced by #133849. Without that, almost any change to the traversal order ends up increasing the size of the expression table or the number of physical counters.
2024-12-10 08:55:58 +01:00
.github Rollup merge of #132605 - Kobzol:ci-increase-timeout, r=Mark-Simulacrum 2024-11-26 20:35:37 -05:00
compiler Rollup merge of #133946 - Zalathar:ready-first, r=oli-obk 2024-12-10 08:55:58 +01:00
library Rollup merge of #133472 - rust-wasi-web:master, r=joboet 2024-12-10 08:55:57 +01:00
LICENSES Synchronize Unicode license text from unicode.org 2024-11-20 00:54:12 -08:00
src Rollup merge of #133853 - onur-ozkan:use-vendor-directory-on-dist-build, r=Kobzol 2024-12-10 08:55:57 +01:00
tests Rollup merge of #133946 - Zalathar:ready-first, r=oli-obk 2024-12-10 08:55:58 +01:00
.clang-format Add .clang-format 2024-06-26 05:56:00 +08:00
.editorconfig
.git-blame-ignore-revs Add rustfmt 2024 reformatting to git blame ignore 2024-09-23 10:02:04 +02:00
.gitattributes Stop git from merging generated files 2024-12-04 11:06:37 +00:00
.gitignore ignore /build instead of build/ in gitignore 2024-11-28 21:52:23 +01:00
.gitmodules Update LLVM to 19.1.5 2024-12-03 21:12:47 +08:00
.ignore Add .ignore file to make config.toml searchable in vscode 2024-06-24 10:15:16 +02:00
.mailmap Update mailmap 2024-12-01 22:07:51 -05:00
Cargo.lock Rollup merge of #133456 - clubby789:cargo-update, r=ChrisDenton 2024-12-10 08:55:56 +01:00
Cargo.toml move src/tools/build_helper into src/build_helper 2024-11-11 11:19:11 +03:00
CODE_OF_CONDUCT.md
config.example.toml update build.vendor documentation 2024-12-04 16:02:07 +03:00
configure Ensure ./configure works when configure.py path contains spaces 2024-02-16 18:57:22 +00:00
CONTRIBUTING.md
COPYRIGHT Synchronize Unicode license text from unicode.org 2024-11-20 00:54:12 -08:00
INSTALL.md add clarity for custom path installation 2024-10-06 07:37:00 -05:00
LICENSE-APACHE
license-metadata.json collect-license-metadata: move JSON to root, and add a 'check' mode 2024-11-25 14:14:57 +00:00
LICENSE-MIT
README.md Grammar fixes 2024-12-09 17:17:27 -05:00
RELEASES.md Removed Unnecessary Spaces From RELEASES.md 2024-12-07 01:01:03 +05:30
REUSE.toml collect-license-metadata: move JSON to root, and add a 'check' mode 2024-11-25 14:14:57 +00:00
rust-bors.toml Increase timeout for new bors bot 2024-03-13 08:31:07 +01:00
rustfmt.toml chore(style): sync submodule exclusion list between tidy and rustfmt 2024-11-02 16:43:10 +03:00
triagebot.toml Rollup merge of #134043 - ehuss:unicode-version, r=jieyouxu 2024-12-09 23:39:05 +01:00
x fix(x): fix a regex used to find python executable 2024-11-06 16:40:02 +03:00
x.ps1 use & instead of start-process in x.ps1 2023-12-09 09:46:16 -05:00
x.py Reformat Python code with ruff 2024-12-04 23:03:44 +01:00

This is the main source code repository for Rust. It contains the compiler, standard library, and documentation.

Why Rust?

  • Performance: Fast and memory-efficient, suitable for critical services, embedded devices, and easily integrated with other languages.

  • Reliability: Our rich type system and ownership model ensure memory and thread safety, reducing bugs at compile-time.

  • Productivity: Comprehensive documentation, a compiler committed to providing great diagnostics, and advanced tooling including package manager and build tool (Cargo), auto-formatter (rustfmt), linter (Clippy) and editor support (rust-analyzer).

Quick Start

Read "Installation" from The Book.

Installing from Source

If you really want to install from source (though this is not recommended), see INSTALL.md.

Getting Help

See https://www.rust-lang.org/community for a list of chat platforms and forums.

Contributing

See CONTRIBUTING.md.

License

Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.

Trademark

The Rust Foundation owns and protects the Rust and Cargo trademarks and logos (the "Rust Trademarks").

If you want to use these names or brands, please read the media guide.

Third-party logos may be subject to third-party copyrights and trademarks. See Licenses for details.