Elide exécute ces langages à partir d’un seul binaire :
| Langage | Statut | S’exécute comme | Lancer avec | Interopérabilité |
|---|---|---|---|---|
| JavaScript | Pris en charge | Script | elide app.js, elide -s CODE | Python : --interop ; WASM : sans option |
| TypeScript | Pris en charge | Script, types retirés | elide app.ts, elide -l ts -s CODE | Comme JavaScript |
| Python | Expérimental | Python 3.13 | elide app.py, elide python -m MOD | JavaScript : --interop |
| WebAssembly | Expérimental | Commande WASI Preview 1 | elide app.wasm (_start ou _main) | Depuis JS/TS, sans option |
| Java, Kotlin | Pris en charge | Compilé, exécuté sur le JDK fourni | elide run Main.kt, projets elide.pkl | Aucune |
| Pkl | Pris en charge | Configuration | Manifestes elide.pkl | Aucune |
elide info liste les langages de votre binaire ; elide setup python ajoute Python. Pages par langage :
JavaScript et TypeScript, Python, Java et Kotlin,
WebAssembly.
Python appelle JavaScript
# sum.py
from elide import js
print(js("[1,2,3].reduce((a,b)=>a+b,0)"))elide --interop python sum.py6JavaScript 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.mjshello elideL’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 :
| Programme | Erreur |
|---|---|
sum.py | ValueError: polyglot language 'js' not found |
main.mjs | Cannot import 'mod. |
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.