Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
cdced5d
decent improvements
Frotty Sep 24, 2025
1881f29
some more good ones
Frotty Sep 24, 2025
281c745
test succeeds in first interpreter step.
Frotty Sep 28, 2025
84fb523
restore determinism, fix tests
Frotty Sep 29, 2025
bed57ac
Optimize imports
Frotty Sep 29, 2025
343c032
Update de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/valida…
Frotty Sep 29, 2025
a513c86
Improve SCC processing, run all tests and fix them
Frotty Sep 29, 2025
b96882c
Merge branch 'perf-improvements' of https://github.com/wurstscript/Wu…
Frotty Sep 29, 2025
94c4f32
add RealRealMixed rewrites and tests
Frotty Sep 29, 2025
8c88fa7
Update de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/transl…
Frotty Sep 29, 2025
f1e094a
Update SimpleRewrites.java
Frotty Sep 29, 2025
fb48177
Merge branch 'perf-improvements' of https://github.com/wurstscript/Wu…
Frotty Sep 29, 2025
cc35acf
enable caching per default
Frotty Sep 29, 2025
16ac13c
enable compression for BuildMap command
Frotty Sep 29, 2025
5bf62d7
remove graph test logging and clear subtype cache
Frotty Sep 29, 2025
2d73659
A bunch more fixes. All tests passing
Frotty Oct 1, 2025
7be3107
Update config.yml
Frotty Oct 1, 2025
10aebe0
Update config.yml
Frotty Oct 1, 2025
672c7fd
remove debug prints
Frotty Oct 1, 2025
228f778
Update de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/transl…
Frotty Oct 1, 2025
73925cc
decent state
Frotty Oct 1, 2025
a8bfb86
some more good progress
Frotty Oct 1, 2025
52d96b6
some caching
Frotty Oct 1, 2025
af896df
Update NameLinks.java
Frotty Oct 1, 2025
0f2730b
dont use direct buffers, make test heap settings context aware
Frotty Oct 2, 2025
951d455
fix pipeline, remove parallel streams
Frotty Oct 2, 2025
1212d99
better vscode logging, fix caching
Frotty Oct 2, 2025
571d222
Update WLoggerDefault.java
Frotty Oct 2, 2025
7e0bedc
Update de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/interm…
Frotty Oct 2, 2025
b40dde4
Update de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/transl…
Frotty Oct 2, 2025
61fd736
Merge branch 'perf-improvements' into static-generic-member
Frotty Oct 2, 2025
4a2bd23
it's actually working?
Frotty Oct 2, 2025
4b7a68a
Update WurstValidator.java
Frotty Oct 2, 2025
432f025
only a few test failing
Frotty Oct 3, 2025
22073a0
Update GenericsWithTypeclassesTests.java
Frotty Oct 3, 2025
3fd6a16
tests pass, but map throws pjass error
Frotty Oct 3, 2025
bf70cfe
it works!
Frotty Oct 3, 2025
9333e5d
Update ProgramState.java
Frotty Oct 3, 2025
307674d
tests
Frotty Oct 3, 2025
6ed40bb
iterators
Frotty Oct 4, 2025
9639832
Update BuildMap.java
Frotty Oct 5, 2025
3d1d42c
wip jre bundling
Frotty Oct 10, 2025
23bae21
Merge branch 'master' into static-generic-member
Frotty Oct 13, 2025
b5002ef
Update build.yml
Frotty Oct 13, 2025
08931f0
build fixes
Frotty Oct 13, 2025
b5a1ff5
another try
Frotty Oct 13, 2025
617818d
Update deploy.gradle
Frotty Oct 13, 2025
c92dd21
Update deploy.gradle
Frotty Oct 13, 2025
e5bd287
another test
Frotty Oct 13, 2025
db0229a
Update build.yml
Frotty Oct 13, 2025
36b1f77
Update build.yml
Frotty Oct 13, 2025
c010e4f
Update build.yml
Frotty Oct 13, 2025
f287dc7
Update build.yml
Frotty Oct 13, 2025
8289c66
fix cache manifest
Frotty Oct 17, 2025
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
109 changes: 87 additions & 22 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,97 @@
name: Build Pipeline
name: CI (build & test)

on:
push:
branches:
- master
branches: [ master ]
pull_request:
types: [opened, synchronize, reopened]

concurrency:
group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build and analyze
runs-on: ubuntu-latest
name: Gradle build on ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
permissions:
contents: read
env:
GRADLE_OPTS: -Dorg.gradle.daemon=false
defaults:
run:
working-directory: de.peeeq.wurstscript

steps:
- uses: actions/checkout@v3
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 17
uses: actions/setup-java@v3
fetch-depth: 0

- name: Setup Temurin JDK 25
uses: actions/setup-java@v4
with:
java-version: 25
distribution: 'zulu' # Alternative distribution options are available
- name: Cache Gradle packages
uses: actions/cache@v3
distribution: temurin
java-version: '25'
cache: 'gradle'

# Linux only: use a portable, pristine Temurin 25 for jlink
- name: (Linux) Install portable Temurin 25
if: runner.os == 'Linux'
shell: bash
run: |
set -euo pipefail
URL="https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25%2B36/OpenJDK25U-jdk_x64_linux_hotspot_25_36.tar.gz"
mkdir -p "$RUNNER_TEMP/temurin25"
curl -fsSL "$URL" -o "$RUNNER_TEMP/temurin25/jdk.tar.gz"
tar -xzf "$RUNNER_TEMP/temurin25/jdk.tar.gz" -C "$RUNNER_TEMP/temurin25"
PORTABLE_JAVA_HOME="$(find "$RUNNER_TEMP/temurin25" -maxdepth 1 -type d -name 'jdk-25*' | head -n1)"
echo "PORTABLE_JAVA_HOME=$PORTABLE_JAVA_HOME" >> "$GITHUB_ENV"
echo "$PORTABLE_JAVA_HOME/bin" >> "$GITHUB_PATH"

# Pin Gradle toolchain to the active JDK (portable on Linux, setup-java on Windows)
- name: Pin Gradle toolchain
shell: bash
run: |
ACTIVE_JAVA_HOME="${PORTABLE_JAVA_HOME:-$JAVA_HOME}"
echo "JAVA_HOME=${ACTIVE_JAVA_HOME}" >> "$GITHUB_ENV"
echo "${ACTIVE_JAVA_HOME}/bin" >> "$GITHUB_PATH"
echo "org.gradle.java.installations.paths=${ACTIVE_JAVA_HOME}" >> gradle.properties
echo "org.gradle.java.installations.auto-detect=false" >> gradle.properties

- name: Show Java & jlink
shell: bash
run: |
echo "JAVA_HOME=$JAVA_HOME"
"$JAVA_HOME/bin/java" -version
"$JAVA_HOME/bin/jlink" --version

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v4

- name: Setup Gradle (cache)
uses: gradle/actions/setup-gradle@v4

# ---- FAIL FAST: package first (so jlink issues show immediately) ----
- name: Package slim runtime (fail fast)
shell: bash
run: ./gradlew checksumSlimCompilerDist --no-daemon --stacktrace

- name: Run tests
shell: bash
run: ./gradlew test --no-daemon --stacktrace

- name: Upload packaged artifact (per-OS)
uses: actions/upload-artifact@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Build & Run Tests
working-directory: ./de.peeeq.wurstscript
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew test --info
name: wurst-compiler-${{ matrix.os }}
path: |
de.peeeq.wurstscript/build/releases/*.zip
de.peeeq.wurstscript/build/releases/*.tar.gz
de.peeeq.wurstscript/build/releases/*.sha256
if-no-files-found: error
retention-days: 7
74 changes: 44 additions & 30 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,65 @@
name: Deploy Pipeline
name: Release slim runtimes (jlink)

on:
push:
branches:
- master
tags:
- 'v*' # e.g. v1.8.1.0
workflow_dispatch:

jobs:
deploy:
name: Build WurstScript and Upload to GitHub Release
runs-on: ubuntu-latest
build:
name: Build ${{ matrix.plat }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
plat: win-x64
- os: ubuntu-latest
plat: linux-x64
- os: macos-13
plat: macos-x64
- os: macos-14
plat: macos-arm64

runs-on: ${{ matrix.os }}
permissions:
contents: write
env:
GRADLE_OPTS: -Dorg.gradle.daemon=false
defaults:
run:
working-directory: de.peeeq.wurstscript

steps:
- name: Checkout code
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # your version task uses git describe

- name: Set up JDK 17
- name: Setup Temurin JDK 25
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
java-version: '25'

- name: Grant Gradle permissions
working-directory: ./de.peeeq.wurstscript
run: chmod +x ./gradlew
- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v4

- name: Build WurstScript zips
working-directory: ./de.peeeq.wurstscript
run: ./gradlew create_zips
- name: Setup Gradle cache
uses: gradle/actions/setup-gradle@v4

- name: Create or update nightly-master tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag -f nightly-master
git push -f origin nightly-master
# Build fat jar + jdeps + jlink + package + checksum for this OS
- name: Package slim runtime (per-OS)
run: ./gradlew --no-daemon --stacktrace checksumSlimCompilerDist

- name: Create GitHub Release and upload zips
uses: softprops/action-gh-release@v1
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: nightly-master
name: Nightly Build (master)
body: "This release is automatically updated from the latest push to `master`."
draft: false
prerelease: true
# Attaches the per-OS files produced on this runner
files: |
de.peeeq.wurstscript/build/distributions/wurstpack_complete.zip
de.peeeq.wurstscript/build/distributions/wurstpack_compiler.zip
de.peeeq.wurstscript/build/releases/wurst-compiler-*-*.zip
de.peeeq.wurstscript/build/releases/wurst-compiler-*-*.tar.gz
de.peeeq.wurstscript/build/releases/*.sha256
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5 changes: 4 additions & 1 deletion de.peeeq.wurstscript/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@ application {
version = "1.8.1.0"

java {
toolchain { languageVersion = JavaLanguageVersion.of(25) }
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}

tasks.withType(JavaCompile).configureEach { options.release = 25 }

jacoco {
Expand Down
Loading
Loading