ASPL لباتASPL 0.7.0

Search documentation

Search starts with current English documentation · ASPL 0.7.0

Enter a complete name such as read_line, or words about a topic.

    العربية
    Source files

    Open one UTF-8 .aspl or .لبات file, up to 1 MiB, in a new draft. It stays in this browser and does not run automatically.

    Host and execution limits

    ASPL 0.7.0 · Current release

    Hosts and compilation, execution, memory, output, and time ceilings.

    On this page

    Hosts

    The browser runs compiler and VM in a local WebAssembly worker without sending source to a server. It rejects foreign imports even when unused with policy-rejection / foreign-imports-not-supported. User source modules, C interoperability, HTTP, and Raylib require native execution. The native host runs on Linux with process authority and is not a sandbox.

    Resource ceilings

    MiB = 1048576 bytes; KiB = 1024 bytes.

    Resource Native Browser
    Source bytes 16 MiB 1 MiB
    Lexical items 1048576 131072
    Syntax nodes 1048576 131072
    Syntactic nesting 256 128
    Compiler working memory 512 MiB 128 MiB
    Bytecode bytes 64 MiB 8 MiB
    Functions 65536 4096
    Foreign imports 4096 0
    Integer constants 1048576 131072
    Float constants 1048576 131072
    String references 1048576 131072
    String bytes 16 MiB 2 MiB
    Input-line payload 65536 bytes 65536 bytes
    Bytecode instructions 4194304 524288
    Registers per function 65536 8192
    Executed instructions none 10000000
    Runtime frames 4096 512
    Runtime value slots 1048576 131072
    VM-owned execution memory 256 MiB 64 MiB
    Captured output none 256 KiB
    Check wall time none 2 s
    Run wall time none 3 s
    WebAssembly linear memory n/a 256 MiB
    Concurrent worker jobs n/a 1

    none means no product ceiling; n/a means not applicable. The first observed ceiling determines the outcome.

    Memory accounting

    Source includes every byte read, including a leading byte-order mark. Compiler memory includes all live compilation allocations. Execution memory includes frames, slots, C-string loans, and live execution-owned strings, excluding immutable program storage, libraries, and foreign allocations. A structural ceiling wins over a memory ceiling at the same operation. Allocation failure below the ceiling is host-failure / allocation-failed.

    Deadlines and output

    The check clock starts when the loaded worker accepts the job; the run clock starts when it accepts execution after a successful check. Loading counts against neither clock, and waiting for user input does not count against the run clock. The first observed ceiling determines the outcome; a deadline terminates the worker with time-limit. The output ceiling rejects the entire crossing write and retains prior output as partial. Native execution has no product instruction, time, or output ceiling, subject to the instruction counter's representational maximum.

    Release scope and related reading

    This page describes ASPL 0.7.0. The linked MVP text is a historical record, not a complete description of current extensions.

    In 0.7.0 private bytecode is 7 and browser-result wire is 3. Execution memory also accounts for live list, record, and result storage. Files and input extend the historical MVP scope.

    Browser-limited loop

    Open this example only in the browser. Do not run it natively, where there is no product instruction ceiling. The first observed limit wins; a slow device can reach the time deadline before the instruction ceiling.

    Browser only · ASPL 0.7.0 · English source

    Execution: Browser only · ASPL 0.7.0

    Prerequisites:
    • No prior knowledge is required to open and check it.

    Input: No input lines are required.

    fn start_main() -> i64 {
        while true {}
        return 0;
    }
    
    Download limit.aspl

    Expected outcomes
    {
      "browser": {
        "check": "success",
        "class": "limit-stop",
        "reason": "execution-instruction-limit",
        "ceiling": 10000000,
        "output": ""
      }
    }

    Browse pages