Guía 45 de 53
Integraciones con lenguajes de programación
Diez lenguajes, siete familias de providers, runtimes y requisitos de distribución.
En esta página
Diez lenguajes están disponibles mediante siete familias de providers. Importa un provider, escribe una firma Zolo y conserva el cuerpo en el lenguaje nativo. Son integraciones en el host Zolo, no destinos de compilación para esos lenguajes.
| Lenguaje | Plugin | Imports de providers | Runtime / preparación |
|---|---|---|---|
| C# | dotnet |
csharp |
.NET |
| Python | python |
python |
CPython |
| JavaScript / TypeScript | node |
javascript, typescript |
Node |
| Java / Kotlin | jvm |
java, kotlin |
JVM |
| C / C++ | native |
c, cpp |
Clang · C ABI |
| Rust | rust |
rust |
rustc · Cargo |
| Go | go |
go |
Go · cgo |
Preparación y distribución¶
El empaquetado sin fuentes puede conservar artefactos externos preparados, pero no elimina dependencias de runtime o plataforma. Se cubre alojamiento en VM, native y LLVM; los bindings externos rechazan destinos WebAssembly no admitidos. La aceptación reciente cubre Windows x64. Python se verifica específicamente con CPython 3.12; otras plataformas requieren validación propia.
C#¶
Integra funciones C# tipadas, objetos CLR, callbacks y llamadas asíncronas. Prepara con las herramientas .NET y conserva el runtime compatible al distribuir.
use plugin dotnet::{csharp}
extern csharp fn add(a: int, b: int) -> int {
return a + b;
}Practica en By Example · Programa fuente
Python¶
Ejecuta Python en el proceso con imports nativos y conversión tipada. Windows con CPython 3.12 está verificado; necesitas un intérprete compatible y las dependencias nativas de los paquetes.
use plugin python::{python as py}
extern py fn add(a: int, b: int) -> int {
# Braces in comments stay inside Python: } {
return a + b
}Practica en By Example · Programa fuente
JavaScript / TypeScript¶
Usa JavaScript y TypeScript mediante Node integrado, incluidos módulos nativos y Promises. El shim, runtime y ABI de addons deben coincidir. int de Zolo usa bigint en firmas inline.
use plugin node::{javascript as js, typescript as ts}
extern js fn add(a: int, b: int) -> int {
return a + b;
}Practica en By Example · Programa fuente
Java / Kotlin¶
Comparte una JVM para Java y Kotlin, con imports nativos, objetos vivos y dependencias Maven. Preparar fuentes y el editor requiere las herramientas correspondientes; las aplicaciones preparadas necesitan un JRE compatible. JVM 8, 11 y 23 están verificadas en Windows x64.
use plugin jvm::{kotlin}
extern kotlin fn greet(name: str) -> str {
return "Olá, $name!"
}Practica en By Example · Programa fuente
C / C++¶
Prepara bibliotecas C17 y C++17 con Clang. C++ expone clases concretas admitidas; la propiedad nativa y los punteros o templates no admitidos requieren adaptadores explícitos. El código preparado se ejecuta sin el compilador de fuentes.
use plugin native::{cpp}
extern cpp fn greet(name: str) -> str {
return "Hello " + name;
}
print(greet("Zolo"))Practica en By Example · Programa fuente
Rust¶
Compila funciones Rust tipadas y records copiados en una biblioteca específica del destino. Las dependencias Cargo participan del flujo con lock. Los artefactos distribuidos no necesitan rustc ni fuentes; objetos retenidos y genéricos abiertos requieren adaptadores.
use plugin rust::{rust}
extern rust fn exact(value: int) -> int {
value
}Practica en By Example · Programa fuente
Go¶
Prepara exports Go con cgo y un compilador C compatible. Funciones tipadas, structs públicos copiados y módulos usan el puente común. Los artefactos preparados no necesitan Go ni la caché de módulos; receivers retenidos y variádicos requieren adaptadores.
use plugin go::{go}
extern go fn exact(value: int) -> int {
return value
}Practica en By Example · Programa fuente
Tipos entre lenguajes¶
DOCS / OPINIÓN
¿Esta página dejó alguna pregunta?
Cuéntanos dónde te perdió la explicación. La documentación también forma parte de la experiencia del lenguaje.