Skip to content

Instantly share code, notes, and snippets.

@jeremy-code
Last active April 23, 2025 07:15
Show Gist options
  • Save jeremy-code/e0aa66a5b92ff50fdd6b63014f84b522 to your computer and use it in GitHub Desktop.
Save jeremy-code/e0aa66a5b92ff50fdd6b63014f84b522 to your computer and use it in GitHub Desktop.
Runtime methods in Emscripten

A list of (some) of the runtime methods avaliable in Emscripten. You can also find some more in https://emscripten.org/docs/api_reference/preamble.js.html There's a lot more -- search repo:emscripten-core/emscripten path:src/lib/lib*.js with GitHub search to see the avaliable paths, but these are the autogenerated types:

declare namespace RuntimeExports {
    /**
     * @param {string|null=} returnType
     * @param {Array=} argTypes
     * @param {Arguments|Array=} args
     * @param {Object=} opts
     */
    function ccall(ident: any, returnType?: (string | null) | undefined, argTypes?: any[] | undefined, args?: (Arguments | any[]) | undefined, opts?: any | undefined): any;
    /**
     * @param {string=} returnType
     * @param {Array=} argTypes
     * @param {Object=} opts
     */
    function cwrap(ident: any, returnType?: string | undefined, argTypes?: any[] | undefined, opts?: any | undefined): (...args: any[]) => any;
    /**
     * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the
     * emscripten HEAP, returns a copy of that string as a Javascript String object.
     *
     * @param {number} ptr
     * @param {number=} maxBytesToRead - An optional length that specifies the
     *   maximum number of bytes to read. You can omit this parameter to scan the
     *   string until the first 0 byte. If maxBytesToRead is passed, and the string
     *   at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the
     *   string will cut short at that byte index (i.e. maxBytesToRead will not
     *   produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing
     *   frequent uses of UTF8ToString() with and without maxBytesToRead may throw
     *   JS JIT optimizations off, so it is worth to consider consistently using one
     * @return {string}
     */
    function UTF8ToString(ptr: number, maxBytesToRead?: number | undefined): string;
    /**
     * @param {number} ptr
     * @param {string} type
     */
    function getValue(ptr: number, type?: string): any;
    /**
     * @param {number} ptr
     * @param {number} value
     * @param {string} type
     */
    function setValue(ptr: number, value: number, type?: string): void;
    function lengthBytesUTF8(str: any): number;
    function stringToUTF8(str: any, outPtr: any, maxBytesToWrite: any): any;
    function stringToUTF8Array(str: any, heap: any, outIdx: any, maxBytesToWrite: any): number;
    function stringToNewUTF8(str: any): any;
    function writeArrayToMemory(array: any, buffer: any): void;
    function getNativeTypeSize(type: any): any;
    function intArrayToString(array: any): string;
    function intArrayFromString(arg0: string, arg1?: boolean | undefined, arg2?: number | undefined): any;
    function warnOnce(text: any): void;
    /** @param {string=} sig */
    function addFunction(func: any, sig?: string | undefined): any;
    function removeFunction(index: any): void;
    function allocate(slab: any, allocator: any): any;
    function AsciiToString(ptr: any): string;
    function stringToAscii(str: any, buffer: any): void;
    function UTF16ToString(ptr: any, maxBytesToRead: any): any;
    function stringToUTF16(str: any, outPtr: any, maxBytesToWrite: any): number;
    function lengthBytesUTF16(str: any): number;
    function UTF32ToString(ptr: any, maxBytesToRead: any): string;
    function stringToUTF32(str: any, outPtr: any, maxBytesToWrite: any): number;
    function lengthBytesUTF32(str: any): number;
    let allocateUTF8: any;
    let allocateUTF8OnStack: any;
    /** @deprecated @param {boolean=} dontAddNull */
    function writeStringToMemory(string: any, buffer: any, dontAddNull?: boolean | undefined): void;
    /** @param {boolean=} dontAddNull */
    function writeAsciiToMemory(str: any, buffer: any, dontAddNull?: boolean | undefined): void;
    function getTempRet0(val: any): any;
    function setTempRet0(val: any): any;
    let run: any;
    function getWasmTableEntry(funcPtr: any): any;
    function setWasmTableEntry(idx: any, func: any): void;
    let hasExportedSymbol: any;
    function stackAlloc(sz: any): any;
    let FS_createPath: any;
    function FS_createDataFile(parent: any, name: any, fileData: any, canRead: any, canWrite: any, canOwn: any): void;
    function FS_createPreloadedFile(parent: any, name: any, url: any, canRead: any, canWrite: any, onload: any, onerror: any, dontCreateFile: any, canOwn: any, preFinish: any): void;
    function FS_unlink(path: any): any;
    let FS_createLazyFile: any;
    let FS_createDevice: any;
    let addRunDependency: any;
    let removeRunDependency: any;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment