yash-rs
yash-rs copied to clipboard
Flatten the crate dependency graph
Description
Currently, the crate structure in yash-rs forms a deep dependency chain:
yash-syntax → yash-env → yash-semantics → yash-prompt → yash-builtin.
This depth causes a few problems. Any breaking change in an upstream crate (for example, in yash-syntax) forces major version bumps in all downstream crates, even when their public APIs or internal implementations haven’t changed. As a result, we end up with frequent major releases whose only purpose is to keep version numbers in sync.
Deep dependencies also slow down builds by reducing opportunities for parallel compilation.
To address these issues, we’d like to simplify the dependency graph.
The goal is to consolidate shared components into yash-env, and have all other crates (except yash-cli) depend only on yash-env. The yash-cli crate will act as the umbrella that ties everything together.