@jarkko agreed, if you don't use serde features (derive macros, etc.) or need high performance, it's better to think of developer experience and get shorter compile times without serde. But for now you're not syn-free, right? Did you save enough on compile times ?
@jarkko syn is a crate that allows macros to parse rust code accurately at build time - a feature that is not provided by the language.
It's often responsible for a lot of the build time. serde depends on it for example, but so do many other crates, many of which are in tpm2sh:
- rstests
- pest_derive
- tracing
@jarkko for example, with `cargo build --timings --release --workspace` : syn is #6
@jarkko I know, I was replying to you getting rid of serde_json, which was only used in tpm2sh 🙂
@jarkko you might want to look at `cargo tree` too. And the inverse to focus on a single dep (e.g syn):
```
> cargo tree --invert syn -e no-dev
syn v2.0.104
├── pest_generator v2.8.1
│ └── pest_derive v2.8.1 (proc-macro)
│ └── tpm2sh v0.7.0 (/tmp/tpm2_library/tpm2sh)
├── thiserror-impl v2.0.15 (proc-macro)
│ └── thiserror v2.0.15
│ ├── pest v2.8.1
│ │ └── tpm2sh v0.7.0 (/tmp/tpm2_library/tpm2sh)
│ ├── pest v2.8.1
│ │ ├── pest_derive v2.8.1 (proc-macro) (*)
│ │ ├── pest_generator v2.8.1 (*)
│ │ └── pest_meta v2.8.1
│ │ └── pest_generator v2.8.1 (*)
│ └── tpm2sh v0.7.0 (/tmp/tpm2_library/tpm2sh)
└── tracing-attributes v0.1.30 (proc-macro)
└── tracing v0.1.41
├── tpm2sh v0.7.0 (/tmp/tpm2_library/tpm2sh)
└── tracing-subscriber v0.3.19
└── tpm2sh v0.7.0 (/tmp/tpm2_library/tpm2sh)
```