Lukas Wirth's Avatar

Lukas Wirth

@lukaswirth.dev.bsky.social

Rust Engineer at @zed.dev rust-analyzer team lead

358 Followers  |  197 Following  |  76 Posts  |  Joined: 21.11.2023  |  1.9541

Latest posts by lukaswirth.dev on Bluesky

Excited to announce that I'll be working on @zed.dev starting today!

04.08.2025 10:38 — 👍 50    🔁 0    💬 4    📌 0

Woah congrats!

29.07.2025 19:33 — 👍 3    🔁 0    💬 0    📌 0
I am a Rust compiler engineer looking for a new job For the past 3.75 years I have been fortunate to work on Futurewei’s Rust team, where I had enormous freedom to “make Rust better” however I see fit. It has been the highlight of my career and I am gr...

New blog post: I am a Rust compiler engineer looking for a new job

nnethercote.github.io/2025/07/18/l...

18.07.2025 04:33 — 👍 85    🔁 44    💬 5    📌 2

Howdy all. I'm unfortunately not going to be with my employer for much longer due to team relocation. If anyone has any info on roles that would allow me to continue my Rust compiler work (in New York City), they'd be greatly appreciated.

02.07.2025 17:31 — 👍 91    🔁 45    💬 2    📌 1

It seems like we can mostly ignore those new bounds and thing should just work™ again but we'll see

25.06.2025 11:49 — 👍 4    🔁 0    💬 0    📌 0

Rust 1.89 contains the sized hierarchy changes which turns out completely break rust-analyzer's type inference 😩

Our metrics dipped quite badly when beta was bumped yesterday rust-analyzer.github.io/metrics/?sta...

Sized hierarchy OR: github.com/rust-lang/ru...

25.06.2025 10:14 — 👍 20    🔁 0    💬 1    📌 0

> However, are there problems with a proc-macro returning more than one item?

That is also just fine, derives are not even required to output a trait impl. It's just convention as that was what they initially were meant for. Nowadays its more just a macro kind that cannot change its input.

22.06.2025 10:53 — 👍 2    🔁 0    💬 1    📌 0

Note that `const _` is exemtp from the non-local lint, as its currently the only way to generate code without polluting the surrounding scope due to the lack of stable declaration site hygiene. So the first one is be preferred if you don't want to leak generated code out of its scope.

22.06.2025 10:52 — 👍 2    🔁 0    💬 1    📌 0

hey, lukas and i gave a talk about salsa in rust-analyzer and i think it’s a good time; check it out

16.06.2025 14:08 — 👍 50    🔁 10    💬 2    📌 1
A photo of the book building a debugger

A photo of the book building a debugger

Whew this is bigger than expected

13.06.2025 13:20 — 👍 8    🔁 0    💬 0    📌 0

Is there a cargo plugin that goes through your codebase and lints on any visibility qualifier that could be shrinked in scope? 🤔

That is if there is some definition `pub(crate) thing` but that is only ever used in the module itself I want something that tells me, "This `pub(crate)` can be omitted"

13.06.2025 05:28 — 👍 28    🔁 5    💬 2    📌 0

if it takes a long time to do, can you really call it "prompt" engineering

11.06.2025 16:58 — 👍 162    🔁 7    💬 13    📌 1

Discovered riichi mahjong yesterday and I absolutely love it, super interesting game (while also being super frustrating due to its luck component)

09.06.2025 17:30 — 👍 1    🔁 0    💬 0    📌 0

Only took me one and a half years of bouldering to get my first finger injury let's go. Fortunately in a way that I can still use my finger, just gotta take a break from bouldering it seems :(

09.06.2025 12:16 — 👍 10    🔁 0    💬 1    📌 0

Currently doing a rebase with a ton of conflicts in it and I am once again tempted to change the import granularity in rust-analyzer to per item (that is one item per import per line).

Doesn't help that this rebase is across an edition bump which apparently changed rustfmt formatting for imports...

31.05.2025 05:42 — 👍 2    🔁 0    💬 2    📌 0
Video thumbnail

Finally fixed rust-analyzer not carrying over `#[cfg(..)]` attributes when inserting imports into the file github.com/rust-lang/ru...

29.05.2025 12:45 — 👍 21    🔁 0    💬 0    📌 0
Preview
Trigger VSCode to rename after extract variable assist is applied · rust-lang/rust-analyzer@8efe8a8 When the user applies the "Extract Variable" assist, the cursor is positioned at the newly inserted variable. This commit adds a command to the assist that triggers the rename action in V...

rust-analyzer emulates this for the `extract to variable` assist by making the edit and then triggering the client to trigger a rename request. This does unfortunately need client side glue, so its not quite what you are after (do let me know if you figure something out :) github.com/rust-lang/ru...

01.05.2025 20:17 — 👍 1    🔁 0    💬 1    📌 1

The string literals span is being re-used for things, so we just show all the things with the strings span on hover which can be non-string tokens in the expansion. We merely have a heuristic that tries to sort these results according to what you hovered initially which doesn't do anything here

29.04.2025 16:32 — 👍 2    🔁 0    💬 0    📌 0
A screenshot of a VSCode hoverbox from hovering the string literal in `#[serde(skip_serializing_if = "Option::is_none")]`

A screenshot of a VSCode hoverbox from hovering the string literal in `#[serde(skip_serializing_if = "Option::is_none")]`

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.

29.04.2025 14:26 — 👍 5    🔁 0    💬 1    📌 0

wait what, we still do that? I thought for sure I removed that lol

29.04.2025 14:04 — 👍 4    🔁 0    💬 1    📌 0
CLI reference - Jujutsu docs

Fyi, `simplify-parents` usually removes most (if not all) merge commits (if you haven't used that). Really nice to turn a PR history linear jj-vcs.github.io/jj/latest/cl...

28.04.2025 09:28 — 👍 11    🔁 0    💬 2    📌 0

Selecting all tiles was in fact not correct

26.04.2025 19:04 — 👍 8    🔁 1    💬 0    📌 0
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.

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.

I just got an amazing captcha

26.04.2025 19:03 — 👍 12    🔁 1    💬 1    📌 0

Github honestly is the worst tool to review PRs with, I hate it so much especially for bigger diffs

25.04.2025 09:49 — 👍 10    🔁 0    💬 0    📌 0

Yeeee don't do that

24.04.2025 08:04 — 👍 1    🔁 0    💬 1    📌 0
Screenshot showing the pull request tab of rust-lang/rust-analyzer with 30 open PRs

Screenshot showing the pull request tab of rust-lang/rust-analyzer with 30 open PRs

I've been neglecting reviews on rust-analyzer for too long again it seems 😩

22.04.2025 13:16 — 👍 38    🔁 0    💬 1    📌 0
Post image

Is this guy one?

22.04.2025 07:15 — 👍 4    🔁 0    💬 1    📌 0

So apparently I developed insomnia last night, perfect timing given there is 5 day weekend here now ugh

17.04.2025 23:23 — 👍 6    🔁 0    💬 1    📌 0

Gotta make sure this succeeds :^) (syn / serde is ruining compile times in r-a)

10.04.2025 11:46 — 👍 7    🔁 0    💬 0    📌 0
renderdag - Rust API documentation for the Rust `renderdag` crate.

Looking at what jj seems to be using for its log command github.com/jj-vcs/jj/bl..., its crates.io/crates/sapli...

Maybe that's usable for you?

09.04.2025 14:21 — 👍 13    🔁 0    💬 2    📌 0

@lukaswirth.dev is following 20 prominent accounts