From b570c882df68335b02b169d68dfb269d04d67008 Mon Sep 17 00:00:00 2001 From: Tshepang Mbambo Date: Sat, 16 Jul 2022 03:55:15 +0200 Subject: [PATCH] make date-check lightweight This avoids having to write the date twice when updating date-check. Before "As of <-- 2022-07 --> July 2022" After "As of July 2022" --- ci/date-check/src/main.rs | 36 +++++++------------ src/backend/backend-agnostic.md | 2 +- .../region_inference/member_constraints.md | 2 +- src/conventions.md | 4 +-- src/crates-io.md | 2 +- src/diagnostics/diagnostic-items.md | 2 +- src/diagnostics/lintstore.md | 2 +- src/diagnostics/translation.md | 2 +- src/git.md | 2 +- src/llvm-coverage-instrumentation.md | 4 +-- src/opaque-types-type-alias-impl-trait.md | 6 ++-- src/overview.md | 2 +- src/parallel-rustc.md | 6 ++-- src/profiling.md | 2 +- .../query-evaluation-model-in-detail.md | 2 +- src/query.md | 2 +- src/rustc-driver-getting-diagnostics.md | 2 +- src/rustc-driver-interacting-with-the-ast.md | 2 +- src/rustdoc-internals.md | 2 +- src/salsa.md | 2 +- src/tests/compiletest.md | 2 +- src/the-parser.md | 2 +- src/thir.md | 2 +- src/traits/chalk.md | 4 +-- src/traits/resolution.md | 2 +- src/type-inference.md | 2 +- 26 files changed, 45 insertions(+), 55 deletions(-) diff --git a/ci/date-check/src/main.rs b/ci/date-check/src/main.rs index bbea2bf3..a7fd5d67 100644 --- a/ci/date-check/src/main.rs +++ b/ci/date-check/src/main.rs @@ -3,9 +3,10 @@ use std::{ convert::TryInto as _, env, fmt, fs, path::{Path, PathBuf}, + str::FromStr, }; -use chrono::{Datelike as _, TimeZone as _, Utc}; +use chrono::{Datelike as _, Month, TimeZone as _, Utc}; use glob::glob; use regex::Regex; @@ -36,16 +37,7 @@ impl fmt::Display for Date { } fn make_date_regex() -> Regex { - Regex::new( - r"(?x) # insignificant whitespace mode - ", - ) - .unwrap() + Regex::new(r"[aA]s of (\w+) (\d{4})").unwrap() } fn collect_dates_from_file(date_regex: &Regex, text: &str) -> Vec<(usize, Date)> { @@ -57,8 +49,8 @@ fn collect_dates_from_file(date_regex: &Regex, text: &str) -> Vec<(usize, Date)> ( cap.get(0).unwrap().range(), Date { - year: cap["y"].parse().unwrap(), - month: cap["m"].parse().unwrap(), + year: cap[2].parse().unwrap(), + month: Month::from_str(&cap[1]).unwrap().number_from_month(), }, ) }) @@ -183,20 +175,18 @@ mod tests { #[test] fn test_date_regex() { let regex = make_date_regex(); - assert!(regex.is_match("foo bar")); - } - - #[test] - fn test_date_regex_capitalized() { - let regex = make_date_regex(); - assert!(regex.is_match("foo bar")); + assert!(regex.is_match("As of July 2022")); + assert!(regex.is_match("As of Jul 2022")); + assert!(regex.is_match("As of july 2022")); + assert!(regex.is_match("As of jul 2022")); + assert!(regex.is_match("as of jul 2022")); } #[test] fn test_collect_dates_from_file() { - let text = "Test1\n\nTest2\nFoo\nTest3\nTest4\nFooBar\n\nTest5\nTest6\nTest7\n\nTest8 + let text = "Test1\nAs of Jan 2021\nTest2\nAs of Feb 2021 \ + \nTest3\nTest4\nAs of march 2021Bar\nas of apr 2021 \ + \nTest5\nTest6\nTest7\n\n\nas of may 2021\nTest8 "; assert_eq!( collect_dates_from_file(&make_date_regex(), text), diff --git a/src/backend/backend-agnostic.md b/src/backend/backend-agnostic.md index 271e6a16..17a1e8f7 100644 --- a/src/backend/backend-agnostic.md +++ b/src/backend/backend-agnostic.md @@ -2,7 +2,7 @@ -As of October 2021, `rustc_codegen_ssa` provides an +As of October 2021, `rustc_codegen_ssa` provides an abstract interface for all backends to implement, to allow other codegen backends (e.g. [Cranelift]). diff --git a/src/borrow_check/region_inference/member_constraints.md b/src/borrow_check/region_inference/member_constraints.md index c7c107e1..77776986 100644 --- a/src/borrow_check/region_inference/member_constraints.md +++ b/src/borrow_check/region_inference/member_constraints.md @@ -94,7 +94,7 @@ member constraints come in. ## Choices are always lifetime parameters At present, the "choice" regions from a member constraint are always lifetime -parameters from the current function. As of October 2021, +parameters from the current function. As of October 2021, this falls out from the placement of impl Trait, though in the future it may not be the case. We take some advantage of this fact, as it simplifies the current code. In particular, we don't have to consider a case like `'0 member of ['1, diff --git a/src/conventions.md b/src/conventions.md index 15d12537..0f51fefc 100644 --- a/src/conventions.md +++ b/src/conventions.md @@ -14,14 +14,14 @@ special config, so this may result in different style from normal [`rustfmt`]. Therefore, formatting this repository using `cargo fmt` is not recommended. Instead, formatting should be done using `./x.py fmt`. It's a good habit to run -`./x.py fmt` before every commit, as this reduces conflicts later. +`./x.py fmt` before every commit, as this reduces conflicts later. Formatting is checked by the `tidy` script. It runs automatically when you do `./x.py test` and can be run in isolation with `./x.py fmt --check`. If you want to use format-on-save in your editor, the pinned version of `rustfmt` is built under `build//stage0/bin/rustfmt`. You'll have to -pass the `--edition=2021` argument yourself when calling +pass the `--edition=2021` argument yourself when calling `rustfmt` directly. [fmt]: https://github.com/rust-dev-tools/fmt-rfcs diff --git a/src/crates-io.md b/src/crates-io.md index 8c8fd0c3..d7c7f25e 100644 --- a/src/crates-io.md +++ b/src/crates-io.md @@ -12,7 +12,7 @@ reasons: - The dependency may have transitive dependencies that have one of the above problems. -As of February 2022, there is no official policy for vetting +As of February 2022, there is no official policy for vetting new dependencies to the compiler. Generally, new dependencies are not added to the compiler unless there is a good reason to do so. diff --git a/src/diagnostics/diagnostic-items.md b/src/diagnostics/diagnostic-items.md index b6b6e0fa..0717444c 100644 --- a/src/diagnostics/diagnostic-items.md +++ b/src/diagnostics/diagnostic-items.md @@ -43,7 +43,7 @@ A new diagnostic item can be added with these two steps: For the naming conventions of diagnostic items, please refer to [*Naming Conventions*](#naming-conventions). -2. As of February 2022, diagnostic items in code are +2. As of February 2022, diagnostic items in code are accessed via symbols in [`rustc_span::symbol::sym`]. To add your newly created diagnostic item simply open the module file and add the name (In this case `Cat`) at the correct point in the list. diff --git a/src/diagnostics/lintstore.md b/src/diagnostics/lintstore.md index 39007f8d..78b6da27 100644 --- a/src/diagnostics/lintstore.md +++ b/src/diagnostics/lintstore.md @@ -17,7 +17,7 @@ default lint level and other metadata come from. These are normally defined by way of the [`declare_lint!`] macro, which boils down to a static with type `&rustc_session::lint::Lint`. -As of February 2022, we lint against direct declarations +As of February 2022, we lint against direct declarations without the use of the macro today (although this may change in the future, as the macro is somewhat unwieldy to add new fields to, like all macros). diff --git a/src/diagnostics/translation.md b/src/diagnostics/translation.md index 5c078ffb..07599f51 100644 --- a/src/diagnostics/translation.md +++ b/src/diagnostics/translation.md @@ -217,7 +217,7 @@ returned by `Emitter::fluent_bundle`. This bundle is used preferentially when translating messages, the fallback bundle is only used if the primary bundle is missing a message or not provided. -As of June 2022, there are no locale bundles +As of June 2022, there are no locale bundles distributed with the compiler, but mechanisms are implemented for loading bundles. diff --git a/src/git.md b/src/git.md index f16c22d9..a32e3cd4 100644 --- a/src/git.md +++ b/src/git.md @@ -157,7 +157,7 @@ no changes added to commit (use "git add" and/or "git commit -a") These changes are not changes to files: they are changes to submodules (more on this [later](#git-submodules)). To get rid of those, run `git submodule update` (or run any `x.py` command, which will automatically update the submodules). -Note that there is (as of February 2022) a [bug][#77620] if you use +Note that there is (as of February 2022) a [bug][#77620] if you use worktrees, submodules, and `x.py` in a commit hook. If you run into an error like: diff --git a/src/llvm-coverage-instrumentation.md b/src/llvm-coverage-instrumentation.md index ea4bdfca..d6d3880b 100644 --- a/src/llvm-coverage-instrumentation.md +++ b/src/llvm-coverage-instrumentation.md @@ -222,8 +222,8 @@ properly-configured variables in LLVM IR, according to very specific details of the [_LLVM Coverage Mapping Format_][coverage-mapping-format] (Version 6).[^llvm-and-covmap-versions] -[^llvm-and-covmap-versions]: The Rust compiler (as of -December 2021) supports _LLVM Coverage Mapping Format_ Version 5 or 6. Version 5 +[^llvm-and-covmap-versions]: The Rust compiler (as of December 2021) +supports _LLVM Coverage Mapping Format_ Version 5 or 6. Version 5 was introduced in _LLVM 12_, which is (as of this writing) the minimum LLVM version supported by the current version of Rust. Version 6 was introduced in _LLVM 13_, which is currently the default LLVM version for Rust. The Rust diff --git a/src/opaque-types-type-alias-impl-trait.md b/src/opaque-types-type-alias-impl-trait.md index 2be072dd..a2d513a6 100644 --- a/src/opaque-types-type-alias-impl-trait.md +++ b/src/opaque-types-type-alias-impl-trait.md @@ -14,9 +14,9 @@ This declares an opaque type named `Foo`, of which the only information is that it implements `Bar`. Therefore, any of `Bar`'s interface can be used on a `Foo`, but nothing else (regardless of whether it implements any other traits). -Since there needs to be a concrete background type, you can (as of January 2021) express that type by using the opaque type in a -"defining use site". +Since there needs to be a concrete background type, +you can (as of January 2021) express that type +by using the opaque type in a "defining use site". ```rust,ignore struct Struct; diff --git a/src/overview.md b/src/overview.md index de6c88e7..fb49c863 100644 --- a/src/overview.md +++ b/src/overview.md @@ -292,7 +292,7 @@ Moreover, the compiler wasn't originally built to use a query system; the query system has been retrofitted into the compiler, so parts of it are not query-fied yet. Also, LLVM isn't our code, so that isn't querified either. The plan is to eventually query-fy all of the steps listed in the previous section, -but as of November 2021, only the steps between HIR and +but as of November 2021, only the steps between HIR and LLVM IR are query-fied. That is, lexing, parsing, name resolution, and macro expansion are done all at once for the whole program. diff --git a/src/parallel-rustc.md b/src/parallel-rustc.md index 4aa13d78..4400e2b6 100644 --- a/src/parallel-rustc.md +++ b/src/parallel-rustc.md @@ -1,6 +1,6 @@ # Parallel Compilation -As of May 2022, The only stage of the compiler +As of May 2022, The only stage of the compiler that is already parallel is codegen. The nightly compiler implements query evaluation, but there is still a lot of work to be done. The lack of parallelism at other stages also represents an opportunity for improving compiler performance. One can try out the current @@ -60,7 +60,7 @@ this issue can be found [here][parallel-rustdoc]. ## Current Status -As of May 2022, work on explicitly parallelizing the +As of May 2022, work on explicitly parallelizing the compiler has stalled. There is a lot of design and correctness work that needs to be done. @@ -76,7 +76,7 @@ These are the basic ideas in the effort to make `rustc` parallel: [`rayon`]: https://crates.io/crates/rayon -As of May 2022, much of this effort is on hold due +As of May 2022, much of this effort is on hold due to lack of manpower. We have a working prototype with promising performance gains in many cases. However, there are two blockers: diff --git a/src/profiling.md b/src/profiling.md index ada497d8..f0fc76f5 100644 --- a/src/profiling.md +++ b/src/profiling.md @@ -108,6 +108,6 @@ The llvm-lines output is affected by several options. MIR optimizations have little impact. Compared to the default `RUSTFLAGS="-Z mir-opt-level=1"`, level 0 adds 0.3GB and level 2 removes 0.2GB. -As of July 2022, +As of July 2022, inlining happens in LLVM and GCC codegen backends, missing only in the Cranelift one. diff --git a/src/queries/query-evaluation-model-in-detail.md b/src/queries/query-evaluation-model-in-detail.md index b84a5dac..43ffe0a1 100644 --- a/src/queries/query-evaluation-model-in-detail.md +++ b/src/queries/query-evaluation-model-in-detail.md @@ -76,7 +76,7 @@ executed, no results are cached. But the context already provides access to "input" data, i.e. pieces of immutable data that were computed before the context was created and that queries can access to do their computations. -As of January 2021, this input data consists mainly of +As of January 2021, this input data consists mainly of the HIR map, upstream crate metadata, and the command-line options the compiler was invoked with; but in the future inputs will just consist of command-line options and a list of source files -- the HIR map will itself be provided by a diff --git a/src/query.md b/src/query.md index 95e570df..222e9074 100644 --- a/src/query.md +++ b/src/query.md @@ -3,7 +3,7 @@ As described in [the high-level overview of the compiler][hl], the Rust compiler -is still (as of July 2021) transitioning from a +is still (as of July 2021) transitioning from a traditional "pass-based" setup to a "demand-driven" system. The compiler query system is the key to rustc's demand-driven organization. The idea is pretty simple. Instead of entirely independent passes diff --git a/src/rustc-driver-getting-diagnostics.md b/src/rustc-driver-getting-diagnostics.md index 327415e5..bac16138 100644 --- a/src/rustc-driver-getting-diagnostics.md +++ b/src/rustc-driver-getting-diagnostics.md @@ -7,7 +7,7 @@ To get diagnostics from the compiler, configure `rustc_interface::Config` to output diagnostic to a buffer, and run `TyCtxt.analysis`. The following was tested -with `nightly-2022-06-05` (See [here][example] +with `nightly-2022-06-05` (See [here][example] for the complete example): [example]: https://github.com/rust-lang/rustc-dev-guide/blob/master/examples/rustc-driver-getting-diagnostics.rs diff --git a/src/rustc-driver-interacting-with-the-ast.md b/src/rustc-driver-interacting-with-the-ast.md index d70264fe..7eae2fb7 100644 --- a/src/rustc-driver-interacting-with-the-ast.md +++ b/src/rustc-driver-interacting-with-the-ast.md @@ -5,7 +5,7 @@ ## Getting the type of an expression To get the type of an expression, use the `global_ctxt` to get a `TyCtxt`. -The following was tested with `nightly-2022-06-05` +The following was tested with `nightly-2022-06-05` (see [here][example] for the complete example): [example]: https://github.com/rust-lang/rustc-dev-guide/blob/master/examples/rustc-driver-interacting-with-the-ast.rs diff --git a/src/rustdoc-internals.md b/src/rustdoc-internals.md index 91bb0c35..1ac74b11 100644 --- a/src/rustdoc-internals.md +++ b/src/rustdoc-internals.md @@ -66,7 +66,7 @@ these passes, please let us know!) [44136]: https://github.com/rust-lang/rust/issues/44136 -Here is the list of passes as of May 2022: +Here is the list of passes as of May 2022: - `calculate-doc-coverage` calculates information used for the `--show-coverage` flag. diff --git a/src/salsa.md b/src/salsa.md index afa01eda..96215186 100644 --- a/src/salsa.md +++ b/src/salsa.md @@ -9,7 +9,7 @@ want to watch [Salsa In More Depth](https://www.youtube.com/watch?v=i_IhACacPRY), also by Niko Matsakis. -> As of April 2022, although Salsa is inspired by +> As of April 2022, although Salsa is inspired by > (among other things) rustc's query system, it is not used directly in rustc. > It _is_ used in chalk and extensively in `rust-analyzer`, but there are no > medium or long-term concrete plans to integrate it into the compiler. diff --git a/src/tests/compiletest.md b/src/tests/compiletest.md index 5c3dcf54..a01fc4de 100644 --- a/src/tests/compiletest.md +++ b/src/tests/compiletest.md @@ -452,7 +452,7 @@ fn main() { ## Revisions -Certain classes of tests support "revisions" (as of July 2022, +Certain classes of tests support "revisions" (as of July 2022, this includes UI, assembly, codegen, debuginfo, incremental, and rustdoc UI tests, though incremental tests are somewhat different). Revisions allow a single test file to be used for multiple tests. diff --git a/src/the-parser.md b/src/the-parser.md index ff43220c..c37083c7 100644 --- a/src/the-parser.md +++ b/src/the-parser.md @@ -1,6 +1,6 @@ # Lexing and Parsing -As of January 2021, the lexer and parser are undergoing +As of January 2021, the lexer and parser are undergoing refactoring to allow extracting them into libraries. The very first thing the compiler does is take the program (in Unicode diff --git a/src/thir.md b/src/thir.md index 4f8e6512..2f75f4c7 100644 --- a/src/thir.md +++ b/src/thir.md @@ -4,7 +4,7 @@ The THIR ("Typed High-Level Intermediate Representation"), previously called HAIR for "High-Level Abstract IR", is another IR used by rustc that is generated after -[type checking]. It is (as of April 2022) only used for +[type checking]. It is (as of April 2022) only used for [MIR construction] and [exhaustiveness checking]. There is also [an experimental unsafety checker][thir-unsafeck] that operates on the THIR as a replacement for the current MIR unsafety checker, and can be used instead of the MIR unsafety checker by passing diff --git a/src/traits/chalk.md b/src/traits/chalk.md index d4045c46..3708f6b3 100644 --- a/src/traits/chalk.md +++ b/src/traits/chalk.md @@ -1,7 +1,7 @@ # Chalk-based trait solving -[Chalk][chalk] is an experimental trait solver for Rust that is (as of May 2022) under development by the [Types team]. +[Chalk][chalk] is an experimental trait solver for Rust that is +(as of May 2022) under development by the [Types team]. Its goal is to enable a lot of trait system features and bug fixes that are hard to implement (e.g. GATs or specialization). If you would like to help in hacking on the new solver, drop by on the rust-lang Zulip in the [`#t-types`] diff --git a/src/traits/resolution.md b/src/traits/resolution.md index c22ee6de..0ffcc7ee 100644 --- a/src/traits/resolution.md +++ b/src/traits/resolution.md @@ -120,7 +120,7 @@ the obligation contains unbound inference variables. The subroutines that decide whether a particular impl/where-clause/etc applies to a particular obligation are collectively referred to as the process of -_matching_. As of May 2022, this amounts to unifying +_matching_. As of May 2022, this amounts to unifying the `Self` types, but in the future we may also recursively consider some of the nested obligations, in the case of an impl. diff --git a/src/type-inference.md b/src/type-inference.md index 4be9211e..e4fc248e 100644 --- a/src/type-inference.md +++ b/src/type-inference.md @@ -72,7 +72,7 @@ inference works, or perhaps this blog post on [Unification in the Chalk project]: http://smallcultfollowing.com/babysteps/blog/2017/03/25/unification-in-chalk-part-1/ All told, the inference context stores five kinds of inference variables -(as of June 2021): +(as of June 2021): - Type variables, which come in three varieties: - General type variables (the most common). These can be unified with any