fenrir-runtime
v0.3.0
Published
Fenrir — a modern JavaScript-based runtime
Readme
Fenrir
A Lightweight Runtime
🌐 Türkçe
Fenrir is a minimal scripting runtime that runs .fnr files using a clean, expressive syntax on top of Node.js. It ships with a built-in standard library, package management, and a snapshot/rollback archive system.
Features
Clean syntax fn, use, log — no verbose JS boilerplate
Built-in stdlib File I/O, HTTP, math, arrays — globally available, no imports
Package manager Install and remove npm packages via fenrir install
Archive system Snapshot your project and roll back at any timeInstallation
Via npm
npm install -g fenrir-runtimeVia GitHub
git clone https://github.com/yourusername/fenrir.git
cd fenrir
npm install
npm linkUsage
fenrir main.fnr # Run a file
fenrir install <pkg> # Install a package
fenrir remove <pkg> # Remove a package
fenrir archive "message" # Save a snapshot
fenrir archives # List snapshots
fenrir rollback # Restore latest snapshot
fenrir rollback <id> # Restore specific snapshot
fenrir clean <n> # Keep last n snapshots
fenrir help # Show helpSyntax
.fnr files are mostly JavaScript with a cleaner surface:
use express from 'express'
const app = express()
const PORT = env('PORT', '3000')
fn greet(name) {
log(`Hello, ${name}!`)
}
app.get('/', fn(req, res) {
res.json({ message: 'Hello from Fenrir' })
})
app.listen(PORT, fn() {
log(`🐺 Server running on http://localhost:${PORT}`)
})| Fenrir | JavaScript |
|--------|------------|
| fn name() {} | function name() {} |
| fn(args) {} | function(args) {} |
| use X from 'mod' | import X from 'mod' |
| log() | console.log() |
| err() | console.error() |
| warn() | console.warn() |
| info() | console.info() |
Standard Library
All functions are globally available — no imports needed.
| Category | Functions |
|----------|-----------|
| I/O | readFile writeFile appendFile fileExists readDir readJSON writeJSON mkdir rm |
| HTTP | get post |
| System | exec run spawn env args exit cwd |
| Time | now time sleep bench |
| Array | range pick shuffle chunk unique flatten sum avg min max clamp |
| String | capitalize truncate pad repeat |
| Object | keys values entries merge clone |
| Async | all race retry |
| Types | isString isNumber isBool isArray isObject isNull isDefined |
| Math | rand randInt abs ceil floor round sqrt pow PI E |
Archive System
fenrir archive "before refactor" # Save snapshot
fenrir archives # List all snapshots
fenrir rollback # Restore latest
fenrir rollback 2024-01-15_14-30-00 # Restore specific
fenrir clean 10 # Keep last 10, delete restDebug Mode
FENRIR_DEBUG=1 fenrir main.fnrPrints the transformed JavaScript before execution.
Requirements
- Node.js v18 or higher
