Escríbelo como un script. Compílalo como C.
Un lenguaje de sistemas sobre LLVM que se compila a sí mismo, con memoria explícita e interoperabilidad directa con C. Un solo compilador para escritorio, la web y celulares.
Homebrew: brew install eskiu-lang/eskiu/eskiu · Windows y archivos de cada release

Por qué Eskiu
Código nativo con LLVM, con memoria que tú manejas y sin recolector de basura. Las estructuras y funciones de una biblioteca de C se llaman tal como son, en cualquier plataforma.
Interoperabilidad con C y ABIsSum types revisados hasta el último caso, apuntadores nullable revisados antes de usarse, defer para liberar recursos, y revisión de límites, overflow y nulos con --safe.
Corre un archivo como script, con HTTP, JSON, archivos y procesos en la biblioteca estándar, paquetes con un comando y un editor que entiende tu código.
Inicio rápidoCorre dentro de ViroReact.
ReactVision usa Eskiu en ViroReact: ≈85% menos memoria en su motor, el tracker detrás de su AR en la web y su detección de objetos en iOS y Android.
Tracking de AR en el navegador
El tracker visual-inercial de ViroReact corre sobre un motor escrito en Eskiu y compilado a WebAssembly. Su núcleo de visión por computadora calcula los mismos bits que el C++ al que reemplazó.
Un núcleo de detección para iOS y Android
La detección de objetos de ViroReact es un solo núcleo en Eskiu sobre ONNX Runtime en las dos plataformas. En Android, sus puntos de entrada JNI también son Eskiu.
Caso de estudio de ReactVision → gpuLlama 2 sobre Metal
Llama 2 7B a 45 tokens por segundo en un M4 Pro, en WGSL sobre wgpu-native. llama.cpp da 58 en la misma máquina.
Showcase →Un lenguaje, de scripts al silicio.
Compila para el navegador
Una opción genera una página, un módulo o una biblioteca para un proyecto de emscripten que ya tengas. Las excepciones, el código async y la interoperabilidad con C funcionan ahí igual que en nativo, y el tracking de AR de ViroReact llega así a la web.
$ eskiuc app.esk --target wasm32-unknown-emscripten -o app.js
Celulares
Bibliotecas estáticas para iOS y compartidas para Android, que se llaman desde Swift, Kotlin u Objective-C.
GPU y machine learning
Cómputo y 3D con WebGPU, ONNX Runtime y TensorFlow Lite, cada uno a un paquete de distancia.
Scripts y herramientas de línea de comandos
eskiuc run o un shebang, con argumentos, HTTP, JSON y procesos incluidos.
Servicios de red
Servidores async de HTTP/1.1 y HTTP/2 sobre un solo event loop en Linux, macOS y Windows.
Bare metal
Builds freestanding con ensamblador inline y accesos volatile. Un kernel ARM64 arranca en QEMU.
Dentro de un código en C o C++
Un módulo con un header de C entra en un motor existente, un archivo a la vez. Así entró a ViroReact.
Familiar en la superficie.
El modelo de memoria y de datos de C, con las revisiones y comodidades de un lenguaje moderno, sin costo en tiempo de ejecución.
Sum types, revisados hasta el último caso
Un enum lleva datos en cada variante. Si un match deja fuera un caso, no compila.
match parse_port("8080") { Port(p) -> serve(p); InvalidRange(n) -> warn(n); NotANumber -> fail(); }
Matemáticas que se leen como matemáticas
Los genéricos con restricciones se monomorfizan; la sobrecarga de operadores se resuelve por el tipo de los operandos y compila a llamadas directas.
V3 operator +(V3 a, V3 b) { ... } V3 operator *(V3 v, float s) { ... } let mid: V3 = (a + b) * 0.5;
async, await y canales tipados
Un solo reactor sobre kqueue, epoll o WSAPoll: el mismo código de red corre en Linux, macOS y Windows.
async int sum_squares(Chan<int>* ch) { let a: int = await Chan_recv(ch); let b: int = await Chan_recv(ch); return a + b; }
Una biblioteca estándar para scripts
Pide una URL por HTTPS, recorre un directorio, ejecuta un comando, lee JSON y CSV, con módulos que vienen con el compilador.
let r: Response; fetch("https://api.github.com/repos/x/y", &r); defer Response_free(&r); println(JsonValue_as_cstr(json_get( Response_json(&r), "owner.login")));
El compilador también está escrito en Eskiu: todo el pipeline se recompila a sí mismo hasta la misma salida en un bootstrap de tres etapas. Cómo hace bootstrap →
A un eskiuc add de distancia.
Cómputo y 3D en GPU, machine learning, compresión, audio, fuentes y JNI. Un paquete que usa una biblioteca de C la trae consigo: el primer build la descarga y revisa su SHA-256, así que no hay nada más que instalar.
Ver los paquetes →$ eskiuc add onnx --git https://github.com/eskiu-lang/onnx --rev v0.1.0 added onnx (commit 550e8aba4d22) $ eskiuc run # src/main.esk importa <onnx> fetching onnxruntime for onnx from https://github.com/microsoft/... 1.31.0
Pruébalo en el navegador.
Edita el programa y córrelo. El servidor lo compila con LLVM y lo ejecuta con el mismo eskiuc run.
SALIDA
En sandbox: sin red, con límites de tiempo y memoria, y salida acotada.
Tres pasos a un programa que corre.
-
1
Instala
curl -fsSL https://eskiu-lang.org/install.sh | sh
O
brew install eskiu-lang/eskiu/eskiu, o un archivo del release para Windows. -
2
Escribe
hello.eskimport <io>; println("Hello, Eskiu!");
Un archivo con instrucciones al nivel superior corre como script; los programas más grandes tienen un
main. -
3
Córrelo
$ eskiuc run hello.esk Hello, Eskiu!eskiuc hello.esk -o hellogenera un ejecutable nativo.
Gratis y en línea, de Hello, Eskiu a async y bare metal. El código que compila con 0.12.0 sigue compilando en cada 0.12.x (política de estabilidad).
Hasta dónde llega.
Experimentos con lo que viene y con hardware poco común. No son productos, y no todos son serios.
Una UI para cada pantalla
Un framework de UI reactivo en Eskiu: los mismos componentes dibujan UIKit en iOS, vistas nativas en Android y el DOM con WebAssembly. Un prototipo de lo que 0.13 está construyendo.
Código →
AR en una Nintendo 3DS
Un demo de AR con la cámara y el giroscopio en el ARM11 de 32 bits de la 3DS, con su lógica en Eskiu y su render a través de ViroCore. Hecho por diversión.
Caso de estudio →
Un kernel ARM64 bare metal
Interrupciones de timer, un scheduler, un heap y una shell, arrancando en QEMU. Unas líneas de ensamblador preparan el stack; el resto es Eskiu.
Código →Una nota del desarrollador
Aprendí a programar con Ruby, pero mientras más construía, más encontraba C debajo de todo, incluso de Ruby y Python. Le agarré cariño a su sencillez. Rust y Zig están bien hechos, pero para mi trabajo siempre me parecieron más complicados de lo necesario.
Así que escribí el lenguaje que quería: la sencillez de C, con las comodidades que buscaba en otros lenguajes. Hoy se compila a sí mismo y corre en producción en ReactVision. Si construyes algo con él, me gustaría saberlo.

Eduardo DorantesCreador de Eskiu
Te presentamos a Tiny.
El gatito de cada página está dibujado a partir de Tiny, que existe de verdad: con las patas sobre la mesa, mirando lo que escribes.
eskiu
ReactVision