@zylaris/compiler 1.0.0 → 1.0.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/dist/index.d.ts +26 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +153 -67
- package/dist/index.js.map +1 -1
- package/dist/jit.d.ts +61 -14
- package/dist/jit.d.ts.map +1 -1
- package/dist/jit.js +210 -94
- package/dist/jit.js.map +1 -1
- package/package.json +2 -2
- package/dist/compile-worker.d.ts +0 -2
- package/dist/compile-worker.d.ts.map +0 -1
- package/dist/compile-worker.js +0 -49
- package/dist/compile-worker.js.map +0 -1
- package/dist/lazy-compile.d.ts +0 -28
- package/dist/lazy-compile.d.ts.map +0 -1
- package/dist/lazy-compile.js +0 -171
- package/dist/lazy-compile.js.map +0 -1
- package/dist/parallel-jit.d.ts +0 -61
- package/dist/parallel-jit.d.ts.map +0 -1
- package/dist/parallel-jit.js +0 -223
- package/dist/parallel-jit.js.map +0 -1
package/dist/lazy-compile.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-compile.js","sourceRoot":"","sources":["../src/lazy-compile.ts"],"names":[],"mappings":"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"}
|
package/dist/parallel-jit.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
interface CompileTask {
|
|
2
|
-
id: string;
|
|
3
|
-
source: string;
|
|
4
|
-
filename: string;
|
|
5
|
-
options: any;
|
|
6
|
-
}
|
|
7
|
-
interface CompileResult {
|
|
8
|
-
id: string;
|
|
9
|
-
code: string;
|
|
10
|
-
map: string;
|
|
11
|
-
error?: string;
|
|
12
|
-
compileTime: number;
|
|
13
|
-
}
|
|
14
|
-
declare class WorkerPool {
|
|
15
|
-
private workers;
|
|
16
|
-
private queue;
|
|
17
|
-
private maxWorkers;
|
|
18
|
-
constructor(maxWorkers?: number);
|
|
19
|
-
private getWorker;
|
|
20
|
-
private isWorkerBusy;
|
|
21
|
-
execute(task: CompileTask): Promise<CompileResult>;
|
|
22
|
-
private processQueue;
|
|
23
|
-
terminate(): Promise<number[]>;
|
|
24
|
-
}
|
|
25
|
-
declare class PersistentCache {
|
|
26
|
-
private cacheDir;
|
|
27
|
-
constructor(cacheDir?: string);
|
|
28
|
-
private ensureCacheDir;
|
|
29
|
-
private getCachePath;
|
|
30
|
-
get(key: string): Promise<{
|
|
31
|
-
code: string;
|
|
32
|
-
map: string;
|
|
33
|
-
} | null>;
|
|
34
|
-
set(key: string, code: string, map: string): Promise<void>;
|
|
35
|
-
clear(): Promise<void>;
|
|
36
|
-
}
|
|
37
|
-
export declare class ParallelJITCompiler {
|
|
38
|
-
private workerPool;
|
|
39
|
-
private persistentCache;
|
|
40
|
-
private memoryCache;
|
|
41
|
-
private cacheTimeout;
|
|
42
|
-
constructor();
|
|
43
|
-
compile(source: string, filename: string, options?: any): Promise<{
|
|
44
|
-
code: string;
|
|
45
|
-
map: string;
|
|
46
|
-
fromCache: boolean;
|
|
47
|
-
compileTime: number;
|
|
48
|
-
}>;
|
|
49
|
-
private generateCacheKey;
|
|
50
|
-
invalidate(filename: string): Promise<void>;
|
|
51
|
-
clearMemoryCache(): void;
|
|
52
|
-
clearAllCache(): Promise<void>;
|
|
53
|
-
getStats(): {
|
|
54
|
-
memoryCacheSize: number;
|
|
55
|
-
maxWorkers: number;
|
|
56
|
-
};
|
|
57
|
-
terminate(): Promise<void>;
|
|
58
|
-
}
|
|
59
|
-
export declare function getParallelCompiler(): ParallelJITCompiler;
|
|
60
|
-
export { WorkerPool, PersistentCache };
|
|
61
|
-
//# sourceMappingURL=parallel-jit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-jit.d.ts","sourceRoot":"","sources":["../src/parallel-jit.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;CACd;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,cAAM,UAAU;IACd,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAqG;IAClH,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,SAAiC;YAIzC,SAAS;IAuBvB,OAAO,CAAC,YAAY;IAKd,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAyBxD,OAAO,CAAC,YAAY;IASpB,SAAS;CAGV;AAGD,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,SAAmB;YAKzB,cAAc;IAI5B,OAAO,CAAC,YAAY;IAId,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAmB/D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAGD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAuE;IAC1F,OAAO,CAAC,YAAY,CAAiB;;IAO/B,OAAO,CACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,GAAQ,GAChB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IA8DlF,OAAO,CAAC,gBAAgB;IAKlB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,gBAAgB,IAAI,IAAI;IAIlB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC,QAAQ;;;;IAOF,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjC;AAKD,wBAAgB,mBAAmB,IAAI,mBAAmB,CAKzD;AAGD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/parallel-jit.js
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
// Parallel JIT Compiler with Worker Threads
|
|
2
|
-
// For maximum performance during development
|
|
3
|
-
import { Worker } from 'worker_threads';
|
|
4
|
-
import { cpus } from 'os';
|
|
5
|
-
import { createHash } from 'crypto';
|
|
6
|
-
import fs from 'fs/promises';
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import { fileURLToPath } from 'url';
|
|
9
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
-
const __dirname = path.dirname(__filename);
|
|
11
|
-
// Worker pool management
|
|
12
|
-
class WorkerPool {
|
|
13
|
-
workers = [];
|
|
14
|
-
queue = [];
|
|
15
|
-
maxWorkers;
|
|
16
|
-
constructor(maxWorkers = Math.max(1, cpus().length - 1)) {
|
|
17
|
-
this.maxWorkers = maxWorkers;
|
|
18
|
-
}
|
|
19
|
-
async getWorker() {
|
|
20
|
-
// Return existing idle worker or create new one
|
|
21
|
-
const idleWorker = this.workers.find(w => !this.isWorkerBusy(w));
|
|
22
|
-
if (idleWorker)
|
|
23
|
-
return idleWorker;
|
|
24
|
-
if (this.workers.length < this.maxWorkers) {
|
|
25
|
-
const worker = new Worker(path.join(__dirname, 'compile-worker.js'));
|
|
26
|
-
this.workers.push(worker);
|
|
27
|
-
return worker;
|
|
28
|
-
}
|
|
29
|
-
// Wait for a worker to become available
|
|
30
|
-
return new Promise((resolve) => {
|
|
31
|
-
const checkInterval = setInterval(() => {
|
|
32
|
-
const idle = this.workers.find(w => !this.isWorkerBusy(w));
|
|
33
|
-
if (idle) {
|
|
34
|
-
clearInterval(checkInterval);
|
|
35
|
-
resolve(idle);
|
|
36
|
-
}
|
|
37
|
-
}, 10);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
isWorkerBusy(worker) {
|
|
41
|
-
// Check if worker has pending message handlers
|
|
42
|
-
return worker._isBusy === true;
|
|
43
|
-
}
|
|
44
|
-
async execute(task) {
|
|
45
|
-
const worker = await this.getWorker();
|
|
46
|
-
worker._isBusy = true;
|
|
47
|
-
return new Promise((resolve, reject) => {
|
|
48
|
-
const messageHandler = (result) => {
|
|
49
|
-
if (result.id === task.id) {
|
|
50
|
-
worker.off('message', messageHandler);
|
|
51
|
-
worker._isBusy = false;
|
|
52
|
-
if (result.error) {
|
|
53
|
-
reject(new Error(result.error));
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
resolve(result);
|
|
57
|
-
}
|
|
58
|
-
this.processQueue();
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
worker.on('message', messageHandler);
|
|
62
|
-
worker.postMessage(task);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
processQueue() {
|
|
66
|
-
if (this.queue.length === 0)
|
|
67
|
-
return;
|
|
68
|
-
const next = this.queue.shift();
|
|
69
|
-
if (next) {
|
|
70
|
-
this.execute(next.task).then(next.resolve).catch(next.reject);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
terminate() {
|
|
74
|
-
return Promise.all(this.workers.map(w => w.terminate()));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Persistent disk cache
|
|
78
|
-
class PersistentCache {
|
|
79
|
-
cacheDir;
|
|
80
|
-
constructor(cacheDir = '.zylaris/cache') {
|
|
81
|
-
this.cacheDir = cacheDir;
|
|
82
|
-
this.ensureCacheDir();
|
|
83
|
-
}
|
|
84
|
-
async ensureCacheDir() {
|
|
85
|
-
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
86
|
-
}
|
|
87
|
-
getCachePath(key) {
|
|
88
|
-
return path.join(this.cacheDir, `${key}.json`);
|
|
89
|
-
}
|
|
90
|
-
async get(key) {
|
|
91
|
-
try {
|
|
92
|
-
const cachePath = this.getCachePath(key);
|
|
93
|
-
const data = await fs.readFile(cachePath, 'utf-8');
|
|
94
|
-
const parsed = JSON.parse(data);
|
|
95
|
-
// Check if cache is still valid (24 hours)
|
|
96
|
-
const age = Date.now() - parsed.timestamp;
|
|
97
|
-
if (age > 24 * 60 * 60 * 1000) {
|
|
98
|
-
await fs.unlink(cachePath);
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
return { code: parsed.code, map: parsed.map };
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async set(key, code, map) {
|
|
108
|
-
const cachePath = this.getCachePath(key);
|
|
109
|
-
const data = JSON.stringify({
|
|
110
|
-
code,
|
|
111
|
-
map,
|
|
112
|
-
timestamp: Date.now(),
|
|
113
|
-
});
|
|
114
|
-
await fs.writeFile(cachePath, data, 'utf-8');
|
|
115
|
-
}
|
|
116
|
-
async clear() {
|
|
117
|
-
const files = await fs.readdir(this.cacheDir);
|
|
118
|
-
await Promise.all(files.map(f => fs.unlink(path.join(this.cacheDir, f))));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// Main Parallel JIT Compiler
|
|
122
|
-
export class ParallelJITCompiler {
|
|
123
|
-
workerPool;
|
|
124
|
-
persistentCache;
|
|
125
|
-
memoryCache = new Map();
|
|
126
|
-
cacheTimeout = 5 * 60 * 1000; // 5 minutes for memory cache
|
|
127
|
-
constructor() {
|
|
128
|
-
this.workerPool = new WorkerPool();
|
|
129
|
-
this.persistentCache = new PersistentCache();
|
|
130
|
-
}
|
|
131
|
-
async compile(source, filename, options = {}) {
|
|
132
|
-
const cacheKey = this.generateCacheKey(source, filename, options);
|
|
133
|
-
const startTime = performance.now();
|
|
134
|
-
// 1. Check memory cache first (fastest)
|
|
135
|
-
const memoryCached = this.memoryCache.get(cacheKey);
|
|
136
|
-
if (memoryCached && Date.now() - memoryCached.timestamp < this.cacheTimeout) {
|
|
137
|
-
return {
|
|
138
|
-
code: memoryCached.code,
|
|
139
|
-
map: memoryCached.map,
|
|
140
|
-
fromCache: true,
|
|
141
|
-
compileTime: performance.now() - startTime,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
// 2. Check persistent cache
|
|
145
|
-
const diskCached = await this.persistentCache.get(cacheKey);
|
|
146
|
-
if (diskCached) {
|
|
147
|
-
// Promote to memory cache
|
|
148
|
-
this.memoryCache.set(cacheKey, {
|
|
149
|
-
...diskCached,
|
|
150
|
-
timestamp: Date.now(),
|
|
151
|
-
});
|
|
152
|
-
return {
|
|
153
|
-
code: diskCached.code,
|
|
154
|
-
map: diskCached.map,
|
|
155
|
-
fromCache: true,
|
|
156
|
-
compileTime: performance.now() - startTime,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
// 3. Compile in parallel using worker
|
|
160
|
-
const result = await this.workerPool.execute({
|
|
161
|
-
id: cacheKey,
|
|
162
|
-
source,
|
|
163
|
-
filename,
|
|
164
|
-
options,
|
|
165
|
-
});
|
|
166
|
-
const compileTime = performance.now() - startTime;
|
|
167
|
-
// 4. Cache results
|
|
168
|
-
this.memoryCache.set(cacheKey, {
|
|
169
|
-
code: result.code,
|
|
170
|
-
map: result.map,
|
|
171
|
-
timestamp: Date.now(),
|
|
172
|
-
});
|
|
173
|
-
// Save to disk cache in background
|
|
174
|
-
this.persistentCache.set(cacheKey, result.code, result.map).catch(() => {
|
|
175
|
-
// Ignore disk cache errors
|
|
176
|
-
});
|
|
177
|
-
return {
|
|
178
|
-
code: result.code,
|
|
179
|
-
map: result.map,
|
|
180
|
-
fromCache: false,
|
|
181
|
-
compileTime,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
generateCacheKey(source, filename, options) {
|
|
185
|
-
const content = `${source}::${filename}::${JSON.stringify(options)}`;
|
|
186
|
-
return createHash('md5').update(content).digest('hex');
|
|
187
|
-
}
|
|
188
|
-
async invalidate(filename) {
|
|
189
|
-
// Invalidate all cache entries that might depend on this file
|
|
190
|
-
for (const [key] of this.memoryCache.entries()) {
|
|
191
|
-
if (key.includes(filename)) {
|
|
192
|
-
this.memoryCache.delete(key);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
clearMemoryCache() {
|
|
197
|
-
this.memoryCache.clear();
|
|
198
|
-
}
|
|
199
|
-
async clearAllCache() {
|
|
200
|
-
this.memoryCache.clear();
|
|
201
|
-
await this.persistentCache.clear();
|
|
202
|
-
}
|
|
203
|
-
getStats() {
|
|
204
|
-
return {
|
|
205
|
-
memoryCacheSize: this.memoryCache.size,
|
|
206
|
-
maxWorkers: Math.max(1, cpus().length - 1),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
async terminate() {
|
|
210
|
-
await this.workerPool.terminate();
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// Singleton instance
|
|
214
|
-
let compilerInstance = null;
|
|
215
|
-
export function getParallelCompiler() {
|
|
216
|
-
if (!compilerInstance) {
|
|
217
|
-
compilerInstance = new ParallelJITCompiler();
|
|
218
|
-
}
|
|
219
|
-
return compilerInstance;
|
|
220
|
-
}
|
|
221
|
-
// Export for direct use
|
|
222
|
-
export { WorkerPool, PersistentCache };
|
|
223
|
-
//# sourceMappingURL=parallel-jit.js.map
|
package/dist/parallel-jit.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-jit.js","sourceRoot":"","sources":["../src/parallel-jit.ts"],"names":[],"mappings":"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"}
|