Closed PoignardAzur closed 6 months ago
Thanks a lot! 🚀
One question about the lib.rs docs:
Venial never improves incremental build times at all (since dependencies are cached, even when incremental compilation is off).
I'm not sure if this reasoning is correct -- proc-macros invoked in client code are running again and again. For example, syn
parses the entire body of all functions it encounters and builds an AST for every expression.
Also, rustc doesn't cache proc-macro invocations to my knowledge, since in theory they can have side effects and aren't pure functions. But even if caching were enabled: if you have a #[some_attribute_macro]
on a big impl
or mod
block and change a single token inside, the whole thing has to be re-evaluated. If there is less parsing work being done, why would venial not be faster?
I'm not sure Venial actually does less parsing. My best guess as to why its performance in first builds is better is that Venial itself is faster to compile than Syn, since it's much smaller. But I don't think it's much faster to run. In any case, I haven't observed big differences in incremental times.
Fix deprecation warnings from assert macros Update lockfile Tweak docs