Code with feather-light syntax

Feather is a minimal and expressive programming language built on C++ and Ruby, designed to be readable from day one.


Unix
curl https://codeberg.org/Feather_lang/Feather/raw/branch/dev/install.sh | bash

Built for clarity

Readable by default

Keywords like VARIABLE, COUNTER, and LIST make code understandable without any extra comments.

Powered by C++ & Ruby

Feather runs on C++ making it very quick. It also lets you drop Ruby code in whenever needed!

Lightning fast

Being built on C++, Feather is very quick for being an interpreted language. One could even say... lightning fast

Web-capable

Define routes with SERVER, serve files, and handle HTTP requests, all with Feather's clean syntax.

Linux & Windows

Runs on Linux and Windows. One (or a couple) install command(s) gets you up and running with the feather CLI.

Feather in practice

basics.feather
^ Variables hold text, counters hold numbers
VARIABLE name = "What's your name? ".take
COUNTER score = 0

^ Increment and check
REPEAT 5 AS i:
    score += i

OUT "Hello, {name}! Your score is {score}." &wrap

^ Control flow
IF score >= 10:
    OUT "Great score!" &wrap
ELSE:
    OUT "Keep going!" &wrap
^ Lists and Tables
LIST fruits = ("apple", "banana", "cherry")
fruits.append("mango")

TABLE user = {
    "name": "Alice",
    "age": "30",
    "scores": ("95", "87", "92")
}

^ Iterate
FOR fruit IN fruits:
    OUT "{fruit}" &wrap

^ Table methods
OUT user.has("name") &wrap    ^ true
OUT user["scores"][0] &wrap   ^ 95
^ A simple web server

SERVER ('/', ('GET')):
    RETURN 'index.html'
END

SERVER ('/api/greet', ('GET', 'POST')):
    TABLE body = request.body.dynamic()
    VARIABLE name = body["name"]
    RETURN `{"message": "Hello, {name}!"}`
END

SERVER.start()