aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/dev/_sidebar.md3
-rw-r--r--docs/dev/pages/issues/0.5.0-roadmap.md42
2 files changed, 44 insertions, 1 deletions
diff --git a/docs/dev/_sidebar.md b/docs/dev/_sidebar.md
index db12d48..03a0edf 100644
--- a/docs/dev/_sidebar.md
+++ b/docs/dev/_sidebar.md
@@ -1,9 +1,10 @@
- [Welcome!](README)
* ❓ Issues
+ * [The Mingling 0.5.0 Roadmap](pages/issues/0.5.0-roadmap)
* [[Solved] The Picker2 Arguments Parser](pages/issues/_add-picker2)
* [[Solved] Remove r_print! and r_println! Macros](pages/issues/_remove-r-print-macro)
+ * [[Solved] The Command Macro](pages/issues/_the-command-macro)
* [[Solved] The Mod Pathfinder](pages/issues/_the-mod-pathfinder)
- * [The Command Macro](pages/issues/the-command-macro)
* [The Next-Gen Mingling Pipeline](pages/issues/the-next-pipeline)
* [Some Situations Where You'd Be Like "Shit!"](pages/issues/the-shit-time)
* 💡 Abouts
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>