PoignardAzur / venial

"A very small syn"
MIT License
192 stars 9 forks source link

Bump version to 0.6.0 #58

Closed PoignardAzur closed 6 months ago

PoignardAzur commented 6 months ago

Fix deprecation warnings from assert macros Update lockfile Tweak docs

Bromeon commented 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?

PoignardAzur commented 6 months ago

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.