@ai-ecoverse/slicc-kernel 1.137.0 → 1.138.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.
@@ -25,11 +25,7 @@ function chain(target) {
25
25
  function hide(target, names) {
26
26
  for (const name2 of names) {
27
27
  const holders = chain(target);
28
- for (const holder of holders) {
29
- if (Object.getOwnPropertyDescriptor(holder, name2)?.configurable) {
30
- Reflect.deleteProperty(holder, name2);
31
- }
32
- }
28
+ for (const holder of holders) Reflect.deleteProperty(holder, name2);
33
29
  const kept = holders.slice(1).some((holder) => Object.hasOwn(holder, name2));
34
30
  const defined = Reflect.defineProperty(target, name2, {
35
31
  value: void 0,
@@ -45,11 +41,7 @@ function hide(target, names) {
45
41
  function vacate(target, names) {
46
42
  for (const name2 of names) {
47
43
  const holders = chain(target);
48
- for (const holder of holders) {
49
- if (Object.getOwnPropertyDescriptor(holder, name2)?.configurable) {
50
- Reflect.deleteProperty(holder, name2);
51
- }
52
- }
44
+ for (const holder of holders) Reflect.deleteProperty(holder, name2);
53
45
  const kept = holders.slice(1).some((holder) => Object.hasOwn(holder, name2));
54
46
  const opened2 = Reflect.defineProperty(target, name2, {
55
47
  value: void 0,
@@ -4059,12 +4051,16 @@ function readyEvents(subs, ready) {
4059
4051
  ...nbytesOf(s, ready)
4060
4052
  }));
4061
4053
  }
4062
- function selectOnce(deps, read2, write2, timeoutMs2) {
4054
+ function selectOnce(deps, read2, write2, timeoutMs2, mayResume) {
4063
4055
  try {
4064
4056
  const ready = deps.kernel.call({ op: "fd-select", read: read2, write: write2, timeoutMs: timeoutMs2 });
4065
4057
  return { ready, interrupted: false };
4066
4058
  } catch (e) {
4067
- if (!deps.interruptWakes || e.code !== "EINTR") throw e;
4059
+ if (e.code !== "EINTR") throw e;
4060
+ if (!deps.interruptWakes && mayResume && deps.resumes?.()) {
4061
+ return { ready: { read: [], write: [] }, interrupted: false, resumed: true };
4062
+ }
4063
+ if (!deps.interruptWakes) throw e;
4068
4064
  return { ready: { read: [], write: [] }, interrupted: true };
4069
4065
  }
4070
4066
  }
@@ -4074,8 +4070,15 @@ function waitEvents(deps, subs, { events, read: read2, write: write2 }, entered)
4074
4070
  if (events.length > 0 || entered) return 0;
4075
4071
  return earliest === Infinity ? -1 : Math.max(0, Math.ceil(earliest - performance.now()));
4076
4072
  };
4077
- for (; ; ) {
4078
- const { ready, interrupted } = selectOnce(deps, read2, write2, timeout());
4073
+ for (let resumes = 0; ; ) {
4074
+ const { ready, interrupted, resumed } = selectOnce(
4075
+ deps,
4076
+ read2,
4077
+ write2,
4078
+ timeout(),
4079
+ resumes++ < RESUMES
4080
+ );
4081
+ if (resumed) continue;
4079
4082
  events.push(...readyEvents(subs, ready));
4080
4083
  if (interrupted) return true;
4081
4084
  if (events.length > 0 || entered || earliest === Infinity) return false;
@@ -4102,10 +4105,12 @@ function pollOneoff(deps, inPtr, outPtr, nsubs, neventsPtr) {
4102
4105
  mem.view().setUint32(neventsPtr, events.length, true);
4103
4106
  return E.SUCCESS;
4104
4107
  }
4108
+ var RESUMES;
4105
4109
  var init_wasi_poll = __esm({
4106
4110
  "src/process/wasi/wasi-poll.ts"() {
4107
4111
  "use strict";
4108
4112
  init_wasi_abi();
4113
+ RESUMES = 64;
4109
4114
  }
4110
4115
  });
4111
4116
 
@@ -5348,7 +5353,8 @@ var init_wasi_host = __esm({
5348
5353
  }
5349
5354
  });
5350
5355
  }
5351
- poll(inPtr, outPtr, n, nevents) {
5356
+ poll(inPtr, outPtr, n, nevents, resume = true) {
5357
+ const ran = this.signals?.ran ?? 0;
5352
5358
  try {
5353
5359
  return pollOneoff(
5354
5360
  {
@@ -5357,7 +5363,8 @@ var init_wasi_host = __esm({
5357
5363
  kernel: this.o.kernel,
5358
5364
  now: (id) => this.now(id),
5359
5365
  interruptWakes: this.interruptWakes,
5360
- entered: this.entered
5366
+ entered: this.entered,
5367
+ ...resume ? { resumes: () => this.resumesPoll(ran) } : {}
5361
5368
  },
5362
5369
  inPtr,
5363
5370
  outPtr,
@@ -5368,13 +5375,17 @@ var init_wasi_host = __esm({
5368
5375
  this.o.fs.invalidate?.();
5369
5376
  }
5370
5377
  }
5378
+ resumesPoll(ran) {
5379
+ this.interrupted?.();
5380
+ return (this.signals?.ran ?? 0) === ran;
5381
+ }
5371
5382
  maskedPoll(mask, set, [inPtr, outPtr, n, nevents]) {
5372
5383
  const old = mask.swap(set[0], set[1]);
5373
5384
  try {
5374
5385
  this.mem.view().setUint32(nevents, 0, true);
5375
5386
  if (mask.deliverUnblocked()) return E.INTR;
5376
5387
  this.settleEntry(mask);
5377
- if (n > 0) return this.poll(inPtr, outPtr, n, nevents);
5388
+ if (n > 0) return this.poll(inPtr, outPtr, n, nevents, false);
5378
5389
  return this.entered ? E.INTR : this.suspend();
5379
5390
  } finally {
5380
5391
  mask.deliverUnblocked();
@@ -6699,7 +6710,7 @@ var KERNEL_VERSION, OS_RELEASE;
6699
6710
  var init_version = __esm({
6700
6711
  "src/version.ts"() {
6701
6712
  "use strict";
6702
- KERNEL_VERSION = true ? "1.137.0" : "0.0.0-dev";
6713
+ KERNEL_VERSION = true ? "1.138.1" : "0.0.0-dev";
6703
6714
  OS_RELEASE = "6.0.0-slicc";
6704
6715
  }
6705
6716
  });
@@ -16028,7 +16039,9 @@ var init_wasi_signals = __esm({
16028
16039
  this.deferred &= ~bit;
16029
16040
  this.raise(sig);
16030
16041
  }
16042
+ ran = 0;
16031
16043
  run(handler, sig) {
16044
+ this.ran++;
16032
16045
  const outer = { sig: this.delivering, defaulted: this.defaulted, libc: this.libcDefault };
16033
16046
  this.delivering = sig;
16034
16047
  this.defaulted = false;