Description
eframe currently compiles in about 10s on my M3 MacBook Pro, as measured by
cargo clean && cargo build --timings -p eframe
Getting rid of proc-macros
A lot of that time is waiting for proc-macro and syn so that we can start compiling bytemuck, thiserror, and foreign-types-macros (used by core-graphics, which is used by winit).
Getting rid of the proc-macros in bytemuck should be simple (replace by manual implementation of its unsafe traits for Color32, Vertex etc).
Likewise, replacing thiserror should also be fairly trivial.
I haven't looked into foreign-types, but even removing some proc-macro usage should allow some crates to start compiling earlier, hopefully reducing the total end-to-end compilation time.
Other stuff
ahashhas abuild.rstakes a full second to runicratetakes 5-6 seconds of CPU time
wgpu
Switching glow for wgpu adds another 10s, i.e. doubling the compilation time.
To investigate the compilation time of wgpu, run:
cargo clean && cargo build --timings -p wgpu