Saltar al contenido

Lenguajes e interoperabilidad

Qué lenguajes ejecuta Elide, cómo iniciar cada uno y cómo Python, JavaScript y WebAssembly se llaman entre sí con --interop y en el REPL.

En esta página

Elide ejecuta estos lenguajes desde un único binario:

LenguajeEstadoSe ejecuta comoIniciar conInteroperabilidad
JavaScriptCompatibleScriptelide app.js, elide -s CODEPython: --interop; WASM: sin opción
TypeScriptCompatibleScript, sin tiposelide app.ts, elide -l ts -s CODEComo JavaScript
PythonExperimentalPython 3.13elide app.py, elide python -m MODJavaScript: --interop
WebAssemblyExperimentalComando WASI Preview 1elide app.wasm (_start o _main)Desde JS/TS, sin opción
Java, KotlinCompatibleCompilado, se ejecuta en el JDK incluidoelide run Main.kt, proyectos elide.pklNinguna
PklCompatibleConfiguraciónManifiestos elide.pklNinguna

elide info lista los lenguajes de su binario; elide setup python añade Python. Páginas por lenguaje: JavaScript y TypeScript, Python, Java y Kotlin, WebAssembly.

0:22 / 0:22

Python llama a 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 importa 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

La exportación default es el módulo de Python. Use una entrada .mjs.

Sin --interop

Cada programa ejecuta solo su lenguaje de entrada, más WebAssembly en JS/TS. Las llamadas entre lenguajes fallan:

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

Pase --interop solo a los programas que hacen llamadas entre lenguajes. Con --interop, los hilos de Python fallan con Creating threads is not allowed.

JavaScript y WebAssembly

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

Las importaciones de .wasm y la API WebAssembly funcionan en todos los programas de JavaScript y TypeScript. Cuando Python está instalado, los módulos que usan instrucciones SIMD fallan con Vector instructions are not enabled.

En el REPL

El REPL comparte valores entre lenguajes sin --interop; consulte REPL interactivo.

Ejemplos

¿Te resultó útil esta página?