Sign inSign up

eiwac/eiwa

By eiwac

•Updated about 2 hours ago

Official Eiwa toolchain: eiwac compiler + eiwa CLI + stdlib on Debian.

Image
2

5.3K

eiwac/eiwa repository overview

Eiwa

⁠Quick reference

⁠What is Eiwa?

Eitau, the Eiwa mascot

Eiwa is a pragmatic, statically typed, natively compiled systems language with Kotlin-inspired syntax. Everything compiles directly to native code via LLVM — with a JIT for instant development loops and -O3 for production — backed by a conservative garbage collector. Its type system is 100% composition-based (type, contract, skill, object, implement; no inheritance), with compile-time null safety, stackless coroutines (task {} / .await()), and an eiwa developer CLI for project and dependency management. Learn more at eiwa.dev⁠.

This image is the official Eiwa toolchain: the eiwac compiler backend, the eiwa project CLI, and the standard library, on debian:trixie-slim. ENTRYPOINT is eiwa, working directory is /work.

⁠How to use this image

⁠Start a new project

$ docker run --rm -it -v "$PWD":/work -w /work eiwac/eiwa:latest init my-app
$ cd my-app

⁠Run your project

Mount your project on /work (requires eiwa.yaml + src/main.ei):

$ docker run --rm -v "$PWD":/work -p 8080:8080 eiwac/eiwa:latest run .

⁠Run a standalone script

Single .ei files need no project — they are delegated to the eiwac backend:

$ docker run --rm -v "$PWD":/work eiwac/eiwa:latest eiwac run script.ei

⁠Run the test suite

$ docker run --rm -v "$PWD":/work eiwac/eiwa:latest test

⁠Compile your app

The most common pattern is a multi-stage build: compile with this image, then copy only the native binary into a slim runtime (the runtime does not need the compiler):

FROM eiwac/eiwa:latest AS compile   # prod: pin the exact version, never latest
WORKDIR /app
COPY ./ ./
RUN eiwa build --release

FROM debian:stable-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
      libcurl4 libgc1 ca-certificates openssl \
    && rm -rf /var/lib/apt/lists/*
COPY --from=compile /app/app /app/server
WORKDIR /app
CMD ["./server"]

Then build and run your service:

$ docker build -t my-service .
$ docker run --rm -p 8080:8080 my-service

For reproducible CI builds, commit an eiwa.freeze file (eiwa freeze pins every dependency to its exact commit) and build with RUN eiwa build --release --frozen.

⁠Image variants

⁠eiwac/eiwa:<version>

Pinned toolchain for a specific Eiwa release⁠. Use these in production — check the releases page for the newest tag.

⁠eiwac/eiwa:latest

Follows the newest release. Intended for local development only; never deploy on latest.

Both variants are published for linux/amd64 and linux/arm64, with EIWA_HOME=/opt/eiwa/src and EIWA_BASELINE_CPU=1 (portable binaries, safe under emulation) pre-configured.

⁠License

The Eiwa toolchain in this image follows the license of the eiwa-lang/eiwa⁠ repository. As with all Docker images, your own built artifacts additionally contain other software under various licenses (notably Debian base packages); it is the image user's responsibility to ensure compliance.

Tag summary

Content type

Image

Digest

sha256:579f14ff7…

Size

204.6 MB

Last updated

about 2 hours ago

docker pull eiwac/eiwa