knitting 0.1.53 → 0.1.55
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/README.md +38 -27
- package/knitting.d.ts +797 -5
- package/knitting.js +9780 -5
- package/map.md +9 -12
- package/package.json +14 -13
- package/shared-memory.d.ts +155 -0
- package/shared-memory.js +1342 -0
- package/unsafe.d.ts +71 -1
- package/unsafe.js +878 -1
- package/utils.d.ts +31 -1
- package/utils.js +116 -1
- package/process-shared-buffer.d.ts +0 -1
- package/process-shared-buffer.js +0 -1
- package/src/api.d.ts +0 -69
- package/src/api.js +0 -555
- package/src/common/envelope.d.ts +0 -17
- package/src/common/envelope.js +0 -22
- package/src/common/module-url.d.ts +0 -1
- package/src/common/module-url.js +0 -24
- package/src/common/node-compat.d.ts +0 -20
- package/src/common/node-compat.js +0 -24
- package/src/common/path-canonical.d.ts +0 -6
- package/src/common/path-canonical.js +0 -41
- package/src/common/runtime.d.ts +0 -15
- package/src/common/runtime.js +0 -91
- package/src/common/shared-buffer-region.d.ts +0 -11
- package/src/common/shared-buffer-region.js +0 -21
- package/src/common/shared-buffer-text.d.ts +0 -16
- package/src/common/shared-buffer-text.js +0 -65
- package/src/common/task-source.d.ts +0 -3
- package/src/common/task-source.js +0 -84
- package/src/common/task-symbol.d.ts +0 -1
- package/src/common/task-symbol.js +0 -1
- package/src/common/with-resolvers.d.ts +0 -9
- package/src/common/with-resolvers.js +0 -23
- package/src/common/worker-runtime.d.ts +0 -42
- package/src/common/worker-runtime.js +0 -61
- package/src/connections/buffer-reference-native.d.ts +0 -56
- package/src/connections/buffer-reference-native.js +0 -217
- package/src/connections/buffer-reference.d.ts +0 -78
- package/src/connections/buffer-reference.js +0 -461
- package/src/connections/bun.d.ts +0 -22
- package/src/connections/bun.js +0 -214
- package/src/connections/deno.d.ts +0 -22
- package/src/connections/deno.js +0 -205
- package/src/connections/file-descriptor.d.ts +0 -39
- package/src/connections/file-descriptor.js +0 -161
- package/src/connections/index.d.ts +0 -4
- package/src/connections/index.js +0 -4
- package/src/connections/node-addons.d.ts +0 -5
- package/src/connections/node-addons.js +0 -43
- package/src/connections/node-buffer-pointer.d.ts +0 -20
- package/src/connections/node-buffer-pointer.js +0 -16
- package/src/connections/node.d.ts +0 -30
- package/src/connections/node.js +0 -62
- package/src/connections/posix.d.ts +0 -32
- package/src/connections/posix.js +0 -77
- package/src/connections/process-shared-buffer.d.ts +0 -75
- package/src/connections/process-shared-buffer.js +0 -279
- package/src/connections/shared-array-buffer-payload.d.ts +0 -36
- package/src/connections/shared-array-buffer-payload.js +0 -235
- package/src/connections/types.d.ts +0 -50
- package/src/connections/types.js +0 -37
- package/src/connections/windows.d.ts +0 -28
- package/src/connections/windows.js +0 -224
- package/src/debug/env-diff.d.ts +0 -26
- package/src/debug/env-diff.js +0 -49
- package/src/debug/gate.d.ts +0 -18
- package/src/debug/gate.js +0 -69
- package/src/debug/handle.d.ts +0 -23
- package/src/debug/handle.js +0 -48
- package/src/error.d.ts +0 -13
- package/src/error.js +0 -49
- package/src/ipc/tools/ring-queue.d.ts +0 -33
- package/src/ipc/tools/ring-queue.js +0 -159
- package/src/ipc/transport/shared-memory.d.ts +0 -23
- package/src/ipc/transport/shared-memory.js +0 -35
- package/src/memory/byte-carpet.d.ts +0 -73
- package/src/memory/byte-carpet.js +0 -157
- package/src/memory/lock.d.ts +0 -201
- package/src/memory/lock.js +0 -739
- package/src/memory/payload-config.d.ts +0 -31
- package/src/memory/payload-config.js +0 -67
- package/src/memory/payloadCodec.d.ts +0 -46
- package/src/memory/payloadCodec.js +0 -1334
- package/src/memory/regionRegistry.d.ts +0 -17
- package/src/memory/regionRegistry.js +0 -285
- package/src/memory/shared-buffer-io.d.ts +0 -55
- package/src/memory/shared-buffer-io.js +0 -403
- package/src/permission/index.d.ts +0 -2
- package/src/permission/index.js +0 -2
- package/src/permission/protocol.d.ts +0 -166
- package/src/permission/protocol.js +0 -650
- package/src/runtime/balancer.d.ts +0 -19
- package/src/runtime/balancer.js +0 -149
- package/src/runtime/dispatcher.d.ts +0 -34
- package/src/runtime/dispatcher.js +0 -142
- package/src/runtime/inline-executor.d.ts +0 -10
- package/src/runtime/inline-executor.js +0 -282
- package/src/runtime/pool.d.ts +0 -30
- package/src/runtime/pool.js +0 -391
- package/src/runtime/process-worker.d.ts +0 -92
- package/src/runtime/process-worker.js +0 -673
- package/src/runtime/tx-queue.d.ts +0 -26
- package/src/runtime/tx-queue.js +0 -151
- package/src/shared/abortSignal.d.ts +0 -23
- package/src/shared/abortSignal.js +0 -134
- package/src/types.d.ts +0 -346
- package/src/types.js +0 -2
- package/src/utils/http.d.ts +0 -29
- package/src/utils/http.js +0 -100
- package/src/worker/bootstrap.d.ts +0 -5
- package/src/worker/bootstrap.js +0 -78
- package/src/worker/composable-runners.d.ts +0 -12
- package/src/worker/composable-runners.js +0 -97
- package/src/worker/loop.d.ts +0 -2
- package/src/worker/loop.js +0 -382
- package/src/worker/process-worker-bootstrap.d.ts +0 -8
- package/src/worker/process-worker-bootstrap.js +0 -160
- package/src/worker/rx-queue.d.ts +0 -25
- package/src/worker/rx-queue.js +0 -173
- package/src/worker/safety/index.d.ts +0 -4
- package/src/worker/safety/index.js +0 -4
- package/src/worker/safety/performance.d.ts +0 -1
- package/src/worker/safety/performance.js +0 -17
- package/src/worker/safety/process.d.ts +0 -2
- package/src/worker/safety/process.js +0 -79
- package/src/worker/safety/startup.d.ts +0 -16
- package/src/worker/safety/startup.js +0 -30
- package/src/worker/safety/worker-data.d.ts +0 -2
- package/src/worker/safety/worker-data.js +0 -36
- package/src/worker/task-loader.d.ts +0 -27
- package/src/worker/task-loader.js +0 -78
- package/src/worker/timers.d.ts +0 -18
- package/src/worker/timers.js +0 -116
package/map.md
CHANGED
|
@@ -18,7 +18,7 @@ The core flow is:
|
|
|
18
18
|
|
|
19
19
|
- `knitting.ts`: Main package entry. Re-exports `createPool`, `task`,
|
|
20
20
|
`importTask`, `isMain`, `Envelope`, and `workerMainLoop`.
|
|
21
|
-
- `
|
|
21
|
+
- `shared-memory.ts`: Secondary public export for process-safe shared-memory
|
|
22
22
|
helpers.
|
|
23
23
|
- `unsafe.ts`: Public export for experimental lower-level capabilities such as
|
|
24
24
|
`BufferReference`.
|
|
@@ -34,11 +34,11 @@ The core flow is:
|
|
|
34
34
|
|
|
35
35
|
## Build And Scripts
|
|
36
36
|
|
|
37
|
-
- `build.ts`: Bundles
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- `scripts/
|
|
41
|
-
|
|
37
|
+
- `build.ts`: Bundles each public entry to one root `.js` file with Bun for a
|
|
38
|
+
Node ESM target.
|
|
39
|
+
- `tsconfig.npm.json`: TypeScript config used by npm declaration bundling.
|
|
40
|
+
- `scripts/build-declarations.mjs`: Bundles each public entry to one root
|
|
41
|
+
`.d.ts` file for npm consumers.
|
|
42
42
|
- `scripts/build-native-addons.ts`: Compiles the native Node addons into
|
|
43
43
|
`build/Release/` on Linux, macOS, and Windows. It finds Node headers/libs,
|
|
44
44
|
splits user flags, builds the shared-memory and futex addons, and emits the
|
|
@@ -309,12 +309,9 @@ The core flow is:
|
|
|
309
309
|
|
|
310
310
|
- `build/Release/*.node`: Native addon output produced by
|
|
311
311
|
`scripts/build-native-addons.ts`.
|
|
312
|
-
- `
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
`process-shared-buffer.d.ts`, and `src/**/*.js` / `src/**/*.d.ts`: npm
|
|
316
|
-
release build artifacts produced by `tsconfig.npm.json`.
|
|
312
|
+
- `knitting.js`, `knitting.d.ts`, `shared-memory.js`, `shared-memory.d.ts`,
|
|
313
|
+
`unsafe.js`, `unsafe.d.ts`, `utils.js`, and `utils.d.ts`: npm release build
|
|
314
|
+
artifacts produced by `build.ts` and `scripts/build-declarations.mjs`.
|
|
317
315
|
- `results/`: Benchmark output produced by `run.sh`.
|
|
318
316
|
- `log/`, `logs`, and `*.log`: Local runtime/log output.
|
|
319
317
|
- `node_modules/`: Installed dependencies. Not part of the source map.
|
|
320
|
-
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "knitting",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.55",
|
|
4
4
|
"description": "Shared-memory IPC runtime for Node.js, Deno, and Bun.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"types": "./knitting.d.ts",
|
|
21
21
|
"default": "./knitting.js"
|
|
22
22
|
},
|
|
23
|
-
"./
|
|
24
|
-
"types": "./
|
|
25
|
-
"default": "./
|
|
23
|
+
"./shared-memory": {
|
|
24
|
+
"types": "./shared-memory.d.ts",
|
|
25
|
+
"default": "./shared-memory.js"
|
|
26
26
|
},
|
|
27
27
|
"./unsafe": {
|
|
28
28
|
"types": "./unsafe.d.ts",
|
|
@@ -41,24 +41,24 @@
|
|
|
41
41
|
"prebuilds/**/*.dll",
|
|
42
42
|
"scripts/build-native-addons.ts",
|
|
43
43
|
"src/**/*.cc",
|
|
44
|
-
"src/**/*.d.ts",
|
|
45
|
-
"src/**/*.js",
|
|
46
44
|
"knitting.d.ts",
|
|
47
45
|
"knitting.js",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
46
|
+
"shared-memory.d.ts",
|
|
47
|
+
"shared-memory.js",
|
|
50
48
|
"unsafe.d.ts",
|
|
51
49
|
"unsafe.js",
|
|
52
50
|
"utils.d.ts",
|
|
53
51
|
"utils.js"
|
|
54
52
|
],
|
|
55
53
|
"scripts": {
|
|
56
|
-
"build": "bun run build.ts",
|
|
57
|
-
"build:
|
|
54
|
+
"build": "bun run build.ts && node scripts/build-declarations.mjs",
|
|
55
|
+
"build:js": "bun run build.ts",
|
|
56
|
+
"build:types": "node scripts/build-declarations.mjs",
|
|
57
|
+
"build:npm": "npm run build",
|
|
58
58
|
"build:native": "bun run scripts/build-native-addons.ts",
|
|
59
|
-
"build:release": "bun run build:native &&
|
|
60
|
-
"build:node": "
|
|
61
|
-
"prepack": "npm run build
|
|
59
|
+
"build:release": "bun run build:native && npm run build",
|
|
60
|
+
"build:node": "npm run build:js",
|
|
61
|
+
"prepack": "npm run build",
|
|
62
62
|
"release:npm": "npm run test:all && npm publish",
|
|
63
63
|
"release:npm:dry-run": "npm publish --dry-run",
|
|
64
64
|
"test": "npm run test:deno",
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
"@types/bun": "latest",
|
|
85
85
|
"@types/deno": "latest",
|
|
86
86
|
"@types/node": "latest",
|
|
87
|
+
"dts-bundle-generator": "^9.5.1",
|
|
87
88
|
"mitata": "^1.0.34",
|
|
88
89
|
"typescript": "^5.2.0"
|
|
89
90
|
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
type SharedBuffer = SharedArrayBuffer | ArrayBuffer;
|
|
2
|
+
type SharedBufferRegion = {
|
|
3
|
+
sab: SharedBuffer;
|
|
4
|
+
byteOffset: number;
|
|
5
|
+
byteLength: number;
|
|
6
|
+
};
|
|
7
|
+
type ConnectionRuntime = "node" | "deno" | "bun";
|
|
8
|
+
type SharedMemoryBuffer = ArrayBuffer | SharedArrayBuffer;
|
|
9
|
+
type SharedMemoryBufferKind = "shared-array-buffer" | "external-array-buffer";
|
|
10
|
+
type SharedMemoryCreateMode = "anonymous" | "create" | "open";
|
|
11
|
+
type SharedMemoryMapping<Buffer extends SharedMemoryBuffer = SharedMemoryBuffer> = {
|
|
12
|
+
runtime: ConnectionRuntime;
|
|
13
|
+
fd: number;
|
|
14
|
+
name?: string;
|
|
15
|
+
size: number;
|
|
16
|
+
byteLength: number;
|
|
17
|
+
buffer: Buffer;
|
|
18
|
+
kind: SharedMemoryBufferKind;
|
|
19
|
+
sab?: SharedArrayBuffer;
|
|
20
|
+
arrayBuffer?: ArrayBuffer;
|
|
21
|
+
baseAddressMod64?: number;
|
|
22
|
+
unsafePointer?: unknown;
|
|
23
|
+
close?: () => void;
|
|
24
|
+
};
|
|
25
|
+
type CreateSharedMemoryOptions = {
|
|
26
|
+
size: number;
|
|
27
|
+
/**
|
|
28
|
+
* `anonymous` keeps the current fd-backed private mapping behavior.
|
|
29
|
+
* `create` and `open` use a named shared-memory object so independent
|
|
30
|
+
* processes can rendezvous by name.
|
|
31
|
+
*/
|
|
32
|
+
mode?: SharedMemoryCreateMode;
|
|
33
|
+
name?: string;
|
|
34
|
+
};
|
|
35
|
+
type MapSharedMemoryOptions = {
|
|
36
|
+
fd: number;
|
|
37
|
+
name?: string;
|
|
38
|
+
size: number;
|
|
39
|
+
duplicateFd?: boolean;
|
|
40
|
+
};
|
|
41
|
+
type SharedMemoryConnectionPrimitives<Mapping extends SharedMemoryMapping = SharedMemoryMapping> = {
|
|
42
|
+
runtime: ConnectionRuntime;
|
|
43
|
+
createSharedMemory: (options: number | CreateSharedMemoryOptions) => Mapping;
|
|
44
|
+
mapSharedMemory: (options: MapSharedMemoryOptions) => Mapping;
|
|
45
|
+
unlinkSharedMemory?: (name: string) => boolean;
|
|
46
|
+
};
|
|
47
|
+
type FileDescriptorMetadata = {
|
|
48
|
+
version: 1;
|
|
49
|
+
fd: number;
|
|
50
|
+
name?: string;
|
|
51
|
+
size: number;
|
|
52
|
+
byteLength: number;
|
|
53
|
+
runtime?: ConnectionRuntime;
|
|
54
|
+
kind?: SharedMemoryMapping["kind"];
|
|
55
|
+
baseAddressMod64?: number;
|
|
56
|
+
};
|
|
57
|
+
type FileDescriptorMapper = Pick<SharedMemoryConnectionPrimitives, "mapSharedMemory">;
|
|
58
|
+
declare class FileDescriptor {
|
|
59
|
+
#private;
|
|
60
|
+
readonly fd: number;
|
|
61
|
+
readonly name?: string;
|
|
62
|
+
readonly size: number;
|
|
63
|
+
readonly byteLength: number;
|
|
64
|
+
readonly runtime?: ConnectionRuntime;
|
|
65
|
+
readonly kind?: SharedMemoryMapping["kind"];
|
|
66
|
+
readonly baseAddressMod64?: number;
|
|
67
|
+
constructor(metadata: FileDescriptorMetadata, mapping?: SharedMemoryMapping);
|
|
68
|
+
static fromMapping(mapping: SharedMemoryMapping): FileDescriptor;
|
|
69
|
+
static fromMetadata(metadata: unknown): FileDescriptor;
|
|
70
|
+
static parse(serialized: string): FileDescriptor;
|
|
71
|
+
toMetadata(): FileDescriptorMetadata;
|
|
72
|
+
toJSON(): FileDescriptorMetadata;
|
|
73
|
+
stringify(): string;
|
|
74
|
+
stringifyMetadata(): string;
|
|
75
|
+
toString(): string;
|
|
76
|
+
attach(mapping: SharedMemoryMapping): this;
|
|
77
|
+
get mapping(): SharedMemoryMapping | undefined;
|
|
78
|
+
map(mapper: FileDescriptorMapper): SharedMemoryMapping;
|
|
79
|
+
getBuffer(mapper?: FileDescriptorMapper): SharedMemoryBuffer;
|
|
80
|
+
getSharedArrayBuffer(mapper?: FileDescriptorMapper): SharedArrayBuffer;
|
|
81
|
+
getSAB(mapper?: FileDescriptorMapper): SharedArrayBuffer;
|
|
82
|
+
}
|
|
83
|
+
export type ProcessSharedBufferMetadata = {
|
|
84
|
+
version: 1;
|
|
85
|
+
descriptor: FileDescriptorMetadata;
|
|
86
|
+
byteOffset: number;
|
|
87
|
+
byteLength: number;
|
|
88
|
+
};
|
|
89
|
+
export declare const PROCESS_SHARED_BUFFER_BRAND: unique symbol;
|
|
90
|
+
declare const PROCESS_SHARED_BUFFER_NUMERIC_TRANSFER: unique symbol;
|
|
91
|
+
declare const EXTERNAL_PAYLOAD_BRAND: unique symbol;
|
|
92
|
+
type ProcessSharedBufferNumericMetadata = readonly [
|
|
93
|
+
fd: number,
|
|
94
|
+
size: number,
|
|
95
|
+
descriptorByteLength: number,
|
|
96
|
+
byteOffset: number,
|
|
97
|
+
byteLength: number,
|
|
98
|
+
runtime: number,
|
|
99
|
+
kind: number,
|
|
100
|
+
baseAddressMod64: number
|
|
101
|
+
];
|
|
102
|
+
export type ProcessSharedBufferRange = {
|
|
103
|
+
byteOffset?: number;
|
|
104
|
+
byteLength?: number;
|
|
105
|
+
};
|
|
106
|
+
export type ProcessSharedBufferCreator = Pick<SharedMemoryConnectionPrimitives, "createSharedMemory">;
|
|
107
|
+
export type ProcessSharedBufferMapper = Pick<SharedMemoryConnectionPrimitives, "mapSharedMemory">;
|
|
108
|
+
export type ProcessSharedBufferPrimitives = Pick<SharedMemoryConnectionPrimitives, "createSharedMemory" | "mapSharedMemory"> & {
|
|
109
|
+
unlinkSharedMemory?: (name: string) => boolean;
|
|
110
|
+
};
|
|
111
|
+
export type ProcessSharedBufferView = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | BigInt64Array | BigUint64Array | Float32Array | Float64Array;
|
|
112
|
+
export type ProcessSharedBufferViewConstructor<View extends ProcessSharedBufferView = ProcessSharedBufferView> = {
|
|
113
|
+
readonly BYTES_PER_ELEMENT: number;
|
|
114
|
+
new (buffer: SharedBuffer, byteOffset: number, length: number): View;
|
|
115
|
+
};
|
|
116
|
+
export declare const setDefaultProcessSharedBufferPrimitives: (primitives: ProcessSharedBufferPrimitives | undefined) => void;
|
|
117
|
+
export declare const getDefaultProcessSharedBufferPrimitives: () => ProcessSharedBufferPrimitives;
|
|
118
|
+
/**
|
|
119
|
+
* Zero-copy shared bytes for process workers.
|
|
120
|
+
*
|
|
121
|
+
* Use this when the boundary is a separate process, container, or sandbox.
|
|
122
|
+
* For thread workers, `SharedArrayBuffer` or `BufferReference` can be cheaper.
|
|
123
|
+
*/
|
|
124
|
+
export declare class ProcessSharedBuffer {
|
|
125
|
+
readonly [PROCESS_SHARED_BUFFER_BRAND] = true;
|
|
126
|
+
readonly [EXTERNAL_PAYLOAD_BRAND] = "knitting.processSharedBuffer";
|
|
127
|
+
readonly descriptor: FileDescriptor;
|
|
128
|
+
readonly byteOffset: number;
|
|
129
|
+
readonly byteLength: number;
|
|
130
|
+
constructor(descriptor: FileDescriptor, range?: ProcessSharedBufferRange);
|
|
131
|
+
static create(options: number | CreateSharedMemoryOptions, creator?: ProcessSharedBufferCreator): ProcessSharedBuffer;
|
|
132
|
+
static fromMapping(mapping: SharedMemoryMapping): ProcessSharedBuffer;
|
|
133
|
+
static fromDescriptor(descriptor: FileDescriptor, range?: ProcessSharedBufferRange): ProcessSharedBuffer;
|
|
134
|
+
static fromMetadata(metadata: unknown): ProcessSharedBuffer;
|
|
135
|
+
static parse(serialized: string): ProcessSharedBuffer;
|
|
136
|
+
static [PROCESS_SHARED_BUFFER_NUMERIC_TRANSFER](metadata: ProcessSharedBufferNumericMetadata): ProcessSharedBuffer;
|
|
137
|
+
get fd(): number;
|
|
138
|
+
get size(): number;
|
|
139
|
+
subbuffer(byteOffset: number, byteLength?: number): ProcessSharedBuffer;
|
|
140
|
+
getSharedArrayBuffer(mapper?: ProcessSharedBufferMapper): SharedArrayBuffer;
|
|
141
|
+
getSAB(mapper?: ProcessSharedBufferMapper): SharedArrayBuffer;
|
|
142
|
+
getBuffer(mapper?: ProcessSharedBufferMapper): SharedBuffer;
|
|
143
|
+
getRegion(mapper?: ProcessSharedBufferMapper): SharedBufferRegion;
|
|
144
|
+
view<View extends ProcessSharedBufferView>(constructor: ProcessSharedBufferViewConstructor<View>, mapper?: ProcessSharedBufferMapper): View;
|
|
145
|
+
bytes(mapper?: ProcessSharedBufferMapper): Uint8Array;
|
|
146
|
+
dataView(mapper?: ProcessSharedBufferMapper): DataView;
|
|
147
|
+
toMetadata(): ProcessSharedBufferMetadata;
|
|
148
|
+
toJSON(): ProcessSharedBufferMetadata;
|
|
149
|
+
stringify(): string;
|
|
150
|
+
stringifyMetadata(): string;
|
|
151
|
+
toString(): string;
|
|
152
|
+
}
|
|
153
|
+
export declare const parseProcessSharedBufferMetadata: (input: unknown) => ProcessSharedBufferMetadata;
|
|
154
|
+
|
|
155
|
+
export {};
|