Skip to content

FIBBER / A NATIVE LISP

Lisp syntax.
Native code.
No garbage collector.

Write expressive programs with macros and static types. Fibber brings ownership checking to Lisp, then compiles your code through LLVM to a native binary.

0.1.21 · Pre-1.0 · Linux x86-64 & Apple Silicon

hello.fib LISP → NATIVE
(ns main)

(defun greet (name: str) -> str
  (str "hello, " name))

(defun main () -> i64
  (do (println (greet "world"))
      0))
fibc run hello.fib
hello, world
0

01 / MEMORY

Borrow first. Count second.

Values within their creating scope live and die with it. Escaping values are reference counted. The compiler chooses; you write neither lifetimes nor retain/release calls.

Meet the ownership model →

02 / EXPRESSION

Lisp, with static types.

Functions, persistent collections, protocols and pattern matching. Macros operate on forms at compile time. Start small, then shape the language around your program.

Write your first functions →

03 / EXECUTION

A compiler in Fibber.

The self-hosted compiler lowers through LLVM. Use the JIT while developing, then build a native executable. SIMD, tensors and a work-stealing pool support numerical and parallel work.

Build and deploy →

START WITH HELLO

From source to a binary.

Download the release, verify its checksum and unpack it. Keep bin and share together, and add bin to your PATH. Save the example above as hello.fib.

Linux needs glibc 2.33+ and an AVX2/FMA CPU. macOS needs Apple Silicon. Building an executable needs cc (Xcode command-line tools on a Mac).

Installation & checksums

Download 0.1.21

tar xzf fibc-0.1.21-linux-x86_64.tar.gz
export PATH="$PWD/fibc-0.1.21-linux-x86_64/bin:$PATH"
fibc run hello.fib
fibc build hello.fib -o hello
./hello

Download 0.1.21

tar xzf fibc-0.1.21-darwin-arm64.tar.gz
export PATH="$PWD/fibc-0.1.21-darwin-arm64/bin:$PATH"
fibc run hello.fib
fibc build hello.fib -o hello
./hello

TAKE THE NEXT STEP

A small start. Room to grow.

Everyday programs

Persistent collections, strings, JSON and JSON Schema, regex, file and OS services, HTTP and LZ4 compression.

Browse modules →

Numerical work

Typed tensors, SIMD kernels, matrix multiplication and reverse-mode automatic differentiation. GPU kernels are an experimental opt-in with external drivers.

Explore numerics →

A development loop

Create a project, run behaviour specs, inspect ownership decisions and use completion and diagnostics in VS Code.

Set up your tools →