summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/intellij.md6
-rw-r--r--docs/roadmap.ja.md5
-rw-r--r--docs/roadmap.md45
3 files changed, 41 insertions, 15 deletions
diff --git a/docs/intellij.md b/docs/intellij.md
index a488fca6..df8a8330 100644
--- a/docs/intellij.md
+++ b/docs/intellij.md
@@ -35,9 +35,9 @@ class names occur in many chapters, so a class name alone cannot identify the
intended snapshot.
Tests that compile native code still need the C toolchain on IntelliJ's PATH.
-Tests using Chapter 28b's native runtime or saved `sys` library also need the
-Make prerequisites: run `make -C chapter28b release CTAGS=` before debugging
-those tests. IntelliJ's Java build does not build the native runtime or library.
+Tests using the native runtime or saved `sys` library in Chapters 28b and 29
+also need the Make prerequisites. Run `make -C chapter29 release CTAGS=`
+(or `chapter28b` for that snapshot) before debugging those tests. IntelliJ's Java build does not build the native runtime or library.
For the JUnit working directory and module classpath settings, see
[JetBrains' JUnit configuration reference](https://www.jetbrains.com/help/idea/run-debug-configuration-junit.html).
diff --git a/docs/roadmap.ja.md b/docs/roadmap.ja.md
index 395eab18..535909ee 100644
--- a/docs/roadmap.ja.md
+++ b/docs/roadmap.ja.md
@@ -5,6 +5,11 @@
未完了の作業と将来の言語設計案の要約です。現在の言語仕様や実装済みの機能を
示すものではありません。詳細と最新の判断は[英語版](roadmap.md)を参照してください。
+現在の作業場所は[第29章: 技術的負債の整理](../chapter29/README.ja.md)です。
+パーサの分割を引き継ぎ、初期化完了チェックなどを整理します。
+ソース上のプライバシー制約は、最初の整理が終わるまで保留します。
+自動メモリ管理と、2-D グラフィックス・キーボード・音声を使う小さなゲームも将来案です。
+
## 正確性とコンパイル
- Eval2 の追加ロード時のスケジューリング用領域を整理し、`GlobalEscapeNode` が共有する呼び出し・関数要約の走査を増分化する。
diff --git a/docs/roadmap.md b/docs/roadmap.md
index 98309114..0027f8fe 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -3,10 +3,25 @@
English | [日本語](roadmap.ja.md)
Open compiler work and language proposals, reviewed against the current
-snapshots on 2026-10-29. These are future changes, not promises about the
+snapshots on 2026-11-01. These are future changes, not promises about the
language implemented by the tutorial. Language changes still need their own
design decisions and chapter boundaries.
+## Current chapter: tech debt cleanup
+
+[Chapter 29](../chapter29/README.md) carries the parser split into grammar-sized
+components, with `Var` in `parser/` and `IterPeeps` in `codegen/`. It is the
+workspace for further cleanup; Chapter 28b retains the preceding compiler.
+
+Keep the recursive-descent path aligned with the grammar. Review moving `TYPES`
+to `CodeGen`, and simplify constructor completion using the already-merged
+return scope without losing uninitialized-field information. Consider whether
+an allocation-free use of try-with-resources makes keep/unkeep pairing clearer;
+this remains an experiment, not a new resource-management convention.
+
+Source privacy is deferred until after this initial cleanup. The archived
+implementation and tests are experiments, not part of Chapter 29's behavior.
+
## Compilation and optimization
### Phase ordering and incremental analysis
@@ -106,9 +121,9 @@ instance-layout optimization.
### Source privacy
Underscores already select the public interface, but source access to another
-class's private fields is not rejected. The proposal is to enforce privacy
-starting in Chapter 28a, then preserve it across imports in 28b. This language
-change still needs review; it is not a correction to impose on earlier chapters.
+class's private fields is not rejected. Revisit source enforcement and its
+preservation across imports after the Chapter 29 cleanup. This language change
+still needs review; it is not a correction to impose on earlier chapters.
- A field or method beginning with `_` is accessible only from its declaring
class, including constructors and methods. Enclosing, nested, and sibling
@@ -206,6 +221,20 @@ native boundary conversions when choosing the representation.
These are language-design alternatives. The sketches below are not executable
examples of the current Simple grammar.
+### Automatic memory management
+
+Explore automatic memory reclamation with few explicit lifetime annotations,
+using Rust and [Goose](https://github.com/aardappel/goose/blob/master/docs/tutorial.md)
+as design references. Decide ownership, borrowing, sharing, cycles, and native
+retention together with the existing object and array model. This is a language
+design candidate, independent of compact pointer storage.
+
+### A small interactive game
+
+Build a small game in Simple with 2-D graphics, keyboard input, and sound.
+Use it to exercise practical library APIs and native bindings; choose the game
+and supporting graphics/audio library when this project is taken up.
+
### Structs with trailing arrays
Allow named fields followed by an array length and inline element storage:
@@ -278,11 +307,3 @@ syntax uniform and define the calling convention for by-value arguments.
Consider making `int` mean `i32` instead of the current `i64`. This changes
overflow behavior, layouts, APIs, and native interfaces, so it needs a language
decision and a deliberate compatibility boundary.
-
-### Parser Cleanup
-
-Get the Parsers' structure closer to an ideal R-D parser, and matching the
-grammer doc. Move TYPES to CodeGen, and generally restructure for readability.
-Ponder using try-w-resources to do the keep/unkeep pairing (do NOT do any
-allocation in the `try`, just bring up an object w/auto-closable which tracks
-the unkeeps) - see if that looks any cleaner.