@ai-ecoverse/slicc-kernel 1.124.8 → 1.124.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1232,6 +1232,19 @@ A WASIX C program for `test/integration/sig-inherited.test.mjs` (#820), built on
1232
1232
 
1233
1233
  **Build:** `WASIX_SYSROOT_33=/path/to/wasix-sysroot ./build.sh`, with `wasixcc` 0.4.7 and binaryen's `wasm-opt` on `PATH`. `bin/inherittest.wasm` is 39,068 bytes, sha256 `c561a52eb27b3c1b6204b997f4eec967b9f4869c6ab13e7915a5a94b326a710e`.
1234
1234
 
1235
+ ### `sigjmptest`
1236
+
1237
+ A WASIX C program for `test/integration/sigjmp.test.mjs` ([#975](https://github.com/ai-ecoverse/slicc-kernel/issues/975), homescoop#1059), built on wasix-sysroot 2025.9.30-35. Each run takes a mode as its only argument:
1238
+ - `term`: a `SIGTERM` handler with `SIGUSR1` in its `sa_mask` sends itself `SIGUSR1`, which must wait until the handler returns: `term-done usr1`.
1239
+ - `longjmp`: `longjmp` out of a `SIGUSR1` handler that has `SIGUSR2` in `sa_mask`. It prints the mask after the jump, then unblocks everything and raises `SIGUSR1` again with a handler that returns.
1240
+ - `lsleep`, `lnanosleep`, `lread`, `lpoll`: the same with a `SIGALRM` that interrupts `sleep`, `nanosleep`, a `read` of an empty pipe, or `poll`. `sleep`, `nanosleep`, `read`, `poll` (no `l`) and `raise` use `sigsetjmp`/`siglongjmp`.
1241
+ - `direct`, `directmask`: `siglongjmp` with no signal at all. `fork` is `raise` in a forked child.
1242
+ - `hold` holds `flock` on `sigjmp.lock` for 3 seconds.
1243
+
1244
+ On -35, `sigsetjmp` is an ordinary libc function rather than the `setjmp` that LLVM's wasm setjmp/longjmp lowering rewrites, so every `siglongjmp` escapes the program (`[object WebAssembly.Exception]`, exit 70), even `direct`. That is homescoop#1059. The rows use plain `longjmp` until the sysroot fixes it.
1245
+
1246
+ **Build:** `WASIX_SYSROOT_35=/path/to/wasix-sysroot ./build.sh`, with `wasixcc` 0.4.7 and binaryen's `wasm-opt` 133 on `PATH`. Asyncify runs with `asyncify-ignore-indirect`, because functions with wasm `try` blocks can't be flattened. `bin/sigjmptest.wasm` is 52,240 bytes, sha256 `9768c2caafa0bcf55e4b9cd2c97a486d46496a275d4e9bd9d5998e163d630fbb`.
1247
+
1235
1248
  ### `handlertest`
1236
1249
 
1237
1250
  A WASIX C program for `test/integration/handler-defer.test.mjs` (#971), built on wasix-sysroot 2025.9.30-33. Its `SIGTERM` handler counts how often and how deeply it runs. On its first run it sends itself `SIGTERM` again and then writes to stderr. `handlertest` installs it with no flags, and `handlertest nodefer` with `SA_NODEFER`. Either way it prints `the handler ran N times, at most D deep`.
@@ -6625,7 +6625,7 @@ function satisfies(version, range2) {
6625
6625
  }
6626
6626
 
6627
6627
  // src/version.ts
6628
- var KERNEL_VERSION = true ? "1.124.8" : "0.0.0-dev";
6628
+ var KERNEL_VERSION = true ? "1.124.9" : "0.0.0-dev";
6629
6629
  var OS_RELEASE = "6.0.0-slicc";
6630
6630
  function procVersion() {
6631
6631
  return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
@@ -20366,6 +20366,7 @@ function threadInit(opts, program, sab, cred, thread, main) {
20366
20366
  cred: copyCred(cred),
20367
20367
  owners: opts.owners === true,
20368
20368
  ...opts.links !== void 0 ? { links: true } : {},
20369
+ ...opts.changes ? { changes: opts.changes } : {},
20369
20370
  ...opts.ppid !== void 0 ? { ppid: opts.ppid } : {},
20370
20371
  thread,
20371
20372
  signals: main