@ai-ecoverse/slicc-kernel 1.108.4 → 1.109.0

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.
@@ -5204,7 +5204,7 @@ var KERNEL_VERSION, OS_RELEASE;
5204
5204
  var init_version = __esm({
5205
5205
  "src/version.ts"() {
5206
5206
  "use strict";
5207
- KERNEL_VERSION = true ? "1.108.4" : "0.0.0-dev";
5207
+ KERNEL_VERSION = true ? "1.109.0" : "0.0.0-dev";
5208
5208
  OS_RELEASE = "6.0.0-slicc";
5209
5209
  }
5210
5210
  });
@@ -6966,10 +6966,28 @@ function createSyncSabTransport(sab, port3, deps = {}) {
6966
6966
  const wait2 = deps.wait ?? ((a, i, v, t) => rawWait(a, i, v, t));
6967
6967
  const now = deps.now ?? (() => performance.now());
6968
6968
  let seq = 0;
6969
+ let typical = 0;
6970
+ const ready = (id) => Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY && Atomics.load(header, SAB_I_SEQ) === id;
6971
+ function spinUntil(id, until) {
6972
+ for (let stride = 0; stride < SPIN_STRIDES; stride++) {
6973
+ for (let i = 0; i < SPIN_STRIDE; i++) if (ready(id)) return true;
6974
+ if (now() >= until) return false;
6975
+ }
6976
+ return false;
6977
+ }
6978
+ function settled2(start2) {
6979
+ typical += (Math.min(now() - start2, SPIN_CAP_MS) - typical) / 8;
6980
+ }
6969
6981
  function awaitReady(id, deadline, label) {
6982
+ const start2 = now();
6983
+ if (spinning && typical < SPIN_MS && spinUntil(id, start2 + SPIN_MS)) {
6984
+ settled2(start2);
6985
+ return;
6986
+ }
6970
6987
  for (; ; ) {
6971
6988
  const published = Atomics.load(header, SAB_I_PUB);
6972
- if (Atomics.load(header, SAB_I_STATE) === SAB_STATE_READY && Atomics.load(header, SAB_I_SEQ) === id) {
6989
+ if (ready(id)) {
6990
+ settled2(start2);
6973
6991
  return;
6974
6992
  }
6975
6993
  const remaining = deadline - now();
@@ -7177,7 +7195,7 @@ function createSyncFsSabBridge(transport, opts = {}) {
7177
7195
  statfs: (path = "/") => parseSyncFsUsage(json2({ op: "statfs", path }, path))
7178
7196
  };
7179
7197
  }
7180
- var PATH_OPS, calls;
7198
+ var PATH_OPS, calls, SPIN_MS, SPIN_STRIDE, SPIN_STRIDES, SPIN_CORES, spinning, SPIN_CAP_MS;
7181
7199
  var init_sync_sab_bridge = __esm({
7182
7200
  "src/realm/sync-sab-bridge.ts"() {
7183
7201
  "use strict";
@@ -7187,6 +7205,12 @@ var init_sync_sab_bridge = __esm({
7187
7205
  init_sync_sab_wire();
7188
7206
  PATH_OPS = new Set(SYNC_FS_OPS);
7189
7207
  calls = 0;
7208
+ SPIN_MS = 0.06;
7209
+ SPIN_STRIDE = 128;
7210
+ SPIN_STRIDES = 256;
7211
+ SPIN_CORES = 4;
7212
+ spinning = (globalThis.navigator?.hardwareConcurrency ?? 0) >= SPIN_CORES;
7213
+ SPIN_CAP_MS = 1;
7190
7214
  }
7191
7215
  });
7192
7216
 
@@ -11132,6 +11156,7 @@ function createContext(o) {
11132
11156
  cwd: o.cwd,
11133
11157
  ...o.env.TERM !== void 0 ? { term: o.env.TERM } : {}
11134
11158
  }),
11159
+ crontab: async (call2) => await kernel.json({ ...call2, op: "proc-crontab" }),
11135
11160
  ...children,
11136
11161
  net: netOps(kernel, io),
11137
11162
  websocket: websocketOp(kernel),