aboutsummaryrefslogtreecommitdiff
path: root/docs/dev/pages/issues/t0_generalize-repl-system.md
blob: 73c9541ebeecae08c0a6d66ba34a942a6d0c8496 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<h1 align="center">[T0] Generalize the REPL System</h1>
<p align="center">
    Breaking: remove the <code>repl</code> feature and expose execution interfaces on the Program
</p>

> [!NOTE]
>
> This is a **Breaking Change** planned for Mingling 0.5.0.

## Background

The current REPL is merely _usable_, but far from _user-friendly_. The `repl` feature locks a specific interactive front-end into the framework, while the underlying execution model is what actually provides value.

## Plan

- Remove the `repl` feature in 0.5.0.
- 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.

The goal is to separate the execution model from any particular interactive front-end, letting users build their own REPL (or other execution drivers) on top of Mingling's public interfaces.

## Tasks

- [ ] Audit the current `repl` implementation and identify which behaviors belong to the execution model vs. the interactive front-end
- [ ] Design and expose the execution-related interfaces on `Program` (e.g. per-input execution, result handling, exit semantics)
- [ ] Remove the `repl` feature from `mingling`, `mingling_core`, and `mingling_macros`
- [ ] Remove or migrate the built-in REPL front-end
- [ ] Update examples and docs that enable `repl`

## 🕘 Progress

- [ ] In Progress
- [ ] Complete

<p align="center" style="font-size: 0.85em; color: gray;">
    Written by @Weicao-CatilGrass
</p>