diff options
Diffstat (limited to 'docs/dev/pages/issues/0.5.0-roadmap.md')
| -rw-r--r-- | docs/dev/pages/issues/0.5.0-roadmap.md | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/docs/dev/pages/issues/0.5.0-roadmap.md b/docs/dev/pages/issues/0.5.0-roadmap.md new file mode 100644 index 0000000..7f19774 --- /dev/null +++ b/docs/dev/pages/issues/0.5.0-roadmap.md @@ -0,0 +1,42 @@ +<h1 align="center">The Mingling 0.5.0 Roadmap</h1> + +Mingling 0.5.0 is going to be a significant release, planned as follows: + +1. **Breaking:** Remove the `pack!` macro: + +Since the very first version of Mingling, the `pack!` macro has been around. Its purpose has gradually narrowed from "creating a type and registering it to Mingling" to "creating a newtype that derives Grouped". In other words, the functionality of `pack!` is gradually being replaced by the `Grouped derive`. Furthermore, in 0.2.0, in order to accommodate `StructuralData derive`, Mingling introduced `pack_structural!` and `pack_err_structural!` variants all at once, which greatly increases the maintenance cost of the project. + +So I plan to introduce a Breaking Change in 0.5.0: remove the entire `pack!` family of macros. + +All future type creation will be done as follows: + +```rust +// Before +pack!(ResultNames = Vec<String>); + +// After +#[derive(Grouped)] +pub struct ResultNames { + names: Vec<String> +} +``` + +2. **Breaking:** Generalize the REPL system + +The current REPL is merely _usable_, but far from _user-friendly_. Mingling plans to remove the `repl` feature in 0.5 and by default expose more execution-related interfaces for the Program, so that users can extend functionality beyond the REPL by leveraging Mingling's execution model. + +3. **Breaking:** Remove the `parser` feature + +In 0.3.0, Mingling introduced the `picker` feature, which provides more powerful parameter parsing capabilities. At that point, the original `parser` feature became inadequate. Mingling plans to completely remove it, which will directly affect downstream users of the `parser` feature. + +4. **Feature:** Higher-level abstractions for the completion system + +Mingling's completion system filled a number of behavioral gaps in 0.4 and fixed many edge cases. It's now time to introduce more powerful higher-level abstractions. + +First, this feature will add a set of utility functions to `ShellContext`, enabling a smarter description of user state, rather than simply relying on manually identifying user behavior through fields like `previous_word`. + +Additionally, when the `picker` feature introduced in 0.3.0 is enabled together with the `comp` feature, a module named `picker_comp` will be activated to enable more completion behaviors. + +<p align="center" style="font-size: 0.85em; color: gray;"> + Written by @Weicao-CatilGrass +</p> |
