@ai-ecoverse/slicc-kernel 1.21.0 → 1.21.1

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
@@ -335,6 +335,8 @@ Unit tests live in `test/unit/`, which stays out of git. They run real wasm bash
335
335
 
336
336
  The Biome, TypeScript, lefthook, Renovate and CI configuration comes from [slicc-shared-web](https://github.com/ai-ecoverse/slicc-shared-web), which also provides the `slicc-lint-comments` (no comments anywhere), `slicc-no-unit-tests` (no unit tests in git) and `slicc-diff-cover` (100% coverage of changed lines) commands that `npm run lint` and the pre-commit hook use.
337
337
 
338
+ `tools/big-file.mjs [bytes]` is a manual check, not part of any suite. It writes a file of that size (64 MiB by default) through a tmpfs mount with the unit-test launcher, reads it back, and prints the peak RSS and its ratio to the file size. A whole file is still held in memory several times over (#86), so a 1.1 GiB file peaked at 18 GB of RSS. **Do not run it past 1 GiB on a workstation.** It refuses anything over 256 MiB unless `SLICC_BIG_FILE_I_HAVE_THE_RAM=1` is set. Measure a small file and extrapolate instead.
339
+
338
340
  Releases are cut by semantic-release on every push to `main`. A failure after the version is tagged (a rejected push, a failed `npm publish`) doesn't strand that version: `tools/release-recover.mjs` runs next. For any version tagged at HEAD, it first pushes the tag if origin lacks it, then publishes the version if npm lacks it, with retries, and creates its GitHub release if that is missing too. Re-running the Release workflow completes such a version the same way.
339
341
 
340
342
  ## License
@@ -4672,6 +4672,13 @@ var SAB_I_PUB = 7;
4672
4672
  var SAB_I_SIGNALS = 8;
4673
4673
  var SAB_I_TIMERS = 9;
4674
4674
  var SAB_I_MEMORY = 10;
4675
+ var SAB_I_TOTAL_HI = 11;
4676
+ var SAB_I_OFFSET_HI = 12;
4677
+ var U32 = 2 ** 32;
4678
+ function storeU53(header2, lo, hi, value) {
4679
+ Atomics.store(header2, hi, Math.floor(value / U32));
4680
+ Atomics.store(header2, lo, value % U32 | 0);
4681
+ }
4675
4682
  var SAB_STATE_READY = 2;
4676
4683
  var SAB_STATUS_BYTES = 1;
4677
4684
  var SAB_STATUS_JSON = 2;
@@ -4731,9 +4738,9 @@ function attachSyncSabResponder(port, sab, token, opts) {
4731
4738
  const chunk2 = Math.min(window.byteLength, entry.payload.byteLength - offset);
4732
4739
  if (chunk2 > 0) window.set(entry.payload.subarray(offset, offset + chunk2));
4733
4740
  Atomics.store(header2, SAB_I_STATUS, entry.status);
4734
- Atomics.store(header2, SAB_I_TOTAL, entry.payload.byteLength);
4741
+ storeU53(header2, SAB_I_TOTAL, SAB_I_TOTAL_HI, entry.payload.byteLength);
4735
4742
  Atomics.store(header2, SAB_I_CHUNK, chunk2);
4736
- Atomics.store(header2, SAB_I_OFFSET, offset);
4743
+ storeU53(header2, SAB_I_OFFSET, SAB_I_OFFSET_HI, offset);
4737
4744
  Atomics.store(header2, SAB_I_SEQ, id);
4738
4745
  Atomics.store(header2, SAB_I_STATE, SAB_STATE_READY);
4739
4746
  Atomics.add(header2, SAB_I_PUB, 1);