@ai-ecoverse/slicc-kernel 1.120.0 → 1.120.2
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 +8 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel-worker.js +79 -13
- package/dist/kernel-worker.js.map +3 -3
- package/dist/meta.js.map +2 -2
- package/dist/node-process-worker.js +64 -37
- package/dist/node-process-worker.js.map +2 -2
- package/dist/node.js +79 -13
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +64 -37
- package/dist/process-worker.js.map +2 -2
- package/dist/types/fs/changes.d.ts +2 -0
- package/dist/types/fs/opfs.d.ts +4 -1
- package/dist/types/fs/ranged.d.ts +1 -0
- package/dist/types/fs/remote.d.ts +3 -0
- package/dist/types/fs/types.d.ts +7 -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
|
@@ -5,6 +5,7 @@ export declare class FileChanges {
|
|
|
5
5
|
private readonly view;
|
|
6
6
|
constructor(sab?: SharedArrayBuffer);
|
|
7
7
|
dirtied(delta: number): void;
|
|
8
|
+
foreign(on: boolean): void;
|
|
8
9
|
publish(...paths: string[]): void;
|
|
9
10
|
}
|
|
10
11
|
export declare class ChangeView {
|
|
@@ -12,6 +13,7 @@ export declare class ChangeView {
|
|
|
12
13
|
constructor(sab: SharedArrayBuffer);
|
|
13
14
|
now(): number;
|
|
14
15
|
clean(): boolean;
|
|
16
|
+
foreign(): boolean;
|
|
15
17
|
changedSince(seen: number, path: string): {
|
|
16
18
|
now: number;
|
|
17
19
|
changed: boolean;
|
package/dist/types/fs/opfs.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type MetaStore } from './meta.js';
|
|
2
2
|
import { type LockManagerLike, type RemoteListener } from './remote.js';
|
|
3
|
-
import { type FsStat, type KernelFs, type NewOwner, type OwnerChange, type Perm } from './types.js';
|
|
3
|
+
import { type FsStat, type KernelFs, type NewOwner, type OwnerChange, type Peers, type Perm } from './types.js';
|
|
4
4
|
export type OpfsOp = 'lookup' | 'read' | 'write' | 'commit' | 'sidecar';
|
|
5
5
|
export declare function translate(err: unknown, path: string, op?: OpfsOp, mapped?: boolean): Error;
|
|
6
6
|
export interface WriteSession {
|
|
@@ -64,6 +64,9 @@ 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(): Peers | undefined;
|
|
67
70
|
private quiet;
|
|
68
71
|
private locked;
|
|
69
72
|
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;
|
|
@@ -31,6 +31,9 @@ export declare class RemoteWatch {
|
|
|
31
31
|
private met;
|
|
32
32
|
private settled;
|
|
33
33
|
quiet: (() => Promise<void>) | undefined;
|
|
34
|
+
crowd: ((crowded: boolean) => void) | undefined;
|
|
35
|
+
private told;
|
|
36
|
+
private recount;
|
|
34
37
|
constructor(name: string, options?: {
|
|
35
38
|
locks?: LockManagerLike | null;
|
|
36
39
|
});
|
package/dist/types/fs/types.d.ts
CHANGED
|
@@ -49,6 +49,11 @@ export interface HeldEntry {
|
|
|
49
49
|
writeFile: KernelFs['writeFile'];
|
|
50
50
|
direct: boolean;
|
|
51
51
|
}
|
|
52
|
+
export interface Peers {
|
|
53
|
+
joined(): Promise<unknown>;
|
|
54
|
+
crowded(): boolean;
|
|
55
|
+
watch(listener: (crowded: boolean) => void): void;
|
|
56
|
+
}
|
|
52
57
|
export interface KernelFs {
|
|
53
58
|
resolvePath(base: string, path: string): string;
|
|
54
59
|
exclusive?<T>(path: string, run: (held: HeldEntry) => Promise<T>, follow?: boolean): Promise<T>;
|
|
@@ -79,6 +84,8 @@ export interface KernelFs {
|
|
|
79
84
|
readonly rootName?: string;
|
|
80
85
|
chown?(path: string, change: OwnerChange): Promise<void>;
|
|
81
86
|
trackOwners?(): void;
|
|
87
|
+
onPeer?(settle: () => Promise<void>): void;
|
|
88
|
+
peers?(): Peers | undefined;
|
|
82
89
|
crossings?(mounted: (path: string) => boolean): void;
|
|
83
90
|
ancestry?(path: string): Promise<Array<Perm | undefined>>;
|
|
84
91
|
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.120.
|
|
3
|
+
"version": "1.120.2",
|
|
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",
|