Repository navigation
Releases: ByteForgeStudioLab/RunTime-Now
Releases · ByteForgeStudioLab/RunTime-Now
Release list
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,execFileandspawnSync,execSync,execFileSync(also aschild_process, and throughrequire()). Children run with pipes or the terminal (stdio: "pipe" | "inherit" | "ignore"),cwd,env,shell,input,timeout,killSignal,maxBufferandsignal(AbortSignal).ChildProcesshasstdin/stdout/stderrstreams (data/end,setEncoding,pipe(),for await) andspawn/exit/close/errorevents;util.promisify(exec)resolves to{ stdout, stderr }. Errors match Node's (spawn foo ENOENT,Command failed: …withstatus/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.mjsprints exactly what Node 22 prints.rtn run <script>: runs a"scripts"entry of the nearestpackage.json, likenpm run/bun run:pre<name>/post<name>hooks, extra arguments passed on (quoted),node_modules/.binand rtn itself onPATH, thenpm_package_*/npm_lifecycle_eventvariables, and the script's exit code.rtn runalone lists the scripts.rtn run <file>still runs a file.rtn --watch <file>: restarts the program when a.js/.ts/.json/.envfile in the project changes (inotify;node_modulesand 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..envfiles:.env.local,.env.$NODE_ENVand.envare loaded intoprocess.envbefore 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-fileturns it off.rtn initasks TypeScript or JavaScript: an arrow-key menu (↑/↓ or j/k,1/2, Enter; Esc or Ctrl+C cancels) picks the template. The JavaScript project hasindex.js,greet.jswith JSDoc types,greet.test.jsand ajsconfig.jsonwithcheckJs.--ts/--js(or-yfor 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 | bashAlready installed? Run rtn upgrade.
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 throughnode_moduleswithpackage.json"exports"(subpaths,*patterns, conditions),"imports"(#internal),"main", scoped packages and nestednode_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/.ctsfiles and CommonJS entry points. ES modules import CommonJS (module.exports= default export, its properties = named exports), andrequire()loads ES modules without top-levelawait. - Node built-in modules:
Buffer/node:buffer,node:events(EventEmitter),node:util,node:assert(+assert/strict),node:os,node:url,node:crypto(createHash/createHmacwith sha256, sha1, md5,randomBytes,randomInt, …),node:timers(+timers/promises),node:module,node:tty,node:process;crypto.subtle.digest. All built-ins work with or withoutnode:.tests/cases/node-compat.mjsprints 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 anddonetests, timeouts, 30+expectmatchers,.resolves/.rejects, asymmetric matchers,mock()andspyOn(). 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 0takes ~6 ms (1.6: ~10 ms) even though rtn has ~4,000 more lines of built-in JS. processis anEventEmitter(process.on("exit")), plusprocess.emitWarning,global,setImmediate/clearImmediate.console.logshows deep objects like Node ([Map],[MyClass]instead of[Object]).
Breaking changes
process.versionnow reports the Node version whose APIs rtn follows (v22.12.0) andprocess.versions.nodeexists, so npm packages take their Node code paths. rtn's own version:process.versions.rtnorrtn.version.- A
.js/.tsfile that usesrequire()/module.exportsand noimport/exportnow runs as CommonJS (previously always an ES module). - Bare specifiers (
import x from "pkg") now resolve npm packages instead of throwing;fs,path,events… withoutnode:are the built-in modules.
Install
curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bashAlready installed? Run rtn upgrade.
RunTime-Now 1.6.2
- A calmer download screen for
rtn upgrade/rtn updateand 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 | bashAlready installed? Run rtn upgrade.
RunTime-Now 1.6.1
navigatorglobal, like in Node, Deno and Bun:userAgent(rtn/1.6.1),hardwareConcurrency,platform,language/languages(fromLANG).rtn --helpnow lists the built-in modules, the main globals and a link to the docs.
Install
curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bashAlready installed? Run rtn upgrade.
RunTime-Now 1.6.0
fetch(): HTTP/1.1 client forhttp:anddata:URLs — redirects (follow/error/manual),AbortSignalandAbortSignal.timeout(), chunked / length / close-delimited responses, Node-styleTypeError: fetch failedwith acause.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) andnode:fs/promises(runs on a thread pool, never blocks the event loop);fs,path,fs/promisesalso work without thenode:prefix, andfs.promisesexists.- Runtime: a small thread pool for blocking work (DNS, file I/O);
consoleprintsDOMExceptionlike 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.txtonmaincreates the tag and publishes the release automatically. - Tests: new
events,fetch,crypto,path,fs-promisescases andtests/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 | bashAlready installed? Run rtn upgrade.
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-levelawaitand 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 -rwith SHA-256 verification, static Linux x64/arm64 release binaries built by GitHub Actions. - Tooling:
rtn strip(show TS → JS output),tools/loadgenbenchmark, test suite + GitHub Actions CI.
Install
curl -fsSL https://byteforgestudiolab.github.io/RunTime-Now/install | bashAlready installed? Run rtn upgrade.











