Repository navigation
feat(sv): initialize process static locals with run-time values - #2407
Conversation
|
This pull request is part of a Mergify stack:
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Queued — the merge queue status continues in this comment ↓. |
0401272 to
5ffe2da
Compare
3ac1198 to
b693107
Compare
Revision history
|
5ffe2da to
da515c5
Compare
b693107 to
a390838
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a390838c2d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
da515c5 to
6cd2716
Compare
8d162b4 to
001a36e
Compare
6cd2716 to
5ebeb58
Compare
001a36e to
d1d90a5
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d1d90a584e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
d1d90a5 to
4e3f43f
Compare
4d39d87 to
0a02620
Compare
4e3f43f to
c40dd67
Compare
0a02620 to
9ee3c10
Compare
c40dd67 to
05e6c97
Compare
🚫 Left the queue37 min in the queue, 21 min of it CI. So far
Reason Pull request #2407 has been dequeued Queue conditions are not satisfied:
Hint You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it. Requeued — the merge queue status continues in this comment ↓. Times in UTC · dashboard · how the merge queue works |
A static local of a process may now have a run-time initializer, such as `string s = v.name();` or `C h = new;`. IEEE 1800-2023 6.8 allows any run-time expression and runs it once, before any initial or always procedure starts; Celox runs it, in declaration order, in the existing time-zero initializer process, and keeps the local (and every static local it reads) as module storage. An initializer that reads an automatic variable could only run on each entry and is still rejected, as are non-constant initializers of function statics. IEEE 1800-2023 6.21 says that "an explicit static keyword shall be required when an initialization value is specified as part of a static variable's declaration". Celox already accepts the keyword-less form with a constant initializer, and existing sources (including the sv-tests case 6.19.5.6) omit it, so a keyword-less run-time initializer is accepted in a procedure that runs once, such as `initial`, where running it at time zero instead of on entry cannot repeat. In an `always` procedure it stays rejected, because its author likely meant it to run on every entry; the `static` keyword states the intent there. sv-tests: 6.19.5.6 enum_name, 8.7 constructor and 8.7 constructor_param now pass in both state modes. Change-Id: I99990f956dd5985eb2d1087631ae1f918f2bbd0a
9ee3c10 to
936bdda
Compare
05e6c97 to
11b5154
Compare
✅ Merged into
|
| Condition | |
|---|---|
| ✅ | depends-on = celox-sim/celox#2390 |
The batch, tested on draft #2468
| Condition | Required by | |
|---|---|---|
| ✅ | check-success = Conventional Commit title |
— |
| ✅ | check-success = Queue validation |
— |
| ✅ | any of: check-success = @github-actions/Lint & Format, check-neutral = @github-actions/Lint & Format, check-skipped = @github-actions/Lint & Format |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Rust Test & NAPI Build, check-neutral = @github-actions/Rust Test & NAPI Build, check-skipped = @github-actions/Rust Test & NAPI Build |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/JS Test (Ubuntu), check-neutral = @github-actions/JS Test (Ubuntu), check-skipped = @github-actions/JS Test (Ubuntu) |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Conventional Commit title, check-neutral = @github-actions/Conventional Commit title, check-skipped = @github-actions/Conventional Commit title |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Queue validation, check-neutral = @github-actions/Queue validation, check-skipped = @github-actions/Queue validation |
GitHub repository ruleset rule master |
Times in UTC · dashboard · how the merge queue works
A static local of a process may now have a run-time initializer, such as
string s = v.name();orC h = new;. IEEE 1800-2023 6.8 allows anyrun-time expression and runs it once, before any initial or always
procedure starts; Celox runs it, in declaration order, in the existing
time-zero initializer process, and keeps the local (and every static local
it reads) as module storage. An initializer that reads an automatic
variable could only run on each entry and is still rejected, as are
non-constant initializers of function statics.
IEEE 1800-2023 6.21 says that "an explicit static keyword shall be
required when an initialization value is specified as part of a static
variable's declaration". Celox already accepts the keyword-less form with
a constant initializer, and existing sources (including the sv-tests case
6.19.5.6) omit it, so a keyword-less run-time initializer is accepted in a
procedure that runs once, such as
initial, where running it at time zeroinstead of on entry cannot repeat. In an
alwaysprocedure it staysrejected, because its author likely meant it to run on every entry; the
statickeyword states the intent there.sv-tests: 6.19.5.6 enum_name, 8.7 constructor and 8.7 constructor_param
now pass in both state modes.
Depends-On: #2390