dfkup
A scripting language with VM + JIT compiler
Summary
| Latest Version | 0.1.0 |
|---|---|
| License | LGPL-3.0-or-later |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-09-05 07:27 |
Tags
Authors
- OpenPeeps
Installation
nimble install dfkup
choosenim install dfkup
git clone https://github.com/dfkup/dfkup
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| dfkup | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Dependencies
| Package | Version | Optional |
|---|---|---|
| nim >= | 2.2.0 | No |
| kapsis >= | 0.3.4 | No |
| vancode >= | 0.2.6 | No |
| openparser >= | 0.1.9 | No |
| marvdown >= | 0.1.0 | No |
| mimedb >= | 0.1.0 | No |
| supranim >= | 0.1.9 | No |
| blackpaper >= | 0.1.0 | No |
| e2ee >= | 0.1.0 | No |
| money >= | 0.1.0 | No |
| chopchop >= | 0.1.0 | No |
| voodoo >= | 0.1.9 | No |
Source
| Repository | https://github.com/dfkup/dfkup |
|---|---|
| Homepage | https://github.com/dfkup/dfkup |
| Registry Source | nimble_official |
README

A fast scripting language
Typed • Stack-based VM • JIT Compiler
nimble install dfkup
VSCode Extension | API reference
What is this?
This is DFkup, /diː ɛf kʌp/ (or simply: "dee-ef-cup") • A functional, indent-based, scripting language, designed to be enjoyable, easy to learn and work with so you don't f*ck up!
[!NOTE] Totally unstable API!
Key Features
- Interpreted language with runtime type checking
- Compiled to bytecode and executed on a Stack-based Virtual Machine
- JIT Compilation powered by DynASM JIT assembling code at runtime!
- Pratt parser for expressive and flexible syntax
- Compilation policy settings to restrict features: deny std modules,
forloops, conditionals, or any other language construct - Control flow:
if/elif/else,forloops,whileloops - Variable declarations:
var(mutable),const(compile-time) - Function definitions with named parameters,
returntypes, and generics - First-class function calls with positional and named arguments
- Data literals: integers, floats, strings (single/double/triple-quoted, backtick)
- String interpolation with $var syntax
- Array and object storage (JSON-like) literals
- Built-in JSON support: parse, dump, pretty-print, field access
- Doc comments (
##) and line comments (#) - Powered by VanCode language framework
- Written in Nim
Installation
You need Nim.
Examples
A scripting language with VM + JIT compiler
(c) OpenPeeps | LGPL-3.0-or-later License
Build Version: 0.1.0
Scripting
run <script:path> Run a DFkup script file
--nojit:bool
ast <script:path> Generate AST from a DFkup script file
--dumptree:bool
Benchmarks
fib_recursive:
fib_recursive dfkup Time (mean ± σ): 7.3 ms ± 1.0 ms
fib_recursive node Time (mean ± σ): 93.2 ms ± 11.9 ms
fib_recursive python3 Time (mean ± σ): 1.017 s ± 0.016 s
fib_recursive ruby Time (mean ± σ): 521.0 ms ± 4.0 ms
fib_recursive luajit Time (mean ± σ): 76.5 ms ± 2.2 ms
fib_recursive php83 Time (mean ± σ): 520.2 ms ± 11.5 ms
nested_loops:
nested_loops dfkup Time (mean ± σ): 72.5 ms ± 0.5 ms
nested_loops node Time (mean ± σ): 40.5 ms ± 0.4 ms
nested_loops python3 Time (mean ± σ): 30.9 ms ± 1.0 ms
nested_loops ruby Time (mean ± σ): 81.6 ms ± 2.6 ms
nested_loops luajit Time (mean ± σ): 6.5 ms ± 0.4 ms
nested_loops php83 Time (mean ± σ): 25.3 ms ± 0.9 ms
prime_sieve:
prime_sieve dfkup Time (mean ± σ): 113.8 ms ± 1.4 ms
prime_sieve node Time (mean ± σ): 40.1 ms ± 0.7 ms
prime_sieve python3 Time (mean ± σ): 26.6 ms ± 1.1 ms
prime_sieve ruby Time (mean ± σ): 73.6 ms ± 0.7 ms
prime_sieve luajit Time (mean ± σ): 6.0 ms ± 0.5 ms
prime_sieve php83 Time (mean ± σ): 24.1 ms ± 0.6 ms
string_concat:
string_concat dfkup Time (mean ± σ): 15.4 ms ± 0.7 ms
string_concat node Time (mean ± σ): 39.4 ms ± 0.4 ms
string_concat python3 Time (mean ± σ): 25.1 ms ± 0.8 ms
string_concat ruby Time (mean ± σ): 73.5 ms ± 1.3 ms
string_concat luajit Time (mean ± σ): 11.5 ms ± 0.3 ms
string_concat php83 Time (mean ± σ): 23.1 ms ± 0.7 ms
tail_recursive:
tail_recursive dfkup Time (mean ± σ): 548.4 ms ± 1.4 ms
tail_recursive node CRASHED
tail_recursive python3 CRASHED
tail_recursive ruby CRASHED
tail_recursive luajit CRASHED
tail_recursive php83 Time (mean ± σ): 23.2 ms ± 0.4 ms
range_sum:
range_sum dfkup Time (mean ± σ): 31.3 ms ± 2.6 ms
range_sum node Time (mean ± σ): 49.9 ms ± 1.2 ms
range_sum python3 Time (mean ± σ): 717.9 ms ± 19.9 ms
range_sum ruby Time (mean ± σ): 421.2 ms ± 7.5 ms
range_sum luajit Time (mean ± σ): 13.6 ms ± 0.4 ms
range_sum php83 Time (mean ± σ): 93.9 ms ± 1.8 ms
Notes
DFkup is built on top of VanCode, a modular CodeGen, VM and JIT compiler written in Nim. The JIT compiler is powered by DynASM.
Roadmap
- [ ] Add more tests
- [ ] A stable VM
- [ ] A stable JIT compiler
- [ ] Add more benchmarks (including languages)
- [ ] Publish a Booyaka Documentation
- [ ] Implement VanCode package manager API
❤ Contributions & Support
- 🐛 Found a bug? Create a new Issue
- 👋 Wanna help? Fork it!
![]() |
Switch to Open-Source LLMs via OpenCode GO, choosing from a variety of powerful models such as DeepSeek, Qwen, Kimi, GLM-5, MiniMax, MiMo. 🍕 Use our referral link to get started! |
🎩 License
LGPLv3 license. Made by Humans from OpenPeeps.
Copyright OpenPeeps & Contributors — All rights reserved.
