@exornea/zeno-runtime 1.7.0 → 2.2.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.
Files changed (61) hide show
  1. package/dist/abi.d.ts +2 -2
  2. package/dist/abi.d.ts.map +1 -1
  3. package/dist/abi.js +2 -2
  4. package/dist/abi.js.map +1 -1
  5. package/dist/byte-vectors.d.ts +7 -4
  6. package/dist/byte-vectors.d.ts.map +1 -1
  7. package/dist/byte-vectors.js +13 -6
  8. package/dist/byte-vectors.js.map +1 -1
  9. package/dist/fixed-arrays.d.ts +3 -2
  10. package/dist/fixed-arrays.d.ts.map +1 -1
  11. package/dist/fixed-arrays.js +5 -2
  12. package/dist/fixed-arrays.js.map +1 -1
  13. package/dist/fixed.d.ts +3 -0
  14. package/dist/fixed.d.ts.map +1 -1
  15. package/dist/fixed.js +35 -0
  16. package/dist/fixed.js.map +1 -1
  17. package/dist/index.d.ts +5 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/scalar-vector.d.ts +2 -0
  22. package/dist/scalar-vector.d.ts.map +1 -1
  23. package/dist/scalar-vector.js +44 -3
  24. package/dist/scalar-vector.js.map +1 -1
  25. package/dist/vector-base.d.ts +20 -0
  26. package/dist/vector-base.d.ts.map +1 -1
  27. package/dist/vector-base.js +60 -4
  28. package/dist/vector-base.js.map +1 -1
  29. package/dist/view-base.d.ts +2 -0
  30. package/dist/view-base.d.ts.map +1 -1
  31. package/dist/view-base.js +9 -0
  32. package/dist/view-base.js.map +1 -1
  33. package/dist/writer-arena.d.ts +58 -0
  34. package/dist/writer-arena.d.ts.map +1 -1
  35. package/dist/writer-arena.js +160 -10
  36. package/dist/writer-arena.js.map +1 -1
  37. package/dist/writer-byte-vectors.d.ts +6 -0
  38. package/dist/writer-byte-vectors.d.ts.map +1 -1
  39. package/dist/writer-byte-vectors.js +38 -16
  40. package/dist/writer-byte-vectors.js.map +1 -1
  41. package/dist/writer-pointer-vectors.d.ts +1 -0
  42. package/dist/writer-pointer-vectors.d.ts.map +1 -1
  43. package/dist/writer-pointer-vectors.js +7 -4
  44. package/dist/writer-pointer-vectors.js.map +1 -1
  45. package/dist/writer-scalar-vectors.d.ts +1 -0
  46. package/dist/writer-scalar-vectors.d.ts.map +1 -1
  47. package/dist/writer-scalar-vectors.js +7 -3
  48. package/dist/writer-scalar-vectors.js.map +1 -1
  49. package/dist/writer-spans.d.ts +3 -0
  50. package/dist/writer-spans.d.ts.map +1 -1
  51. package/dist/writer-spans.js +15 -6
  52. package/dist/writer-spans.js.map +1 -1
  53. package/dist/writer-struct-vectors.d.ts +3 -0
  54. package/dist/writer-struct-vectors.d.ts.map +1 -1
  55. package/dist/writer-struct-vectors.js +27 -3
  56. package/dist/writer-struct-vectors.js.map +1 -1
  57. package/dist/writer.d.ts +53 -0
  58. package/dist/writer.d.ts.map +1 -1
  59. package/dist/writer.js +161 -0
  60. package/dist/writer.js.map +1 -1
  61. package/package.json +2 -2
@@ -3,18 +3,27 @@ import { UTF8_ENCODER } from "./fixed.js";
3
3
  import { DynamicLayoutArena } from "./writer-arena.js";
4
4
  export class SpanLayoutWriter extends DynamicLayoutArena {
5
5
  writeBytes(descriptorOffset, bytes) {
6
- const descriptor = this.appendBytes(bytes);
7
- writeSpan32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
6
+ return this.writeBytesAtBase(this.baseOffset, descriptorOffset, bytes);
7
+ }
8
+ writeBytesAtBase(descriptorBaseOffset, descriptorOffset, bytes) {
9
+ const descriptor = this.appendBytesAtBase(descriptorBaseOffset, bytes);
10
+ writeSpan32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
8
11
  return descriptor;
9
12
  }
10
13
  writeUtf8(descriptorOffset, text, encoder = UTF8_ENCODER) {
11
- const descriptor = this.appendUtf8(text, encoder);
12
- writeSpan32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
14
+ return this.writeUtf8AtBase(this.baseOffset, descriptorOffset, text, encoder);
15
+ }
16
+ writeUtf8AtBase(descriptorBaseOffset, descriptorOffset, text, encoder = UTF8_ENCODER) {
17
+ const descriptor = this.appendUtf8AtBase(descriptorBaseOffset, text, encoder);
18
+ writeSpan32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
13
19
  return descriptor;
14
20
  }
15
21
  writeText(descriptorOffset, text, encoding = "utf8") {
16
- const descriptor = this.appendText(text, encoding);
17
- writeSpan32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
22
+ return this.writeTextAtBase(this.baseOffset, descriptorOffset, text, encoding);
23
+ }
24
+ writeTextAtBase(descriptorBaseOffset, descriptorOffset, text, encoding = "utf8") {
25
+ const descriptor = this.appendTextAtBase(descriptorBaseOffset, text, encoding);
26
+ writeSpan32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
18
27
  return descriptor;
19
28
  }
20
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writer-spans.js","sourceRoot":"","sources":["../src/writer-spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IACtD,UAAU,CAAC,gBAAwB,EAAE,KAAqC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAClC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,gBAAwB,EAAE,IAAY,EAAE,OAAO,GAAG,YAAY;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAClC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,CACP,gBAAwB,EACxB,IAAY,EACZ,WAAyB,MAAM;QAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAClC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"writer-spans.js","sourceRoot":"","sources":["../src/writer-spans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IACtD,UAAU,CAAC,gBAAwB,EAAE,KAAqC;QACxE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,gBAAgB,CACd,oBAA4B,EAC5B,gBAAwB,EACxB,KAAqC;QAErC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACvE,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,gBAAwB,EAAE,IAAY,EAAE,OAAO,GAAG,YAAY;QACtE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED,eAAe,CACb,oBAA4B,EAC5B,gBAAwB,EACxB,IAAY,EACZ,OAAO,GAAG,YAAY;QAEtB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9E,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,CACP,gBAAwB,EACxB,IAAY,EACZ,WAAyB,MAAM;QAE/B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjF,CAAC;IAED,eAAe,CACb,oBAA4B,EAC5B,gBAAwB,EACxB,IAAY,EACZ,WAAyB,MAAM;QAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/E,qBAAqB,CACnB,IAAI,CAAC,IAAI,EACT,oBAAoB,GAAG,gBAAgB,EACvC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -2,5 +2,8 @@ import { type Vector32Descriptor } from "./descriptor32.js";
2
2
  import { ScalarVectorLayoutWriter } from "./writer-scalar-vectors.js";
3
3
  export declare class StructVectorLayoutWriter extends ScalarVectorLayoutWriter {
4
4
  writeStructVector<T>(descriptorOffset: number, values: readonly T[], elementByteLength: number, writeElement: (view: DataView, value: T, baseOffset: number, littleEndian: boolean) => void, alignment?: number): Vector32Descriptor;
5
+ writeStructVectorAtBase<T>(descriptorBaseOffset: number, descriptorOffset: number, values: readonly T[], elementByteLength: number, writeElement: (view: DataView, value: T, baseOffset: number, littleEndian: boolean) => void, alignment?: number): Vector32Descriptor;
6
+ writeDynamicStructVectorAtBase<T>(descriptorBaseOffset: number, descriptorOffset: number, values: readonly T[], elementByteLength: number, writeElement: (view: DataView, writer: this, value: T, baseOffset: number, littleEndian: boolean) => void, alignment?: number): Vector32Descriptor;
7
+ writeDynamicStructVector<T>(descriptorOffset: number, values: readonly T[], elementByteLength: number, writeElement: (view: DataView, writer: this, value: T, baseOffset: number, littleEndian: boolean) => void, alignment?: number): Vector32Descriptor;
5
8
  }
6
9
  //# sourceMappingURL=writer-struct-vectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-struct-vectors.d.ts","sourceRoot":"","sources":["../src/writer-struct-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,wBAAyB,SAAQ,wBAAwB;IACpE,iBAAiB,CAAC,CAAC,EACjB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KAClB,IAAI,EACT,SAAS,SAAI,GACZ,kBAAkB;CAwBtB"}
1
+ {"version":3,"file":"writer-struct-vectors.d.ts","sourceRoot":"","sources":["../src/writer-struct-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,wBAAyB,SAAQ,wBAAwB;IACpE,iBAAiB,CAAC,CAAC,EACjB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KAClB,IAAI,EACT,SAAS,SAAI,GACZ,kBAAkB;IAWrB,uBAAuB,CAAC,CAAC,EACvB,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CACZ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KAClB,IAAI,EACT,SAAS,SAAI,GACZ,kBAAkB;IA8BrB,8BAA8B,CAAC,CAAC,EAC9B,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CACZ,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KAClB,IAAI,EACT,SAAS,SAAI,GACZ,kBAAkB;IAqCrB,wBAAwB,CAAC,CAAC,EACxB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CACZ,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KAClB,IAAI,EACT,SAAS,SAAI,GACZ,kBAAkB;CAUtB"}
@@ -2,16 +2,40 @@ import { writeVector32Descriptor, } from "./descriptor32.js";
2
2
  import { ScalarVectorLayoutWriter } from "./writer-scalar-vectors.js";
3
3
  export class StructVectorLayoutWriter extends ScalarVectorLayoutWriter {
4
4
  writeStructVector(descriptorOffset, values, elementByteLength, writeElement, alignment = 1) {
5
+ return this.writeStructVectorAtBase(this.baseOffset, descriptorOffset, values, elementByteLength, writeElement, alignment);
6
+ }
7
+ writeStructVectorAtBase(descriptorBaseOffset, descriptorOffset, values, elementByteLength, writeElement, alignment = 1) {
5
8
  const payloadOffset = this.reserve(values.length * elementByteLength, alignment);
9
+ const payloadAbsoluteOffset = this.baseOffset + payloadOffset;
6
10
  const descriptor = {
7
- relOffset: payloadOffset,
11
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
8
12
  count: values.length,
9
13
  };
10
- writeVector32Descriptor(this.view, this.baseOffset + descriptorOffset, descriptor, this.littleEndian);
14
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
11
15
  values.forEach((value, index) => {
12
- writeElement(this.view, value, this.baseOffset + payloadOffset + index * elementByteLength, this.littleEndian);
16
+ writeElement(this.view, value, payloadAbsoluteOffset + index * elementByteLength, this.littleEndian);
13
17
  });
14
18
  return descriptor;
15
19
  }
20
+ writeDynamicStructVectorAtBase(descriptorBaseOffset, descriptorOffset, values, elementByteLength, writeElement, alignment = 1) {
21
+ const tableOffset = this.reserve(values.length * 4, 4);
22
+ const tableAbsoluteOffset = this.baseOffset + tableOffset;
23
+ const descriptor = {
24
+ relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, tableAbsoluteOffset, "Vector32.relOffset"),
25
+ count: values.length,
26
+ };
27
+ writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
28
+ values.forEach((value, index) => {
29
+ const elementOffset = this.reserve(elementByteLength, alignment);
30
+ const elementAbsoluteOffset = this.baseOffset + elementOffset;
31
+ const elementRelativeOffset = this.relativeOffsetFromBase(descriptorBaseOffset, elementAbsoluteOffset, "DynamicStructVector.elementOffset");
32
+ this.view.setUint32(tableAbsoluteOffset + index * 4, elementRelativeOffset, this.littleEndian);
33
+ writeElement(this.view, this, value, elementAbsoluteOffset, this.littleEndian);
34
+ });
35
+ return descriptor;
36
+ }
37
+ writeDynamicStructVector(descriptorOffset, values, elementByteLength, writeElement, alignment = 1) {
38
+ return this.writeDynamicStructVectorAtBase(this.baseOffset, descriptorOffset, values, elementByteLength, writeElement, alignment);
39
+ }
16
40
  }
17
41
  //# sourceMappingURL=writer-struct-vectors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-struct-vectors.js","sourceRoot":"","sources":["../src/writer-struct-vectors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,OAAO,wBAAyB,SAAQ,wBAAwB;IACpE,iBAAiB,CACf,gBAAwB,EACxB,MAAoB,EACpB,iBAAyB,EACzB,YAKS,EACT,SAAS,GAAG,CAAC;QAEb,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;QACF,uBAAuB,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,UAAU,GAAG,gBAAgB,EAClC,UAAU,EACV,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,YAAY,CACV,IAAI,CAAC,IAAI,EACT,KAAK,EACL,IAAI,CAAC,UAAU,GAAG,aAAa,GAAG,KAAK,GAAG,iBAAiB,EAC3D,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"writer-struct-vectors.js","sourceRoot":"","sources":["../src/writer-struct-vectors.ts"],"names":[],"mappings":"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"}
package/dist/writer.d.ts CHANGED
@@ -1,4 +1,57 @@
1
+ import type { ScalarKind } from "./scalar.js";
2
+ import type { Span32Descriptor, Vector32Descriptor } from "./descriptor32.js";
3
+ import { type TextEncoding } from "./fixed.js";
4
+ import { type SharedArenaOptions, type SharedArenaShardOptions, type SharedArenaViewOptions } from "./writer-arena.js";
1
5
  import { VectorLayoutWriter } from "./writer-vectors.js";
6
+ export interface SharedDynamicLayoutWriterOptions extends SharedArenaOptions, SharedArenaViewOptions {
7
+ readonly baseOffset?: number;
8
+ readonly littleEndian?: boolean;
9
+ }
10
+ export type SharedDynamicLayoutWriterInitOptions = SharedArenaOptions;
11
+ export type SharedDescriptorState = Int32Array;
2
12
  export declare class DynamicLayoutWriter extends VectorLayoutWriter {
3
13
  }
14
+ /**
15
+ * Dynamic tail writer for a `SharedArrayBuffer` arena.
16
+ *
17
+ * Guarantees:
18
+ * - tail reservation is race-free across writer instances that share the same
19
+ * cursor cell; reservation uses `Atomics.compareExchange`.
20
+ * - descriptor publication is atomic when using the `*Published(...)` methods
21
+ * with a descriptor state cell.
22
+ *
23
+ * Non-guarantees:
24
+ * - arbitrary fixed-position writes are not protected. If callers write the
25
+ * same byte range outside of cursor reservation, the payload can be corrupted.
26
+ * - readers must wait for the descriptor state cell before reading descriptors
27
+ * written by another thread.
28
+ */
29
+ export declare class SharedDynamicLayoutWriter {
30
+ static initializeCursor(buffer: SharedArrayBuffer, tailOffset: number, options: SharedDynamicLayoutWriterInitOptions): void;
31
+ static initializeShard(buffer: SharedArrayBuffer, options: SharedArenaShardOptions, tailOffset?: number): SharedArenaOptions;
32
+ static fromSharedBuffer(buffer: SharedArrayBuffer, options: SharedDynamicLayoutWriterOptions): SharedDynamicLayoutWriter;
33
+ static fromSharedShard(buffer: SharedArrayBuffer, options: SharedArenaShardOptions): SharedDynamicLayoutWriter;
34
+ constructor(view: DataView, sharedCursor: Int32Array, baseOffset?: number, littleEndian?: boolean);
35
+ private readonly writer;
36
+ get tailOffset(): number;
37
+ align(alignment: number): this;
38
+ reserve(byteLength: number, alignment?: number): number;
39
+ appendBytes(bytes: ArrayLike<number> | Uint8Array, alignment?: number): Span32Descriptor;
40
+ appendUtf8(text: string, encoder?: TextEncoder): Span32Descriptor;
41
+ appendText(text: string, encoding?: TextEncoding): Span32Descriptor;
42
+ publishDescriptor(state: SharedDescriptorState, readyValue?: number): void;
43
+ writeBytesPublished(descriptorOffset: number, bytes: ArrayLike<number> | Uint8Array, state: SharedDescriptorState, readyValue?: number): Span32Descriptor;
44
+ writeUtf8Published(descriptorOffset: number, text: string, state: SharedDescriptorState, readyValue?: number, encoder?: TextEncoder): Span32Descriptor;
45
+ writeTextPublished(descriptorOffset: number, text: string, state: SharedDescriptorState, readyValue?: number, encoding?: TextEncoding): Span32Descriptor;
46
+ writeBytesVectorPublished(descriptorOffset: number, values: readonly (ArrayLike<number> | Uint8Array)[], state: SharedDescriptorState, readyValue?: number): Vector32Descriptor;
47
+ writeUtf8VectorPublished(descriptorOffset: number, values: readonly string[], state: SharedDescriptorState, readyValue?: number, encoder?: TextEncoder): Vector32Descriptor;
48
+ writeTextVectorPublished(descriptorOffset: number, values: readonly string[], state: SharedDescriptorState, readyValue?: number, encoding?: TextEncoding): Vector32Descriptor;
49
+ writeFixedBytesVectorPublished(descriptorOffset: number, values: readonly (ArrayLike<number> | Uint8Array)[], elementByteLength: number, state: SharedDescriptorState, readyValue?: number): Vector32Descriptor;
50
+ writeFixedUtf8VectorPublished(descriptorOffset: number, values: readonly string[], elementByteLength: number, state: SharedDescriptorState, readyValue?: number, encoder?: TextEncoder): Vector32Descriptor;
51
+ writeFixedTextVectorPublished(descriptorOffset: number, values: readonly string[], elementByteLength: number, state: SharedDescriptorState, readyValue?: number, encoding?: TextEncoding): Vector32Descriptor;
52
+ writeScalarVectorPublished<T extends number | bigint | boolean>(descriptorOffset: number, scalarKind: ScalarKind, values: readonly T[], state: SharedDescriptorState, readyValue?: number): Vector32Descriptor;
53
+ writeStructVectorPublished<T>(descriptorOffset: number, values: readonly T[], elementByteLength: number, writeElement: (view: DataView, value: T, baseOffset: number, littleEndian: boolean) => void, state: SharedDescriptorState, readyValue?: number, alignment?: number): Vector32Descriptor;
54
+ writeDynamicStructVectorPublished<T>(descriptorOffset: number, values: readonly T[], elementByteLength: number, writeElement: (view: DataView, writer: DynamicLayoutWriter, value: T, baseOffset: number, littleEndian: boolean) => void, state: SharedDescriptorState, readyValue?: number, alignment?: number): Vector32Descriptor;
55
+ writePointerVectorPublished(descriptorOffset: number, targetOffsets: readonly (number | null)[], targetByteLength: number, state: SharedDescriptorState, readyValue?: number): Vector32Descriptor;
56
+ }
4
57
  //# sourceMappingURL=writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,mBAAoB,SAAQ,kBAAkB;CAAG"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
package/dist/writer.js CHANGED
@@ -1,4 +1,165 @@
1
+ import { alignOffset, assertDataViewRange } from "./range.js";
2
+ import { UTF8_ENCODER } from "./fixed.js";
3
+ import { publishSharedDescriptor, initializeSharedArenaShard, sharedArenaCursorCell, sharedArenaShard, sharedArenaView, } from "./writer-arena.js";
1
4
  import { VectorLayoutWriter } from "./writer-vectors.js";
2
5
  export class DynamicLayoutWriter extends VectorLayoutWriter {
3
6
  }
7
+ /**
8
+ * Dynamic tail writer for a `SharedArrayBuffer` arena.
9
+ *
10
+ * Guarantees:
11
+ * - tail reservation is race-free across writer instances that share the same
12
+ * cursor cell; reservation uses `Atomics.compareExchange`.
13
+ * - descriptor publication is atomic when using the `*Published(...)` methods
14
+ * with a descriptor state cell.
15
+ *
16
+ * Non-guarantees:
17
+ * - arbitrary fixed-position writes are not protected. If callers write the
18
+ * same byte range outside of cursor reservation, the payload can be corrupted.
19
+ * - readers must wait for the descriptor state cell before reading descriptors
20
+ * written by another thread.
21
+ */
22
+ export class SharedDynamicLayoutWriter {
23
+ static initializeCursor(buffer, tailOffset, options) {
24
+ assertSharedTailOffset(tailOffset);
25
+ Atomics.store(sharedArenaCursorCell(buffer, options.cursorByteOffset), 0, tailOffset);
26
+ }
27
+ static initializeShard(buffer, options, tailOffset = 0) {
28
+ return initializeSharedArenaShard(buffer, options, tailOffset);
29
+ }
30
+ static fromSharedBuffer(buffer, options) {
31
+ const cursor = sharedArenaCursorCell(buffer, options.cursorByteOffset);
32
+ return new SharedDynamicLayoutWriter(sharedArenaView(buffer, options), cursor, options.baseOffset ?? 0, options.littleEndian ?? true);
33
+ }
34
+ static fromSharedShard(buffer, options) {
35
+ return SharedDynamicLayoutWriter.fromSharedBuffer(buffer, sharedArenaShard(buffer, options));
36
+ }
37
+ constructor(view, sharedCursor, baseOffset = 0, littleEndian = true) {
38
+ this.writer = new AtomicDynamicLayoutWriter(view, sharedCursor, baseOffset, littleEndian);
39
+ }
40
+ writer;
41
+ get tailOffset() {
42
+ return this.writer.tailOffset;
43
+ }
44
+ align(alignment) {
45
+ this.writer.align(alignment);
46
+ return this;
47
+ }
48
+ reserve(byteLength, alignment = 1) {
49
+ return this.writer.reserve(byteLength, alignment);
50
+ }
51
+ appendBytes(bytes, alignment = 1) {
52
+ return this.writer.appendBytes(bytes, alignment);
53
+ }
54
+ appendUtf8(text, encoder = UTF8_ENCODER) {
55
+ return this.writer.appendUtf8(text, encoder);
56
+ }
57
+ appendText(text, encoding = "utf8") {
58
+ return this.writer.appendText(text, encoding);
59
+ }
60
+ publishDescriptor(state, readyValue = 1) {
61
+ publishSharedDescriptor(state, readyValue);
62
+ }
63
+ writeBytesPublished(descriptorOffset, bytes, state, readyValue = 1) {
64
+ const descriptor = this.writer.writeBytes(descriptorOffset, bytes);
65
+ this.publishDescriptor(state, readyValue);
66
+ return descriptor;
67
+ }
68
+ writeUtf8Published(descriptorOffset, text, state, readyValue = 1, encoder = UTF8_ENCODER) {
69
+ const descriptor = this.writer.writeUtf8(descriptorOffset, text, encoder);
70
+ this.publishDescriptor(state, readyValue);
71
+ return descriptor;
72
+ }
73
+ writeTextPublished(descriptorOffset, text, state, readyValue = 1, encoding = "utf8") {
74
+ const descriptor = this.writer.writeText(descriptorOffset, text, encoding);
75
+ this.publishDescriptor(state, readyValue);
76
+ return descriptor;
77
+ }
78
+ writeBytesVectorPublished(descriptorOffset, values, state, readyValue = 1) {
79
+ const descriptor = this.writer.writeBytesVector(descriptorOffset, values);
80
+ this.publishDescriptor(state, readyValue);
81
+ return descriptor;
82
+ }
83
+ writeUtf8VectorPublished(descriptorOffset, values, state, readyValue = 1, encoder = UTF8_ENCODER) {
84
+ const descriptor = this.writer.writeUtf8Vector(descriptorOffset, values, encoder);
85
+ this.publishDescriptor(state, readyValue);
86
+ return descriptor;
87
+ }
88
+ writeTextVectorPublished(descriptorOffset, values, state, readyValue = 1, encoding = "utf8") {
89
+ const descriptor = this.writer.writeTextVector(descriptorOffset, values, encoding);
90
+ this.publishDescriptor(state, readyValue);
91
+ return descriptor;
92
+ }
93
+ writeFixedBytesVectorPublished(descriptorOffset, values, elementByteLength, state, readyValue = 1) {
94
+ const descriptor = this.writer.writeFixedBytesVector(descriptorOffset, values, elementByteLength);
95
+ this.publishDescriptor(state, readyValue);
96
+ return descriptor;
97
+ }
98
+ writeFixedUtf8VectorPublished(descriptorOffset, values, elementByteLength, state, readyValue = 1, encoder = UTF8_ENCODER) {
99
+ const descriptor = this.writer.writeFixedUtf8Vector(descriptorOffset, values, elementByteLength, encoder);
100
+ this.publishDescriptor(state, readyValue);
101
+ return descriptor;
102
+ }
103
+ writeFixedTextVectorPublished(descriptorOffset, values, elementByteLength, state, readyValue = 1, encoding = "utf8") {
104
+ const descriptor = this.writer.writeFixedTextVector(descriptorOffset, values, elementByteLength, encoding);
105
+ this.publishDescriptor(state, readyValue);
106
+ return descriptor;
107
+ }
108
+ writeScalarVectorPublished(descriptorOffset, scalarKind, values, state, readyValue = 1) {
109
+ const descriptor = this.writer.writeScalarVector(descriptorOffset, scalarKind, values);
110
+ this.publishDescriptor(state, readyValue);
111
+ return descriptor;
112
+ }
113
+ writeStructVectorPublished(descriptorOffset, values, elementByteLength, writeElement, state, readyValue = 1, alignment = 1) {
114
+ const descriptor = this.writer.writeStructVector(descriptorOffset, values, elementByteLength, writeElement, alignment);
115
+ this.publishDescriptor(state, readyValue);
116
+ return descriptor;
117
+ }
118
+ writeDynamicStructVectorPublished(descriptorOffset, values, elementByteLength, writeElement, state, readyValue = 1, alignment = 1) {
119
+ const descriptor = this.writer.writeDynamicStructVector(descriptorOffset, values, elementByteLength, writeElement, alignment);
120
+ this.publishDescriptor(state, readyValue);
121
+ return descriptor;
122
+ }
123
+ writePointerVectorPublished(descriptorOffset, targetOffsets, targetByteLength, state, readyValue = 1) {
124
+ const descriptor = this.writer.writePointerVector(descriptorOffset, targetOffsets, targetByteLength);
125
+ this.publishDescriptor(state, readyValue);
126
+ return descriptor;
127
+ }
128
+ }
129
+ class AtomicDynamicLayoutWriter extends DynamicLayoutWriter {
130
+ sharedCursor;
131
+ constructor(view, sharedCursor, baseOffset = 0, littleEndian = true) {
132
+ super(view, Atomics.load(sharedCursor, 0), baseOffset, littleEndian);
133
+ this.sharedCursor = sharedCursor;
134
+ }
135
+ align(alignment) {
136
+ this.reserve(0, alignment);
137
+ return this;
138
+ }
139
+ reserve(byteLength, alignment = 1) {
140
+ assertSharedTailOffset(byteLength);
141
+ while (true) {
142
+ const current = this.readCursor();
143
+ const aligned = alignOffset(current, alignment);
144
+ const next = aligned + byteLength;
145
+ assertSharedTailOffset(next);
146
+ assertDataViewRange(this.view, this.baseOffset + aligned, byteLength);
147
+ if (Atomics.compareExchange(this.sharedCursor, 0, current, next) === current) {
148
+ return aligned;
149
+ }
150
+ }
151
+ }
152
+ readCursor() {
153
+ return Atomics.load(this.sharedCursor, 0);
154
+ }
155
+ writeCursor(value) {
156
+ assertSharedTailOffset(value);
157
+ Atomics.store(this.sharedCursor, 0, value);
158
+ }
159
+ }
160
+ function assertSharedTailOffset(value) {
161
+ if (!Number.isInteger(value) || value < 0 || value > 0x7fffffff) {
162
+ throw new RangeError(`Shared arena cursor value must be a non-negative i32: ${value}`);
163
+ }
164
+ }
4
165
  //# sourceMappingURL=writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;CAAG"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exornea/zeno-runtime",
3
- "version": "1.7.0",
3
+ "version": "2.2.0",
4
4
  "description": "Runtime views, descriptors, writers, and frame helpers for Zeno binary projections.",
5
5
  "keywords": [
6
6
  "typescript",
@@ -34,6 +34,6 @@
34
34
  "access": "public"
35
35
  },
36
36
  "dependencies": {
37
- "@exornea/zeno-types": "1.7.0"
37
+ "@exornea/zeno-types": "2.2.0"
38
38
  }
39
39
  }