Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
43ccf18
Migrate platform to the new Zig-based Roc compiler
lukewilliamboswell Jun 26, 2026
bda74eb
ci: bump setup-roc to a ref that supports nightly-new-compiler
lukewilliamboswell Jun 26, 2026
4fdb8a9
Migrate SQLite support to the new compiler
lukewilliamboswell Jun 26, 2026
bf07430
Migrate pure-Roc modules: Url, MultipartFormData, SplitList
lukewilliamboswell Jun 26, 2026
11b0f31
Migrate Tcp and outbound Http to the new Zig compiler
lukewilliamboswell Jun 26, 2026
f6814f9
Add HTTP JSON helpers
lukewilliamboswell Jun 29, 2026
1cebd82
WIP migrate webserver to modern Roc HTTP
lukewilliamboswell Jun 29, 2026
5ee4a6e
Move hosted effects behind internal Host module
lukewilliamboswell Jul 6, 2026
e09983d
Apply Roc style cleanup to examples and tests
lukewilliamboswell Jul 6, 2026
995968c
Use roc-lang path package
lukewilliamboswell Jul 6, 2026
b0b62d9
Use Roc zero-arg syntax
lukewilliamboswell Jul 6, 2026
73d82ce
Upgrade http package and clean Roc style
lukewilliamboswell Jul 6, 2026
4d2fad2
Document release upgrade backlog
lukewilliamboswell Jul 6, 2026
ec96156
Bump Rust toolchain for CI
lukewilliamboswell Jul 6, 2026
1a75d75
Validate release target builds
lukewilliamboswell Jul 6, 2026
293c0f4
Refresh release docs
lukewilliamboswell Jul 6, 2026
cc2319c
Implement HTTP JSON decoding
lukewilliamboswell Jul 6, 2026
ed79661
Port deferred Roc files
lukewilliamboswell Jul 6, 2026
1cca6e0
Return Env paths as Path
lukewilliamboswell Jul 7, 2026
9f84927
Tighten Sqlite API safety
lukewilliamboswell Jul 7, 2026
7f1bc19
Patch bytes advisory
lukewilliamboswell Jul 7, 2026
9cdc7cd
Fix cross-target host linking
lukewilliamboswell Jul 7, 2026
bcfecdb
Bundle Windows import libs for Roc link
lukewilliamboswell Jul 7, 2026
21fb079
Fix Windows SDK import lib lookup
lukewilliamboswell Jul 7, 2026
dc31154
Mark CI backlog complete
lukewilliamboswell Jul 7, 2026
04d7dcd
Remove temporary glue repro files
lukewilliamboswell Jul 7, 2026
04c3f91
Remove resolved PR TODO
lukewilliamboswell Jul 7, 2026
3cbb0b3
Organize host effects into modules
lukewilliamboswell Jul 7, 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
111 changes: 61 additions & 50 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
name: CI

on:
pull_request:
workflow_dispatch:
Expand All @@ -11,71 +13,80 @@ concurrency:
permissions: {}

env:
JUMP_START: 1
ROC: roc
EXAMPLES_DIR: ./examples/

jobs:
build-and-test:
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15]
include:
- os: ubuntu-24.04
target: x64musl
rust_target: x86_64-unknown-linux-musl
install_zig: true
run_roc_tests: true
- os: ubuntu-24.04-arm
target: arm64musl
rust_target: aarch64-unknown-linux-musl
install_zig: true
run_roc_tests: true
- os: macos-15-intel
target: x64mac
rust_target: x86_64-apple-darwin
install_zig: false
run_roc_tests: true
- os: macos-15
target: arm64mac
rust_target: aarch64-apple-darwin
install_zig: false
run_roc_tests: true
- os: windows-2025
target: x64win
rust_target: x86_64-pc-windows-msvc
install_zig: false
run_roc_tests: true
# setup-roc does not publish a Windows arm64 compiler binary yet, so
# this job validates the host library only.
- os: windows-11-arm
target: arm64win
rust_target: aarch64-pc-windows-msvc
install_zig: false
run_roc_tests: false
steps:
- uses: actions/checkout@v4

- uses: roc-lang/setup-roc@39c354a6a838a0089eea9068a0414f49b62c5c08
- name: Install the new Zig-based Roc compiler
if: matrix.run_roc_tests
uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427
with:
# Note: nightly hashes are not verified because they are updated regularly.
version: nightly

- run: roc version

- name: Install dependencies (Ubuntu)
if: startsWith(matrix.os, 'ubuntu-')
run: |
sudo apt install -y expect ncat ripgrep
# Nightly build of the new (Zig-based) compiler. Hashes are not verified
# because nightlies are updated regularly.
version: nightly-new-compiler

- name: Install dependencies (macOS)
if: startsWith(matrix.os, 'macos-')
run: |
brew install expect # expect for testing
brew install nmap # includes ncat, for use as test server for tests/tcp.roc
brew install ripgrep # ripgrep for ci/check_all_exposed_funs_tested.roc
- if: matrix.run_roc_tests
run: roc version

# Run all tests
- run: ./ci/all_tests.sh
- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Install dependencies for musl build
if: startsWith(matrix.os, 'ubuntu-')
run: |
sudo apt-get install -y musl-tools
- name: Install Zig
if: matrix.install_zig
uses: mlugg/setup-zig@v2

if [[ "${{ matrix.os }}" == *"-arm" ]]; then
# TODO re-enable once TODOs below are gone: rustup target add aarch64-unknown-linux-musl
echo "no-op"
else
rustup target add x86_64-unknown-linux-musl
fi
- name: Install Rust target
run: rustup target add ${{ matrix.rust_target }}

- name: Test building with musl target
if: startsWith(matrix.os, 'ubuntu-')
run: |
if [[ "${{ matrix.os }}" == *"-arm" ]]; then
# TODO debug this: CARGO_BUILD_TARGET=aarch64-unknown-linux-musl roc build.roc -- --roc roc
echo "no-op"
else
CARGO_BUILD_TARGET=x86_64-unknown-linux-musl roc build.roc -- --roc roc
fi

- name: Run Rust unit tests
run: cargo test

- name: Test using musl build
if: startsWith(matrix.os, 'ubuntu-')
run: |
# TODO remove `if` when above TODOs are done
if [[ "${{ matrix.os }}" != *"-arm" ]]; then
# no need to build platform anymore
NO_BUILD=1 IS_MUSL=1 ./ci/all_tests.sh
fi
- name: Build host static library
run: ./build.sh --target ${{ matrix.target }}

# TODO clippy, rustfmt, roc fmt check
- name: Build and test examples
if: matrix.run_roc_tests
run: ./ci/all_tests.sh
44 changes: 0 additions & 44 deletions .github/workflows/ci_nix.yml

This file was deleted.

110 changes: 0 additions & 110 deletions .github/workflows/deploy-docs.yml

This file was deleted.

19 changes: 0 additions & 19 deletions .github/workflows/sync-check.yml

This file was deleted.

58 changes: 0 additions & 58 deletions .github/workflows/test_latest_release.yml

This file was deleted.

14 changes: 12 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,18 @@ curl_form_output.txt

.DS_Store

# glue generated files
crates/roc_std
# Committed prebuilt link inputs for the platform's targets (these override the
# *.o / *.a ignores above so a normal `git add` picks them up).
!platform/targets/*/crt1.o
!platform/targets/*/libc.a
!platform/targets/*/libunwind.a
# Host libraries are rebuilt by build.sh and are NOT committed.
platform/targets/*/libhost.a
platform/targets/*/host.lib
# Windows SDK import libraries are copied by build.sh and are NOT committed.
platform/targets/*/ws2_32.lib
platform/targets/*/bcrypt.lib
platform/targets/*/advapi32.lib

# build script artifacts
build
Expand Down
Loading
Loading