Aller au contenu

Langages et interopérabilité

Les langages qu'exécute Elide, comment lancer chacun d'eux, et comment Python, JavaScript et WebAssembly s'appellent mutuellement avec --interop et dans le REPL.

Sur cette page

Elide exécute ces langages à partir d’un seul binaire :

LangageStatutS’exécute commeLancer avecInteropérabilité
JavaScriptPris en chargeScriptelide app.js, elide -s CODEPython : --interop ; WASM : sans option
TypeScriptPris en chargeScript, types retiréselide app.ts, elide -l ts -s CODEComme JavaScript
PythonExpérimentalPython 3.13elide app.py, elide python -m MODJavaScript : --interop
WebAssemblyExpérimentalCommande WASI Preview 1elide app.wasm (_start ou _main)Depuis JS/TS, sans option
Java, KotlinPris en chargeCompilé, exécuté sur le JDK fournielide run Main.kt, projets elide.pklAucune
PklPris en chargeConfigurationManifestes elide.pklAucune

elide info liste les langages de votre binaire ; elide setup python ajoute Python. Pages par langage : JavaScript et TypeScript, Python, Java et Kotlin, WebAssembly.

0:22 / 0:22

Python appelle JavaScript

# sum.py
from elide import js

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

JavaScript importe 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

L’export default est le module Python. Utilisez une entrée .mjs.

Sans --interop

Chaque programme n’exécute que son langage d’entrée, plus WebAssembly pour JS/TS. Les appels entre langages échouent :

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

Ne passez --interop qu’aux programmes qui font des appels entre langages. Sous --interop, les threads Python échouent avec Creating threads is not allowed.

JavaScript et WebAssembly

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

Les imports .wasm et l’API WebAssembly fonctionnent dans tout programme JavaScript et TypeScript. Lorsque Python est installé, les modules qui utilisent des instructions SIMD échouent avec Vector instructions are not enabled.

Dans le REPL

Le REPL partage des valeurs entre langages sans --interop ; voir REPL interactif.

Exemples

Cette page vous a-t-elle aidé ?