aboutsummaryrefslogtreecommitdiff
path: root/docs/dev/pages/issues/0.5.0-roadmap.md
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-13 02:14:16 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-13 02:14:26 +0800
commitf12b551a6567057c50f342fd062810703ce61b7b (patch)
tree8757601078bcd263b500c5035ce264684afebaea /docs/dev/pages/issues/0.5.0-roadmap.md
parent0bed1f9063d81aab827dc8b26d925341b59d12e6 (diff)
docs: add 0.5.0 roadmap issue
Diffstat (limited to 'docs/dev/pages/issues/0.5.0-roadmap.md')
-rw-r--r--docs/dev/pages/issues/0.5.0-roadmap.md42
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>