A programming language in development

Readable code
for backends.

Nagi is a language in development for writing backends in readable, typed High code with Python-style syntax. Use its standard APIs for HTTP, JSON, and SQLite, and small Rust adapters for specialized work with existing Rust libraries.

Nagi 0.2.0 is available. See its development status

double.nagiDouble a number
def double(number: i64) -> i64:
    return number * 2

def main():
    answer = double(21)
    print(answer)
Program output42

Calling double(21) from main prints 42.

How code becomes a program

Write in High.
Build through Rust.

Code with types

High uses indentation to group code. You declare parameter and return types; variable types are inferred from their values.

Language basics

Handle failures with Result

Database operations return a Result: success or an error. You can define your own error types and handle each case.

Error handling

Use Rust libraries

Nagi generates Rust code and uses Rust/Cargo to build a native executable. Small handwritten Rust adapters connect existing crates to Nagi types and extern declarations.

Imports and Rust integration

Runnable examples

From one file
to a Web API.

Start with one file

Build a CLI app that reads input, propagates typed failures, and checks boundary values.

Your first CLI app

Web APIs and stored data

Try APIs using HTTP, JSON, and SQLite, or examples of actor message handling and Supervisor restarts.

Sample projects

Get the VS Code extension from its Marketplace listing or GitHub Releases. Nagi supports IntelliJ IDEA and PyCharm and is available from JetBrains Marketplace or GitHub Releases. Install it directly from Marketplace in a compatible IDE, or install the common Release ZIP for both IDEs manually. See editor installation

Where the name comes from

Nagi is Japanese for a calm sea.

Even when the inside is working intensely,
the surface stays as calm as a quiet sea.

凪 (nagi) means a lull in the wind and a calm sea. The name expresses a wish for code that feels calm and clear to the person writing it.

Development status

Nagi 0.2.0 is available.

The syntax and standard APIs may change. See purpose and current implementation.

Low uses braces with the same type and ownership rules as High, and supports function replacement. Pointer operations and unsafe blocks are not supported. About High and Low

Archives are available for Windows x64, Linux x86_64, macOS Apple Silicon, and macOS Intel. The nagic build/run commands require Rust/Cargo and your OS's build tools.