Win96 Run Time, sometimes abbreviated as WRT, is the runtime behind the Windows 96 binaries.
Features
A script executed with the WRT will behave differently than a normal script. Firstly, this script will be able to use FS
, FSUtil
, WApplication
, StandardWindow
, registerApp
and deregisterApp
without having to use the w96
namespace before. these script will also be able to use the WRT module API where the module
object is available for exporting data and include
for getting module exported data. Scripts executed with the WRT will also be executed in an asyncronous context, so it is possible to use top-level await
.
Usage
To execute a script using the WRT, there are 2 options:
- Start the script with the following shebang:
//!wrt
- Run the
wrtrun
command with the path to the script
History
The Windows Runtime was introduced in Windows 96 v2 Service Pack 2.
"A set of APIs which allow you to easily make apps and include modules, without worrying about the filesystem and stuff like that." Windows 96 devs in the rel2sp2 changelog.
Shebang
The shebang is the first line of a binary. The WRT shebang starts with //!wrt
. The shebang denotes that this regular file is a WRT bin, and must be the very first line in any WRT application.
The binary specification (BSPEC)
The binary specification (BSPEC) is a way to describe metadata for a WRT bin. It always follows the shebang on the same line, where the cumulative line size must not exceed 256 characters.
The BSPEC is a simple JSON object prefixed with $BSPEC:
and contains the following fields:
icn
- The name of the icon to use.cpr
- The copyright holder of the application.dsc
- A basic description of the application.frn
- The display name of the application.aut
- The application author.ssy
- The subsystem to use for this application. Can either begui
orcli
.ver
- The version of the application.
Below is an example of a binary specification declaration for the File Explorer application.
//!wrt $BSPEC:{"icn":"apps/explorer","cpr":"Copyright (C) Windows 96 Team 2021.","dsc":"System File Explorer","frn":"Explorer","ver":1}
Modules
A module is a file called by a script in the WRT. Those files will also run in WRT and will have access to WRT features. In addition to this, modules can export data that can be used in other scripts and modules. A module can be called with the include
function. It returns a Promise with the module exports.
The include
function will returns:
- The
module.exports
of a JavaScript file. - The parsed content of a JSON file.
- The raw content of any other file type.
Global Modules
Modules can also be global by declaring a JSON manifest in C:/system/local/lib/modules
in the following format: MODULE.json
where MODULE
is the name of the module when including it. The content of this file should look like this:
{
"libPath": "C:/path/to/module.js"
}
Then, the module can be accessed from any file by doing include("MODULE")
.