Skip to content

Commit 4bc3966

Browse files
Merge pull request #557 from roc-lang/fix/nightly-compatibility-0.28.1
Fix nightly compatibility and prepare 0.28.1
2 parents 05d577f + 5032f62 commit 4bc3966

16 files changed

Lines changed: 403 additions & 326 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
6363
with:
6464
version: nightly-new-compiler
65-
nightly-tag: nightly-2026-11-06-34f137a
65+
nightly-tag: nightly-2026-11-13-03dce41
6666
- name: Install Rust toolchain
6767
run: |
6868
rustup toolchain install "${{ needs.rust-version.outputs.version }}" --profile minimal --target x86_64-unknown-linux-musl --component llvm-tools-preview
@@ -116,7 +116,7 @@ jobs:
116116
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
117117
with:
118118
version: nightly-new-compiler
119-
nightly-tag: nightly-2026-11-06-34f137a
119+
nightly-tag: nightly-2026-11-13-03dce41
120120
- name: Install Rust toolchain
121121
shell: bash
122122
run: |
@@ -164,7 +164,7 @@ jobs:
164164
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
165165
with:
166166
version: nightly-new-compiler
167-
nightly-tag: nightly-2026-11-06-34f137a
167+
nightly-tag: nightly-2026-11-13-03dce41
168168
- name: Install Rust toolchain
169169
shell: bash
170170
run: |

‎.github/workflows/deploy-docs.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
4141
with:
4242
version: nightly-new-compiler
43-
nightly-tag: nightly-2026-11-06-34f137a
43+
nightly-tag: nightly-2026-11-13-03dce41
4444

4545
- name: Restore released docs
4646
env:

‎.github/workflows/release.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
127127
with:
128128
version: nightly-new-compiler
129-
nightly-tag: nightly-2026-11-06-34f137a
129+
nightly-tag: nightly-2026-11-13-03dce41
130130

131131
- name: Install Zig
132132
uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f
@@ -235,7 +235,7 @@ jobs:
235235
uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
236236
with:
237237
version: nightly-new-compiler
238-
nightly-tag: nightly-2026-11-06-34f137a
238+
nightly-tag: nightly-2026-11-13-03dce41
239239

240240
- name: Install Rust
241241
shell: bash
@@ -280,7 +280,7 @@ jobs:
280280
uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
281281
with:
282282
version: nightly-new-compiler
283-
nightly-tag: nightly-2026-11-06-34f137a
283+
nightly-tag: nightly-2026-11-13-03dce41
284284

285285
- name: Create docs staging tree
286286
run: mkdir -p docs-site
@@ -453,7 +453,7 @@ jobs:
453453
uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
454454
with:
455455
version: nightly-new-compiler
456-
nightly-tag: nightly-2026-11-06-34f137a
456+
nightly-tag: nightly-2026-11-13-03dce41
457457

458458
- name: Download release metadata
459459
uses: actions/download-artifact@v8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# TODO for the release after 0.28.0: pin a Roc nightly containing #12949,
2-
# remove this workflow, and retire the fixed-address musl startup patch.
3-
name: Static runtime compatibility
1+
name: Static runtime validation
42
on:
53
pull_request:
64
workflow_dispatch:
@@ -13,7 +11,6 @@ jobs:
1311
fail-fast: false
1412
matrix:
1513
target: [x64musl, arm64musl, x64mac, arm64mac, x64win]
16-
compiler: [pinned, pie]
1714
include:
1815
- {target: x64musl, os: ubuntu-24.04}
1916
- {target: arm64musl, os: ubuntu-24.04-arm}
@@ -23,36 +20,10 @@ jobs:
2320
runs-on: ${{ matrix.os }}
2421
steps:
2522
- uses: actions/checkout@v7
26-
- uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f
27-
if: matrix.compiler == 'pie'
28-
with:
29-
version: 0.17.1
3023
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427
31-
if: matrix.compiler == 'pinned'
3224
with:
3325
version: nightly-new-compiler
34-
nightly-tag: nightly-2026-11-06-34f137a
35-
- uses: actions/checkout@v7
36-
if: matrix.compiler == 'pie'
37-
with:
38-
repository: roc-lang/roc
39-
ref: c080bd1bc565531389f74444d3736d1bfb8e5352
40-
path: target/roc-pie
41-
- uses: actions/cache@v5
42-
if: matrix.compiler == 'pie'
43-
id: compiler-cache
44-
with:
45-
path: target/roc-pie/zig-out/bin
46-
key: roc-pie-${{ runner.os }}-${{ runner.arch }}-c080bd1bc565531389f74444d3736d1bfb8e5352-zig-0.17.1-strip
47-
- name: Build the pinned PIE compiler
48-
if: matrix.compiler == 'pie' && steps.compiler-cache.outputs.cache-hit != 'true'
49-
shell: bash
50-
working-directory: target/roc-pie
51-
run: zig build roc -Doptimize=ReleaseFast -Dstrip -j2
52-
- name: Select the PIE compiler
53-
shell: bash
54-
if: matrix.compiler == 'pie'
55-
run: echo "ROC=$GITHUB_WORKSPACE/target/roc-pie/zig-out/bin/roc${{ runner.os == 'Windows' && '.exe' || '' }}" >> "$GITHUB_ENV"
26+
nightly-tag: nightly-2026-11-13-03dce41
5627
- uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f
5728
with:
5829
version: 0.17.0
@@ -82,7 +53,7 @@ jobs:
8253
dist/dev-compat/tcp-server > target/dev-tcp-server.log
8354
"$compiler" build tests/resource-lifetimes/resource-lifetime.roc --opt=dev --target="$TARGET" --output=dist/dev-compat/resources
8455
dist/dev-compat/resources
85-
python3 scripts/check_static_executables.py dist/dev-compat --format ${{ matrix.compiler }}
56+
python3 scripts/check_static_executables.py dist/dev-compat --format pie
8657
- name: Verify executable format
8758
if: endsWith(matrix.target, 'musl')
88-
run: python3 scripts/check_static_executables.py dist/example-binaries/${{ matrix.target }} --format ${{ matrix.compiler }}
59+
run: python3 scripts/check_static_executables.py dist/example-binaries/${{ matrix.target }} --format pie

‎CONTRIBUTING.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,9 @@ and run `python3 scripts/pin_linker_inputs.py /path/to/linker-inputs.lock.json`,
138138
then regenerate third-party notices and commit the lock and text metadata.
139139
Generated target objects and libraries must stay outside Git.
140140

141-
Linux startup supports fixed-address executables from the pinned Roc nightly
142-
and static PIE from the compiler's ASLR change. The compatibility workflow tests
143-
both compilers against the same pinned runtime release. Linux Rust and C host
141+
The pinned Roc nightly emits static PIE on Linux. The Static runtime validation
142+
workflow checks randomized loading, development-backend callbacks, and native
143+
execution against the pinned runtime release. Linux Rust and C host
144144
code is built as PIC. The producer also validates startup with stored function
145145
pointers, thread-local data, and threads on both Linux architectures.
146146

‎Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "roc_host"
3-
version = "0.28.0"
3+
version = "0.28.1"
44
authors = ["The Roc Contributors"]
55
edition = "2021"
66
rust-version = "1.97"

‎docs/releases/0.28.1.md‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# basic-cli 0.28.1
2+
3+
```roc
4+
app [main!] { pf: platform "{{PLATFORM_URL}}" }
5+
```
6+
7+
Use Roc **`nightly-2026-11-13-03dce41`** or later. CI, release builds, and the
8+
Nix development shell now use this nightly.
9+
10+
## Fixes
11+
12+
- `Cmd` and `Path` check without duplicate-definition warnings on the new
13+
nightly ([#556](https://github.com/roc-lang/basic-cli/issues/556)).
14+
`Cmd.Command` remains opaque and keeps all its builder and execution methods;
15+
the `Cmd.call!`, `capture!`, `run!`, and `spawn!` convenience functions keep
16+
their existing signatures.
17+
- The pinned compiler includes the Windows unwind-table fix in
18+
[roc#12996](https://github.com/roc-lang/roc/pull/12996). This resolves the
19+
compile-time failures of quoted `Locale` and `Path` values reported in
20+
[#555](https://github.com/roc-lang/basic-cli/issues/555). Applications using
21+
0.27.0 or 0.28.0 also benefit from upgrading the compiler; their literals do
22+
not need changing.
23+
- The platform header now explicitly types `main!` arguments as `List(OsStr)`,
24+
matching the native arguments supplied by the launcher
25+
([#554](https://github.com/roc-lang/basic-cli/pull/554)).
26+
27+
Source validation now checks the platform with `--no-cache` on Linux and
28+
Windows, so dependency warnings and compile-time literal failures fail CI.
29+
Linux runtime checks use the official nightly and verify static PIE loading
30+
and development-backend callbacks.
31+
32+
---
33+
34+
- [API documentation](https://roc-lang.github.io/basic-cli/0.28.1/)
35+
- [Full changelog since 0.28.0](https://github.com/roc-lang/basic-cli/compare/0.28.0...0.28.1)

‎flake.lock‎

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎flake.nix‎

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# nixos-unstable no longer supports Intel macOS.
77
nixpkgs-x86-darwin.url = "github:NixOS/nixpkgs/nixpkgs-26.05-darwin";
88
roc-overlay = {
9-
url = "github:roc-lang/roc-overlay/57a4b47c16545bf87a7d6b7e4480e7100fe74dc2";
9+
url = "github:roc-lang/roc-overlay/67491987eb6ef2423d9a6e5901f6a8e439d8566c";
1010
inputs.nixpkgs.follows = "nixpkgs";
1111
inputs.nixpkgs-darwin.follows = "nixpkgs-x86-darwin";
1212
};
@@ -56,16 +56,35 @@
5656
inherit system;
5757
overlays = [
5858
roc-overlay.overlays.default
59+
# Until roc-overlay records the November 13 nightly.
60+
(import ./nix/roc-nightly.nix)
5961
rust-overlay.overlays.default
6062
];
6163
};
6264
releaseFor = system: import ./nix/release.nix { pkgs = pkgsFor system; };
65+
# Keep in sync with the nightly pinned in .github/workflows.
66+
developmentCompilerFor = system: (pkgsFor system).rocpkgs."nightly-2026-11-13-03dce41";
6367
in
6468
{
6569
formatter = forAllSystems (system: (pkgsFor system).nixfmt);
6670

6771
packages = forAllSystems (system: (releaseFor system).packages);
68-
checks = forAllSystems (system: (releaseFor system).checks);
72+
checks = forAllSystems (
73+
system:
74+
let
75+
pkgs = pkgsFor system;
76+
compiler = developmentCompilerFor system;
77+
in
78+
(releaseFor system).checks
79+
// {
80+
development-compiler = pkgs.runCommand "basic-cli-development-compiler" {
81+
nativeBuildInputs = [ compiler ];
82+
} ''
83+
test "$(roc version)" = "Roc compiler version ${compiler.version}"
84+
touch "$out"
85+
'';
86+
}
87+
);
6988

7089
devShells = forAllSystems (
7190
system:
@@ -78,8 +97,7 @@
7897
{
7998
default = pkgs.mkShell {
8099
packages = [
81-
# Keep in sync with the nightly pinned in .github/workflows.
82-
pkgs.rocpkgs."nightly-2026-11-06-34f137a"
100+
(developmentCompilerFor system)
83101
pkgs.python3
84102
rustToolchain
85103
pkgs.simple-http-server

0 commit comments

Comments
 (0)