Перейти до вмісту

Мови та взаємодія

Які мови виконує Elide, як запустити кожну з них і як Python, JavaScript і WebAssembly викликають одне одного з --interop і в REPL.

На цій сторінці

Elide виконує ці мови з одного виконуваного файлу:

МоваСтатусЯк виконуєтьсяЯк запуститиВзаємодія
JavaScriptПідтримуєтьсяСкриптelide app.js, elide -s CODEPython: --interop; WASM: без прапорця
TypeScriptПідтримуєтьсяСкрипт, типи видаляютьсяelide app.ts, elide -l ts -s CODEЯк JavaScript
PythonЕкспериментальноPython 3.13elide app.py, elide python -m MODJavaScript: --interop
WebAssemblyЕкспериментальноКоманда WASI Preview 1elide app.wasm (_start або _main)З JS/TS, без прапорця
Java, KotlinПідтримуєтьсяКомпілюється, виконується на вбудованому JDKelide run Main.kt, проєкти elide.pklНемає
PklПідтримуєтьсяКонфігураціяМаніфести elide.pklНемає

elide info виводить мови у вашому виконуваному файлі; elide setup python додає Python. Сторінки за мовами: JavaScript & TypeScript, Python, Java & Kotlin, WebAssembly.

0:22 / 0:22

Виклик JavaScript із Python

# sum.py
from elide import js

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

Імпорт 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.mjs
hello elide

Експорт default — це модуль Python. Використовуйте точку входу .mjs.

Без --interop

Кожна програма виконує лише мову своєї точки входу, а для JS/TS ще й WebAssembly. Виклики між мовами завершуються помилкою:

ПрограмаПомилка
sum.pyValueError: polyglot language 'js' not found
main.mjsCannot import 'mod.py': JavaScript entries run without Python. Re-run with --interop to use it.

Передавайте --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.

Приклади

Чи була ця сторінка корисною?