Lynxer is a small, statically-flavoured, C-style scripting language. Programs use
the .lynx extension and run on the standalone native interpreter in lynxer/ —
no VM, no bytecode. The same interpreter can also compile a program into a single
executable.
global setup(){
str name = input("What's your name? ");
}
global main(){
println("Hello, ", name, "!");
}→ Documentation | Installation | Language reference | Functions | Macros | Standard library
Lynxer supports 64-bit Linux and 64-bit Windows on amd64 and arm64.
The Linux-specific system calls in os (and the sys module) are excluded on
Windows; builds fail early rather than mix syscall tables. Windows builds
provide the interpreter, --compile, the embedding runtime, and
--emit-library through MSYS2 MinGW-w64/CLANGARM64. See
docs/windows.md.
v0.1.8.4 — a standalone C++ implementation with:
- a native interpreter and an AST optimizer;
- 40 standard-library modules, native (C++/Rust) backends included;
- a frozen native-module ABI for third-party backends;
- class inheritance with
extendsandsuper(...), first-class functions and closures, inferred generic parameters, and scoped named lambdas; - static analysis via
--lint, a source debugger via--debug, and a language server inlynxer/lsp.py; - single-file executables via
--compileand C ABI shared libraries via--emit-library; - performance benchmarks via
make benchLynxer; - a full test suite on
amd64andarm64.
Planned gaps are tracked in docs/limitations.md.
make build # build the interpreter and every stdlib module
./lynxer/lynxer syntax.lynx # run a source file
./lynxer/lynxer --compile syntax.lynx -o syntax # compile to a standalone executable
./lynxer/lynxer --version # print the version
./lynxer/lynxer --help # list every command
make test # build and run the full test suiteTo install the interpreter system-wide (default prefix /usr, override with
LYNXER_PREFIX):
sudo ./lynxer/lynxer --installglobal setup(){
importAs("math", "m");
const str LANG = "Lynxer";
}
global greet(str name){
println("Hello, ", name, "!");
}
global main(){
int x = 10;
float pi = 3.14;
bool ok = true;
x += 5;
if(x > 10){
global.greet(LANG);
}
for(int i = 0; i < 3; i = i + 1){
println(i);
}
// stdlib
println(global.m.sqrt(144));
}The documentation lives in docs/ and is rendered into a
static site by site/build.py (output under site/).
| Page | Contents |
|---|---|
| Installation | How to build and run Lynxer |
| CLI reference | Complete command-line usage |
| Language reference | Types, variables, control flow, functions, and scoping |
| Functions | global, func, local, and named lambda declarations, inferred generic parameters, and caller-supplied codeblocks |
| Operators | Arithmetic, comparison, boolean and bitwise operators, precedence, deprecated spellings |
| Errors | The try/catch statement, raise, and exceptionInfo() |
| Type reference | Primitive, fixed-width integer, and fixed-width float types |
| Built-ins | Core language functions and unmanaged memory operations |
| Lists | list and tuple values and their builtins |
| importAs | importAs("module", "alias") — import under a custom name |
| Module system | import(), importAs(), namespaces, writing your own modules |
| Standard library | Per-module documentation pages |
| Native-module ABI | The shared C ABI for C++ and Rust backends |
| Extending | Adding a module: wrapper, backend, fixture, contract |
| Vargroups | Named typed records (struct-like) |
| Structs | Data-only named types with positional constructors |
| Classes | Instances, constructors, fields, methods, and extends inheritance |
| Enums | Rust-style tagged unions, payloads, and pattern matching |
| Limitations | Planned implementation gaps |
| Resource | Link |
|---|---|
| GitHub repository | https://github.com/andy64lol/Lynxer |
lynxer/ The interpreter and its standard library
*.cpp, *.hpp Lexer, parser, interpreter, optimizer, formatter, CLI
stdlib/ Native and pure stdlib modules
rust/ Rust-backed native modules
docs/ Documentation (Markdown source)
site/ Static website: home page plus docs/ rendered to HTML
packaging/ Distribution packaging (AUR)
syntax.lynx Full syntax showcase
Makefile
README.md
packaging/ supports distribution and installation.
MIT — see LICENSE.
