Lower mutable scalar globals through Whale tracked global storage
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Start by reading whale/src/codegen/mod.rs and the upstream ir/src/global_storage.rs API, then discuss the unresolved semantics with @LunaStev before implementing anything. Confirm how frontend types and initializers map to tracked module-owned storage, including execution lifetime and uninitialized, readonly, and memory-budget behavior. Done means multiple functions share the same initialized global while immutable constants, local shadowing, and unsupported globals remain unchanged.
由索引模型根据 Issue 内容生成。
描述
Motivation
LLVM accepts a mutable static X and X+=1, while Whale rejects mutable global storage. Official Whale a48f74ad now has addressable GlobalStorage distinct from compile-time constants, with initialization and readonly validation. Wave still locks the older API.
Starting point: whale/src/codegen/mod.rs:23.
Validation
Audited canonical Wave 540728c2eb6cc12f5c69c3fb3fdb96e07ba059a4 (0.0.1-alpha-dev), whose tree matches the local checkout. Validation: Executed mutable-global capability probe and inspected official GlobalStorage API. Executed compiler probes use the matching checkout-built compiler and std on Linux amd64 (Rust 1.89.0 / LLVM 21.1.8). Source/header or mocked checks are not native execution on another OS.
Scope
After #996, map the approved scalar global subset to tracked module-owned storage. Use frontend types/initializers and clarify per-execution lifetime/state expectations before implementation.
Related: #996, #874. These links do not claim those broader or completed scopes are unfinished.
Design discussion required
This issue records a proposal or an unresolved contract; it is not approval to choose new semantics. Please mention @LunaStev to discuss the design before starting implementation.
Completion criteria
- Multiple functions observe the same initialized global within an execution.
- Uninitialized/readonly/memory-budget behavior follows verified upstream semantics.
- Immutable constants, local shadowing and unsupported globals retain existing behavior.
- 主要语言
- Rust
- 星标
- 56
- 派生
- 21
- 平均合并
- 23 小时 20 分钟
- 30 天内合并 PR
- 45
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
wavefnd/Wave 的其他 Issue
-
Reject unrepresentable POSIX listener descriptors before Unix-domain accept可能已有人在做 @ShahadatTest 于 7 天前认领。 未关闭bug good first issue
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复
-
Preserve expression assembly result types when recording HIR conversions可能已有人在做 @hiyouwhatsapp 于 3 天前认领。 未关闭bug help wanted
难度 5/5 一周以上 新手友好度 35/100
维护者通常 1 天内回复
-
bug help wanted
难度 4/5 3-5 天 新手友好度 53/100
维护者通常 1 天内回复
-
Preserve the previous build output when writing its Cargo receipt fails可能已有人在做 @hiyouwhatsapp 于 3 天前认领。 未关闭bug build help wanted
难度 4/5 3-5 天 新手友好度 56/100
维护者通常 1 天内回复
-
Reconcile obsolete staging assets before verifying a new Nightly generation可能已有人在做 @hiyouwhatsapp 于 3 天前认领。 未关闭bug ci help wanted
难度 4/5 3-5 天 新手友好度 48/100
维护者通常 1 天内回复
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
bug CLI
难度 2/5 1-3 小时 新手友好度 77/100
HigherOrderCO/Bend#2120 ·
-
难度 2/5 1-3 小时 新手友好度 66/100
KNXBench-Labs/KNXBench#47 ·
-
难度 2/5 1-3 小时 新手友好度 88/100
software-mansion/pathfinder#3620 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复