Skip to content
This repository was archived by the owner on Jul 10, 2025. It is now read-only.

Commit c99a509

Browse files
ValeryAntopolnahsi
andauthored
feat: use marine-js 0.7.2 (#321)
* use marine-js 0.5.0 * increace some timeouts * increace some timeouts * use latest marine + remove larger timeouts * propagate CallParameters type * use marine 0.7.2 * Temp use node 18 and 20 * Comment out node 20.x --------- Co-authored-by: Anatoly Laskaris <github_me@nahsi.dev>
1 parent f82a37e commit c99a509

File tree

13 files changed

+57
-32
lines changed

13 files changed

+57
-32
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ jobs:
3737
strategy:
3838
matrix:
3939
node-version:
40-
- 16.x
4140
- 18.x
41+
# - 20.x
4242

4343
steps:
4444
- name: Import secrets

packages/client/api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
},
3030
"devDependencies": {
3131
"@fluencelabs/avm": "0.43.1",
32-
"@fluencelabs/marine-js": "0.3.45",
32+
"@fluencelabs/marine-js": "0.7.2",
3333
"microbundle": "0.15.1",
3434
"dts-bundle-generator": "7.2.0"
3535
}

packages/client/js-client.node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"@fluencelabs/js-peer": "0.9.1",
2626
"@fluencelabs/interfaces": "0.8.1",
2727
"@fluencelabs/avm": "0.43.1",
28-
"@fluencelabs/marine-js": "0.3.45",
28+
"@fluencelabs/marine-js": "0.7.2",
2929
"platform": "1.3.6"
3030
},
3131
"devDependencies": {

packages/client/js-client.web.standalone/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
},
2424
"devDependencies": {
2525
"@fluencelabs/avm": "0.43.1",
26-
"@fluencelabs/marine-js": "0.3.45",
26+
"@fluencelabs/marine-js": "0.7.2",
2727
"@types/node": "16.11.59",
2828
"@types/jest": "28.1.0",
2929
"jest": "28.1.0",

packages/core/interfaces/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@
5151
"devDependencies": {
5252
"@multiformats/multiaddr": "11.3.0",
5353
"@fluencelabs/avm": "0.43.1",
54-
"@fluencelabs/marine-js": "0.3.45"
54+
"@fluencelabs/marine-js": "0.7.2"
5555
}
5656
}

packages/core/js-peer/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"dependencies": {
2020
"@fluencelabs/interfaces": "0.8.1",
2121
"@fluencelabs/avm": "0.43.1",
22-
"@fluencelabs/marine-js": "0.3.45",
22+
"@fluencelabs/marine-js": "0.7.2",
2323
"multiformats": "11.0.1",
2424
"debug": "4.3.4",
2525
"async": "3.2.4",

packages/core/js-peer/src/jsPeer/FluencePeer.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
ParticleExecutionStage,
2626
ParticleQueueItem,
2727
} from '../particle/Particle.js';
28+
import { defaultCallParameters } from "@fluencelabs/marine-js/dist/types"
2829
import { jsonify, isString } from '../util/utils.js';
2930
import { concatMap, filter, pipe, Subject, tap, Unsubscribable } from 'rxjs';
3031
import { defaultSigGuard, Sig } from '../services/Sig.js';
@@ -184,7 +185,7 @@ export abstract class FluencePeer {
184185
new Error("Can't use avm: peer is not initialized");
185186
}
186187

187-
const res = await this.marineHost.callService('avm', 'ast', [air], undefined);
188+
const res = await this.marineHost.callService('avm', 'ast', [air], defaultCallParameters);
188189
if (!isString(res)) {
189190
throw new Error(`Call to avm:ast expected to return string. Actual return: ${res}`);
190191
}
@@ -521,7 +522,8 @@ export abstract class FluencePeer {
521522
log_particle.trace('id %s. executing call service handler %j', particleId, req);
522523

523524
if (this.marineHost && this.marineHost.hasService(req.serviceId)) {
524-
const result = await this.marineHost.callService(req.serviceId, req.fnName, req.args, undefined);
525+
// TODO build correct CallParameters instead of default ones
526+
const result = await this.marineHost.callService(req.serviceId, req.fnName, req.args, defaultCallParameters);
525527

526528
return {
527529
retCode: ResultCodes.success,

packages/core/js-peer/src/jsPeer/avm.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import type { CallResultsArray, InterpreterResult, RunParameters } from '@fluencelabs/avm';
1717
import { deserializeAvmResult, serializeAvmArgs } from '@fluencelabs/avm';
1818
import { IAvmRunner, IMarineHost, IWasmLoader } from '../marine/interfaces.js';
19+
import { defaultCallParameters } from "@fluencelabs/marine-js/dist/types"
1920

2021
export class MarineBasedAvmRunner implements IAvmRunner {
2122
constructor(private marine: IMarineHost, private avmWasmLoader: IWasmLoader) {}
@@ -31,7 +32,7 @@ export class MarineBasedAvmRunner implements IAvmRunner {
3132

3233
let avmCallResult: InterpreterResult | Error;
3334
try {
34-
const res = await this.marine.callService('avm', 'invoke', args, undefined);
35+
const res = await this.marine.callService('avm', 'invoke', args, defaultCallParameters);
3536
avmCallResult = deserializeAvmResult(res);
3637
} catch (e) {
3738
avmCallResult = e instanceof Error ? e : new Error((e as any).toString());

packages/core/js-peer/src/marine/interfaces.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616
import { CallResultsArray, InterpreterResult, RunParameters } from '@fluencelabs/avm';
17-
import { IStartable, JSONArray, JSONObject } from '../util/commonTypes.js';
17+
import { IStartable, JSONArray, JSONObject, CallParameters } from '../util/commonTypes.js';
1818
import { Buffer } from 'buffer';
1919
// @ts-ignore
2020
import type { WorkerImplementation } from 'threads/dist/types/master';
@@ -45,7 +45,7 @@ export interface IMarineHost extends IStartable {
4545
serviceId: string,
4646
functionName: string,
4747
args: JSONArray | JSONObject,
48-
callParams: any,
48+
callParams: CallParameters,
4949
): Promise<unknown>;
5050
}
5151

packages/core/js-peer/src/marine/worker-script/index.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*/
1616

1717
import { MarineService } from '@fluencelabs/marine-js/dist/MarineService';
18-
import type { Env, MarineServiceConfig } from '@fluencelabs/marine-js/dist/config';
19-
import type { JSONArray, JSONObject, LogMessage } from '@fluencelabs/marine-js/dist/types';
18+
import type { Env, MarineModuleConfig, MarineServiceConfig, ModuleDescriptor } from '@fluencelabs/marine-js/dist/config'
19+
import type { JSONArray, JSONObject, LogMessage, CallParameters } from '@fluencelabs/marine-js/dist/types';
2020
import { Buffer } from 'buffer';
2121
// @ts-ignore
2222
import { Observable, Subject } from 'threads/observable';
@@ -26,6 +26,26 @@ import { expose } from 'threads/worker';
2626
let marineServices = new Map<string, MarineService>();
2727
let controlModule: WebAssembly.Module | undefined;
2828

29+
const createSimpleModuleDescriptor = (name: string, envs?: Env): ModuleDescriptor => {
30+
return {
31+
import_name: name,
32+
config: {
33+
logger_enabled: true,
34+
logging_mask: 0,
35+
wasi: {
36+
envs: {...envs},
37+
preopened_files: new Set(),
38+
mapped_dirs: new Map,
39+
}
40+
}
41+
}
42+
}
43+
const createSimpleMarineService = (name: string, env? : Env): MarineServiceConfig => {
44+
return {
45+
modules_config: [createSimpleModuleDescriptor(name, env)],
46+
}
47+
}
48+
2949
const onLogMessage = new Subject<LogMessage>();
3050

3151
const asArray = (buf: SharedArrayBuffer | Buffer) => {
@@ -40,20 +60,20 @@ const toExpose = {
4060
createService: async (
4161
wasm: SharedArrayBuffer | Buffer,
4262
serviceId: string,
43-
marineConfig?: MarineServiceConfig,
4463
envs?: Env,
4564
): Promise<void> => {
4665
if (!controlModule) {
4766
throw new Error('MarineJS is not initialized. To initialize call `init` function');
4867
}
4968

50-
const service = await WebAssembly.compile(asArray(wasm));
69+
const marineConfig = createSimpleMarineService(serviceId, envs);
70+
const modules = {[serviceId]: new Uint8Array(wasm)}
5171
const srv = new MarineService(
5272
controlModule,
53-
service,
5473
serviceId,
5574
onLogMessage.next.bind(onLogMessage),
5675
marineConfig,
76+
modules,
5777
envs,
5878
);
5979
await srv.init();
@@ -67,7 +87,7 @@ const toExpose = {
6787
onLogMessage.complete();
6888
},
6989

70-
callService: (serviceId: string, functionName: string, args: JSONArray | JSONObject, callParams: any): unknown => {
90+
callService: (serviceId: string, functionName: string, args: JSONArray | JSONObject, callParams: CallParameters): unknown => {
7191
const srv = marineServices.get(serviceId);
7292
if (!srv) {
7393
throw new Error(`service with id=${serviceId} not found`);

0 commit comments

Comments
 (0)