knitting 0.1.46 → 0.1.51

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 (62) hide show
  1. package/README.md +326 -95
  2. package/map.md +52 -8
  3. package/package.json +4 -3
  4. package/prebuilds/darwin-arm64-node-127/knitting_shared_memory.node +0 -0
  5. package/prebuilds/darwin-arm64-node-137/knitting_shared_memory.node +0 -0
  6. package/prebuilds/darwin-x64-node-127/knitting_shared_memory.node +0 -0
  7. package/prebuilds/darwin-x64-node-137/knitting_shared_memory.node +0 -0
  8. package/prebuilds/linux-x64-node-127/knitting_shared_memory.node +0 -0
  9. package/prebuilds/linux-x64-node-137/knitting_shared_memory.node +0 -0
  10. package/prebuilds/win32-x64/knitting_windows_shared_memory.dll +0 -0
  11. package/prebuilds/win32-x64-node-127/knitting_shared_memory.node +0 -0
  12. package/prebuilds/win32-x64-node-127/knitting_shm.node +0 -0
  13. package/prebuilds/win32-x64-node-137/knitting_shared_memory.node +0 -0
  14. package/prebuilds/win32-x64-node-137/knitting_shm.node +0 -0
  15. package/scripts/build-native-addons.ts +31 -5
  16. package/src/api.d.ts +3 -2
  17. package/src/api.js +135 -34
  18. package/src/common/task-source.d.ts +1 -0
  19. package/src/common/task-source.js +5 -0
  20. package/src/connections/bun.d.ts +2 -0
  21. package/src/connections/bun.js +64 -9
  22. package/src/connections/deno.d.ts +2 -0
  23. package/src/connections/deno.js +64 -9
  24. package/src/connections/file-descriptor.d.ts +2 -0
  25. package/src/connections/file-descriptor.js +24 -2
  26. package/src/connections/node.d.ts +2 -1
  27. package/src/connections/node.js +17 -14
  28. package/src/connections/posix.d.ts +1 -0
  29. package/src/connections/posix.js +6 -0
  30. package/src/connections/process-shared-buffer.d.ts +3 -1
  31. package/src/connections/process-shared-buffer.js +19 -13
  32. package/src/connections/types.d.ts +2 -0
  33. package/src/connections/windows.d.ts +28 -0
  34. package/src/connections/windows.js +224 -0
  35. package/src/knitting_shared_memory.cc +319 -26
  36. package/src/knitting_windows_shared_memory.cc +156 -0
  37. package/src/memory/lock.js +8 -168
  38. package/src/memory/payloadCodec.js +28 -34
  39. package/src/memory/shared-buffer-io.d.ts +2 -0
  40. package/src/memory/shared-buffer-io.js +23 -0
  41. package/src/runtime/inline-executor.d.ts +2 -2
  42. package/src/runtime/inline-executor.js +15 -3
  43. package/src/runtime/pool.d.ts +3 -14
  44. package/src/runtime/pool.js +12 -543
  45. package/src/runtime/process-worker.d.ts +92 -0
  46. package/src/runtime/process-worker.js +670 -0
  47. package/src/runtime/tx-queue.d.ts +1 -1
  48. package/src/runtime/tx-queue.js +3 -1
  49. package/src/shared/abortSignal.d.ts +1 -1
  50. package/src/shared/abortSignal.js +10 -2
  51. package/src/types.d.ts +67 -8
  52. package/src/worker/bootstrap.d.ts +5 -0
  53. package/src/worker/bootstrap.js +78 -0
  54. package/src/worker/composable-runners.js +0 -8
  55. package/src/worker/loop.js +23 -156
  56. package/src/worker/process-worker-bootstrap.d.ts +8 -0
  57. package/src/worker/process-worker-bootstrap.js +160 -0
  58. package/src/worker/safety/startup.d.ts +2 -1
  59. package/src/worker/safety/startup.js +5 -2
  60. package/src/worker/task-loader.d.ts +2 -1
  61. package/src/worker/task-loader.js +14 -2
  62. package/src/worker/timers.js +19 -5
@@ -0,0 +1,92 @@
1
+ import { type LockControlCarpet } from "../memory/byte-carpet.js";
2
+ import type { DebugOptions, LockBuffers, WorkerData, WorkerSettings } from "../types.js";
3
+ import { RUNTIME_PROCESS_WORKER_BOOT_VERSION } from "../common/worker-runtime.js";
4
+ import { type SharedBufferSource } from "../common/shared-buffer-region.js";
5
+ import { FileDescriptor, type ProcessSharedBufferMetadata } from "../connections/index.js";
6
+ import type { SharedMemoryBuffer, SharedMemoryMapping } from "../connections/types.js";
7
+ export type SpawnedWorker = {
8
+ terminate: () => unknown;
9
+ unref?: () => unknown;
10
+ postMessage?: (message: unknown) => void;
11
+ };
12
+ export type NodeWorkerLike = {
13
+ on?: (event: "error" | "exit" | "message", listener: (...args: unknown[]) => void) => void;
14
+ };
15
+ type ProcessWorkerWireLockBuffers = Omit<LockBuffers, "headers" | "lockSector" | "payload" | "payloadSector"> & {
16
+ headers: ProcessSharedBufferMetadata;
17
+ lockSector: ProcessSharedBufferMetadata;
18
+ payload: ProcessSharedBufferMetadata;
19
+ payloadSector: ProcessSharedBufferMetadata;
20
+ };
21
+ type ProcessWorkerWireData = Omit<WorkerData, "sab" | "abortSignalSAB" | "lock" | "returnLock"> & {
22
+ sab: ProcessSharedBufferMetadata;
23
+ abortSignalSAB?: ProcessSharedBufferMetadata;
24
+ lock: ProcessWorkerWireLockBuffers;
25
+ returnLock: ProcessWorkerWireLockBuffers;
26
+ };
27
+ export type ProcessWorkerBootPayload = {
28
+ version: typeof RUNTIME_PROCESS_WORKER_BOOT_VERSION;
29
+ workerData: ProcessWorkerWireData;
30
+ };
31
+ export type ProcessWorkerMemoryLayout = {
32
+ mapping: SharedMemoryMapping<SharedMemoryBuffer>;
33
+ descriptor: FileDescriptor;
34
+ controlLayout: LockControlCarpet;
35
+ lockPayload: SharedBufferSource;
36
+ returnPayload: SharedBufferSource;
37
+ cleanup: () => void;
38
+ };
39
+ export type ProcessWorkerRuntime = NonNullable<WorkerSettings["processRuntime"]>;
40
+ export type ProcessWorkerCommandPrefix = NonNullable<WorkerSettings["processCommandPrefix"]>;
41
+ export type ResolvedProcessSharedMemorySettings = {
42
+ mode: "inherit" | "named";
43
+ namePrefix?: string;
44
+ unlinkOnShutdown: boolean;
45
+ };
46
+ type ProcessSharedMemoryNativeMapping = {
47
+ sab: SharedArrayBuffer;
48
+ fd: number;
49
+ name?: string;
50
+ size: number;
51
+ baseAddressMod64?: number;
52
+ };
53
+ export type ProcessSharedMemoryBacking = ProcessSharedMemoryNativeMapping & {
54
+ runtime: "node";
55
+ buffer: SharedArrayBuffer;
56
+ kind: "shared-array-buffer";
57
+ byteLength: number;
58
+ };
59
+ type ProcessSharedMemoryAllocator = {
60
+ createBuffer: (byteLength: number) => SharedArrayBuffer;
61
+ backings: ProcessSharedMemoryBacking[];
62
+ };
63
+ export declare const toWorkerSafeExecArgv: (flags: string[] | undefined) => string[] | undefined;
64
+ export declare const toWorkerCompatExecArgv: (flags: string[] | undefined) => string[] | undefined;
65
+ export declare const createProcessSharedMemoryAllocator: (debug: DebugOptions | undefined) => ProcessSharedMemoryAllocator | undefined;
66
+ export declare const createProcessWorkerMemoryLayout: ({ signalBytes, abortBytes, payloadBytes, thread, sharedMemory, }: {
67
+ signalBytes: number;
68
+ abortBytes: number;
69
+ payloadBytes: number;
70
+ thread: number;
71
+ sharedMemory: ResolvedProcessSharedMemorySettings;
72
+ }) => ProcessWorkerMemoryLayout;
73
+ export declare const serializeWorkerBootstrapData: (options: WorkerSettings) => WorkerSettings;
74
+ export declare const toProcessWorkerBootPayload: (workerData: WorkerData, memory: ProcessWorkerMemoryLayout) => ProcessWorkerBootPayload;
75
+ export declare const readProcessWorkerRuntime: (options: WorkerSettings | undefined) => ProcessWorkerRuntime;
76
+ export declare const readProcessWorkerCommandPrefix: (options: WorkerSettings | undefined) => ProcessWorkerCommandPrefix | undefined;
77
+ export declare const readProcessSharedMemorySettings: (options: WorkerSettings | undefined) => ResolvedProcessSharedMemorySettings;
78
+ export declare const createProcessWorkerNativeSignalNotifier: ({ processRuntime, signal, }: {
79
+ processRuntime: ProcessWorkerRuntime | undefined;
80
+ signal: Int32Array;
81
+ }) => (() => void) | undefined;
82
+ export declare const spawnProcessWorker: (options: {
83
+ workerUrl: string | URL;
84
+ bootPayload: ProcessWorkerBootPayload;
85
+ memory: ProcessWorkerMemoryLayout;
86
+ processRuntime: ProcessWorkerRuntime;
87
+ commandPrefix?: ProcessWorkerCommandPrefix;
88
+ permission?: WorkerData["permission"];
89
+ }) => SpawnedWorker & NodeWorkerLike;
90
+ export declare const terminateWorkerQuietly: (worker: SpawnedWorker) => void;
91
+ export declare const cleanupProcessWorkerMemoryQuietly: (memory: ProcessWorkerMemoryLayout | undefined) => void;
92
+ export {};