Pre-adoption: language decisions to settle while we are the only users (lessons from other languages' v1 regrets)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
Hướng nghiên cứu
This is a design issue for the language owner, tracking foundational decisions before external adoption. It references the EigenScript codebase, stdlib modules, and builtins. A newcomer would need deep familiarity with language design and the codebase to contribute. The work involves evaluating each lesson (e.g., number types, string model, concurrency) and making decisions, likely leading to separate implementation issues.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
When: not a date. v1 follows real external consumers (after Linguist recognition and adoption work). But the day the FIRST outside consumer depends on a behavior, changing it stops being free and needs a migration path. So these decisions should be settled while we are still the only users. (Owner, 2026-09-23.)
Why: researched 2026-09-23 against primary sources. The recurring regrets of other languages, each mapped to where EigenScript stands. Probes were run on main c8288a5.
| Lesson | EigenScript now | To decide |
|---|---|---|
Build the breaking-change escape hatch before you need it. Go retrofitted per-module semantics via the go.mod version line + GODEBUG for the 1.22 loop-variable fix (go.dev/blog/loopvar-preview); Rust added editions (RFC 2052, 2017) two years after 1.0 (Book app. E). |
eigs.json has name/version, no language-version field. |
Add a language edition field now, so a post-adoption semantic fix can be opt-in per project. |
One overloaded number type later needs a second type bolted on. JS Number → BigInt (proposal). |
One IEEE double. 9007199254740992 + 1 prints 9007199254740992: silent precision loss past 2^53. |
An integer type, or raise on precision loss. Silence is the one option to rule out (it is the fail-soft class #975 exists to remove). |
Absence/null semantics are a founding decision. Hoare's "billion-dollar mistake"; JS typeof null could not be fixed because code depended on it. |
null, whose type of is "none"; a separate VAL_JSON_RAW value type. |
One documented absence model, one name for it. |
| Booleans folded into another type. | 1 == 1 → 1, type of → num. |
A boolean type, or document numbers-as-truth as permanent. |
| Remove before you freeze. Python's PEP 594 took three releases to drop dead modules (PEP 594); PHP's haystack/needle order was never unified (RFC). | 78 stdlib modules, 209 builtins. | Stdlib audit: cut what does not earn its place; a naming/argument-order lint rule while the surface is small. |
| The string model is the most expensive thing to change later. Python 2→3 (~12 years), Ruby 1.9 M17N (migration notes). | Byte strings with UTF-8 helpers. | Bytes vs text, and what a "character" is, decided and documented. |
| Concurrency added late becomes an ABI break. CPython GIL → PEP 703, free-threaded builds ABI-incompatible (PEP 703). | Threads/channels exist; hardening is a trail of fixes (#1146, #1173 open). | The concurrency safety model written down as a guarantee. |
| Freeze source semantics before binary contracts (Swift: source churn 1–3, ABI stability at 5 — swift.org). | Two binary-shaped contracts: the tape format and the opcode ABI. | Version each separately from the language edition. |
| Deprecation policy once users exist (Python PEP 387, ≥2 releases — PEP 387). | None needed yet (no external users). | Write it now, to switch on at the first outside consumer. |
Each row should become its own kind:decision issue when it is picked up; this issue tracks the set. Semantic decisions (numbers, booleans, absence, strings) are the owner's call; the recommendation in each row is a starting position, not a decision.
- Ngôn ngữ chính
- C
- Star
- 3
- Fork
- 7
- Merge trung bình
- 3 giờ 56 phút
- Pull request đã merge (30 ngày)
- 102
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của InauguralSystems/EigenScript
-
area:lint-tooling bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#1340 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:stdlib found-by:code-review kind:silent-wrong
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
InauguralSystems/EigenScript#1338 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:lint-tooling found-by:critic kind:docs-drift
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
InauguralSystems/EigenScript#1335 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:ci found-by:critic kind:gate-defect
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
InauguralSystems/EigenScript#1311 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enrolment: decide test_gc_runner_controls.py (exempt vs enrol) and whether floors need a ratchetĐang mởarea:gates found-by:critic kind:decision
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
InauguralSystems/EigenScript#1280 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của InauguralSystems/EigenScript
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
johnsonjh/emu2-cpm86#68 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Zenmap CrashĐang mởZenmap
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
fastfetch-cli/fastfetch#2619 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Template: Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
betaflight/betaflight#15759 ·
Maintainer thường phản hồi trong vòng 1 ngày