Elide выполняет эти языки из одного исполняемого файла:
| Язык | Статус | Как выполняется | Как запустить | Взаимодействие |
|---|---|---|---|---|
| JavaScript | Поддерживается | Скрипт | elide app.js, elide -s CODE | Python: --interop; WASM: без флага |
| TypeScript | Поддерживается | Скрипт, типы удаляются | elide app.ts, elide -l ts -s CODE | Как JavaScript |
| Python | Экспериментально | Python 3.13 | elide app.py, elide python -m MOD | JavaScript: --interop |
| WebAssembly | Экспериментально | Команда WASI Preview 1 | elide app.wasm (_start или _main) | Из JS/TS, без флага |
| Java, Kotlin | Поддерживается | Компилируется, выполняется на встроенном JDK | elide run Main.kt, проекты elide.pkl | Нет |
| Pkl | Поддерживается | Конфигурация | Манифесты elide.pkl | Нет |
elide info выводит языки в вашем исполняемом файле; elide setup python добавляет Python. Страницы по языкам:
JavaScript & TypeScript, Python, Java & Kotlin,
WebAssembly.
Вызов JavaScript из Python
# sum.py
from elide import js
print(js("[1,2,3].reduce((a,b)=>a+b,0)"))elide --interop python sum.py6Импорт Python из JavaScript
# 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 elideЭкспорт default — это модуль Python. Используйте точку входа .mjs.
Без --interop
Каждая программа выполняет только язык своей точки входа, а для JS/TS ещё и WebAssembly. Вызовы между языками завершаются ошибкой:
| Программа | Ошибка |
|---|---|
sum.py | ValueError: polyglot language 'js' not found |
main.mjs | Cannot import 'mod. |
Передавайте --interop только программам, которые вызывают код на других языках. Под --interop потоки Python
завершаются ошибкой Creating threads is not allowed.
JavaScript и WebAssembly
import { add } from "./math.wasm";
console.log(add(1, 2));Импорт .wasm и API WebAssembly работают в любой программе на JavaScript и TypeScript. Если установлен Python,
модули с инструкциями SIMD завершаются ошибкой Vector instructions are not enabled.
В REPL
REPL передаёт значения между языками без --interop; см. Интерактивный REPL.