Commit graph

1871 commits

Author SHA1 Message Date
bors
4d669fb34e Auto merge of #133134 - Walnut356:synth_prov, r=Mark-Simulacrum
Don't use a SyntheticProvider for literally every type

Replaces a glob regex with individualized imports for each standard library type. This improves debugger performance by quite a bit when populating lots of values with lots of fields

With the glob, afaik every single value of every single type that the debugger renders is run through a python function that does quite a few string comparisons (i plan to fix those next) to determine the SyntheticProvider to use.  It looks like DefaultSyntheticProvider's functions internally call the liblldb c++ functions, which ends up with identical behavior to not using a SyntheticProvider at all, except you have extra python round trips slowing things down.

These sample vidoes were run on x86-64-pc-windows-gnu. `vect` is a 1000 element `Vec<Big>`, `Big` contains a dozen or so `Small`, and `Small` contains a dozen or so `[i32; 5]`

Before:

https://github.com/user-attachments/assets/07c31fe7-e126-4c2e-8ae9-cfe36e351d3f

After:

https://github.com/user-attachments/assets/6c0d1a45-1ffe-46de-95a0-5dbe59a173b5

---

try-job: aarch64-apple
2024-12-08 19:30:33 +00:00
Jakub Beránek
536516f949
Reformat Python code with ruff 2024-12-04 23:03:44 +01:00
Ralf Jung
fd13717815 rust_analyzer_settings: force use of 'nightly' toolchain 2024-12-01 22:54:08 +01:00
Walnut
9b4a247190 add explicit synthetic lookup for tuples 2024-11-29 19:19:12 -06:00
Walnut
8ecac88d7a force expanded formatting for non-synthetic types 2024-11-28 08:09:45 -06:00
Matthias Krüger
0b0fda9c96
Rollup merge of #132803 - wangjingcun:master, r=Mark-Simulacrum
Fix broken url
2024-11-25 07:01:40 +01:00
Walnut
673b3d380f restrict synthetic types to standard library types 2024-11-17 09:18:42 -06:00
clubby789
ee877c3265 Bump bootstrap deps 2024-11-13 17:58:04 +00:00
wangjingcun
5e4b33f2b8 Fix broken url
Signed-off-by: wangjingcun <wangjingcun@aliyun.com>
2024-11-11 17:25:29 +08:00
Maybe Lapkin
22069682ed Use a separate dir for r-a builds consistently in helix config 2024-11-09 01:27:29 +01:00
Matthias Krüger
4b7bfaaf69
Rollup merge of #132333 - tshepang:patch-4, r=workingjubilee
rust_analyzer_helix.toml: add library/ manifest
2024-11-02 08:33:11 +01:00
yukang
b6a49d8969 Remove unncessary option for default rust-analyzer setting 2024-11-01 13:11:51 +08:00
Tshepang Mbambo
ee4b0445d3 rust_analyzer_helix.toml: add library/ manifest
Also, sort list
2024-10-29 23:57:52 +02:00
Zalathar
6f82a95298 Rename command-list.rs to directive-list.rs 2024-10-29 17:39:13 +11:00
jyn
d792e1f50a remove dead code in CGREP script 2024-10-27 21:23:28 -04:00
Matthias Krüger
17ac4c8fb5
Rollup merge of #131365 - heiseish:fix-issue-101993, r=Mark-Simulacrum
Fix missing rustfmt in msi installer #101993

# Context
- Fixed missing `rustfmt`, `clippy`, `miri` and `rust-analyzer` in msi installer
- Fixed missing `rustfmt` for apple darwin installer
- Closes #101993

r​? `@jyn514`
- Please let me know if I should request from someone else instead. I divided the changes into 3 separate commits for the ease of review. The refactoring commit `fbdfd5c03c3c979bcf105ccdd05ff4ab9f37a763` is a bit more involved, but I think it helps in the long term for readability and to avoid bugs.
- I changed `build-manifest` to `build_manifest` in order to invoke it as a library. Not sure if this is gonna break any upstream processes. I checked `generate-manifest-list` and `generate-release` but didn't find any obvious reference
- Will push fixes for linting later
2024-10-20 16:54:09 +02:00
Giang Dao
f5577a8174 fix missing rustfmt and clippy for msi 2024-10-15 23:53:24 +08:00
Jonathan Dönszelmann
0a9c87b1f5
rename RcBox in other places too 2024-10-11 10:04:22 +02:00
Kajetan Puchalski
456be106b7
bootstrap: Consolidate editor LSP setup
Consolidate LSP setup for different editors into one `./x setup editor`.
2024-10-03 15:22:44 +01:00
Kajetan Puchalski
9b24fae0be
bootstrap: Add support for ./x setup vim 2024-10-01 12:59:57 +01:00
Kajetan Puchalski
dfc7e396a6
bootstrap: Add support for ./x setup helix 2024-10-01 12:59:55 +01:00
Kajetan Puchalski
c53d4c78ad
bootstrap: Add support for ./x setup emacs
Add support for automatically setting up the recommended
LSP config for Emacs.

Additionally, refactor setup.rs to make it easier to add support
for more editors in the future.
2024-10-01 12:59:52 +01:00
Matthias Krüger
243c6d67ff
Rollup merge of #130932 - mrkajetanp:editors, r=jieyouxu
etc: Add sample rust-analyzer configs for eglot & helix

LSP configuration in editors like Emacs (eglot) and helix does not
use the same JSON format as vscode and vim do. It is not obvious
how to set up LSP for rustc in those editors and the dev guide currently
does not cover them. Adding sample configuration files for those editors
alongside the currently existing JSON one would be helpful.

I figured having those included in the repo like the JSON one might save
someone some time and frustration otherwise spent on trying to get the
more niche editors' LSP to work properly. I'll add a section in the dev
guide too.
2024-09-27 21:35:10 +02:00
Kajetan Puchalski
6453f7e514
etc: Add rust-analyzer configs for eglot & helix
LSP configuration in editors like Emacs (eglot) and helix does not
use the same JSON format as vscode and vim do. It is not obvious
how to set up LSP for rustc in those editors and the dev guide currently
does not cover them. Adding sample configuration files for those editors
alongside the currently existing JSON one would be helpful.
2024-09-27 17:28:19 +01:00
Guillaume Gomez
a4a591a78c
Rollup merge of #130517 - bjorn3:update_ra_config, r=onur-ozkan
Add the library workspace to the suggested rust-analyzer config
2024-09-27 00:43:31 +02:00
Michael Goulet
c682aa162b Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
bjorn3
4788e8c34a Add the library workspace to the suggested rust-analyzer config 2024-09-18 14:48:30 +00:00
Gurinder Singh
11ee513f4c Remove unused option from x.py 2024-09-07 10:35:23 +05:30
Trevor Gross
370168787b Generate completions after version updates
Running `cargo update` changed completion output. Regenerate them here.
2024-08-18 22:52:54 -05:00
Rémy Rakic
ee5d15ce43 regenerate ./x completions
to pick up changes to `./x miri` and `./x test` commands
2024-08-12 15:28:39 +00:00
Rémy Rakic
bc9ca2902e clarify that --rustc-args is for compiletest tests 2024-08-12 15:28:38 +00:00
Ben Kimock
28a8301de9 Fix debuginfo providers/tests 2024-08-11 16:51:22 -04:00
Ben Kimock
d6c0ebef50 Polymorphize RawVec 2024-08-09 20:06:26 -04:00
Trevor Gross
59429e67f9 Rewrite test-float-parse in Rust
The existing implementation uses Python to launch a set of Rust-written
binaries. Unfortunately, this is currently broken; it seems that some
updates meant it no longer compiles.

There is also a problem that support for more float types (`f16`,
`f128`) would be difficult to add since this is very specialized to
`f32` and `f64`.

Because of these sortcomings, migrate to a version written in Rust. This
version should be significantly faster; test generators can execute in
parallel, and test cases are chunked and parallelized. This should also
resolve the preexisting "... the worker processes are leaked and stick
around forever" comment.

This change also introduces genericism over float types and properties,
meaning it will be much easier to extend support to newly added types.

`num::BigRational` is used in place of Python's fractions for
infinite-precision calculations.
2024-07-20 11:39:34 -05:00
León Orell Valerian Liehr
25be41cfb8
Update jsondocck directives to follow ui_test-style 2024-07-19 16:54:16 +02:00
bors
8672b2b763 Auto merge of #127001 - beetrees:f16-debuginfo, r=michaelwoerister
Add Natvis visualiser and debuginfo tests for `f16`

To render `f16`s in debuggers on MSVC targets, this PR changes the compiler to output `f16`s as `struct f16 { bits: u16 }`, and includes a Natvis visualiser that manually converts the `f16`'s bits to a `float` which is can then be displayed by debuggers. `gdb`, `lldb` and `cdb` tests are also included for `f16` .

`f16`/`f128` MSVC debug info issue: #121837
Tracking issue: #116909
2024-07-09 09:07:42 +00:00
beetrees
b058de90a3
Add Natvis visualiser and debuginfo tests for f16 2024-07-09 03:47:50 +01:00
Jakub Beránek
151986f493 Implement x perf as a separate tool 2024-06-27 10:22:03 +02:00
Guillaume Gomez
6909feab8e Allow numbers in rustdoc tests commands 2024-06-24 11:10:18 +02:00
Guillaume Gomez
51fedf65ff Remove commands duplication between compiletest and tests/rustdoc 2024-06-24 11:10:17 +02:00
Guillaume Gomez
d3ec92e16e Move tests/rustdoc testsuite to //@ syntax 2024-06-24 11:08:41 +02:00
Matthias Krüger
6736641146
Rollup merge of #126663 - onur-ozkan:gitdir-thing, r=Mark-Simulacrum
remove `GIT_DIR` handling in pre-push hook

This is already handled from bootstrap: a1ca449981/src/bootstrap/src/utils/helpers.rs (L504-L506)
2024-06-23 22:38:59 +02:00
onur-ozkan
279bf05ffb remove GIT_DIR handling in pre-push hook
This is already handled from bootstrap at
a1ca449981/src/bootstrap/src/utils/helpers.rs (L504-L506).

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-06-19 07:33:12 +03:00
Jakub Beránek
87d2e61428 Add x perf command for profiling the compiler using rustc-perf 2024-06-12 21:05:55 +02:00
Nicholas Nethercote
5cf198d0d6 Remove path choice from x fmt and add --all option.
By default, `x fmt` formats/checks modified files. But it also lets you
choose one or more paths instead.

This adds significant complexity to `x fmt`. Explicit paths are
specified via `WalkBuilder::add` rather than `OverrideBuilder::add`. The
`ignore` library is not simple, and predicting the interactions between
the two mechanisms is difficult.

Here's a particularly interesting case.
- You can request a path P that is excluded by the `ignore` list in the
  `rustfmt.toml`. E.g. `x fmt tests/ui/` or `x fmt tests/ui/bitwise.rs`.
- `x fmt` will add P to the walker (via `WalkBuilder::add`), traverse it
  (paying no attention to the `ignore` list from the `rustfmt.toml`
  file, due to the different mechanism), and call `rustfmt` on every
  `.rs` file within it.
- `rustfmt` will do nothing to those `.rs` files, because it *also*
  reads `rustfmt.toml` and sees that they match the `ignore` list!

It took me *ages* to debug and understand this behaviour. Not good!

`x fmt` even lets you name a path below the current directory. This was
intended to let you do things like `x fmt std` that mirror things like
`x test std`. This works by looking for `std` and finding `library/std`,
and then formatting that. Unfortuantely, this motivating case now gives
an error. When support was added in #107944, `library/std` was the only
directory named `std`. Since then, `tests/ui/std` was added, and so `x
fmt std` now gives an error.

In general, explicit paths don't seem particularly useful. The only two
cases `x fmt` really needs are:
- format/check the files I have modified (99% of uses)
- format/check all files

(While respecting the `ignore` list in `rustfmt.toml`, of course.)

So this commit moves to that model. `x fmt` will now give an error if
given an explicit path. `x fmt` now also supports a `--all` option. (And
running with `GITHUB_ACTIONS=true` also causes everything to be
formatted/checked, as before.) Much simpler!
2024-05-29 16:24:48 +10:00
Vladimir Makayev
330ce83a8d lldb-formatters: Use StdSliceSyntheticProvider for &str 2024-05-11 12:11:55 -07:00
Vladimir Makayev
fb2d9cdfc5 Implement lldb formattter for "clang encoded" enums (LLDB 18.1+)
Summary:
I landed a fix last year to enable `DW_TAG_variant_part` encoding in LLDBs (https://reviews.llvm.org/D149213). This PR is a corresponding fix in synthetic formatters to decode that information.
This is in no way perfect implementation but at least it improves the status quo. But most types of enums will be visible and debuggable in some way.
I've also updated most of the existing tests that touch enums and re-enabled test cases based on LLDB for enums.

Test Plan:
ran tests `./x test tests/debuginfo/`. Also tested manually in LLDB CLI and LLDB VSCode

Other Thoughs
A better approach would probably be adopting [formatters from codelldb](https://github.com/vadimcn/codelldb/blob/master/formatters/rust.py). There is some neat hack that hooks up summary provider via synthetic provider which can ultimately fix more display issues for Rust types and enums too. But getting it to work well might take more time that I have right now.
2024-05-05 17:53:02 -07:00
onur-ozkan
67e3668c9a introduce x vendor
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-04-22 17:07:49 +03:00
bors
5958f5e08f Auto merge of #123317 - RalfJung:test-in-miri, r=m-ou-se,saethlin,onur-ozkan
Support running library tests in Miri

This adds a new bootstrap subcommand `./x.py miri` which can test libraries in Miri. This is in preparation for eventually doing that as part of bors CI, but this PR only adds the infrastructure, and doesn't enable it yet.

`@rust-lang/bootstrap` should this be `x.py test --miri library/core` or `x.py miri library/core`? The flag has the advantage that we don't have to copy all the arguments from `Subcommand::Test`. It has the disadvantage that most test steps just ignore `--miri` and still run tests the regular way. For clippy you went the route of making it a separate subcommand. ~~I went with a flag now as that seemed easier, but I can change this.~~ I made it a new subcommand. Note however that the regular cargo invocation would be `cargo miri test ...`, so `x.py` is still going to be different in that the `test` is omitted. That said, we could also make it `./x.py miri-test` to make that difference smaller -- that's in fact more consistent with the internal name of the command when bootstrap invokes cargo.

`@rust-lang/libs` ~~unfortunately this PR does some unholy things to the `lib.rs` files of our library crates.~~
`@m-ou-se` found a way that entirely avoids library-level hacks, except for some new small `lib.miri.rs` files that hopefully you will never have to touch. There's a new hack in cargo-miri but there it is in good company...
2024-04-05 13:17:09 +00:00
Ralf Jung
a6803b9de4 add 'x.py miri', and make it work for 'library/{core,alloc,std}' 2024-04-03 20:27:20 +02:00