Skip to content

Releases: ByteForgeStudioLab/RunTime-Now

RunTime-Now 2.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 05:42
5fe78de

RunTime-Now 2.1.0

Run other programs, your package.json scripts and a dev loop that restarts on save.

  • node:child_process: spawn, exec, execFile and spawnSync, execSync, execFileSync (also as child_process, and through require()). Children run with pipes or the terminal (stdio: "pipe" | "inherit" | "ignore"), cwd, env, shell, input, timeout, killSignal, maxBuffer and signal (AbortSignal). ChildProcess has stdin / stdout / stderr streams (data / end, setEncoding, pipe(), for await) and spawn / exit / close / error events; util.promisify(exec) resolves to { stdout, stderr }. Errors match Node's (spawn foo ENOENT, Command failed: … with status / code / signal). Exit is tracked with a pidfd, so a running child keeps the event loop alive and costs nothing while it waits. tests/cases/child-process.mjs prints exactly what Node 22 prints.
  • rtn run <script>: runs a "scripts" entry of the nearest package.json, like npm run / bun run: pre<name> / post<name> hooks, extra arguments passed on (quoted), node_modules/.bin and rtn itself on PATH, the npm_package_* / npm_lifecycle_event variables, and the script's exit code. rtn run alone lists the scripts. rtn run <file> still runs a file.
  • rtn --watch <file>: restarts the program when a .js / .ts / .json / .env file in the project changes (inotify; node_modules and hidden directories skipped, new directories picked up). Works with any command: rtn --watch test, rtn --watch run dev. Ctrl+C or SIGTERM stops the program too.
  • .env files: .env.local, .env.$NODE_ENV and .env are loaded into process.env before your code runs (and passed on to child processes and scripts). Quotes, multi-line values, comments, export, and ${VAR} / ${VAR:-default} expansion. Variables already in the environment win. --env-file <file> (repeatable) loads other files instead, --no-env-file turns it off.
  • rtn init asks TypeScript or JavaScript: an arrow-key menu (↑/↓ or j/k, 1/2, Enter; Esc or Ctrl+C cancels) picks the template. The JavaScript project has index.js, greet.js with JSDoc types, greet.test.js and a jsconfig.json with checkJs. --ts / --js (or -y for TypeScript) skip the question, and without a terminal — scripts, CI — TypeScript is chosen as before.

Install

curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash

Already installed? Run rtn upgrade.

Install in one line

RunTime-Now 2.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:56
1f9dd2c

RunTime-Now 2.0.0

The biggest release so far: rtn now runs npm packages, CommonJS code and your tests.

  • npm packages: imports and require() resolve through node_modules with package.json "exports" (subpaths, * patterns, conditions), "imports" (#internal), "main", scoped packages and nested node_modules. Checked with lodash, zod, dayjs, chalk 5, date-fns, uuid, nanoid, yaml, semver, picocolors, ms, kleur, mitt and eventemitter3.
  • CommonJS: require(), module.exports, __dirname / __filename, require.resolve / cache / main, createRequire(), .cjs / .cts files and CommonJS entry points. ES modules import CommonJS (module.exports = default export, its properties = named exports), and require() loads ES modules without top-level await.
  • Node built-in modules: Buffer / node:buffer, node:events (EventEmitter), node:util, node:assert (+ assert/strict), node:os, node:url, node:crypto (createHash/createHmac with sha256, sha1, md5, randomBytes, randomInt, …), node:timers (+ timers/promises), node:module, node:tty, node:process; crypto.subtle.digest. All built-ins work with or without node:. tests/cases/node-compat.mjs prints exactly what Node 22 prints.
  • rtn test: a built-in test runner with the Jest/Bun API — describe / test / it, .skip / .only / .todo / .each, hooks, async and done tests, timeouts, 30+ expect matchers, .resolves / .rejects, asymmetric matchers, mock() and spyOn(). Calm black/white/blue output, exit code 1 on failure.
  • rtn init: creates a TypeScript project that runs and tests out of the box.
  • Faster startup: the built-in JavaScript is compiled to QuickJS bytecode at build time — rtn -e 0 takes ~6 ms (1.6: ~10 ms) even though rtn has ~4,000 more lines of built-in JS.
  • process is an EventEmitter (process.on("exit")), plus process.emitWarning, global, setImmediate / clearImmediate.
  • console.log shows deep objects like Node ([Map], [MyClass] instead of [Object]).

Breaking changes

  • process.version now reports the Node version whose APIs rtn follows (v22.12.0) and process.versions.node exists, so npm packages take their Node code paths. rtn's own version: process.versions.rtn or rtn.version.
  • A .js / .ts file that uses require() / module.exports and no import / export now runs as CommonJS (previously always an ES module).
  • Bare specifiers (import x from "pkg") now resolve npm packages instead of throwing; fs, path, events… without node: are the built-in modules.

Install

curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash

Already installed? Run rtn upgrade.

Install in one line

RunTime-Now 1.6.2

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:25
9c6d2de

RunTime-Now 1.6.2

  • A calmer download screen for rtn upgrade / rtn update and the installer: the terminal's own black/white text with a single blue accent, instead of the multi-color gradient. Works on dark and light terminals alike.
  • Smoother animation: the progress bar and percentage glide toward the real value, a soft light-blue glint moves along the bar, and the bar fills to 100% before the step is checked off.
  • Installer (curl … | bash): the same look, now with a live progress bar while the release downloads; the cursor is always restored, even on errors or Ctrl+C.

Install

curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash

Already installed? Run rtn upgrade.

Install in one line

RunTime-Now 1.6.1

Choose a tag to compare

@github-actions github-actions released this 05 Oct 01:08
1aee81b

RunTime-Now 1.6.1

  • navigator global, like in Node, Deno and Bun: userAgent (rtn/1.6.1), hardwareConcurrency, platform, language / languages (from LANG).
  • rtn --help now lists the built-in modules, the main globals and a link to the docs.

Install

curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash

Already installed? Run rtn upgrade.

Install in one line

RunTime-Now 1.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 00:39
49b78a0

RunTime-Now 1.6.0

  • fetch(): HTTP/1.1 client for http: and data: URLs — redirects (follow / error / manual), AbortSignal and AbortSignal.timeout(), chunked / length / close-delimited responses, Node-style TypeError: fetch failed with a cause. Response.url / redirected, Request.signal / redirect. (https: needs TLS, not built in yet.)
  • Events: EventTarget, Event, CustomEvent, AbortController, AbortSignal (abort, timeout, any, throwIfAborted).
  • crypto.randomUUID(), crypto.getRandomValues(), structuredClone().
  • node:path (output identical to Node) and node:fs/promises (runs on a thread pool, never blocks the event loop); fs, path, fs/promises also work without the node: prefix, and fs.promises exists.
  • Runtime: a small thread pool for blocking work (DNS, file I/O); console prints DOMException like Node.
  • rtn upgrade / rtn update: animated in a terminal — gradient progress bar with speed and ETA, a checkmark per step, a summary box. Connect timeouts, clearer download errors, and Ctrl+C now cancels cleanly (temporary files removed, cursor restored, nothing changed).
  • Releases: bumping the version in CMakeLists.txt on main creates the tag and publishes the release automatically.
  • Tests: new events, fetch, crypto, path, fs-promises cases and tests/fetch_test.py; the HTTP and upgrade suites no longer use fixed ports (random failures).

Install

curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash

Already installed? Run rtn upgrade.

Install in one line

RunTime-Now 1.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 01:50

RunTime-Now 1.5.0

First public release.

  • Runtime: ES modules, top-level await, event loop (microtasks → process.nextTick → timers → epoll I/O), REPL with top-level await and TypeScript syntax.
  • TypeScript: built-in type stripper written in C++ (positions preserved, enum, parameter properties, import elision).
  • HTTP server: rtn.serve() with keep-alive, pipelining, chunked bodies, Expect: 100-continue, idle/request timeouts and request-size limits.
  • Web APIs: URL, URLSearchParams, Headers, Request, Response, TextEncoder, TextDecoder.
  • Node-style APIs: console (incl. table, group, count, trace), process, rtn:fs / node:fs (sync).
  • Install & upgrade: one-line installer (curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash), project page on GitHub Pages, rtn upgrade / rtn update -r with SHA-256 verification, static Linux x64/arm64 release binaries built by GitHub Actions.
  • Tooling: rtn strip (show TS → JS output), tools/loadgen benchmark, test suite + GitHub Actions CI.

Install

curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bash

Already installed? Run rtn upgrade.

Install in one line