@ai-ecoverse/slicc-kernel 1.24.0 → 1.26.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.
@@ -279,10 +279,12 @@ var init_ranged = __esm({
279
279
  pages;
280
280
  io;
281
281
  pinned = false;
282
+ version;
282
283
  path;
283
- constructor(io, path, size) {
284
+ constructor(io, path, size, version) {
284
285
  this.io = io;
285
286
  this.path = path;
287
+ this.version = version;
286
288
  this.pages = new Pages(size);
287
289
  }
288
290
  get changed() {
@@ -292,7 +294,9 @@ var init_ranged = __esm({
292
294
  return this.pages.length;
293
295
  }
294
296
  fetch(runs) {
295
- for (const [start, n] of runs) this.pages.fill(start, this.io.pread(this.path, start, n));
297
+ for (const [start, n] of runs) {
298
+ this.pages.fill(start, this.io.pread(this.path, start, n, this.version));
299
+ }
296
300
  }
297
301
  read(at, length) {
298
302
  this.fetch(this.pages.missing(at, length));
@@ -316,6 +320,7 @@ var init_ranged = __esm({
316
320
  if (plan.shrink !== void 0) this.io.truncate(this.path, plan.shrink);
317
321
  for (const run of plan.runs) this.io.pwrite(this.path, run.offset, run.bytes, true);
318
322
  if (plan.extend !== void 0) this.io.truncate(this.path, plan.extend);
323
+ this.version = void 0;
319
324
  this.pages.flushed();
320
325
  }
321
326
  pin() {
@@ -442,12 +447,12 @@ function createHelpers(Fs, ops) {
442
447
  const bridge = bridgeOf(node);
443
448
  const path = () => liveNodePath(node);
444
449
  const io = {
445
- pread: (_, at, n) => bridge.pread(path(), at, n),
450
+ pread: (_, at, n, version) => bridge.pread(path(), at, n, version),
446
451
  pwrite: (_, at, bytes, transfer) => bridge.pwrite(path(), at, bytes, transfer),
447
452
  truncate: (_, size) => bridge.truncate(path(), size)
448
453
  };
449
454
  const st = call2(() => bridge.stat(path()));
450
- s.ranged = new RangedFile(io, path(), st.size);
455
+ s.ranged = new RangedFile(io, path(), st.size, st.version);
451
456
  return s.ranged;
452
457
  }
453
458
  function ensureCapacity(node, need) {
@@ -1063,7 +1068,8 @@ function parseSyncFsStat(json) {
1063
1068
  ...typeof s.dev === "number" ? { dev: s.dev } : {},
1064
1069
  ...s.readonly === true ? { readonly: true } : {},
1065
1070
  ...typeof s.maxFile === "number" ? { maxFile: s.maxFile } : {},
1066
- ...s.ranged === true ? { ranged: true } : {}
1071
+ ...s.ranged === true ? { ranged: true } : {},
1072
+ ...typeof s.version === "string" ? { version: s.version } : {}
1067
1073
  };
1068
1074
  }
1069
1075
  var SYNC_FS_REQUEST_TIMEOUT_MS;
@@ -1305,7 +1311,7 @@ function createSyncFsSabBridge(transport, opts = {}) {
1305
1311
  run({ op: "hold", path, mode: held ? 1 : 0 }, path);
1306
1312
  },
1307
1313
  statfs: (path = "/") => parseSyncFsUsage(json({ op: "statfs", path }, path)),
1308
- pread: (path, offset, length) => bytes({ op: "pread", path, offset, length }, path),
1314
+ pread: (path, offset, length, version) => bytes({ op: "pread", path, offset, length, ...version ? { version } : {} }, path),
1309
1315
  pwrite: (path, offset, body, transfer) => {
1310
1316
  const whole = body.byteOffset === 0 && body.byteLength === body.buffer.byteLength;
1311
1317
  const owned = transfer && whole && body.buffer instanceof ArrayBuffer;
@@ -3810,14 +3816,14 @@ var init_wasi_files = __esm({
3810
3816
  where;
3811
3817
  ranged;
3812
3818
  maxFile;
3813
- constructor(fs, path, empty, maxFile, size) {
3819
+ constructor(fs, path, empty, maxFile, size, version) {
3814
3820
  this.fs = fs;
3815
3821
  this.where = path;
3816
3822
  this.maxFile = maxFile;
3817
3823
  const { pread, pwrite, truncate } = fs;
3818
3824
  if (size !== void 0 && pread && pwrite && truncate) {
3819
3825
  const io = { pread: pread.bind(fs), pwrite: pwrite.bind(fs), truncate: truncate.bind(fs) };
3820
- this.ranged = new RangedFile(io, path, size);
3826
+ this.ranged = new RangedFile(io, path, size, version);
3821
3827
  if (empty) this.truncate(0);
3822
3828
  } else if (empty) {
3823
3829
  this.data = new Uint8Array(0);
@@ -4527,8 +4533,10 @@ var init_wasi_fds = __esm({
4527
4533
  } else {
4528
4534
  if (!existing) this.fs.writeFile(path, new Uint8Array(0));
4529
4535
  const empty = !existing || (oflags & OFLAGS.TRUNC) !== 0;
4530
- const st = existing ?? this.fs.stat(path);
4531
- buffer = new FileBuffer(this.fs, path, empty, st.maxFile, st.ranged ? st.size : void 0);
4536
+ if (existing?.ranged) this.fs.invalidate?.();
4537
+ const st = existing?.ranged || !existing ? this.fs.stat(path) : existing;
4538
+ const ranged = st.ranged ? st.size : void 0;
4539
+ buffer = new FileBuffer(this.fs, path, empty, st.maxFile, ranged, st.version);
4532
4540
  this.buffers.set(path, buffer);
4533
4541
  }
4534
4542
  buffer.opens++;