Document post-beta roadmap
This commit is contained in:
parent
31a8d2bd9b
commit
d83e20b062
@ -13,11 +13,21 @@ Slovo reaches stable `1.0.0` only after:
|
|||||||
|
|
||||||
## Recommended Sequence
|
## Recommended Sequence
|
||||||
|
|
||||||
1. Harden monorepo release tooling, clean docs, and public install/build flow.
|
The detailed post-beta feature plan lives in
|
||||||
2. Stabilize `lib/std` module boundaries and document beta-vs-stable APIs.
|
`docs/POST_BETA_ROADMAP.md`. Keep this file as the short stable-readiness
|
||||||
3. Broaden numeric completeness with explicit `f32` and additional integer
|
summary and use the public roadmap document when choosing the next connected
|
||||||
policy where needed.
|
implementation scope.
|
||||||
4. Improve collection and string breadth without exposing unstable ABI details.
|
|
||||||
|
1. Harden monorepo release tooling, install flow, and common build/run loops.
|
||||||
|
2. Define runtime resource and host-error policy before broad IO and networking.
|
||||||
|
3. Stabilize `lib/std` module boundaries and document beta-vs-stable APIs.
|
||||||
|
4. Improve language usability around entry points, `match`, aliases, and
|
||||||
|
concrete numeric completeness.
|
||||||
5. Expand package/workspace discipline before remote registry work.
|
5. Expand package/workspace discipline before remote registry work.
|
||||||
6. Add editor-facing diagnostics and generated documentation improvements.
|
6. Add networking only after resource/error policy is coherent.
|
||||||
7. Freeze migration/deprecation policy and cut stable only after beta feedback.
|
7. Add serialization/data-interchange helpers before richer network libraries.
|
||||||
|
8. Design generics and collection unification from real stdlib duplication
|
||||||
|
pressure.
|
||||||
|
9. Add editor-facing diagnostics, watch mode, and generated documentation
|
||||||
|
improvements.
|
||||||
|
10. Freeze migration/deprecation policy and cut stable only after beta feedback.
|
||||||
|
|||||||
@ -77,6 +77,7 @@ SLOVO_STD_PATH="$PWD/lib/std" ./compiler/target/debug/glagol build hello -o hell
|
|||||||
- [Language Manifest](docs/language/MANIFEST.md)
|
- [Language Manifest](docs/language/MANIFEST.md)
|
||||||
- [Language Specification](docs/language/SPEC-v1.md)
|
- [Language Specification](docs/language/SPEC-v1.md)
|
||||||
- [Compiler Manifest](docs/compiler/GLAGOL_COMPILER_MANIFEST.md)
|
- [Compiler Manifest](docs/compiler/GLAGOL_COMPILER_MANIFEST.md)
|
||||||
|
- [Post-Beta Roadmap](docs/POST_BETA_ROADMAP.md)
|
||||||
- [Slovo Whitepaper](docs/papers/SLOVO_WHITEPAPER.md)
|
- [Slovo Whitepaper](docs/papers/SLOVO_WHITEPAPER.md)
|
||||||
- [Glagol Whitepaper](docs/papers/GLAGOL_WHITEPAPER.md)
|
- [Glagol Whitepaper](docs/papers/GLAGOL_WHITEPAPER.md)
|
||||||
|
|
||||||
|
|||||||
202
docs/POST_BETA_ROADMAP.md
Normal file
202
docs/POST_BETA_ROADMAP.md
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
# Post-Beta Roadmap
|
||||||
|
|
||||||
|
Slovo `1.0.0-beta` is the first usable general-purpose beta baseline. The next
|
||||||
|
work should broaden the language and toolchain in connected beta slices without
|
||||||
|
pretending that ABI, package, runtime, or standard-library contracts are stable
|
||||||
|
yet.
|
||||||
|
|
||||||
|
## Direction
|
||||||
|
|
||||||
|
The best continuation is not a single feature lane. Slovo needs alternating
|
||||||
|
language, compiler, runtime, stdlib, and tooling slices so each new capability
|
||||||
|
can be used in real programs and verified by the release gate.
|
||||||
|
|
||||||
|
Each slice should ship only when it updates:
|
||||||
|
|
||||||
|
- language and compiler docs
|
||||||
|
- source examples and standard-library modules when relevant
|
||||||
|
- formatter behavior
|
||||||
|
- diagnostics and negative tests
|
||||||
|
- hosted runtime behavior when relevant
|
||||||
|
- benchmarks or conformance tests when relevant
|
||||||
|
- release notes and the public roadmap
|
||||||
|
|
||||||
|
## Immediate Sequence
|
||||||
|
|
||||||
|
### 1. Tooling And Release Hardening
|
||||||
|
|
||||||
|
Goal: make the public monorepo easy to build, test, install, and verify.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- add `glagol run` for the common build-and-execute loop
|
||||||
|
- add `glagol clean` for generated build artifacts
|
||||||
|
- improve `glagol new` templates for library, binary, and workspace projects
|
||||||
|
- document install paths for `glagol`, `runtime/`, and `lib/std`
|
||||||
|
- make release gates print a concise final summary
|
||||||
|
- keep PDF rendering explicit and non-mutating by default
|
||||||
|
|
||||||
|
Why first: it reduces friction for every later feature and gives users a better
|
||||||
|
way to exercise the beta.
|
||||||
|
|
||||||
|
### 2. Runtime And Resource Foundation
|
||||||
|
|
||||||
|
Goal: create a safer foundation for host resources before adding networking or
|
||||||
|
larger IO APIs.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- define beta resource-handle policy for files, processes, sockets, and future
|
||||||
|
host objects
|
||||||
|
- make host errors consistently return concrete `result` values where possible
|
||||||
|
- audit allocation failure behavior for strings and vectors
|
||||||
|
- add runtime conformance tests for cleanup paths
|
||||||
|
- document that resource handles are beta values, not stable ABI promises
|
||||||
|
|
||||||
|
Why second: networking, file IO, process IO, and HTTP all need a common story
|
||||||
|
for handles, errors, cleanup, and platform variance.
|
||||||
|
|
||||||
|
### 3. Standard Library Stabilization Pass
|
||||||
|
|
||||||
|
Goal: make existing `lib/std` modules feel coherent before adding many new
|
||||||
|
surface areas.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- mark each public helper as beta-supported, experimental, or internal
|
||||||
|
- normalize naming across `std.string`, `std.num`, `std.math`, `std.io`,
|
||||||
|
`std.fs`, `std.env`, `std.process`, `std.cli`, `std.time`, and `std.random`
|
||||||
|
- add examples that compose multiple modules in one realistic command-line
|
||||||
|
program
|
||||||
|
- add stdlib documentation generation coverage
|
||||||
|
- identify helpers that should wait for generics instead of being copied across
|
||||||
|
concrete type families
|
||||||
|
|
||||||
|
Why third: stdlib growth is already broad enough that naming and stability tiers
|
||||||
|
matter more than adding another isolated helper group.
|
||||||
|
|
||||||
|
### 4. Language Usability Slice
|
||||||
|
|
||||||
|
Goal: reduce awkwardness in common programs without destabilizing the typed core.
|
||||||
|
|
||||||
|
Candidate features:
|
||||||
|
|
||||||
|
- `glagol run`-friendly `main` conventions and clearer entry-point diagnostics
|
||||||
|
- better `match` diagnostics and exhaustiveness checks where the current enum
|
||||||
|
model allows it
|
||||||
|
- type aliases for long concrete types such as vectors, options, and results
|
||||||
|
- destructuring for simple structs and enum payloads
|
||||||
|
- additional numeric completeness such as `f32`, only if it can be tested across
|
||||||
|
checker, formatter, runtime, and docs
|
||||||
|
|
||||||
|
Why fourth: these features improve real Slovo code while keeping generics and
|
||||||
|
traits deferred until the core has more feedback.
|
||||||
|
|
||||||
|
### 5. Package And Workspace Discipline
|
||||||
|
|
||||||
|
Goal: make multi-package local development predictable before remote registry
|
||||||
|
work.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- document package identity, version, and local dependency rules
|
||||||
|
- decide whether a lockfile belongs in the beta package model
|
||||||
|
- add project-wide `fmt`, `check`, `test`, `doc`, `build`, and `run` behavior
|
||||||
|
- add diagnostics for ambiguous package roots and dependency cycles
|
||||||
|
- keep remote registry, semver solving, and publishing out of scope
|
||||||
|
|
||||||
|
Why fifth: stable package rules are a prerequisite for a usable public language,
|
||||||
|
but remote publishing can wait.
|
||||||
|
|
||||||
|
### 6. Networking Foundation
|
||||||
|
|
||||||
|
Goal: add minimal blocking local networking after resource and error policy is
|
||||||
|
in place.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- add `std.net` with blocking TCP client/server primitives
|
||||||
|
- use loopback-only deterministic tests
|
||||||
|
- expose host failures through result values
|
||||||
|
- keep TLS, async, DNS policy, HTTP server frameworks, and event loops deferred
|
||||||
|
- add small examples such as echo client/server or local request/response
|
||||||
|
|
||||||
|
Why sixth: networking is useful, but doing it before resources and host errors
|
||||||
|
would create unstable API debt.
|
||||||
|
|
||||||
|
### 7. Serialization And Data Interchange
|
||||||
|
|
||||||
|
Goal: make Slovo useful for command-line and network programs without requiring
|
||||||
|
maps/sets immediately.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- add string scanning/tokenizing helpers
|
||||||
|
- add simple JSON text construction helpers first
|
||||||
|
- defer full JSON object parsing until maps, richer strings, or generic
|
||||||
|
collections exist
|
||||||
|
- add benchmark cases for parsing and formatting
|
||||||
|
|
||||||
|
Why seventh: networking and CLI tools need data interchange, but a complete JSON
|
||||||
|
library depends on collection work.
|
||||||
|
|
||||||
|
### 8. Generics And Collection Unification
|
||||||
|
|
||||||
|
Goal: stop duplicating every helper across concrete vector, option, and result
|
||||||
|
families.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- design generic function syntax and typed-core representation
|
||||||
|
- gate generic stdlib helpers behind conformance tests
|
||||||
|
- migrate repeated concrete helpers only after compatibility policy is written
|
||||||
|
- add generic arrays/vectors first, then maps and sets
|
||||||
|
- keep stable ABI/layout promises deferred until after real beta use
|
||||||
|
|
||||||
|
Why eighth: generics are important, but they should be introduced after the
|
||||||
|
compiler, docs, tests, and stdlib have enough real pressure to validate the
|
||||||
|
design.
|
||||||
|
|
||||||
|
### 9. Developer Experience
|
||||||
|
|
||||||
|
Goal: make Slovo comfortable for repeated daily use.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- language-server diagnostics and document symbols
|
||||||
|
- project watch mode
|
||||||
|
- generated API documentation for local packages and `lib/std`
|
||||||
|
- clearer benchmark harness output
|
||||||
|
- machine-readable diagnostics stability policy
|
||||||
|
|
||||||
|
Why ninth: editor support matters, but it should follow a stable enough syntax,
|
||||||
|
project model, and diagnostic model.
|
||||||
|
|
||||||
|
## Stable `1.0.0` Gate
|
||||||
|
|
||||||
|
Slovo should not become stable until all of these are true:
|
||||||
|
|
||||||
|
- migration and deprecation policy is documented
|
||||||
|
- `lib/std` has explicit stable and experimental tiers
|
||||||
|
- package/workspace behavior is deterministic
|
||||||
|
- conformance tests cover user-shaped projects
|
||||||
|
- release gates are reproducible on a clean checkout
|
||||||
|
- diagnostics and formatter output are stable for promoted features
|
||||||
|
- performance publications are repeatable and labeled as local-machine evidence
|
||||||
|
- the language can build useful local CLI tools, libraries, file-processing
|
||||||
|
programs, and basic host-interaction programs without undocumented behavior
|
||||||
|
|
||||||
|
## Explicitly Deferred
|
||||||
|
|
||||||
|
These should not be early post-beta work unless a smaller prerequisite slice is
|
||||||
|
complete first:
|
||||||
|
|
||||||
|
- full async runtime
|
||||||
|
- TLS and certificate policy
|
||||||
|
- remote package registry
|
||||||
|
- macro system
|
||||||
|
- stable C ABI/layout guarantees
|
||||||
|
- optimizing compiler claims
|
||||||
|
- web framework or HTTP server framework
|
||||||
|
- broad Unicode/string normalization policy
|
||||||
|
|
||||||
@ -1,6 +1,7 @@
|
|||||||
# Glagol Roadmap
|
# Glagol Roadmap
|
||||||
|
|
||||||
Glagol is the first compiler for Slovo. Slovo language design lives in `../language`.
|
Glagol is the first compiler for Slovo. Slovo language design lives in
|
||||||
|
`docs/language/` inside the same monorepo.
|
||||||
|
|
||||||
Compiler rule: make the tree visible. The pipeline should remain:
|
Compiler rule: make the tree visible. The pipeline should remain:
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# Slovo Roadmap
|
# Slovo Roadmap
|
||||||
|
|
||||||
This roadmap tracks the language contract. Glagol, in `../glagol`, tracks the
|
This roadmap tracks the language contract. Glagol, in `compiler/`, tracks the
|
||||||
compiler implementation.
|
compiler implementation inside the same monorepo.
|
||||||
|
|
||||||
Guiding rule: the manifest wins. A feature is not accepted until it has surface syntax, typed-core meaning, lowering behavior, formatter behavior, diagnostics, and tests.
|
Guiding rule: the manifest wins. A feature is not accepted until it has surface syntax, typed-core meaning, lowering behavior, formatter behavior, diagnostics, and tests.
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user