Lynxer

A small, statically-flavoured C-style programming language

What is Lynxer?

Lynxer is a small, statically-flavoured, C-style programming language with a standalone native runtime. Source files use the .lynx extension, and every program defines global setup() followed by global main().

The interpreter is written in C++17 and runs programs without a Python or other host runtime. Its standard library ships as native shared libraries — C++ and Rust backends behind one documented C ABI — so a program can open sockets, decode images, play sound, query SQLite or drive a windowed game loop without pulling in a scripting host.

A single --compile command turns a program and everything it imports into one standalone ELF executable that needs nothing from the build tree.

Standalone C++ / Rust runtime Linux amd64 / ARM64 MIT licensed

A first program

global setup(){
    str name = input("What's your name? ");
}

global main(){
    println("Hello, ", name, "!");
}

Save it as hello.lynx, then run it with ./lynxer/lynxer hello.lynx.

A little more

global setup(){
    importAs("math", "m");
}

global main(){
    for(int i = 1; i < 4; i = i + 1){
        println("sqrt(", i, ") = ", m.sqrt(i));
    }
}

Help Lynxer get recognised

Lynxer is a young language, and the best thing you can do to help it grow is to use it in public. GitHub decides which languages it highlights by looking at how much code is written in them — so every open Lynxer project is an argument for Lynxer earning its own place in GitHub's language list (Linguist), with proper syntax highlighting and language statistics.

If you build something with Lynxer, please:

That's it — no sign-up, no ceremony. Make something, tag it lynxer, and share it. The more Lynxer code that is visible on GitHub, the stronger the case for Lynxer to be recognised as a language of its own. If you maintain a project, you can also help by supporting the language listing in github/linguist.

Browse the lynxer topic on GitHub  ·  Star the repository

Documentation

The reference documentation covers the language, the command line, every standard-library module and the native-module ABI. It lives at /docs/.