Sign in

Lukas Wirth

@lukaswirth.dev
633 followers 330 following 156 posts

Rust Engineer at @zed.dev rust-analyzer team lead Sponsor my rust-analyzer work here github.com/sponsors/Veykril

PostsRepliesMedia
Lukas Wirth @lukaswirth.dev · 30/06/2026
Just stumbled upon the fact that both anthropic and openai are implementing the modelcontextprotocol.io/specificatio... spec incorrectly, forbidding `.` from being used in tool names 🙄
050
Lukas Wirth @lukaswirth.dev · 03/05/2026
this but on a very different scale
A: I made this
B: You made this?
B: I made this
030
Lukas Wirth @lukaswirth.dev · 16/01/2026
Oh so that's what you changed on my PR, this diff had me so confused lol
100
Lukas Wirth @lukaswirth.dev · 31/12/2025
`#![feature(trivial_bounds)]` or as I like to call it on stable: `for<'trivial_bounds> Type: Bound`
error[E0277]: the trait bound `NoopEviction: HasCapacity` is not satisfied
    --> tests\cycle.rs:1306:5
     |
1306 |     #[salsa::tracked]
     |     ^^^^^^^^^^^^^^^^^ the trait `HasCapacity` is not implemented for `NoopEviction`
     |
help: the trait `HasCapacity` is implemented for `Lru`
    --> C:\Workspace\salsa\src\function\eviction\lru.rs:75:1
     |
  75 | impl HasCapacity for Lru {}
     | ^^^^^^^^^^^^^^^^^^^^^^^^
     = help: see issue #48214
     = note: this error originates in the macro `salsa::plumbing::setup_tracked_fn` which comes from the expansion of the attribute macro `salsa::tracked` (in Nightly builds, run with -Z macro-backtrace for more info)
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
     |
   7 + #![feature(trivial_bounds)]
     |                fn set_lru_capacity(db: &mut dyn $Db, value: usize)
                where
                    for<'trivial_bounds> $Eviction: $zalsa::function::HasCapacity
                {
                    $Configuration::fn_ingredient_mut(db).set_capacity(value);
                }
090
Lukas Wirth @lukaswirth.dev · 18/12/2025
Look at the diff of a PR that touches a lot of files and you will be forced into this weird mode which is just so annoying to work with in my opinion.
030
Lukas Wirth @lukaswirth.dev · 13/06/2025
Whew this is bigger than expected
A photo of the book building a debugger
090
Lukas Wirth @lukaswirth.dev · 29/05/2025
Finally fixed rust-analyzer not carrying over `#[cfg(..)]` attributes when inserting imports into the file github.com/rust-lang/ru...
0210
Lukas Wirth @lukaswirth.dev · 29/04/2025
why does this still work lol. I guess I didn't remove it, I just changed our heuristics to no longer special case string literals.
A screenshot of a VSCode hoverbox from hovering the string literal in `#[serde(skip_serializing_if = "Option::is_none")]`
160
Lukas Wirth @lukaswirth.dev · 26/04/2025
I just got an amazing captcha
A tile clicking image base captcha with 4x4 tiles. The entire image is one giant bus and the captcha asks to select all tiles with buses.
1111
Lukas Wirth @lukaswirth.dev · 22/04/2025
I've been neglecting reviews on rust-analyzer for too long again it seems 😩
Screenshot showing the pull request tab of rust-lang/rust-analyzer with 30 open PRs
1370
Lukas Wirth @lukaswirth.dev · 22/04/2025
Is this guy one?
140
Lukas Wirth @lukaswirth.dev · 10/02/2025
Progress! Most IDE features work now (notice syntax highlighting and inlay hints) and I've also added really bad whitespace insertion to make things more legible. There are some off by one errors in the mapping code though so some stuff breaks occasionally.
0130
Lukas Wirth @lukaswirth.dev · 09/02/2025
Okay this is more viable than I anticipated now I feel like I have to flesh this out. I think this is what you could label as actual first class IDE support for macros. I am astonished at how well this works.
1225
Lukas Wirth @lukaswirth.dev · 09/02/2025
Had some fun with prototyping a very cursed idea in rust-analyzer today.
2210
Lukas Wirth @lukaswirth.dev · 30/12/2024
rust-analyzer now has some basic* parameter variance inferrence and it shows it on hover! *basic as in it can't handle cyclic dependencies yet for temporary implementation reasons, it also struggles with usages within const arguments.
Screenshot of hovering `Option`'s `T` parameter showing that it is covariantScreenshot of hovering `RefCell`'s `T` parameter showing that it is invariantScreenshot of hovering `Path::new`'s `S` parameter showing that it is contravariant
1567
Lukas Wirth @lukaswirth.dev · 21/11/2024
The Shinkasen is a pretty cool experience I have to say (especially when you are used to the Deutsche Bahn)
030