diff --git a/.github/actions/woj/action.yml b/.github/actions/woj/action.yml index 894762d..1db0b1d 100644 --- a/.github/actions/woj/action.yml +++ b/.github/actions/woj/action.yml @@ -4,7 +4,7 @@ inputs: version: description: Exact @wasm-oj/cli release containing the collection contract. required: false - default: 0.2.3 + default: 0.2.4 root: description: Repository root containing wasm-oj.json. required: false diff --git a/CHANGELOG.md b/CHANGELOG.md index 88081b0..4ddf711 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to WASM-OJ are recorded here. Releases follow ## Unreleased +## 0.2.4 - 2026-10-09 + - Fixed a host process crash (`Uncaught Error: write EPIPE`) when `ServerRunner` cancelled or timed out a runtime preparation stage, run or interactive session while its request was still being written to the child's stdin. Late stdin errors after cleanup are now ignored. @@ -33,6 +35,9 @@ All notable changes to WASM-OJ are recorded here. Releases follow `startupEntropyBytes` for interactive programs. The refreshed runtime identity changes cost profiles. +- Kept the execution contract at version 2. The seven code packages move together to 0.2.4; + independently versioned toolchain packages remain at 0.2.0. + ## 0.2.3 - 2026-10-05 - Download pinned browser toolchain assets before the compiler timeout starts, so slow diff --git a/docs/problem-catalog.md b/docs/problem-catalog.md index 60af713..fb95663 100644 --- a/docs/problem-catalog.md +++ b/docs/problem-catalog.md @@ -146,7 +146,7 @@ inside the judge package manifest. Judge output remains 0–100; contest `points declared weighting. Repositories can use [`.github/actions/woj/action.yml`](../.github/actions/woj/action.yml) with an -exact `@wasm-oj/cli@0.2.3` package version to run the same static verification in CI. +exact `@wasm-oj/cli@0.2.4` package version to run the same static verification in CI. ## Exact-commit synchronization diff --git a/package.json b/package.json index 0102e63..b25a785 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wasm-oj-platform", - "version": "0.2.3", + "version": "0.2.4", "private": true, "description": "WASM-OJ product application and public SDK workspace.", "license": "MIT", @@ -77,13 +77,13 @@ "dependencies": { "@cloudflare/containers": "0.3.7", "@napi-rs/keyring": "1.3.0", - "@wasm-oj/browser": "workspace:0.2.3", - "@wasm-oj/cli": "workspace:0.2.3", - "@wasm-oj/contracts": "workspace:0.2.3", - "@wasm-oj/core": "workspace:0.2.3", - "@wasm-oj/organizer": "workspace:0.2.3", - "@wasm-oj/sdk": "workspace:0.2.3", - "@wasm-oj/server": "workspace:0.2.3", + "@wasm-oj/browser": "workspace:0.2.4", + "@wasm-oj/cli": "workspace:0.2.4", + "@wasm-oj/contracts": "workspace:0.2.4", + "@wasm-oj/core": "workspace:0.2.4", + "@wasm-oj/organizer": "workspace:0.2.4", + "@wasm-oj/sdk": "workspace:0.2.4", + "@wasm-oj/server": "workspace:0.2.4", "@wasm-oj/toolchain-clang": "workspace:0.2.0", "@wasm-oj/toolchain-go": "workspace:0.2.0", "@wasm-oj/toolchain-java": "workspace:0.2.0", diff --git a/packages/browser/package.json b/packages/browser/package.json index b6e50d9..f0454a3 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/browser", - "version": "0.2.3", + "version": "0.2.4", "description": "Browser compiler and runner host for the WASM-OJ SDK.", "license": "MIT", "author": "JacobLinCool", @@ -48,8 +48,8 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3", - "@wasm-oj/core": "workspace:0.2.3", + "@wasm-oj/contracts": "workspace:0.2.4", + "@wasm-oj/core": "workspace:0.2.4", "@wasmer/sdk": "0.10.0", "es-module-lexer": "2.3.1", "fflate": "0.8.3" diff --git a/packages/cli/package.json b/packages/cli/package.json index 2569b1e..f59d5e7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/cli", - "version": "0.2.3", + "version": "0.2.4", "description": "The local-first woj CLI for students and WASM-OJ Organizers.", "license": "MIT", "author": "JacobLinCool", @@ -52,8 +52,8 @@ }, "dependencies": { "@napi-rs/keyring": "1.3.0", - "@wasm-oj/core": "workspace:0.2.3", - "@wasm-oj/organizer": "workspace:0.2.3", - "@wasm-oj/server": "workspace:0.2.3" + "@wasm-oj/core": "workspace:0.2.4", + "@wasm-oj/organizer": "workspace:0.2.4", + "@wasm-oj/server": "workspace:0.2.4" } } diff --git a/packages/contracts/package.json b/packages/contracts/package.json index f9040d5..1ebc8be 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/contracts", - "version": "0.2.3", + "version": "0.2.4", "description": "Environment-neutral contracts and wire types for the WASM-OJ SDK.", "license": "MIT", "author": "JacobLinCool", diff --git a/packages/core/package.json b/packages/core/package.json index fdcc1c4..5ff6f6e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/core", - "version": "0.2.3", + "version": "0.2.4", "description": "Host-neutral compiler, runner, judge, dependency, and replay orchestration for WASM-OJ.", "license": "MIT", "author": "JacobLinCool", @@ -47,7 +47,7 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3", + "@wasm-oj/contracts": "workspace:0.2.4", "fflate": "0.8.3" } } diff --git a/packages/organizer/package.json b/packages/organizer/package.json index 115fde2..4622a1b 100644 --- a/packages/organizer/package.json +++ b/packages/organizer/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/organizer", - "version": "0.2.3", + "version": "0.2.4", "description": "Problem collection and immutable judge-data publication tools for WASM-OJ.", "license": "MIT", "author": "JacobLinCool", @@ -47,6 +47,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/core": "workspace:0.2.3" + "@wasm-oj/core": "workspace:0.2.4" } } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 5985612..7c3c806 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/sdk", - "version": "0.2.3", + "version": "0.2.4", "description": "Convenience entrypoints for the WASM-OJ SDK packages.", "license": "MIT", "author": "JacobLinCool", @@ -62,10 +62,10 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/browser": "workspace:0.2.3", - "@wasm-oj/contracts": "workspace:0.2.3", - "@wasm-oj/core": "workspace:0.2.3", - "@wasm-oj/organizer": "workspace:0.2.3", - "@wasm-oj/server": "workspace:0.2.3" + "@wasm-oj/browser": "workspace:0.2.4", + "@wasm-oj/contracts": "workspace:0.2.4", + "@wasm-oj/core": "workspace:0.2.4", + "@wasm-oj/organizer": "workspace:0.2.4", + "@wasm-oj/server": "workspace:0.2.4" } } diff --git a/packages/server/package.json b/packages/server/package.json index 6c55e7b..074e8d1 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@wasm-oj/server", - "version": "0.2.3", + "version": "0.2.4", "description": "Node.js compiler and runner host for the WASM-OJ SDK.", "license": "MIT", "author": "JacobLinCool", @@ -63,8 +63,8 @@ "runtime:build-native": "cargo build --locked --manifest-path crates/runtime-core/Cargo.toml --release --bins" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3", - "@wasm-oj/core": "workspace:0.2.3", + "@wasm-oj/contracts": "workspace:0.2.4", + "@wasm-oj/core": "workspace:0.2.4", "@wasmer/sdk": "0.10.0", "fflate": "0.8.3" } diff --git a/packages/toolchain-clang/package.json b/packages/toolchain-clang/package.json index f154072..46a3c0d 100644 --- a/packages/toolchain-clang/package.json +++ b/packages/toolchain-clang/package.json @@ -55,6 +55,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3" + "@wasm-oj/contracts": "workspace:0.2.4" } } diff --git a/packages/toolchain-go/package.json b/packages/toolchain-go/package.json index 30b4583..3e4bb32 100644 --- a/packages/toolchain-go/package.json +++ b/packages/toolchain-go/package.json @@ -52,6 +52,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3" + "@wasm-oj/contracts": "workspace:0.2.4" } } diff --git a/packages/toolchain-java/package.json b/packages/toolchain-java/package.json index e87623b..f78262d 100644 --- a/packages/toolchain-java/package.json +++ b/packages/toolchain-java/package.json @@ -53,6 +53,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3" + "@wasm-oj/contracts": "workspace:0.2.4" } } diff --git a/packages/toolchain-javascript/package.json b/packages/toolchain-javascript/package.json index 9b574cc..c07f245 100644 --- a/packages/toolchain-javascript/package.json +++ b/packages/toolchain-javascript/package.json @@ -52,6 +52,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3" + "@wasm-oj/contracts": "workspace:0.2.4" } } diff --git a/packages/toolchain-python/package.json b/packages/toolchain-python/package.json index 2de89fd..e23605d 100644 --- a/packages/toolchain-python/package.json +++ b/packages/toolchain-python/package.json @@ -51,6 +51,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3" + "@wasm-oj/contracts": "workspace:0.2.4" } } diff --git a/packages/toolchain-rust/package.json b/packages/toolchain-rust/package.json index 9013241..5308e5c 100644 --- a/packages/toolchain-rust/package.json +++ b/packages/toolchain-rust/package.json @@ -51,6 +51,6 @@ "prepack": "pnpm run build" }, "dependencies": { - "@wasm-oj/contracts": "workspace:0.2.3" + "@wasm-oj/contracts": "workspace:0.2.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b95f157..61a7556 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,25 +22,25 @@ importers: specifier: 1.3.0 version: 1.3.0 '@wasm-oj/browser': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/browser '@wasm-oj/cli': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/cli '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/contracts '@wasm-oj/core': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/core '@wasm-oj/organizer': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/organizer '@wasm-oj/sdk': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/sdk '@wasm-oj/server': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:packages/server '@wasm-oj/toolchain-clang': specifier: workspace:0.2.0 @@ -167,10 +167,10 @@ importers: packages/browser: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts '@wasm-oj/core': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../core '@wasmer/sdk': specifier: 0.10.0 @@ -188,13 +188,13 @@ importers: specifier: 1.3.0 version: 1.3.0 '@wasm-oj/core': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../core '@wasm-oj/organizer': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../organizer '@wasm-oj/server': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../server packages/contracts: {} @@ -202,7 +202,7 @@ importers: packages/core: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts fflate: specifier: 0.8.3 @@ -211,34 +211,34 @@ importers: packages/organizer: dependencies: '@wasm-oj/core': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../core packages/sdk: dependencies: '@wasm-oj/browser': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../browser '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts '@wasm-oj/core': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../core '@wasm-oj/organizer': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../organizer '@wasm-oj/server': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../server packages/server: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts '@wasm-oj/core': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../core '@wasmer/sdk': specifier: 0.10.0 @@ -250,37 +250,37 @@ importers: packages/toolchain-clang: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts packages/toolchain-go: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts packages/toolchain-java: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts packages/toolchain-javascript: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts packages/toolchain-python: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts packages/toolchain-rust: dependencies: '@wasm-oj/contracts': - specifier: workspace:0.2.3 + specifier: workspace:0.2.4 version: link:../contracts packages: diff --git a/scripts/library-packages.mjs b/scripts/library-packages.mjs index 78bdcfd..0d3a236 100644 --- a/scripts/library-packages.mjs +++ b/scripts/library-packages.mjs @@ -3,7 +3,7 @@ import { fileURLToPath } from "node:url"; export const repositoryRoot = path.resolve(fileURLToPath(new URL("..", import.meta.url))); export const packagesRoot = path.join(repositoryRoot, "packages"); -export const CODE_VERSION = "0.2.3"; +export const CODE_VERSION = "0.2.4"; export const TOOLCHAIN_DESCRIPTOR_SCHEMA = "wasm-oj-v2/toolchain-package"; export const WASM_OJ_CONTRACT_VERSION = 2; diff --git a/scripts/verify-docs.mjs b/scripts/verify-docs.mjs index e9cd511..dcd443c 100644 --- a/scripts/verify-docs.mjs +++ b/scripts/verify-docs.mjs @@ -190,7 +190,7 @@ for (const required of [ "woj organizer collection build", "woj organizer catalog sync", ".github/actions/woj/action.yml", - "@wasm-oj/cli@0.2.3", + "@wasm-oj/cli@0.2.4", "wasm-oj-platform/repository/v1", "wasm-oj-platform/problems/v1", "wasm-oj-platform/contests/v2", diff --git a/src/cli/contracts.ts b/src/cli/contracts.ts index 4d06297..a4326a5 100644 --- a/src/cli/contracts.ts +++ b/src/cli/contracts.ts @@ -1,4 +1,4 @@ -export const WOJ_CLI_VERSION = "0.2.3"; +export const WOJ_CLI_VERSION = "0.2.4"; /** Stable process exit codes. They are part of the public CLI contract. */ export const WOJ_EXIT = Object.freeze({