@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.
- package/dist/abi.d.ts +2 -2
- package/dist/abi.d.ts.map +1 -1
- package/dist/abi.js +2 -2
- package/dist/abi.js.map +1 -1
- package/dist/byte-vectors.d.ts +7 -4
- package/dist/byte-vectors.d.ts.map +1 -1
- package/dist/byte-vectors.js +13 -6
- package/dist/byte-vectors.js.map +1 -1
- package/dist/fixed-arrays.d.ts +3 -2
- package/dist/fixed-arrays.d.ts.map +1 -1
- package/dist/fixed-arrays.js +5 -2
- package/dist/fixed-arrays.js.map +1 -1
- package/dist/fixed.d.ts +3 -0
- package/dist/fixed.d.ts.map +1 -1
- package/dist/fixed.js +35 -0
- package/dist/fixed.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/scalar-vector.d.ts +2 -0
- package/dist/scalar-vector.d.ts.map +1 -1
- package/dist/scalar-vector.js +44 -3
- package/dist/scalar-vector.js.map +1 -1
- package/dist/vector-base.d.ts +20 -0
- package/dist/vector-base.d.ts.map +1 -1
- package/dist/vector-base.js +60 -4
- package/dist/vector-base.js.map +1 -1
- package/dist/view-base.d.ts +2 -0
- package/dist/view-base.d.ts.map +1 -1
- package/dist/view-base.js +9 -0
- package/dist/view-base.js.map +1 -1
- package/dist/writer-arena.d.ts +58 -0
- package/dist/writer-arena.d.ts.map +1 -1
- package/dist/writer-arena.js +160 -10
- package/dist/writer-arena.js.map +1 -1
- package/dist/writer-byte-vectors.d.ts +6 -0
- package/dist/writer-byte-vectors.d.ts.map +1 -1
- package/dist/writer-byte-vectors.js +38 -16
- package/dist/writer-byte-vectors.js.map +1 -1
- package/dist/writer-pointer-vectors.d.ts +1 -0
- package/dist/writer-pointer-vectors.d.ts.map +1 -1
- package/dist/writer-pointer-vectors.js +7 -4
- package/dist/writer-pointer-vectors.js.map +1 -1
- package/dist/writer-scalar-vectors.d.ts +1 -0
- package/dist/writer-scalar-vectors.d.ts.map +1 -1
- package/dist/writer-scalar-vectors.js +7 -3
- package/dist/writer-scalar-vectors.js.map +1 -1
- package/dist/writer-spans.d.ts +3 -0
- package/dist/writer-spans.d.ts.map +1 -1
- package/dist/writer-spans.js +15 -6
- package/dist/writer-spans.js.map +1 -1
- package/dist/writer-struct-vectors.d.ts +3 -0
- package/dist/writer-struct-vectors.d.ts.map +1 -1
- package/dist/writer-struct-vectors.js +27 -3
- package/dist/writer-struct-vectors.js.map +1 -1
- package/dist/writer.d.ts +53 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +161 -0
- package/dist/writer.js.map +1 -1
- package/package.json +2 -2
package/dist/writer-spans.js
CHANGED
|
@@ -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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
12
|
-
|
|
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
|
-
|
|
17
|
-
|
|
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
|
}
|
package/dist/writer-spans.js.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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:
|
|
11
|
+
relOffset: this.relativeOffsetFromBase(descriptorBaseOffset, payloadAbsoluteOffset, "Vector32.relOffset"),
|
|
8
12
|
count: values.length,
|
|
9
13
|
};
|
|
10
|
-
writeVector32Descriptor(this.view,
|
|
14
|
+
writeVector32Descriptor(this.view, descriptorBaseOffset + descriptorOffset, descriptor, this.littleEndian);
|
|
11
15
|
values.forEach((value, index) => {
|
|
12
|
-
writeElement(this.view, value,
|
|
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,
|
|
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
|
package/dist/writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAML,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,gCACf,SAAQ,kBAAkB,EAAE,sBAAsB;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,oCAAoC,GAAG,kBAAkB,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAE/C,qBAAa,mBAAoB,SAAQ,kBAAkB;CAAG;AAE9D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,yBAAyB;IACpC,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oCAAoC,GAC5C,IAAI;IAKP,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,uBAAuB,EAChC,UAAU,SAAI,GACb,kBAAkB;IAIrB,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,gCAAgC,GACxC,yBAAyB;IAU5B,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,uBAAuB,GAC/B,yBAAyB;gBAIhB,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,SAAI,EAAE,YAAY,UAAO;IAIzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAEnD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK9B,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM;IAIlD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,EAAE,SAAS,SAAI,GAAG,gBAAgB;IAInF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,cAAe,GAAG,gBAAgB;IAIlE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,YAAqB,GAAG,gBAAgB;IAI3E,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,EAAE,UAAU,SAAI,GAAG,IAAI;IAIrE,mBAAmB,CACjB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,EACrC,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,GACb,gBAAgB;IAMnB,kBAAkB,CAChB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,OAAO,cAAe,GACrB,gBAAgB;IAMnB,kBAAkB,CAChB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,QAAQ,GAAE,YAAqB,GAC9B,gBAAgB;IAMnB,yBAAyB,CACvB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,EACnD,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,GACb,kBAAkB;IAMrB,wBAAwB,CACtB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,OAAO,cAAe,GACrB,kBAAkB;IAMrB,wBAAwB,CACtB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;IAMrB,8BAA8B,CAC5B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,EACnD,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,GACb,kBAAkB;IAUrB,6BAA6B,CAC3B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,OAAO,cAAe,GACrB,kBAAkB;IAWrB,6BAA6B,CAC3B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,iBAAiB,EAAE,MAAM,EACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,QAAQ,GAAE,YAAqB,GAC9B,kBAAkB;IAWrB,0BAA0B,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAC5D,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,GACb,kBAAkB;IAMrB,0BAA0B,CAAC,CAAC,EAC1B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,IAAI,EAC3F,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,SAAS,SAAI,GACZ,kBAAkB;IAYrB,iCAAiC,CAAC,CAAC,EACjC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,CACZ,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,KAClB,IAAI,EACT,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,EACd,SAAS,SAAI,GACZ,kBAAkB;IAYrB,2BAA2B,CACzB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACzC,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,SAAI,GACb,kBAAkB;CAStB"}
|
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
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
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": "
|
|
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": "
|
|
37
|
+
"@exornea/zeno-types": "2.2.0"
|
|
38
38
|
}
|
|
39
39
|
}
|