release: Bux v1.0.0 language freeze
ci / build (ubuntu) (push) Has been cancelled
ci / unit + fmt (push) Has been cancelled
ci / examples (push) Has been cancelled
ci / goldens + tools (push) Has been cancelled
ci / apps (push) Has been cancelled
ci / selfhost smoke (push) Has been cancelled
ci / macos smoke (push) Has been cancelled
ci / windows smoke (push) Has been cancelled
ci / CI gate (push) Has been cancelled
selfhost-loop / bootstrap determinism (push) Has been cancelled
ci / build (ubuntu) (push) Has been cancelled
ci / unit + fmt (push) Has been cancelled
ci / examples (push) Has been cancelled
ci / goldens + tools (push) Has been cancelled
ci / apps (push) Has been cancelled
ci / selfhost smoke (push) Has been cancelled
ci / macos smoke (push) Has been cancelled
ci / windows smoke (push) Has been cancelled
ci / CI gate (push) Has been cancelled
selfhost-loop / bootstrap determinism (push) Has been cancelled
Bump compiler banners and package version to 1.0.0, activate SEMVER policy, and add RELEASE_v1.0.0 notes. Fix closure auto-Drop leaking outer Array drops into nested capture bodies (iter_hof). Fmt-clean examples/src for CI.
This commit is contained in:
+17
-19
@@ -1,10 +1,11 @@
|
||||
# Bux — План към „добър“ език (v0.5 → v1.0)
|
||||
# Bux — План към „добър“ език (v0.5 → **v1.0.0** ✅)
|
||||
|
||||
> **Дата:** 2026-07-23
|
||||
> **Текущо:** v0.5.x — `:type` macros + Array_Reverse (session 87)
|
||||
> **Дата:** 2026-07-27
|
||||
> **Текущо:** **v1.0.0** — language freeze (session 88 / release)
|
||||
> **Цел:** Език, с който се пишат реални проекти комфортно, безопасно (по избор) и с надежден toolchain.
|
||||
> **Платформен фокус:** **Linux** (primary) · **cloud-native** (servers, containers, HTTP) · **embedded** (cross, freestanding-ish, CTFE).
|
||||
> **Не-цел:** MS Windows като product platform (исторически CI/hello smoke остават; няма roadmap investment).
|
||||
> **Не-цел:** MS Windows като product platform (исторически CI/hello smoke остават; няма roadmap investment).
|
||||
> **Release notes:** `docs/RELEASE_v1.0.0.md` · **Semver:** `docs/SEMVER.md` (active).
|
||||
|
||||
---
|
||||
|
||||
@@ -113,7 +114,7 @@ A (stdlib ergonomics) → B (compiler holes) → C (ownership depth)
|
||||
|
||||
---
|
||||
|
||||
## Acceptance criteria за „добър v1.0“
|
||||
## Acceptance criteria за „добър v1.0“ — **met; tagged v1.0.0**
|
||||
|
||||
- [x] Всички examples + apps + selfhost smoke на CI (`make test` via `.github/workflows/ci.yml`); selfhost-loop optional
|
||||
- [x] Array/Map/String/Test API покрива 90% от ежедневните нужди (+ Insert/Remove/Clone/case/GetOr)
|
||||
@@ -121,6 +122,7 @@ A (stdlib ergonomics) → B (compiler holes) → C (ownership depth)
|
||||
- [x] `bux test` + `bux fmt` + `bux check` са default developer loop (`--filter` / `--check` shipped)
|
||||
- [x] LanguageRef синхронизиран с компилатора (incl. C.1 elision)
|
||||
- [x] Поне един външен/temp проект build-ва с registry dep (`tools/smoke_registry.sh` + HTTP)
|
||||
- [x] Version strings + SEMVER active + `docs/RELEASE_v1.0.0.md` (session 88)
|
||||
|
||||
---
|
||||
|
||||
@@ -1461,22 +1463,18 @@ bootstrap + **buxc2** `macro_tt_raw` (incl. slice) PASS.
|
||||
|
||||
---
|
||||
|
||||
## Следващи стъпки
|
||||
## Сесия 88 (v1.0.0 language freeze)
|
||||
|
||||
### P0 — Compiler / language
|
||||
1. Version banners: bootstrap + selfhost CLI → **1.0.0**; root `bux.toml` → 1.0.0
|
||||
2. `docs/SEMVER.md` — **Active** (post-1.0 MAJOR = breaking)
|
||||
3. `docs/RELEASE_v1.0.0.md` — freeze notes + verify commands
|
||||
4. README / QUALITY_PLAN / ROADMAP status → v1.0.0
|
||||
5. Tag `v1.0.0` after `make test` gate
|
||||
|
||||
1. ~~… through session 86~~ ✅
|
||||
2. ~~**`:type` macro fragments**~~ ✅ session 87
|
||||
3. Optional: richer free-form (operators-only tt); generics in `:type` (`Array<int>`)
|
||||
|
||||
### P1 — Linux / cloud-native
|
||||
|
||||
4. ~~(sessions 75–81)~~ ✅
|
||||
|
||||
### P2 — Embedded / cross
|
||||
|
||||
5. ~~riscv64 smoke + freestanding notes~~ ✅ session 85
|
||||
6. Optional: real `runtime_freestanding.c` + Cortex-M qemu — not v1.0
|
||||
**Post-1.0 backlog (MINOR, not freeze blockers):**
|
||||
- Generics in `:type` (`Array<int>`); operators-only tt paste
|
||||
- `runtime_freestanding.c` + Cortex-M research
|
||||
- LSP / IDE versioning independent of language MAJOR
|
||||
|
||||
### Изрично **не** правим
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
# Bux v1.0.0 — Language Freeze
|
||||
|
||||
**Date:** 2026-07-27
|
||||
**Tag:** `v1.0.0`
|
||||
|
||||
## What 1.0 means
|
||||
|
||||
- **Language freeze** for public surface: syntax, stdlib APIs, and CLI that
|
||||
scripts depend on follow `docs/SEMVER.md`.
|
||||
- **Normative spec:** `docs/LanguageRef.md`.
|
||||
- **Compilers:** bootstrap (`buxc`, Nim) and selfhost (`buxc2`, Bux) both target
|
||||
the same language for the shipped feature set.
|
||||
- **Platform focus:** Linux primary; cloud/containers; cross/static/minimal
|
||||
runtime. Windows is not a product platform.
|
||||
|
||||
## Shipped surface (summary)
|
||||
|
||||
| Area | Highlights |
|
||||
|------|------------|
|
||||
| Frontend | Pratt parser, recovery, macros (`macro!`, fragments, juxta/`tt`/`type`) |
|
||||
| Types | Generics (mono), tuples, fat `func` ABI, algebraic enums |
|
||||
| Ownership | `@[Checked]`, `@[Release]`, Drop/RAII, field-move + remaining Drop |
|
||||
| Concurrency | M:N tasks, channels, async |
|
||||
| Stdlib | Array/Map/Set/String/Iter HOF, Net/TLS, registry, Test |
|
||||
| Tooling | `fmt`, `test`, `doc`, `check`, LSP (separate versioning), DWARF `#line` |
|
||||
| Ecosystem | path/git/HTTP registry, lock + `--locked`, 4 apps, benches |
|
||||
|
||||
## Explicitly *not* 1.0 blockers
|
||||
|
||||
- True freestanding / bare-metal (`runtime_freestanding.c`, Cortex-M)
|
||||
- Operators-only token paste; full `Array<int>` in `:type` fragments
|
||||
- Windows product investment
|
||||
- LLVM / non-C backends
|
||||
|
||||
## Upgrade notes from 0.5.x
|
||||
|
||||
No mandatory source migration for projects that already build on late 0.5.x.
|
||||
New package scaffolds still default to package version `0.1.0` (package semver,
|
||||
not language version).
|
||||
|
||||
### Fix included in 1.0.0
|
||||
|
||||
- **Closure Drop isolation:** lowering a nested closure no longer emits
|
||||
outer-function `Array_Drop` / auto-Drop on the closure’s return path
|
||||
(broke `iter_hof` and any capturing HOF over droppable locals).
|
||||
|
||||
## Verify
|
||||
|
||||
```bash
|
||||
make build
|
||||
./buxc --version # bux 1.0.0 (bootstrap)
|
||||
make test # full gate
|
||||
make selfhost # buxc2
|
||||
# optional: make selfhost-loop
|
||||
```
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
# Bux Language Roadmap — New Constructs
|
||||
|
||||
> **Updated:** 2026-07-15 | **Status:** In Progress
|
||||
> Recent: multi-instance closures (fat `BuxFn`), tuples in selfhost, Iter map/filter/fold, Rust-style diagnostics.
|
||||
> **Updated:** 2026-07-27 | **Status:** ✅ Constructs for v1.0 shipped (language freeze)
|
||||
> Recent: macros (`tt`/`type`/juxta), stdlib daily APIs, Linux/riscv smoke; see `docs/RELEASE_v1.0.0.md`.
|
||||
|
||||
This document tracks planned language constructs beyond Phase 8 strategy.
|
||||
|
||||
|
||||
+18
-15
@@ -1,6 +1,6 @@
|
||||
# Bux Semantic Versioning Policy
|
||||
|
||||
> Status: Draft for v0.x → v1.0 freeze (E.3)
|
||||
> Status: **Active** as of **v1.0.0** (language freeze)
|
||||
|
||||
Bux follows [Semantic Versioning 2.0.0](https://semver.org/) with the
|
||||
clarifications below.
|
||||
@@ -19,18 +19,18 @@ MAJOR.MINOR.PATCH[-prerelease]
|
||||
| **MINOR** | Backward-compatible features |
|
||||
| **PATCH** | Backward-compatible bug fixes |
|
||||
|
||||
During **0.x** (pre-1.0):
|
||||
### Before 1.0 (historical 0.x)
|
||||
|
||||
- `0.MINOR.PATCH` — MINOR may still introduce breaking changes (documented in
|
||||
the release notes and `MIGRATION_*.sh` when needed).
|
||||
- Prefer deprecation warnings for at least one MINOR before removal when
|
||||
practical.
|
||||
During **0.x**, MINOR could still introduce breaking changes (documented in
|
||||
release notes and `MIGRATION_*.sh` when needed).
|
||||
|
||||
After **1.0.0** (language freeze):
|
||||
### From **1.0.0** (language freeze)
|
||||
|
||||
- Breaking changes require a MAJOR bump and a migration guide.
|
||||
- The Language Reference is the normative spec; compiler bugs that contradict
|
||||
the ref are fixed without a MAJOR bump.
|
||||
- Breaking changes require a **MAJOR** bump and a migration guide.
|
||||
- The **Language Reference** (`docs/LanguageRef.md`) is the normative spec;
|
||||
compiler bugs that contradict the ref are fixed without a MAJOR bump.
|
||||
- New diagnostics and stricter `@[Checked]` are allowed in MINOR when
|
||||
documented; prefer gating with attributes when practical.
|
||||
|
||||
---
|
||||
|
||||
@@ -48,12 +48,14 @@ After **1.0.0** (language freeze):
|
||||
(prefer contextual keywords)
|
||||
- New diagnostics / stricter `@[Checked]` (document; may be gated)
|
||||
- Formatter whitespace-only changes
|
||||
- New optional CLI flags and commands
|
||||
|
||||
---
|
||||
|
||||
## Package versions (registry)
|
||||
|
||||
Registry packages use the same MAJOR.MINOR.PATCH scheme.
|
||||
Registry packages use the same MAJOR.MINOR.PATCH scheme (independent of the
|
||||
compiler version).
|
||||
|
||||
`bux add foo` / `bux add foo 0.1` resolution:
|
||||
|
||||
@@ -70,7 +72,8 @@ Lockfiles pin the **resolved** version and source path/URL.
|
||||
## Release checklist (maintainers)
|
||||
|
||||
1. Update `docs/LanguageRef.md` if behaviour changed
|
||||
2. Update `docs/QUALITY_PLAN.md` / changelog notes
|
||||
3. Run `make test` (includes `fmt-check`, examples, goldens)
|
||||
4. Run `make selfhost-loop`
|
||||
5. Tag `vMAJOR.MINOR.PATCH`
|
||||
2. Update `docs/QUALITY_PLAN.md` / release notes
|
||||
3. Bump compiler version strings (`bootstrap/cli.nim`, `src/cli.bux`, root `bux.toml`)
|
||||
4. Run `make test` (includes `fmt-check`, examples, goldens)
|
||||
5. Run `make selfhost` and preferably `make selfhost-loop`
|
||||
6. Tag `vMAJOR.MINOR.PATCH` and push the tag
|
||||
|
||||
Reference in New Issue
Block a user