Zum Inhalt springen

Sprachen und Interop

Welche Sprachen Elide ausführt, wie Sie jede starten und wie Python, JavaScript und WebAssembly einander mit --interop und in der REPL aufrufen.

Auf dieser Seite

Elide führt diese Sprachen aus einem einzigen Binary aus:

SpracheStatusLäuft alsStarten mitInterop
JavaScriptUnterstütztSkriptelide app.js, elide -s CODEPython: --interop; WASM: ohne Flag
TypeScriptUnterstütztSkript, Typen entferntelide app.ts, elide -l ts -s CODEWie JavaScript
PythonExperimentellPython 3.13elide app.py, elide python -m MODJavaScript: --interop
WebAssemblyExperimentellWASI-Preview-1-Befehlelide app.wasm (_start oder _main)Aus JS/TS, ohne Flag
Java, KotlinUnterstütztKompiliert, läuft auf dem mitgelieferten JDKelide run Main.kt, elide.pkl-ProjekteKeine
PklUnterstütztKonfigurationelide.pkl-ManifesteKeine

elide info listet die Sprachen in Ihrem Binary auf; elide setup python fügt Python hinzu. Seiten je Sprache: JavaScript & TypeScript, Python, Java & Kotlin, WebAssembly.

0:22 / 0:22

Python ruft JavaScript auf

# sum.py
from elide import js

print(js("[1,2,3].reduce((a,b)=>a+b,0)"))
elide --interop python sum.py
6

JavaScript importiert Python

# mod.py
def greet(name):
    return f"hello {name}"
// main.mjs
import mod from "./mod.py";
console.log(mod.greet("elide"));
elide --interop main.mjs
hello elide

Der default-Export ist das Python-Modul. Verwenden Sie einen .mjs-Einstiegspunkt.

Ohne --interop

Jedes Programm führt nur seine Einstiegssprache aus, bei JS/TS zusätzlich WebAssembly. Aufrufe zwischen Sprachen schlagen fehl:

ProgrammFehler
sum.pyValueError: polyglot language 'js' not found
main.mjsCannot import 'mod.py': JavaScript entries run without Python. Re-run with --interop to use it.

Übergeben Sie --interop nur an Programme, die zwischen Sprachen aufrufen. Unter --interop schlagen Python-Threads mit Creating threads is not allowed. fehl.

JavaScript und WebAssembly

import { add } from "./math.wasm";
console.log(add(1, 2));

.wasm-Importe und die WebAssembly-API funktionieren in jedem JavaScript- und TypeScript-Programm. Ist Python installiert, schlagen Module mit SIMD-Instruktionen mit Vector instructions are not enabled fehl.

In der REPL

Die REPL teilt Werte zwischen Sprachen ohne --interop; siehe Interaktive REPL.

Beispiele

War diese Seite hilfreich?