Why Cargo Check Is So Slow
eveeifyeve.pages.dev
eveeifyeve.pages.dev
You're linking to https://eveeifyeve.pages.dev/http://localhost:4321/blogs/car...
You meant to link to https://eveeifyeve.pages.dev/blogs/cargo-check-slow.mdx/
Also, ew, auto-playing music.
Either someone's edited that since then, or a weird auto-redirect on your server happened.
Might wanna fix that
> <link rel="canonical" href="http://localhost:4321/blogs/cargo-check-slow.mdx/">
None of us kids back then were any better.
The teachers were going to physically cut the speaker wires in each machine in the computer suite due to all the out-of-sync MIDI renditions of Beverly Hills Cop / Axel F theme before they figured out another solution.
We're starting to ban them from our Rust monorepo.
As to proc macros, I don't think it's possible to implement derive without them. I think it would be fairly easy to detect their presence in a crate at least though.
Both things are also made more complicated by feature flags.
* What is metadata_decode_entry_impl_trait_header and what does it have to do with proc macros? I suppose if a proc macro emitted code that used impl Trait a bunch then it might need to use this code, but I don't see why that would disproportionately affect compile times.
* What's the proposal for how to fix this?
There have been some proposals to compile the proc-macros to WASM and share those alongside the code in crates.io, but nothing substantial has come of it.
Ever since a while ago, rustc uses Miri for const evaluation. So there are a lot of things it can do that it used to not be able to do. But, yes, const evaluation is limited to things that are part of the `const` subset.
I use bacon with cargo-make to toggle between check, nextest+doctest, and a full series of pre-commit checks.