From 44d84916d89e82b0e13bc4a8376bdb0633dbbec1 Mon Sep 17 00:00:00 2001 From: Anwar Mamat Date: Mon, 2 Feb 2026 21:27:53 -0500 Subject: [PATCH 1/5] First commit after replacing nasm with clang/GAS. Updated all Makefiles to use clang --- abscond/Makefile | 8 ++++---- blackmail/Makefile | 8 ++++---- con/Makefile | 8 ++++---- dodger/Makefile | 8 ++++---- dupe/Makefile | 8 ++++---- evildoer/Makefile | 8 ++++---- extort/Makefile | 9 ++++----- fraud/Makefile | 8 ++++---- hoax/Makefile | 8 ++++---- hustle/Makefile | 8 ++++---- info.rkt | 5 ++++- iniquity/Makefile | 8 ++++---- jig/Makefile | 8 ++++---- knock/Makefile | 8 ++++---- loot/Makefile | 8 ++++---- mountebank/Makefile | 8 ++++---- mug/Makefile | 8 ++++---- neerdowell/Makefile | 8 ++++---- 18 files changed, 72 insertions(+), 70 deletions(-) diff --git a/abscond/Makefile b/abscond/Makefile index 5dbee91..5205a2f 100644 --- a/abscond/Makefile +++ b/abscond/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/blackmail/Makefile b/blackmail/Makefile index 5dbee91..5205a2f 100644 --- a/blackmail/Makefile +++ b/blackmail/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/con/Makefile b/con/Makefile index 5dbee91..5205a2f 100644 --- a/con/Makefile +++ b/con/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/dodger/Makefile b/dodger/Makefile index 3dd07b2..398e3cf 100644 --- a/dodger/Makefile +++ b/dodger/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/dupe/Makefile b/dupe/Makefile index 3dd07b2..398e3cf 100644 --- a/dupe/Makefile +++ b/dupe/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/evildoer/Makefile b/evildoer/Makefile index 34d5478..d88e2b9 100644 --- a/evildoer/Makefile +++ b/evildoer/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/extort/Makefile b/extort/Makefile index 34d5478..6fe052b 100644 --- a/extort/Makefile +++ b/extort/Makefile @@ -1,11 +1,10 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif - objs = \ main.o \ print.o \ diff --git a/fraud/Makefile b/fraud/Makefile index 34d5478..d88e2b9 100644 --- a/fraud/Makefile +++ b/fraud/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/hoax/Makefile b/hoax/Makefile index 8684135..a835720 100644 --- a/hoax/Makefile +++ b/hoax/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/hustle/Makefile b/hustle/Makefile index 34d5478..d88e2b9 100644 --- a/hustle/Makefile +++ b/hustle/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/info.rkt b/info.rkt index ef7388b..0078c8c 100644 --- a/info.rkt +++ b/info.rkt @@ -3,8 +3,11 @@ (define collection 'multi) (define deps (list "base" "rackunit" "redex-lib" "https://github.com/cmsc430/a86.git?path=#main")) +;;(define build-deps +;; (list "https://github.com/cmsc430/a86.git?path=#main")) + (define build-deps - (list "https://github.com/cmsc430/a86.git?path=#main")) + (list "https://github.com/cmsc430/a86.git?branch=nasm-change")) ;; Outlaw is omitted here because it depends on libraries that are a pain ;; to ensure are set up properly and we don't want students to see failing diff --git a/iniquity/Makefile b/iniquity/Makefile index 34d5478..d88e2b9 100644 --- a/iniquity/Makefile +++ b/iniquity/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/jig/Makefile b/jig/Makefile index 34d5478..d88e2b9 100644 --- a/jig/Makefile +++ b/jig/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/knock/Makefile b/knock/Makefile index 34d5478..d88e2b9 100644 --- a/knock/Makefile +++ b/knock/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/loot/Makefile b/loot/Makefile index 34d5478..d88e2b9 100644 --- a/loot/Makefile +++ b/loot/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/mountebank/Makefile b/mountebank/Makefile index d65be44..3fc9599 100644 --- a/mountebank/Makefile +++ b/mountebank/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/mug/Makefile b/mug/Makefile index d65be44..3fc9599 100644 --- a/mug/Makefile +++ b/mug/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ diff --git a/neerdowell/Makefile b/neerdowell/Makefile index d65be44..3fc9599 100644 --- a/neerdowell/Makefile +++ b/neerdowell/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ From 47c64fce770be50064c5746a9e9f1fe02f5eca34 Mon Sep 17 00:00:00 2001 From: Anwar Mamat Date: Mon, 2 Feb 2026 22:17:51 -0500 Subject: [PATCH 2/5] reverts the a86 dependency --- info.rkt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/info.rkt b/info.rkt index 0078c8c..da86fc7 100644 --- a/info.rkt +++ b/info.rkt @@ -3,11 +3,9 @@ (define collection 'multi) (define deps (list "base" "rackunit" "redex-lib" "https://github.com/cmsc430/a86.git?path=#main")) -;;(define build-deps -;; (list "https://github.com/cmsc430/a86.git?path=#main")) - (define build-deps - (list "https://github.com/cmsc430/a86.git?branch=nasm-change")) + (list "https://github.com/cmsc430/a86.git?path=#main")) + ;; Outlaw is omitted here because it depends on libraries that are a pain ;; to ensure are set up properly and we don't want students to see failing From 3207b2fa6270612ebb447b70188a0ad93f56b927 Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Wed, 4 Feb 2026 15:29:28 -0500 Subject: [PATCH 3/5] Update workflows --- .github/workflows/macos.yml | 11 +++-------- .github/workflows/push.yml | 11 ++++++----- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 3047993..5719de5 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [macos-13, macos-14] racket-variant: ['CS'] - racket-version: ['8.18'] + racket-version: ['stable'] include: - os: macos-13 arch: x64 @@ -24,15 +24,10 @@ jobs: name: Test on ${{ matrix.os }} (${{ matrix.arch }}) Racket ${{ matrix.racket-variant }} ${{ matrix.racket-version }} steps: - + - name: Checkout uses: actions/checkout@v4 - - name: Install nasm - run: | - HOMEBREW_NO_AUTO_UPDATE=1 brew tap cmsc430/tap - HOMEBREW_NO_AUTO_UPDATE=1 brew install nasm430 - - name: Install Racket uses: Bogdanp/setup-racket@v1.14 with: @@ -53,7 +48,7 @@ jobs: run: | uname -a uname -m - nasm --version + clang --version gcc --version - name: Install langs package diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index aa18117..cc0f1fd 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -8,13 +8,11 @@ jobs: matrix: os: [ubuntu-22.04, ubuntu-24.04] racket-variant: ['CS'] - racket-version: ['8.6', '8.8', '8.10', '8.14', '8.18'] - name: Test on Racket ${{ matrix.racket-variant }} ${{ matrix.racket-version }} on ${{ matrix.os }} + racket-version: ['8.6', '8.10', '8.14', '8.18', 'stable', 'current'] + name: Test on Racket ${{ matrix.racket-variant }} ${{ matrix.racket-version }} on ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@main - - name: Install nasm - run: sudo apt-get install nasm - name: Install Racket uses: Bogdanp/setup-racket@v1.14 with: @@ -22,9 +20,12 @@ jobs: distribution: 'full' variant: ${{ matrix.racket-variant }} version: ${{ matrix.racket-version }} + - name: Install clang + run: | + sudo apt install -y clang libssl-dev - name: Version info run: | - nasm --version + clang --version gcc --version - name: Install langs package run: | From 9bd59c6c7589c55401b5e940260e54d7db763d71 Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Wed, 4 Feb 2026 15:47:38 -0500 Subject: [PATCH 4/5] Update GitHub macOS runner selection and exclude some langs from tests --- .github/workflows/macos.yml | 2 +- info.rkt | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 5719de5..dfae888 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-13, macos-14] + os: [macos-14, macos-15, macos-15-intel, macos-26] racket-variant: ['CS'] racket-version: ['stable'] include: diff --git a/info.rkt b/info.rkt index da86fc7..221b75b 100644 --- a/info.rkt +++ b/info.rkt @@ -13,5 +13,9 @@ ;; setting up libraries only needed in the last week and only if you ;; actually care to run Outlaw. -;; To test outlaw you should do an explicit: raco test -c outlaw -(define test-omit-paths (list "outlaw")) +;; To test these, you should do an explicit: raco test -c +(define test-omit-paths (list "iniquity-gc" + "mountebank" + ;; "mug" ;; NOTE: seems to pass currently + "neerdowell" + "outlaw")) From b50eed0d985162269f276c7142dd19be777ccdbe Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Wed, 4 Feb 2026 16:12:56 -0500 Subject: [PATCH 5/5] Update workflows again --- .github/workflows/macos.yml | 23 +++++++----------- .github/workflows/{push.yml => ubuntu.yml} | 28 ++++++++++++++++++---- 2 files changed, 33 insertions(+), 18 deletions(-) rename .github/workflows/{push.yml => ubuntu.yml} (65%) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index dfae888..29ce138 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -1,27 +1,20 @@ -name: Build and test macOS x86_64 -on: - push: - workflow_dispatch: +name: macOS +on: [push, workflow_dispatch] concurrency: - group: mac-ci-${{ github.ref }} + group: macos-ci-${{ github.ref }} cancel-in-progress: true jobs: build-and-test: strategy: - fail-fast: false + fail-fast: true matrix: os: [macos-14, macos-15, macos-15-intel, macos-26] racket-variant: ['CS'] racket-version: ['stable'] - include: - - os: macos-13 - arch: x64 - - os: macos-14 - arch: arm64 runs-on: ${{ matrix.os }} - name: Test on ${{ matrix.os }} (${{ matrix.arch }}) Racket ${{ matrix.racket-variant }} ${{ matrix.racket-version }} + name: OS ${{ matrix.os }} / Racket ${{ matrix.racket-version }} steps: @@ -52,7 +45,9 @@ jobs: gcc --version - name: Install langs package - run: raco pkg install --auto ../langs/ + run: | + raco pkg install --auto ../langs/ - name: Run tests - run: raco test -p langs + run: | + raco test -p langs diff --git a/.github/workflows/push.yml b/.github/workflows/ubuntu.yml similarity index 65% rename from .github/workflows/push.yml rename to .github/workflows/ubuntu.yml index cc0f1fd..5988643 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/ubuntu.yml @@ -1,18 +1,26 @@ -on: - - push +name: Ubuntu +on: [push, workflow_dispatch] + +concurrency: + group: ubuntu-ci-${{ github.ref }} + cancel-in-progress: true jobs: build-and-test: - runs-on: ${{ matrix.os }} strategy: + fail-fast: true matrix: os: [ubuntu-22.04, ubuntu-24.04] racket-variant: ['CS'] racket-version: ['8.6', '8.10', '8.14', '8.18', 'stable', 'current'] - name: Test on Racket ${{ matrix.racket-variant }} ${{ matrix.racket-version }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + name: OS ${{ matrix.os }} / Racket ${{ matrix.racket-version }} + steps: + - name: Checkout uses: actions/checkout@main + - name: Install Racket uses: Bogdanp/setup-racket@v1.14 with: @@ -20,16 +28,28 @@ jobs: distribution: 'full' variant: ${{ matrix.racket-variant }} version: ${{ matrix.racket-version }} + + - name: Cache Racket packages + uses: actions/cache@v4 + with: + path: | + ~/.racket + ~/.cache/racket + key: racket-${{ matrix.racket-variant }}-${{ matrix.racket-version }}-${{ matrix.os }} + - name: Install clang run: | sudo apt install -y clang libssl-dev + - name: Version info run: | clang --version gcc --version + - name: Install langs package run: | raco pkg install --auto ../langs/ + - name: Run tests run: | xvfb-run raco test -p langs