eskiuv0.12.0
v0.12.0 · código abierto · MIT

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.

Instálalo en macOS o Linux curl -fsSL https://eskiu-lang.org/install.sh | sh

Homebrew: brew install eskiu-lang/eskiu/eskiu · Windows y archivos de cada release

La mascota de Eskiu, un gatito atigrado gris con una bola de estambre

Por qué Eskiu

Rápido

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 ABIs
Confiable

Sum 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.

Propiedad y recursos
Productivo

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ápido
En producción

Corre 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.

Lo usan ReactVision The Morrow Digital
Qué puedes construir

Un lenguaje, de scripts al silicio.

El lenguaje

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 →

Paquetes

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
Playground

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.

⌘/Ctrl + Enter para ejecutar
SALIDA

En sandbox: sin red, con límites de tiempo y memoria, y salida acotada.

Empieza

Tres pasos a un programa que corre.

  1. 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. 2

    Escribe hello.esk

    import <io>;
    
    println("Hello, Eskiu!");

    Un archivo con instrucciones al nivel superior corre como script; los programas más grandes tienen un main.

  3. 3

    Córrelo

    $ eskiuc run hello.esk
    Hello, Eskiu!

    eskiuc hello.esk -o hello genera un ejecutable nativo.

Lee el libro de Eskiu Inicio rápido

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).

Labs

Hasta dónde llega.

Experimentos con lo que viene y con hardware poco común. No son productos, y no todos son serios.

Una nota del desarrollador

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 Dorantes

Eduardo DorantesCreador de Eskiu

La mascota de Eskiu, dibujada Tiny, un gato atigrado gris, con las patas sobre una mesa
La mascota

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.