Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
39277a0
fix: compile time linear in the program again (#3499)
nicolas-maman Nov 1, 2026
243e903
ci: every ubuntu-latest job runs on ubuntu-26.04; actions off Node 20…
nicolas-maman Nov 1, 2026
56c9261
fix: an if used as a value parses when its condition ends in a call (…
nicolas-maman Nov 1, 2026
723eafd
fix: s[i] on a string is a checked byte (#3479)
nicolas-maman Nov 1, 2026
f52e0e7
fix: a refused binary import removes its stub directory (#3485)
nicolas-maman Nov 1, 2026
b9709af
bench: the Aether entries link std from libaether.a without its runtime
nicolas-maman Nov 1, 2026
1bfe11c
test: ask relief waits for D's messages, not a 400 ms pause (#3483)
nicolas-maman Nov 1, 2026
63124ae
test: an account's free is timed by the thread's CPU clock (#3488)
nicolas-maman Nov 1, 2026
6917acf
docs: three reference statements say what the runtime does (#3480)
nicolas-maman Nov 1, 2026
cc788e5
fix: script_gateway refuses a script on its own runtime on POSIX too …
nicolas-maman Nov 1, 2026
bf1f998
fix: script_gateway's POSIX check builds on WASI; docs say what macOS…
nicolas-maman Nov 1, 2026
2bd1e95
test: ask relief's B on core 2, its hold inside the asker's timeout (…
nicolas-maman Nov 1, 2026
235ea27
fix: s[i] on a string is an int from 0 to 255; s[length] is the termi…
nicolas-maman Nov 1, 2026
7240ffa
fix: a call's arguments parse as anywhere inside a condition (#3478)
nicolas-maman Nov 1, 2026
cf912d7
fix: a panic while a return inside a try computes its value is caught
nicolas-maman Nov 1, 2026
d14c36f
fix: main computes what it returns before its defers run
nicolas-maman Nov 1, 2026
335ef52
test: order_effects_scaling takes the best of three runs of each size…
nicolas-maman Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,20 +58,20 @@ jobs:
timeout-minutes: ${{ github.event_name == 'workflow_dispatch' && 120 || 30 }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

# gcc and g++ for C, C++ and Aether; GNU time for CPU time and memory.
- name: Install C, C++ and GNU time
run: |
sudo rm -f /etc/apt/sources.list.d/google-chrome.list; sudo apt-get update
sudo apt-get install -y gcc g++ make time

- uses: actions/setup-go@v5
- uses: actions/setup-go@v6
with:
go-version: stable
cache: false

- uses: actions/setup-java@v4
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '21'
Expand Down Expand Up @@ -129,7 +129,7 @@ jobs:

- name: Upload results
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: benchmark-results
path: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/changelog-collect.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ concurrency:
jobs:
collect:
name: Fold settled fragments
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
# The collector reads each fragment's commit time to decide whether
# it has settled, so it needs the history, not a shallow clone.
Expand Down
86 changes: 43 additions & 43 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ jobs:
target: ci-sweep

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install toolchain
if: matrix.install != ''
Expand All @@ -159,7 +159,7 @@ jobs:
# correctness never depends on a cache hit.
- name: Restore miniaudio object cache
id: audio_cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: .ci-cache
key: audio-obj-${{ matrix.os }}-${{ matrix.cc }}-h${{ matrix.harden }}-${{ hashFiles('std/audio/miniaudio.h', 'std/audio/stb_vorbis.c', 'std/audio/aether_audio.c', 'std/audio/aether_audio.h') }}
Expand Down Expand Up @@ -241,7 +241,7 @@ jobs:
github.event_name == 'push' && github.ref == 'refs/heads/main'
&& steps.audio_cache.outputs.cache-hit != 'true'
&& (matrix.target != 'ci-sweep' || matrix.unit == '1')
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: .ci-cache
key: audio-obj-${{ matrix.os }}-${{ matrix.cc }}-h${{ matrix.harden }}-${{ hashFiles('std/audio/miniaudio.h', 'std/audio/stb_vorbis.c', 'std/audio/aether_audio.c', 'std/audio/aether_audio.h') }}
Expand Down Expand Up @@ -273,12 +273,12 @@ jobs:
shard: ["1/2", "2/2"]

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

# The ARM64 leg's miniaudio object (same OS, compiler and build
# variant, so the same key); restore only, the leg saves it.
- name: Restore miniaudio object cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: .ci-cache
key: audio-obj-macos-latest-clang-h0-${{ hashFiles('std/audio/miniaudio.h', 'std/audio/stb_vorbis.c', 'std/audio/aether_audio.c', 'std/audio/aether_audio.h') }}
Expand Down Expand Up @@ -319,11 +319,11 @@ jobs:
# ============================================================
ci-changelog:
name: CHANGELOG entry present
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
if: github.event_name == 'pull_request'

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0

Expand Down Expand Up @@ -412,19 +412,19 @@ jobs:

ci-freebsd-cross:
name: FreeBSD / cross-compile (x86_64)
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 30

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install toolchain
run: sudo rm -f /etc/apt/sources.list.d/google-chrome.list; sudo apt-get update && sudo apt-get install -y gcc make bc curl xz-utils

# zig cc bundles no FreeBSD libc, so the base sysroot is what makes the
# FreeBSD headers visible. Same source as the release leg.
- name: Checkout aether-crossbuild
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
repository: aether-lang-dev/aether-crossbuild
path: crossbuild
Expand All @@ -434,7 +434,7 @@ jobs:
# dir every run. deps.lock pins both URLs and checksums.
- name: Restore cross-toolchain download cache
id: cross_cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: |
.zig
Expand All @@ -459,7 +459,7 @@ jobs:
if: >-
github.event_name == 'push' && github.ref == 'refs/heads/main'
&& steps.cross_cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: |
.zig
Expand All @@ -484,10 +484,10 @@ jobs:
# (no shm_open, no pthread_setaffinity_np, ...) on the PR, not at release.
ci-android-cross:
name: Android / cross-compile (aarch64)
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Cross-build for Android (ANDROID=1)
run: |
NDK="${ANDROID_NDK_LATEST_HOME:-${ANDROID_NDK_HOME:-}}"
Expand Down Expand Up @@ -534,18 +534,18 @@ jobs:
# ============================================================
ci-sqlite-cross:
name: contrib.sqlite / self-contained cross builds
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 30

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install toolchain
run: sudo rm -f /etc/apt/sources.list.d/google-chrome.list; sudo apt-get update && sudo apt-get install -y gcc make bc curl xz-utils file qemu-user

- name: Restore zig + SQLite cross object cache
id: sqlite_xcache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: |
.zig
Expand Down Expand Up @@ -577,7 +577,7 @@ jobs:
if: >-
github.event_name == 'push' && github.ref == 'refs/heads/main'
&& steps.sqlite_xcache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: |
.zig
Expand All @@ -586,11 +586,11 @@ jobs:

ci-freebsd-native:
name: FreeBSD / native build + unit tests
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 30

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

# vmactions/freebsd-vm installs qemu with apt, under apt's default
# connect timeout. When the runner's Azure mirror stopped answering, its
Expand Down Expand Up @@ -633,7 +633,7 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install host language dev libraries
run: |
Expand Down Expand Up @@ -688,7 +688,7 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install build deps
run: |
Expand Down Expand Up @@ -737,7 +737,7 @@ jobs:
# only ever supply the right one. Split restore/save as above.
- name: Restore SQLite amalgamation object cache
id: sqlite_obj_cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: .ci-cache/sqlite
key: sqlite-obj-ubuntu-22.04-${{ hashFiles('contrib/sqlite/amalgamation.lock', 'tests/scripts/contrib_build.sh') }}
Expand All @@ -759,7 +759,7 @@ jobs:
if: >-
github.event_name == 'push' && github.ref == 'refs/heads/main'
&& steps.sqlite_obj_cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: .ci-cache/sqlite
key: sqlite-obj-ubuntu-22.04-${{ hashFiles('contrib/sqlite/amalgamation.lock', 'tests/scripts/contrib_build.sh') }}
Expand Down Expand Up @@ -883,7 +883,7 @@ jobs:
runs-on: ${{ matrix.runner }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install build deps, lavapipe and gdb
run: |
Expand Down Expand Up @@ -1001,7 +1001,7 @@ jobs:
shell: bash

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

# Metal ships with macOS. Vulkan does not: the headers build
# contrib.vulkan, the loader is what it opens at runtime, and MoltenVK is
Expand Down Expand Up @@ -1077,7 +1077,7 @@ jobs:
shell: msys2 {0}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: msys2/setup-msys2@v2
with:
Expand Down Expand Up @@ -1179,7 +1179,7 @@ jobs:
shell: msys2 {0}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: msys2/setup-msys2@v2
with:
Expand Down Expand Up @@ -1246,7 +1246,7 @@ jobs:
# (#1372); keep its object between runs, as on the Linux contrib leg.
- name: Restore SQLite amalgamation object cache
id: sqlite_obj_cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: .ci-cache/sqlite
key: sqlite-obj-windows-${{ hashFiles('contrib/sqlite/amalgamation.lock', 'tests/scripts/contrib_build.sh') }}
Expand Down Expand Up @@ -1295,7 +1295,7 @@ jobs:
if: >-
github.event_name == 'push' && github.ref == 'refs/heads/main'
&& steps.sqlite_obj_cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: .ci-cache/sqlite
key: sqlite-obj-windows-${{ hashFiles('contrib/sqlite/amalgamation.lock', 'tests/scripts/contrib_build.sh') }}
Expand Down Expand Up @@ -1354,7 +1354,7 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install toolchain
run: sudo rm -f /etc/apt/sources.list.d/google-chrome.list; sudo apt-get update && sudo apt-get install -y gcc make bc
Expand All @@ -1374,7 +1374,7 @@ jobs:
# could rot to a stub and stay green everywhere. OPENSSL=0 forces the
# detection off regardless of what is installed on the runner.
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install toolchain
run: sudo rm -f /etc/apt/sources.list.d/google-chrome.list; sudo apt-get update && sudo apt-get install -y gcc make bc
Expand Down Expand Up @@ -1418,11 +1418,11 @@ jobs:
# case that is skipped or does not agree, with the reason.
ci-crypto-ct:
name: Crypto constant-time (Valgrind) and conformance corpora
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 30

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install toolchain
run: sudo rm -f /etc/apt/sources.list.d/google-chrome.list; sudo apt-get update && sudo apt-get install -y gcc make bc valgrind
Expand All @@ -1439,7 +1439,7 @@ jobs:
- name: Restore the conformance corpora
id: conformance_cache
if: success() || failure()
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: ~/.cache/aether-conformance
key: conformance-${{ hashFiles('tests/conformance/*/run.sh') }}
Expand All @@ -1457,7 +1457,7 @@ jobs:
(success() || failure())
&& github.event_name == 'push' && github.ref == 'refs/heads/main'
&& steps.conformance_cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: ~/.cache/aether-conformance
key: conformance-${{ hashFiles('tests/conformance/*/run.sh') }}
Expand All @@ -1467,10 +1467,10 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install Emscripten
uses: mymindstorm/setup-emsdk@v14
uses: mymindstorm/setup-emsdk@v15
with:
version: 3.1.51

Expand Down Expand Up @@ -1551,7 +1551,7 @@ jobs:
timeout-minutes: 15

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

# --no-install-recommends: Recommends pulls libstdc++-arm-none-eabi-newlib,
# 347 MB of C++ library this C-only build never links, and a slow Azure
Expand All @@ -1577,7 +1577,7 @@ jobs:
timeout-minutes: 45

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Free disk space for the ESP-IDF image
run: |
Expand Down Expand Up @@ -1610,7 +1610,7 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install RISC-V cross-toolchain + qemu
run: |
Expand All @@ -1634,7 +1634,7 @@ jobs:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Install tools
run: |
Expand Down Expand Up @@ -1680,7 +1680,7 @@ jobs:

- name: Upload memory reports
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: memory-reports
path: |
Expand Down
Loading
Loading