Security News
NVD Backlog Tops 20,000 CVEs Awaiting Analysis as NIST Prepares System Updates
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
@yowasp/runtime
Advanced tools
This package is an internal support package for the YoWASP project. It handles interfacing with the WebAssembly runtime and the supported execution environments (Node.js and the browser). If you are writing code that is not part of the YoWASP project, you should only use functions from the @yowasp/runtime/util
module.
All of the other JavaScript YoWASP packages use the common runtime functionality implemented here. They export the function runX
where X
is the name of the application, which can be called as:
const filesOut = await runX(args, filesIn, { stdout, stderr, decodeASCII: true });
Arguments and return value:
args
argument is an array of command line arguments, e.g. ['--version']
. The 0th argument (program name) is not provided, since it is fixed and determined by the application.filesIn
argument is an object associating filenames with contents, e.g. {"inv.v": "module inv(input a, output o); assign o = ~a; endmodule"}
. The values can be strings or instances of Uint8Array (which specify files), or, recursively, the same kind of object (which specifies a directory). The specified files and directories are placed in the root of the virtual filesystem.filesOut
return value is the same kind of object as filesIn
, representing the state of the virtual filesystem after the application terminated. It contains all of the data provided in filesIn
as well, unless these files were modified or removed by the application.Options:
stdout
and stderr
options are functions that are called with a sequence of bytes the application prints to the standard output and standard error streams respectively, or null
to indicate that the stream is being flushed. If specified as null
, the output on that stream is ignored. By default, each line of text from the combined streams is printed to the debugging console.decodeASCII
option determines whether the values corresponding to files in filesOut
are always instances of Uint8Array (if decodeASCII: false
), or whether the values corresponding to text files will be strings (if decodeASCII: true
). A file is considered a text file if it contains only bytes 0x09
, 0x0a
, 0x0d
, or those in the range 0x20
to 0x7e
inclusive. The default is decodeASCII: true
.If the application returns a non-zero exit code, the exception Exit
(exported alongside the runX
function) is raised. This exception has two properties:
code
property indicates the exit code. (Currently this is always 1 due to WebAssembly peculiarities.)files
property represents the state of the virtual filesystem after the application terminated. This property can be used to retrieve log files or other data aiding in diagnosing the error.Calling await runX()
(with no arguments) does not run the application, but ensures that all of the necessary resources are fetched and available for use. Once this is done, the additional overload, below, becomes available, which executes the application synchronously instead of returning a promise. This form should only be used in Web Workers and similar non-UI threads, in contexts where the use of an asynchronous API is infeasible.
const filesOut = runX(args, filesIn, { ..., synchronously: true });
This package also exports utilities that are useful when running other JavaScript YoWASP packages. These can be used as:
import { lineBuffered, chunked } from '@yowasp/runtime/util';
lineBuffered(processLine)
function takes a function processLine(line)
that accepts a line of text (e.g. console.log
), and returns a function processBytes(bytes)
that accepts a Uint8Array
of encoded characters (or null
, which is ignored). Each byte sequence ending in the \n
byte, not including it, is decoded as UTF-8 (invalid sequences are substituted with a replacement character) and passed to processLine()
.chunked(text)
function takes text and returns a function getChunk(byteLength)
that slices off a Uint8Array
of UTF-8 code points of the requested length and returns it. Once it exhausts the input, getChunk()
returns null
whenever it is called.This package is covered by the ISC license.
FAQs
Common runtime for YoWASP packages
We found that @yowasp/runtime demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.