| Age | Commit message (Collapse) | Author | Lines | |
|---|---|---|---|---|
| 2023-05-13 | Auto merge of #107586 - SparrowLii:parallel-query, r=cjgillot | bors | -0/+1 | |
| Introduce `DynSend` and `DynSync` auto trait for parallel compiler part of parallel-rustc #101566 This PR introduces `DynSend / DynSync` trait and `FromDyn / IntoDyn` structure in rustc_data_structure::marker. `FromDyn` can dynamically check data structures for thread safety when switching to parallel environments (such as calling `par_for_each_in`). This happens only when `-Z threads > 1` so it doesn't affect single-threaded mode's compile efficiency. r? `@cjgillot` | ||||
| 2023-05-09 | bump windows crate 0.46 -> 0.48 in workspace | klensy | -1/+1 | |
| 2023-05-06 | introduce `DynSend` and `DynSync` auto trait | SparrowLii | -0/+1 | |
| 2023-04-22 | drop unused deps, gate libc under unix for one crate | klensy | -1/+0 | |
| 2023-04-16 | Don't use `serde_json` to serialize a simple JSON object | Nilstrieb | -1/+0 | |
| This avoids `rustc_data_structures` depending on `serde_json` which allows it to be compiled much earlier, unlocking most of rustc. | ||||
| 2023-04-11 | Use `itertools::Either` instead of own `EitherIter` impl | Maybe Waffle | -0/+1 | |
| 2023-04-05 | Use elsa =1.7.1 as 1.8.0 was an accidental copy of 1.7.0 | Oli Scherer | -1/+1 | |
| 2023-03-25 | Update indexmap and rayon crates | John Kåre Alsaker | -4/+4 | |
| 2023-03-21 | Add `-Z time-passes-format` to allow specifying a JSON output for `-Z ↵ | John Kåre Alsaker | -0/+1 | |
| time-passes` | ||||
| 2023-03-20 | migrate compiler, bootstrap, and compiletest to windows-rs | Andy Russell | -2/+9 | |
| 2023-03-17 | Fast path that skips over unchanged obligations in process_obligations | The 8472 | -1/+1 | |
| - only borrow the refcell once per loop - avoid complex matches to reduce branch paths in the hot loop - use a by-ref fast path that avoids mutations at the expense of having false negatives | ||||
| 2023-02-24 | Upgrade `ena` to 0.14.1. | Nicholas Nethercote | -1/+1 | |
| To get the small performance improvements from https://github.com/rust-lang/ena/pull/43. | ||||
| 2023-02-22 | Auto merge of #108300 - oli-obk:elsa, r=eholk | bors | -0/+1 | |
| Use a lock-free datastructure for source_span follow up to the perf regression in https://github.com/rust-lang/rust/pull/105462 The main regression is likely the CStore, but let's evaluate the perf impact of this on its own | ||||
| 2023-02-21 | Use a lock-free datastructure for `source_span` | Oli Scherer | -0/+1 | |
| 2023-02-21 | Upgrade `thin-vec` from 0.2.9 to 0.2.12. | Nicholas Nethercote | -1/+1 | |
| Because 0.2.10 added supports for `ThinVec::splice`, and 0.2.12 is the latest release. | ||||
| 2022-12-20 | Bump `cfg-if` to `1.0` | Chris Denton | -2/+6 | |
| 2022-11-05 | Update several crates for improved support of the new targets | Mateusz Mikuła | -1/+1 | |
| This helps with `*-windows-gnullvm` targets | ||||
| 2022-11-02 | rustdoc: use ThinVec for cleaned generics | Michael Howell | -1/+1 | |
| 2022-09-29 | Remove from compiler/ crates | reez12g | -1/+0 | |
| 2022-08-29 | Replace `rustc_data_structures::thin_vec::ThinVec` with `thin_vec::ThinVec`. | Nicholas Nethercote | -11/+12 | |
| `rustc_data_structures::thin_vec::ThinVec` looks like this: ``` pub struct ThinVec<T>(Option<Box<Vec<T>>>); ``` It's just a zero word if the vector is empty, but requires two allocations if it is non-empty. So it's only usable in cases where the vector is empty most of the time. This commit removes it in favour of `thin_vec::ThinVec`, which is also word-sized, but stores the length and capacity in the same allocation as the elements. It's good in a wider variety of situation, e.g. in enum variants where the vector is usually/always non-empty. The commit also: - Sorts some `Cargo.toml` dependency lists, to make additions easier. - Sorts some `use` item lists, to make additions easier. - Changes `clean_trait_ref_with_bindings` to take a `ThinVec<TypeBinding>` rather than a `&[TypeBinding]`, because this avoid some unnecessary allocations. | ||||
| 2022-07-17 | Upgrade indexmap and thorin-dwp to use hashbrown 0.12 | Josh Stone | -1/+1 | |
| This removes the last dependencies on hashbrown 0.11. | ||||
| 2022-06-27 | Update `smallvec` to 1.8.1. | Nicholas Nethercote | -1/+1 | |
| This pulls in https://github.com/servo/rust-smallvec/pull/282, which gives some small wins for rustc. | ||||
| 2022-05-27 | Update to rebased rustc-rayon 0.4 | Josh Stone | -3/+3 | |
| 2022-03-28 | Propagate `parallel_compiler` feature through rustc crates. Turned off ↵ | klensy | -3/+6 | |
| feature gives change of builded crates: 238 -> 224. | ||||
| 2022-03-04 | Add SmallStr | Tomasz Miąsko | -1/+1 | |
| 2022-01-22 | Use an `indexmap` to avoid sorting `LocalDefId`s | pierwill | -1/+1 | |
| Update `indexmap` to 1.8.0. Bless test | ||||
| 2022-01-10 | Update rayon and rustc-rayon | Josh Stone | -2/+2 | |
| 2021-10-07 | Update to measureme v10 | Ryan Levick | -1/+1 | |
| 2021-10-07 | Add support for artifact size profiling | Ryan Levick | -1/+1 | |
| 2021-09-20 | Migrate to 2021 | Mark Rousskov | -1/+1 | |
| 2021-08-28 | Update stacker and psm crates | Mateusz Mikuła | -1/+1 | |
| 2021-07-29 | rfc3052: Remove authors field from Cargo manifests | Jade | -1/+0 | |
| Since RFC 3052 soft deprecated the authors field anyway, hiding it from crates.io, docs.rs, and making Cargo not add it by default, and it is not generally up to date/useful information, we should remove it from crates in this repo. | ||||
| 2021-06-25 | rustc_data_structures: Drop unused dependency on crossbeam-utils | Josh Triplett | -1/+0 | |
| rustc_data_structures has a dependency on crossbeam-utils but never uses it. It appears to have originally had this dependency in order to set the "nightly" feature; however, its other dependencies use a different version of crossbeam-utils, so this doesn't actually affect anything. Furthermore, in current crossbeam-utils, the "nightly" feature has become a no-op. | ||||
| 2021-05-25 | Don't panic when failing to initialize incremental directory. | Eric Huss | -1/+1 | |
| 2021-04-29 | Auto merge of #84614 - RalfJung:daily, r=Mark-Simulacrum | bors | -1/+0 | |
| don't enable parking_lot nightly features Having the compiler itself depend on external libraries that use nightly features can lead to "fun" bootstrap situations. Within the rustc repo we use `cfg(bootstrap)` to resolve those, but that is not a reasonable option for external dependencies. So I propose we stop enabling the "nightly" feature of `parking_lot` here. In my experiments, this then indeed leads to the feature not being enabled (i.e., nothing else enables it), and everything still builds. However, this means parking_lot's `RwLock` will no longer have hardware lock elision for readers -- I hope that is okay to lose in exchange for less bootstrap brain twisting. ;) Cc `@Amanieu` | ||||
| 2021-04-27 | don't enable parking_lot nightly features | Ralf Jung | -1/+0 | |
| 2021-04-23 | Use latest crossbeam | Jubilee Young | -1/+1 | |
| 2021-04-23 | Use tempfile | Jubilee Young | -1/+1 | |
| 2021-04-21 | Use arrayvec 0.7, drop smallvec 0.6 | Jubilee Young | -1/+1 | |
| With the arrival of min const generics, many alt-vec libraries have updated to use it in some way and arrayvec is no exception. Use the latest with minor refactoring. Also, rustc_workspace_hack is the only user of smallvec 0.6 in the entire tree, so drop it. | ||||
| 2021-03-30 | Add an Mmap wrapper to rustc_data_structures | bjorn3 | -0/+3 | |
| This wrapper implements StableAddress and falls back to directly reading the file on wasm32 | ||||
| 2021-03-10 | Update to rustc-rayon 0.3.1 | Josh Stone | -2/+2 | |
| This pulls in rust-lang/rustc-rayon#8 to fix #81425. (h/t @ammaraskar) That revealed weak constraints on `rustc_arena::DropArena`, because its `DropType` was holding type-erased raw pointers to generic `T`. We can implement `Send` for `DropType` (under `cfg(parallel_compiler)`) by requiring all `T: Send` before they're type-erased. | ||||
| 2021-02-25 | Update measureme dependency to the latest version | Wesley Wiser | -1/+1 | |
| This version adds the ability to use `rdpmc` hardware-based performance counters instead of wall-clock time for measuring duration. This also introduces a dependency on the `perf-event-open-sys` crate on Linux which is used when using hardware counters. | ||||
| 2021-02-14 | bumped smallvec deps | klensy | -1/+1 | |
| 2020-10-24 | Upgrade to measureme 9.0.0 | Wesley Wiser | -1/+1 | |
| 2020-09-22 | Auto merge of #76928 - lcnr:opaque-types-cache, r=tmandry | bors | -0/+1 | |
| cache types during normalization partially fixes #75992 reduces the following test from 14 to 3 seconds locally. cc `@Mark-Simulacrum` would it make sense to add that test to `perf`? ```rust #![recursion_limit="2048"] #![type_length_limit="112457564"] pub async fn h0(v: &String, x: &u64) { println!("{} {}", v, x) } pub async fn h1(v: &String, x: &u64) { h0(v, x).await } pub async fn h2(v: &String, x: &u64) { h1(v, x).await } pub async fn h3(v: &String, x: &u64) { h2(v, x).await } pub async fn h4(v: &String, x: &u64) { h3(v, x).await } pub async fn h5(v: &String, x: &u64) { h4(v, x).await } pub async fn h6(v: &String, x: &u64) { h5(v, x).await } pub async fn h7(v: &String, x: &u64) { h6(v, x).await } pub async fn h8(v: &String, x: &u64) { h7(v, x).await } pub async fn h9(v: &String, x: &u64) { h8(v, x).await } pub async fn h10(v: &String, x: &u64) { h9(v, x).await } pub async fn h11(v: &String, x: &u64) { h10(v, x).await } pub async fn h12(v: &String, x: &u64) { h11(v, x).await } pub async fn h13(v: &String, x: &u64) { h12(v, x).await } pub async fn h14(v: &String, x: &u64) { h13(v, x).await } pub async fn h15(v: &String, x: &u64) { h14(v, x).await } pub async fn h16(v: &String, x: &u64) { h15(v, x).await } pub async fn h17(v: &String, x: &u64) { h16(v, x).await } pub async fn h18(v: &String, x: &u64) { h17(v, x).await } pub async fn h19(v: &String, x: &u64) { h18(v, x).await } macro_rules! async_recursive { (29, $inner:expr) => { async { async_recursive!(28, $inner) }.await }; (28, $inner:expr) => { async { async_recursive!(27, $inner) }.await }; (27, $inner:expr) => { async { async_recursive!(26, $inner) }.await }; (26, $inner:expr) => { async { async_recursive!(25, $inner) }.await }; (25, $inner:expr) => { async { async_recursive!(24, $inner) }.await }; (24, $inner:expr) => { async { async_recursive!(23, $inner) }.await }; (23, $inner:expr) => { async { async_recursive!(22, $inner) }.await }; (22, $inner:expr) => { async { async_recursive!(21, $inner) }.await }; (21, $inner:expr) => { async { async_recursive!(20, $inner) }.await }; (20, $inner:expr) => { async { async_recursive!(19, $inner) }.await }; (19, $inner:expr) => { async { async_recursive!(18, $inner) }.await }; (18, $inner:expr) => { async { async_recursive!(17, $inner) }.await }; (17, $inner:expr) => { async { async_recursive!(16, $inner) }.await }; (16, $inner:expr) => { async { async_recursive!(15, $inner) }.await }; (15, $inner:expr) => { async { async_recursive!(14, $inner) }.await }; (14, $inner:expr) => { async { async_recursive!(13, $inner) }.await }; (13, $inner:expr) => { async { async_recursive!(12, $inner) }.await }; (12, $inner:expr) => { async { async_recursive!(11, $inner) }.await }; (11, $inner:expr) => { async { async_recursive!(10, $inner) }.await }; (10, $inner:expr) => { async { async_recursive!(9, $inner) }.await }; (9, $inner:expr) => { async { async_recursive!(8, $inner) }.await }; (8, $inner:expr) => { async { async_recursive!(7, $inner) }.await }; (7, $inner:expr) => { async { async_recursive!(6, $inner) }.await }; (6, $inner:expr) => { async { async_recursive!(5, $inner) }.await }; (5, $inner:expr) => { async { async_recursive!(4, $inner) }.await }; (4, $inner:expr) => { async { async_recursive!(3, $inner) }.await }; (3, $inner:expr) => { async { async_recursive!(2, $inner) }.await }; (2, $inner:expr) => { async { async_recursive!(1, $inner) }.await }; (1, $inner:expr) => { async { async_recursive!(0, $inner) }.await }; (0, $inner:expr) => { async { h19(&String::from("owo"), &0).await; $inner }.await }; } async fn f() { async_recursive!(14, println!("hello")); } fn main() { let _ = f(); } ``` r? `@eddyb` requires a perf run. | ||||
| 2020-09-20 | To avoid monomorphizing `psm::on_stack::with_on_stack` 1500 times, I made a ↵ | Julian Wollersberger | -1/+1 | |
| change in `stacker` to wrap the callback in `dyn`. | ||||
| 2020-09-19 | cache types during normalization | Bastian Kauschke | -0/+1 | |
| 2020-09-12 | update the version of itertools and parking_lot | Andreas Jonson | -1/+1 | |
| this is to avoid compiling multiple version of the crates in rustc | ||||
| 2020-09-01 | datastructures: replace `lazy_static` by `SyncLazy` from std | marmeladema | -1/+0 | |
| 2020-08-30 | datastructures: replace `once_cell` crate with an impl from std | marmeladema | -1/+0 | |
