@ai-ecoverse/slicc-kernel 1.119.2 → 1.120.1
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 +13 -4
- package/dist/index.js.map +1 -1
- package/dist/kernel-worker.js +52 -12
- package/dist/kernel-worker.js.map +3 -3
- package/dist/meta.js.map +2 -2
- package/dist/node-process-worker.js +72 -36
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +52 -12
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +69 -33
- package/dist/process-worker.js.map +3 -3
- package/dist/types/fs/opfs.d.ts +6 -0
- package/dist/types/fs/ranged.d.ts +1 -0
- package/dist/types/fs/types.d.ts +5 -0
- package/dist/types/kernel/fd-table.d.ts +1 -0
- package/dist/types/kernel/host-ops.d.ts +1 -0
- package/dist/types/kernel/lock-service.d.ts +8 -1
- package/dist/types/kernel/process.d.ts +1 -0
- package/dist/types/kernel/vfs-file.d.ts +1 -0
- package/dist/types/launcher.d.ts +1 -0
- package/dist/types/process/wasi/slicc-lock.d.ts +3 -2
- package/dist/types/process/wasi/wasi-fds.d.ts +1 -0
- package/dist/types/process/wasi/wasi-files.d.ts +1 -0
- package/dist/types/process/wasi/wasi-host.d.ts +1 -0
- package/package.json +1 -1
package/dist/types/fs/opfs.d.ts
CHANGED
|
@@ -64,6 +64,12 @@ export declare class OpfsFs implements KernelFs {
|
|
|
64
64
|
private unlocked;
|
|
65
65
|
private idle;
|
|
66
66
|
private alone;
|
|
67
|
+
private settle;
|
|
68
|
+
onPeer(settle: () => Promise<void>): void;
|
|
69
|
+
peers(): {
|
|
70
|
+
joined(): Promise<unknown>;
|
|
71
|
+
crowded(): boolean;
|
|
72
|
+
} | undefined;
|
|
67
73
|
private quiet;
|
|
68
74
|
private locked;
|
|
69
75
|
chown(path: string, change: OwnerChange): Promise<void>;
|
|
@@ -42,6 +42,7 @@ export declare class RangedFile {
|
|
|
42
42
|
path: string;
|
|
43
43
|
constructor(io: RangedIo, path: string, size: number, version?: string, watch?: RangedWatch);
|
|
44
44
|
private fresh;
|
|
45
|
+
reread(): void;
|
|
45
46
|
get changed(): boolean;
|
|
46
47
|
get pinnedVersion(): string | undefined;
|
|
47
48
|
forget(): void;
|
package/dist/types/fs/types.d.ts
CHANGED
|
@@ -79,6 +79,11 @@ export interface KernelFs {
|
|
|
79
79
|
readonly rootName?: string;
|
|
80
80
|
chown?(path: string, change: OwnerChange): Promise<void>;
|
|
81
81
|
trackOwners?(): void;
|
|
82
|
+
onPeer?(settle: () => Promise<void>): void;
|
|
83
|
+
peers?(): {
|
|
84
|
+
joined(): Promise<unknown>;
|
|
85
|
+
crowded(): boolean;
|
|
86
|
+
} | undefined;
|
|
82
87
|
crossings?(mounted: (path: string) => boolean): void;
|
|
83
88
|
ancestry?(path: string): Promise<Array<Perm | undefined>>;
|
|
84
89
|
hasOwner?(path: string): Promise<boolean>;
|
|
@@ -24,6 +24,7 @@ export interface KernelFile {
|
|
|
24
24
|
changed?(signal?: AbortSignal): Promise<void>;
|
|
25
25
|
seek?(offset: number, whence: number): Promise<number>;
|
|
26
26
|
flush?(): Promise<void>;
|
|
27
|
+
reread?(): Promise<void>;
|
|
27
28
|
pread?(max: number, at: number): Promise<Uint8Array>;
|
|
28
29
|
pwrite?(bytes: Uint8Array, at: number): Promise<number>;
|
|
29
30
|
resize?(size: number): Promise<void>;
|
|
@@ -20,6 +20,7 @@ export interface KernelLocks {
|
|
|
20
20
|
set(key: string, owner: number, kind: LockKind | 'unlock', start: number, end: number): boolean | Promise<boolean>;
|
|
21
21
|
wait(key: string, owner: number, kind: LockKind, range: Range, blocking: () => AbortSignal): Promise<void>;
|
|
22
22
|
holds(owner: number): boolean;
|
|
23
|
+
shared?(): boolean;
|
|
23
24
|
dropFile(key: string, owner: number): void;
|
|
24
25
|
release(pid: number): void;
|
|
25
26
|
lock(pid: number, path: string, exclusive: boolean, fd: number): boolean;
|
|
@@ -34,6 +35,10 @@ export interface LockServiceOptions {
|
|
|
34
35
|
}, cb: (lock: unknown) => Promise<void>): Promise<unknown>;
|
|
35
36
|
};
|
|
36
37
|
channel?: (name: string) => BroadcastChannel;
|
|
38
|
+
peers?: {
|
|
39
|
+
joined(): Promise<unknown>;
|
|
40
|
+
crowded(): boolean;
|
|
41
|
+
};
|
|
37
42
|
}
|
|
38
43
|
export declare class LockService implements KernelLocks {
|
|
39
44
|
readonly kernel: `${string}-${string}-${string}-${string}-${string}`;
|
|
@@ -58,6 +63,8 @@ export declare class LockService implements KernelLocks {
|
|
|
58
63
|
private pruner;
|
|
59
64
|
readonly flocks: KernelLocks['flocks'];
|
|
60
65
|
constructor(options: LockServiceOptions);
|
|
66
|
+
private readonly peers;
|
|
67
|
+
shared(): boolean;
|
|
61
68
|
private aliveOf;
|
|
62
69
|
private elect;
|
|
63
70
|
private lead;
|
|
@@ -88,5 +95,5 @@ export declare class LockService implements KernelLocks {
|
|
|
88
95
|
unlock(pid: number, path: string): void;
|
|
89
96
|
closed(pid: number, fd: number): void;
|
|
90
97
|
}
|
|
91
|
-
export declare function kernelLocks(root: string | undefined): KernelLocks;
|
|
98
|
+
export declare function kernelLocks(root: string | undefined, peers?: LockServiceOptions['peers']): KernelLocks;
|
|
92
99
|
export {};
|
package/dist/types/launcher.d.ts
CHANGED
|
@@ -14,9 +14,9 @@ export interface LockedFile {
|
|
|
14
14
|
}
|
|
15
15
|
export type FlockKind = 'shared' | 'exclusive' | 'unlock';
|
|
16
16
|
export interface LockCalls {
|
|
17
|
-
set(target: LockTarget, kind: LockKind | 'unlock', start: number, len: number, wait: boolean):
|
|
17
|
+
set(target: LockTarget, kind: LockKind | 'unlock', start: number, len: number, wait: boolean): unknown;
|
|
18
18
|
get(target: LockTarget, kind: LockKind, start: number, len: number): LockHeld | null;
|
|
19
|
-
flock(fd: number, kind: FlockKind, wait: boolean):
|
|
19
|
+
flock(fd: number, kind: FlockKind, wait: boolean): unknown;
|
|
20
20
|
}
|
|
21
21
|
export interface LockHost {
|
|
22
22
|
mem: WasiMemory;
|
|
@@ -24,6 +24,7 @@ export interface LockHost {
|
|
|
24
24
|
flush(file: LockedFile): void;
|
|
25
25
|
locked(): void;
|
|
26
26
|
promote(fd: number, moved?: boolean): void;
|
|
27
|
+
reread(fd: number): void;
|
|
27
28
|
calls: LockCalls;
|
|
28
29
|
}
|
|
29
30
|
export declare function lockImports(host: LockHost): Record<string, WasiFunction>;
|
|
@@ -104,6 +104,7 @@ export declare class WasiFds {
|
|
|
104
104
|
}>): boolean;
|
|
105
105
|
flushAll(): void;
|
|
106
106
|
flushEarly(): void;
|
|
107
|
+
reread(fd: number): void;
|
|
107
108
|
flushPath(path: string): void;
|
|
108
109
|
holdsUnder(path: string): boolean;
|
|
109
110
|
unlinking(path: string, linked?: SyncFsBridgeStat): void;
|
|
@@ -65,6 +65,7 @@ export declare class WasiHost {
|
|
|
65
65
|
private created;
|
|
66
66
|
sliccTtyImports(): Record<string, WasiFunction>;
|
|
67
67
|
sliccFsImports(): Record<string, WasiFunction>;
|
|
68
|
+
private lockHost;
|
|
68
69
|
sliccImports(): Record<string, WasiFunction>;
|
|
69
70
|
private poll;
|
|
70
71
|
private maskedPoll;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-kernel",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.120.1",
|
|
4
4
|
"description": "SLICC's wasm-realm kernel: run Emscripten programs in the browser against OPFS, with fork, spawn, pipes and waitpid",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|