Repository navigation
FAQ
What is Torvik? Torvik is a self-hosting, compiled, general-purpose programming language with clean Norse-inspired syntax, automatic reference counting, and native performance via LLVM.
Is Torvik production-ready? Yes! Torvik is stable for everyday needs. It is self-hosting and usable on both Linux and Windows, though the ecosystem and some language features are still growing.
What platforms are supported? Linux (x86-64) and Windows (x86-64) are both fully supported. macOS is not yet supported — it's planned for a future version, once real Apple hardware is available for credible testing.
Does Torvik have a garbage collector? No. It uses automatic reference counting (ARC) for deterministic memory management.
Why the unusual keywords (df, check, whilst, guard, etc.)?
The Norse-inspired keywords are a deliberate design choice for clarity, brevity, and distinctiveness.
Can I use Torvik for systems programming? Yes — that is one of its main goals. It compiles to native binaries with no runtime VM.
How do I install Torvik?
See the Getting Started page. There's a one-line installer for both Linux (install.sh) and Windows (install.ps1).
Do I need anything besides Torvik to build programs?
You need clang on your PATH. On Windows it must be a clang that bundles the MinGW-w64 headers/libraries (LLVM-MinGW, MSYS2, or WinLibs).
What is rune?
rune is the official project and build tool (rune new, rune run, rune build, etc.). It also keeps Torvik up to date with rune update (which supports version pinning) and removes it cleanly with rune uninstall.
Does Torvik have package management yet?
Project management is available via rune. Full external dependency support is planned for a future release.
Can I contribute to Torvik? Absolutely! See the Contributing page.
When will feature X be added? Check the Roadmap page for planned features and timelines.
What's coming next?
v1.5.0 ("The Forge") added systems and OS development: raw pointers (varda<T>), fixed arrays, shape value structs (packed ones map byte-for-byte onto C structs), volatile MMIO, inline assembly (galdr), x86_64 port intrinsics, and torvc --bare for freestanding images that boot on real hardware — with a complete reference kernel and tutorial in the repo. It also added the f16/f32/f128 float widths, run mode (torvc file.tv executes a file directly), major-version gating in rune, and moved the standard library to its own repository. && and || now short-circuit, which is a correctness fix. Before that, v1.4.0 added optional (^) and variadic (*) function parameters with call-site type checking, made boolean &&/|| chaining limit-free (usable as values, comparable to true/false), and introduced std::net — an opt-in HTTP layer with binary-safe file serving — plus the chr and fs_size builtins; rune moved to its own repository and versions independently. Before that, v1.3.0 brought concurrency (raven tasks and typed bridge channels), and v1.2.0 added aett + when pattern matching, a warnings system, and Result types. Official macOS support follows once real Apple hardware is available for credible testing.
Does Torvik have concurrency?
Yes, as of v1.3.0. You spawn a df function on its own thread with raven (fire-and-forget, or bind a task<T> handle and collect the result with join), and you pass values between tasks over typed bridge<T> channels (bridge_new / send / recv / try_recv / bridge_close). The design is safe by construction: values are deep-copied as they cross a thread boundary, so tasks share no mutable state and data races aren't expressible. See the Language Guide for the full chapter.
Is Torvik open source? Yes, licensed under GNU AGPL-3.0 with a runtime exception (your programs are not affected).
How can I support the project?
- Star the repo
- Use it and share feedback
- Contribute code or documentation
- Support via Buy Me a Coffee, Patreon, etc.
Where can I ask questions? Use GitHub Discussions, open an Issue, or check the community channels listed in the README.
Last updated: August 2026 (v1.5.1) This FAQ will grow as more people use Torvik. Feel free to suggest new questions!
Five years per major version: three years of Active support (features, bug fixes, security), one year of Maintenance (bug and security fixes only), and one year of Security fixes.
Torvik 1.x, rune 1.x and Vefna 1.x are all Active until 4 July 2029, and reach end of life on 4 July 2031.
Nothing stops working at end of life — a compiler that built your program last year
will build it next year. What ends is the flow of updates. And rune update keeps you
inside your current major and only tells you a new one exists, so upgrading is always
a decision you make rather than one made for you.
Full policy: SUPPORT.md
Last updated: August 2026 (v1.5.1)