Questions?
Keep asking.
Get to know ShipMB.
The short answers are here.
For everything else, ask below.
Answers from ShipMB documentation.
Clear about what works today—and what’s still ahead.
What is ShipMB?
ShipMB is a local-first programming and orchestration layer. ShipMBLang lets you express supported programs in English and compile them into bytecode. Its identity and declared capabilities come from runtime code, independently of any model.
Read the source ↗Can I write programs in ordinary English?
You can write supported English prose as the maintained program. The compiler recognizes a defined grammar: it does not understand arbitrary English. Ambiguous meaning requires clarification; unsupported meaning gets an explanation.
Read the source ↗Do I need an AI model or API key?
No model or API key is required for deterministic compilation, bytecode output, or supported local runtime use. Optional chat and publishing tools are separate choices.
Read the source ↗How do I get started?
The documented Windows workflow uses Python 3.11+, both project checkouts, and an optional manually installed VS Code extension. Install the language and compiler into the same Python environment. Repository and extension access currently come from the maintainer; a public Marketplace installation is not documented.
Read the source ↗How are ShipMBLang and ShipMBCompiler different?
ShipMBLang is the language-facing package. Its legacy pipeline remains the default. The separately installed ShipMBCompiler supplies explicit direct and IR pipelines. Direct/general artifacts run through the compiler runtime, not the legacy language runtime. There is no automatic pipeline fallback.
Read the source ↗What can I run today?
The general profile runs supported pure computation: typed values, lists, arithmetic, conditions, loops, and typed functions with recursion. The checked-in sum example returns 27; the factorial example returns 720. Output is captured locally, without live adapters.
Read the source ↗Can ShipMB control a real Roku TV?
The direct Roku profile is a bounded TV-pack domain. Its run mode simulates events; it does not control or install anything on a real TV. Guarded actions need a fresh ability checker, and absent checks skip those actions with an explanation.
Read the source ↗Does it compile to native machine code?
The current output is ShipMBLang bytecode. Naming Python, Rust, or another target records a program-model declaration; it does not emit that language's native source or select a native CPU backend.
Read the source ↗Explore the source library · 30 documented topics
What is ShipMB?
language / README.md / Model-neutral runtime identity
ShipMBLang owns ShipMB's identity, orchestration role, and declared device-family context at runtime. Compilation, execution, MCP, and `printurf` remain usable without a language model. Optional chat providers receive the same ShipMB system context, so model weights do not define what ShipMB is or what it may claim to do. No provider is selected by default. To opt into a local OpenAI-compatible endpoint such as Ollama, configure `SHIPMB_MODEL_PROVIDER=openai_compatible`, `SHIPMB_MODEL_BASE_URL`, and `SHIPMB_MODEL_NAME`. The legacy Drip adapter is available only through explicit `SHIPMB_MODEL_PROVIDER=drip` configuration. The guiding statement is: ```text If the user can explain the program end to end in natural language syntax shipmb should be able to understand and convert that into machine code to run the programs. ``` For v0.1, the concrete machine target is ShipMBLang bytecode executed by the local runtime. Native CPU code can come later.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
Can I write programs in ordinary English?
compiler / README.md / What distinguishes ShipMB's approach
ShipMB keeps the user's supported English prose as the maintained program and combines direct compilation with source-bound clarification, contextual memory, and explicit guarded execution. These are architectural features, not a claim that ShipMB is the first or only language to provide them. - **Direct compilation:** English -> typed syntax and resolved names -> final ShipMB bytecode. No Core source, generated Python/JavaScript, TAC, or separate intermediate instruction list is produced by this path. The syntax tree is still an internal representation; `target_code` contains the final VM artifact, not native CPU code or another source-language compilation step. - **Clarification tied to source:** focused API answers identify a question and source revision. Stale answers cannot silently apply to changed prose; the revised program is validated before bytecode is emitted. - **Meaning remembered in context:** confirmed interpretations are reused only after compatibility and project/binding checks. Similar wording is a suggestion, not confirmation. Memory does not autonomously rewrite grammar or train models. - **Ability checked at execution:** guarded actions check current ability through an injected checker, skip with a reason when unable, and continue independent actions. This is verified with simulated outcomes in the Roku profile; it is not a claim of completed general device control. - **Explicit outcomes:** supported meaning compiles; ambiguity requests clarification; unsupported meaning gets an explanation. There is no silent fallback to a different compilation pipeline. The current frontend recognizes a defined English grammar, not arbitrary prose. Broader understanding requires reviewed grammar changes and regression tests. Remembering meaning never grants execution permission or proves current device availability. General app, messaging, camera and cross-device integrations remain planned work. The intended distinction is how these features work together; historical uniqueness has not been established.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Do I need an AI model or API key?
language / README.md / Open-Source Offline/Online Default
ShipMBLang is deterministic and runs locally with no API keys. Training/export tools write local artifacts by default; Hugging Face publishing is optional and never required for compilation, bytecode output, or local runtime use. See OPEN-SOURCE-OFFLINE.md. ShipMBLang is the natural language programming layer for ShipMB. It lets users write a program as ordinary instructions in a code editor, then compile those instructions into a runnable bytecode form.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
How do I get started?
compiler / README.md / Test ShipMBLang in VS Code (Windows)
You need Python 3.11 or newer, VS Code 1.92 or newer, access to both private
repositories, and the ShipMBLang VSIX extension. ShipMBLangCore is not required
for this direct/general workflow. The extension is currently installed manually.
1. Clone both repositories into the same parent directory (or use your existing
current checkouts):
```powershell
git clone https://github.com/qramarq/shipmblang.git
git clone https://github.com/qramarq/shipmblang-compiler.git
cd shipmblang
```
2. In VS Code, use **File > Open Folder** to open the `shipmblang` checkout and
trust your workspace. Open **Terminal > New Terminal** with PowerShell.
Confirm `python --version` is 3.11 or newer, then install both packages into
the same environment:
```powershell
python -m venv .venv
& .venv/Scripts/python.exe -m pip install -e ../shipmblang-compiler/shipmbcompiler
& .venv/Scripts/python.exe -m pip install -e .
```
These commands assume sibling clones with the names above. Adjust paths for
existing checkouts. Environment activation is not required.
3. Obtain `shipmblang-0.3.0.vsix` from the project maintainer, or build it from
the language checkout with Node.js 22+ and npm installed:
```powershell
cd extensions/vscode-shipmblang
npx --yes @vscode/vsce package --no-dependencies --out shipmblang-0.3.0.vsix
cd ../..
```
Press **Ctrl+Shift+P**, select **Extensions: Install from VSIX**, select that
file, and reload VS Code if prompted. The generated VSIX is not committed to
the repository or published to the Marketplace.
4. Press **Ctrl+Shift+P** and choose **Preferences: Open Workspace Settings
(JSON)**. Merge these entries into the existing settings object, replacing
`C:/path/to/shipmblang` with your actual language checkout path:
```json
{
"shipmblang.pythonPath": "C:/path/to/shipmblang/.venv/Scripts/python.exe",
"shipmblang.projectRoot": "C:/path/to/shipmblang",
"shipmblang.pipeline": "direct",
"shipmblang.profile": "general",
"shipmblang.memory": false
}
```
Use a full executable path, not a command with arguments. An old
`shipmblang.projectRoot` setting can load an outdated source checkout even
when the Python environment is correct. Override it here with the current
checkout; remove obsolete user-level settings when no longer needed.
5. Press **Ctrl+Shift+E** to open Explorer on the left. Expand `examples` and
open `general_functions.shipmb`. With no text selected, press
**Ctrl+Shift+P** and run **ShipMBLang: Run Natural Program**. Open
**View > Output** and select **ShipMBLang** in the dropdown. Expect `720`.
**ShipMBLang: Compile Natural Program** shows compiler output without running.
If text is selected, only the selection is submitted.
6. To test diagnostics, create `test.smb` containing `Show missing.` and run
**ShipMBLang: Compile Natural Program**. Press **Ctrl+Shift+M** to see the
undefined-name diagnostic in Problems.
For a terminal check from the language checkout:
```powershell
& .venv/Scripts/python.exe -X utf8 -m shipmblang run --file examples/general_functions.shipmb --pipeline direct --profile general --memory off
```
The terminal returns JSON whose `runtime.stdout` is `720\n`. If you see
`No module named shipmblang`, check the selected interpreter and installation.
If options such as `--pipeline` or `--memory` are unrecognized, check for an old
`projectRoot` override. If commands are unavailable, check workspace trust and
that the extension is enabled.
Current VS Code support includes compile/run commands, basic syntax highlighting,
and Problems diagnostics. Autocomplete, rename, debugging, and a language server
are not implemented. General programs must use the implemented grammar; arbitrary
English is not guaranteed to compile. Other IDEs can invoke the installed CLI.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bHow are ShipMBLang and ShipMBCompiler different?
language / README.md / Optional direct English compiler
On Python 3.11 or newer, install the separately named compiler distribution with `python -m pip install "shipmblang[direct]"`. Both distributions can coexist; the basic language package still has no required dependencies. ```bash python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline direct --memory off python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline direct --format json --memory off python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline ir --memory off ``` `legacy` remains the default and uses the existing language compiler. `direct` delegates English interpretation and bytecode generation to shipmbcompiler; `ir` explicitly selects that compiler's older IR pipeline. There is no automatic fallback. Direct/IR output defaults to compiler bytecode; JSON includes diagnostics and clarification questions. Core output is available through `legacy`. A direct result needing clarification or reporting unsupported behavior exits unsuccessfully and prints its full explanation, even when bytecode output was requested. Answer a clarification by keeping the original source and supplying explicit English with `--interpretation`: ```bash python -m shipmblang compile "Control it like a remote." --pipeline direct --interpretation "Use the tv pack library in shipmblang to control this Roku TV like a remote." --format json --memory off ``` The compiler validates that interpretation before generating bytecode. It does not silently substitute a guessed meaning. With memory enabled, confirmed meaning can be recorded by the compiler. This flag is supported only by the direct pipeline. Python callers can use `shipmblang.compile_direct_program(...)`. Its result keeps the compiler schema, including `status`, `clarifications`, and `target_code`. It accepts explicit bindings, clarification answers and an optional model-provider callback; no model is selected automatically. Compiler bytecode is not passed to the legacy language runtime. `run --pipeline direct` uses the compiler's validated artifact runner. Its Roku profile is an event sandbox, not a live-device controller. The opt-in `general` profile requires a profile-capable `shipmbcompiler>=0.2.1,<0.3` build. It compiles supported pure computation into version 0.3 compiler bytecode. For example, [general_sum.shipmb](examples/general_sum.shipmb) adds the values above 10 in the list 3, 12, 15 and captures `27` followed by a newline: ```bash python -m shipmblang run --file examples/general_sum.shipmb --pipeline direct --profile general --memory off ``` The JSON result contains `runtime.stdout` and `runtime.output`. Python callers use `compile_direct_program(source, profile="general", memory=False)` to compile. The [function example](examples/general_functions.shipmb) uses a typed recursive factorial function and produces `720`: ```bash python -m shipmblang run --file examples/general_functions.shipmb --pipeline direct --profile general --memory off ``` `--profile` is only valid with `--pipeline direct`; the default direct profile remains `roku`, and existing legacy/IR defaults are unchanged. General artifacts run through the compiler's version-aware loader, not the legacy language runtime. This initial profile supports its implemented computation subset; it does not provide arbitrary prose interpretation or live storage, API, UI, or device effects. Source submissions and outcomes are captured locally when compiler memory is installed. This includes unsuccessful interpretations and original source text. `--memory off` or API `memory=False` always disables capture. Otherwise an explicit `memory_path` or `--memory-path` (also `--memory-db`) enables that database even when `SHIPMB_MEMORY=off`. Without an explicit path, `SHIPMB_MEMORY=off` disables capture; `SHIPMB_MEMORY_DB` selects the default database when capture is enabled. Otherwise the compiler's local user-data location is used. Legacy capture failures, including a missing optional compiler, warn without discarding the compilation result. Use a disposable database or disable memory for tests and sensitive inputs.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
What can I run today?
compiler / README.md / General computation
Compiler 0.2.1 adds an explicit general profile with version 0.3 bytecode:
```powershell
python shipmbc.py examples/general_sum.smb --pipeline direct --profile general --memory off --run
python shipmbc.py examples/general_functions.smb --pipeline direct --profile general --memory off --run
```
The examples return `27` and `720`. This profile performs pure computation and captures
output without live adapters. A weather lookup was used as a temporary integration
experiment and is not part of the shipped language or build requirements.
General syntax currently supports typed integer/boolean/text values, homogeneous
lists, immutable bindings, explicit mutable variables, arithmetic/comparisons,
scoped `If`/`Otherwise`, `For each` and `While`, typed functions with recursion,
and captured `Show` output. Function signatures resolve before calls; ordinary
variables initialize in source order. Parameters are immutable and calls have
separate local scopes, without closures. Every function path must return its
declared type. A maximum of 64 call frames includes the root program.
End blocks explicitly with `End the condition` or `End the loop`. Arithmetic
grouping must be explicit when multiple operators could be interpreted differently.
The VM validates bytecode before execution and bounds steps, integers, collections,
stack size and output. Compilation stays independent of Core, IR and runtime imports.
Modules, richer data, persistence, async and UI remain roadmap work.
For focused API clarification, submit `clarification_answers={"source_revision":
result["source_revision"], "answers": {question_id: "English replacement"}}`.
Answers apply only to the identified source revision and question span. The result
retains original source, revised English and replacement provenance, and validates
the whole revised program before emitting bytecode. Whole-program `interpretation`
answers remain supported. Confirmed memories and parse caches are profile-isolated.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bCan ShipMB control a real Roku TV?
compiler / README.md / Direct English compiler trial
The opt-in direct pipeline compiles English into a syntax tree, resolves symbols, and emits versioned bytecode without generating Core text or TAC/IR: ```powershell python shipmbc.py examples/roku_tv.smb --pipeline direct python shipmbc.py examples/roku_tv.smb --pipeline direct --memory off --run python scripts/check_roku_prose.py --pipeline direct --strict python -m unittest discover ``` The compiler distribution is `shipmbcompiler` (Python 3.11+); its import name and `shipmbc` command are unchanged. The separate `shipmblang` distribution provides `shipmblang compile --pipeline direct|legacy|ir`. Existing defaults remain `ir` here and `legacy` in the language package during the trial. Direct results are `compiled`, `needs_clarification`, or `unsupported`. Unresolved requests emit no bytecode and never switch pipelines automatically. Supply a complete English restatement with `--interpretation`, or use `--interactive` in a terminal. The API is `compile_direct_program(source, ...)`. Memory is on by default at `%LOCALAPPDATA%/ShipMB/memory.sqlite3`. Override with `SHIPMB_MEMORY_DB` or `--memory-db`; use `--memory off` for disposable work. Submissions, failures, clarification history, and confirmed meanings persist. Only validated confirmations in matching project/binding context are reusable; similar phrases remain suggestions. See [shared memory](docs/brain/memory.md) for search, confirmation, export/import, backup, and cache commands. Ability conditions are enforced by versioned guarded actions. Runtime callers inject a fresh ability checker; an absent checker skips guarded actions with an explanation. `--run` remains a simulation: it does not control or install anything on a real TV. A remembered result never establishes current ability. The default direct Roku profile covers a bounded TV-pack domain, not arbitrary English. The separate general profile is described below. The regression suite includes 40 original requests, 40 independently authored paraphrases, and 42 adversarial cases. The paraphrases were subsequently used to improve the parser, so a new unseen corpus is still needed for generalization measurement. Seven simulated ability scenarios run against all 40 original requests. Optional model assistance is API-only, disabled by default, and can propose English interpretations only; user confirmation is required. Before changing the default, collect at least 20 independently written real-use examples over a release cycle and resolve incorrect interpretations. Core removal remains a separate decision after that trial.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Does it compile to native machine code?
language / README.md / Natural Programming Syntax
ShipMBLang now recognizes natural descriptions of the programming structure used by major languages. A `.shipmb` file can read like an English design paper while still listing libraries, variables, functions, classes, methods, control flow, and output. Supported language targets include Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust, Ruby, PHP, Swift, Kotlin, Scala, R, SQL, and shell scripts. Common aliases such as `js`, `ts`, `golang`, `c sharp`, and `c plus plus` are accepted. Example: ```text Use Python. Import math. Declare an integer variable total set to 0. Define a function add_item that takes price and returns total plus price. Create a class Cart with property items and method add_item that takes item and returns items. For each item in items then call add_item with item. Show program. ``` Expected Core: ```shiplang use shipmb target language "python" import "math" let total: int = 0 fn add_item(price) -> total plus price: pass class Cart: property Cart.items method Cart.add_item(item) -> items: pass for item in items: call add_item with item program |> show ``` The runtime stores these declarations in the program model and can return them with `run --format json`. Native process execution remains opt-in future work; v0.1 records and exposes the compiled bytecode safely. Selecting a target such as Python or Rust updates the program model; it does not yet emit native source or switch away from the ShipMBLang bytecode backend.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
What is printurf?
language / README.md / printurf
`printurf()` is ShipMBLang's codebase-aware debugging primitive. It accepts raw errors, diagnostics, stack traces, source context, or project files, then returns a structured explanation: ```text Error: [what failed]. Cause: [why it failed here]. Fix: [what to change]. ``` CLI examples: ```bash python -m shipmblang printurf app.py --error "NameError: name 'total' is not defined" python -m shipmblang printurf src/ --max-files 40 python -m shipmblang printurf src/ --error "TypeError: unsupported operand type(s)" --format json ```Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
Does ShipMB remember my programs?
language / README.md / Optional direct English compiler
On Python 3.11 or newer, install the separately named compiler distribution with `python -m pip install "shipmblang[direct]"`. Both distributions can coexist; the basic language package still has no required dependencies. ```bash python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline direct --memory off python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline direct --format json --memory off python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline ir --memory off ``` `legacy` remains the default and uses the existing language compiler. `direct` delegates English interpretation and bytecode generation to shipmbcompiler; `ir` explicitly selects that compiler's older IR pipeline. There is no automatic fallback. Direct/IR output defaults to compiler bytecode; JSON includes diagnostics and clarification questions. Core output is available through `legacy`. A direct result needing clarification or reporting unsupported behavior exits unsuccessfully and prints its full explanation, even when bytecode output was requested. Answer a clarification by keeping the original source and supplying explicit English with `--interpretation`: ```bash python -m shipmblang compile "Control it like a remote." --pipeline direct --interpretation "Use the tv pack library in shipmblang to control this Roku TV like a remote." --format json --memory off ``` The compiler validates that interpretation before generating bytecode. It does not silently substitute a guessed meaning. With memory enabled, confirmed meaning can be recorded by the compiler. This flag is supported only by the direct pipeline. Python callers can use `shipmblang.compile_direct_program(...)`. Its result keeps the compiler schema, including `status`, `clarifications`, and `target_code`. It accepts explicit bindings, clarification answers and an optional model-provider callback; no model is selected automatically. Compiler bytecode is not passed to the legacy language runtime. `run --pipeline direct` uses the compiler's validated artifact runner. Its Roku profile is an event sandbox, not a live-device controller. The opt-in `general` profile requires a profile-capable `shipmbcompiler>=0.2.1,<0.3` build. It compiles supported pure computation into version 0.3 compiler bytecode. For example, [general_sum.shipmb](examples/general_sum.shipmb) adds the values above 10 in the list 3, 12, 15 and captures `27` followed by a newline: ```bash python -m shipmblang run --file examples/general_sum.shipmb --pipeline direct --profile general --memory off ``` The JSON result contains `runtime.stdout` and `runtime.output`. Python callers use `compile_direct_program(source, profile="general", memory=False)` to compile. The [function example](examples/general_functions.shipmb) uses a typed recursive factorial function and produces `720`: ```bash python -m shipmblang run --file examples/general_functions.shipmb --pipeline direct --profile general --memory off ``` `--profile` is only valid with `--pipeline direct`; the default direct profile remains `roku`, and existing legacy/IR defaults are unchanged. General artifacts run through the compiler's version-aware loader, not the legacy language runtime. This initial profile supports its implemented computation subset; it does not provide arbitrary prose interpretation or live storage, API, UI, or device effects. Source submissions and outcomes are captured locally when compiler memory is installed. This includes unsuccessful interpretations and original source text. `--memory off` or API `memory=False` always disables capture. Otherwise an explicit `memory_path` or `--memory-path` (also `--memory-db`) enables that database even when `SHIPMB_MEMORY=off`. Without an explicit path, `SHIPMB_MEMORY=off` disables capture; `SHIPMB_MEMORY_DB` selects the default database when capture is enabled. Otherwise the compiler's local user-data location is used. Legacy capture failures, including a missing optional compiler, warn without discarding the compilation result. Use a disposable database or disable memory for tests and sensitive inputs.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
Can ShipMB chat with a model?
language / README.md / Model-neutral runtime identity
ShipMBLang owns ShipMB's identity, orchestration role, and declared device-family context at runtime. Compilation, execution, MCP, and `printurf` remain usable without a language model. Optional chat providers receive the same ShipMB system context, so model weights do not define what ShipMB is or what it may claim to do. No provider is selected by default. To opt into a local OpenAI-compatible endpoint such as Ollama, configure `SHIPMB_MODEL_PROVIDER=openai_compatible`, `SHIPMB_MODEL_BASE_URL`, and `SHIPMB_MODEL_NAME`. The legacy Drip adapter is available only through explicit `SHIPMB_MODEL_PROVIDER=drip` configuration. The guiding statement is: ```text If the user can explain the program end to end in natural language syntax shipmb should be able to understand and convert that into machine code to run the programs. ``` For v0.1, the concrete machine target is ShipMBLang bytecode executed by the local runtime. Native CPU code can come later.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
What happens when an instruction is ambiguous?
compiler / README.md / What distinguishes ShipMB's approach
ShipMB keeps the user's supported English prose as the maintained program and combines direct compilation with source-bound clarification, contextual memory, and explicit guarded execution. These are architectural features, not a claim that ShipMB is the first or only language to provide them. - **Direct compilation:** English -> typed syntax and resolved names -> final ShipMB bytecode. No Core source, generated Python/JavaScript, TAC, or separate intermediate instruction list is produced by this path. The syntax tree is still an internal representation; `target_code` contains the final VM artifact, not native CPU code or another source-language compilation step. - **Clarification tied to source:** focused API answers identify a question and source revision. Stale answers cannot silently apply to changed prose; the revised program is validated before bytecode is emitted. - **Meaning remembered in context:** confirmed interpretations are reused only after compatibility and project/binding checks. Similar wording is a suggestion, not confirmation. Memory does not autonomously rewrite grammar or train models. - **Ability checked at execution:** guarded actions check current ability through an injected checker, skip with a reason when unable, and continue independent actions. This is verified with simulated outcomes in the Roku profile; it is not a claim of completed general device control. - **Explicit outcomes:** supported meaning compiles; ambiguity requests clarification; unsupported meaning gets an explanation. There is no silent fallback to a different compilation pipeline. The current frontend recognizes a defined English grammar, not arbitrary prose. Broader understanding requires reviewed grammar changes and regression tests. Remembering meaning never grants execution permission or proves current device availability. General app, messaging, camera and cross-device integrations remain planned work. The intended distinction is how these features work together; historical uniqueness has not been established.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
What happens to unsupported sentences?
language / README.md / How It Works
ShipMBLang's current compiler is deterministic. The public `shipmblang.natural_syntax` module re-exports the implementation in `driplm.natural_syntax`, where the compiler: 1. tokenizes natural text with source spans 2. splits it into sentence-level statements 3. collects declarations for the completed compilation-unit symbol table before resolving references 4. classifies and lowers statements into semantic operations in source order 5. records symbols for languages, imports, libraries, devices, variables, constants, functions, classes, capabilities, installs, and interfaces 6. wraps operations as IR, normalizes/deduplicates them, and inserts missing setup such as `use shipmb`, `open_project`, or `on_error` 7. emits `shipmblang-bytecode` with `native_machine_code: false` 8. renders the same bytecode as ShipLang Core for human review Unknown sentences are not thrown away. They compile to `intent` operations and show up in both JSON output and Core comments so users can see what the compiler did not understand yet. Name resolution is order-insensitive for declarations in the same compilation unit and scope. The compiler collects declarations first, so a function, method, class, device, capability, or other declaration may be referenced before its textual declaration appears. Runtime actions still execute in emitted/source-defined order unless the compiler explicitly lowers them otherwise. Recent updates expanded the first `printurf()` workflow into a broader program-model compiler: prose can now describe major-language declarations, domain libraries, device targets, device capabilities, runtime install intent, client interfaces, and device-family resources.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
Can I call a function before declaring it?
language / README.md / How It Works
ShipMBLang's current compiler is deterministic. The public `shipmblang.natural_syntax` module re-exports the implementation in `driplm.natural_syntax`, where the compiler: 1. tokenizes natural text with source spans 2. splits it into sentence-level statements 3. collects declarations for the completed compilation-unit symbol table before resolving references 4. classifies and lowers statements into semantic operations in source order 5. records symbols for languages, imports, libraries, devices, variables, constants, functions, classes, capabilities, installs, and interfaces 6. wraps operations as IR, normalizes/deduplicates them, and inserts missing setup such as `use shipmb`, `open_project`, or `on_error` 7. emits `shipmblang-bytecode` with `native_machine_code: false` 8. renders the same bytecode as ShipLang Core for human review Unknown sentences are not thrown away. They compile to `intent` operations and show up in both JSON output and Core comments so users can see what the compiler did not understand yet. Name resolution is order-insensitive for declarations in the same compilation unit and scope. The compiler collects declarations first, so a function, method, class, device, capability, or other declaration may be referenced before its textual declaration appears. Runtime actions still execute in emitted/source-defined order unless the compiler explicitly lowers them otherwise. Recent updates expanded the first `printurf()` workflow into a broader program-model compiler: prose can now describe major-language declarations, domain libraries, device targets, device capabilities, runtime install intent, client interfaces, and device-family resources.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
Does it support recursive functions?
compiler / README.md / General computation
Compiler 0.2.1 adds an explicit general profile with version 0.3 bytecode:
```powershell
python shipmbc.py examples/general_sum.smb --pipeline direct --profile general --memory off --run
python shipmbc.py examples/general_functions.smb --pipeline direct --profile general --memory off --run
```
The examples return `27` and `720`. This profile performs pure computation and captures
output without live adapters. A weather lookup was used as a temporary integration
experiment and is not part of the shipped language or build requirements.
General syntax currently supports typed integer/boolean/text values, homogeneous
lists, immutable bindings, explicit mutable variables, arithmetic/comparisons,
scoped `If`/`Otherwise`, `For each` and `While`, typed functions with recursion,
and captured `Show` output. Function signatures resolve before calls; ordinary
variables initialize in source order. Parameters are immutable and calls have
separate local scopes, without closures. Every function path must return its
declared type. A maximum of 64 call frames includes the root program.
End blocks explicitly with `End the condition` or `End the loop`. Arithmetic
grouping must be explicit when multiple operators could be interpreted differently.
The VM validates bytecode before execution and bounds steps, integers, collections,
stack size and output. Compilation stays independent of Core, IR and runtime imports.
Modules, richer data, persistence, async and UI remain roadmap work.
For focused API clarification, submit `clarification_answers={"source_revision":
result["source_revision"], "answers": {question_id: "English replacement"}}`.
Answers apply only to the identified source revision and question span. The result
retains original source, revised English and replacement provenance, and validates
the whole revised program before emitting bytecode. Whole-program `interpretation`
answers remain supported. Confirmed memories and parse caches are profile-isolated.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bAre program execution limits enforced?
compiler / README.md / General computation
Compiler 0.2.1 adds an explicit general profile with version 0.3 bytecode:
```powershell
python shipmbc.py examples/general_sum.smb --pipeline direct --profile general --memory off --run
python shipmbc.py examples/general_functions.smb --pipeline direct --profile general --memory off --run
```
The examples return `27` and `720`. This profile performs pure computation and captures
output without live adapters. A weather lookup was used as a temporary integration
experiment and is not part of the shipped language or build requirements.
General syntax currently supports typed integer/boolean/text values, homogeneous
lists, immutable bindings, explicit mutable variables, arithmetic/comparisons,
scoped `If`/`Otherwise`, `For each` and `While`, typed functions with recursion,
and captured `Show` output. Function signatures resolve before calls; ordinary
variables initialize in source order. Parameters are immutable and calls have
separate local scopes, without closures. Every function path must return its
declared type. A maximum of 64 call frames includes the root program.
End blocks explicitly with `End the condition` or `End the loop`. Arithmetic
grouping must be explicit when multiple operators could be interpreted differently.
The VM validates bytecode before execution and bounds steps, integers, collections,
stack size and output. Compilation stays independent of Core, IR and runtime imports.
Modules, richer data, persistence, async and UI remain roadmap work.
For focused API clarification, submit `clarification_answers={"source_revision":
result["source_revision"], "answers": {question_id: "English replacement"}}`.
Answers apply only to the identified source revision and question span. The result
retains original source, revised English and replacement provenance, and validates
the whole revised program before emitting bytecode. Whole-program `interpretation`
answers remain supported. Confirmed memories and parse caches are profile-isolated.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bCan a whole program be quoted?
compiler / README.md / Quoted English paragraphs (compiler 0.2.2)
The direct general profile accepts a whole program wrapped in straight double quotes or smart double quotes. Paragraph breaks and the original source positions are preserved. Use straight double quotes for text values inside the program. ```text “Start with total at 4, then add 8 to total and show total. Multiply total by 3. Subtract 9 from total and display me total.” ``` Run the checked-in example: ```powershell python shipmbc.py examples/quoted_paragraph.smb --pipeline direct --profile general --memory off --run ``` Its captured output is `12` followed by `27`. `Start with` declares a mutable value. `Start with 12. Add 15 and show the result.` produces `27`; an omitted arithmetic target requires exactly one visible mutable integer. Name the target when more than one is available. Coordinated commands can use `and`, `then`, or `and then` before supported action verbs. Text inside string values remains data. This is a defined grammar, not unrestricted English understanding. Unsupported clauses and ambiguous references prevent emission of a runnable artifact; they are not silently omitted. Quotation marks do not enable new device capabilities. Existing unquoted programs and explicit pipeline choices remain supported.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Can a program span multiple paragraphs?
compiler / README.md / Multiple paragraphs (compiler 0.2.3)
A program can contain blank-line paragraphs without quotes, inside one outer quoted block, or in separately quoted blocks separated by a blank line. Straight and smart double-quote wrappers are supported; strings inside use straight quotes. Paragraphs share the program's bindings and function declarations. A paragraph break does **not** close a loop, condition, or function: use explicit `End` clauses. See [the multi-paragraph example](examples/multiple_paragraphs.smb), which totals measurements above 10 and prints `27`, including a condition and loop spanning paragraphs: ```powershell python shipmbc.py examples/multiple_paragraphs.smb --pipeline direct --profile general --memory off --run ``` The entire document is checked before any runnable artifact is returned. An unknown or ambiguous clause in a later paragraph blocks the whole program. Source text, Unicode character offsets, and file line endings are retained for clarifications. Focused answers remain bound to the original source revision. Regression tests cover shared bindings, cross-paragraph function calls, nested loops/conditions, LF and CRLF, string contents, later-paragraph errors, and malformed wrappers. Complexity still means composition of the implemented grammar: arbitrary narrative, implied block endings, and unsupported operations require clarification or an implementation rather than a guessed translation.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Is ShipLang Core required?
compiler / README.md / Compile English Prose Without Core Output
Core text is an optional readable export, not an intermediate input required for prose compilation. Compile the Roku example directly to bytecode: ```powershell python shipmbc.py examples/roku_tv.smb --emit target_code,diagnostics ``` For the Python API: ```python from shipmbcompiler import compile_source result = compile_source(source, include_core=False) assert result["core_source"] is None ``` This path does not load the Core parser/renderer or the runtime. It requires no `shipmblangcore` checkout, live TV, model, or network connection. Bytecode and diagnostics are unchanged by the export option. Existing API defaults still include Core; CLI `--emit core_source` and `--emit all` request it explicitly. Explicit Core source input remains supported and loads its parser as needed. `--run` loads the event-only runtime only after compilation succeeds. The Roku paragraph records the library, Roku device, remote capabilities, command error handler, installation request, and voice/chat client interfaces. It does not prove that a device can install ShipMB or supply those interfaces. In the compatibility IR pipeline, `if able` is recognized in the syntax tree but its interface declarations do not enforce that condition. Use the direct pipeline for runtime guards; the IR path retains its historical behavior. To test prose understanding, supply alternative English phrasings and the expected library, device, capabilities, error behavior, and client interfaces. No device address, credentials, or hardware is needed for compilation tests. The [40-case English prose corpus](docs/roku-prose-tests.md) records expected meanings, per-action ability conditions, and a runnable baseline audit. Current recognition covers a limited deterministic subset, not arbitrary prose.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Can I use synonyms in instructions?
compiler / README.md / WordNet Trigger Synonyms
ShipMBCompiler has a curated built-in thesaurus for compiler trigger words, and
it can augment that thesaurus from local WordNet database files. The compiler
does not need internet access at compile time; pass a local WordNet `dict`
directory, set `SHIPMB_WORDNET_DIR`, or layer in a local slang/shorthand
thesaurus with `--thesaurus-path`.
```powershell
$env:SHIPMB_WORDNET_DIR = "C:\path\to\WordNet-3.1\dict"
python shipmbc.py source.smb --emit core_source,trigger_lexicon,diagnostics
```
or:
```powershell
python shipmbc.py source.smb --wordnet-dir "C:\path\to\WordNet-3.1\dict" --emit core_source,trigger_lexicon,diagnostics
```
Optional slang/shorthand files can be JSON, CSV, TSV, or simple text:
```json
{
"triggers": {
"use": { "synonyms": ["grab"] },
"execute": { "synonyms": ["kick"] },
"show": { "synonyms": ["flash"] }
}
}
```
```powershell
python shipmbc.py source.smb --wordnet-dir "C:\path\to\WordNet\dict" --thesaurus-path ".\shipmb-slang.json" --emit core_source,trigger_lexicon,diagnostics
```
WordNet synonyms expand only known ShipMB compiler triggers. Antonyms are kept
for diagnostics and negation handling, not for silently running the opposite
operation. WordNet glosses are loaded as dictionary definitions for future
disambiguation and `printurf()` explanations.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bCan I teach it slang?
compiler / README.md / Urban Dictionary Slang Sync
Urban Dictionary support is optional tooling for discovery and curation. Normal compilation remains offline and reproducible: `compile_source()` never calls the network or the MCP server. Instead, run a sync step against the sibling `urbandictmcp` project, review the generated JSON, then pass it back with `--thesaurus-path`. ```powershell python shipmbc.py slang sync ` --terms "fire up,pull up,kill app,send it" ` --map "fire up=open" ` --map "kill=close" ` --map "send it=execute" ` --out examples/urban-slang-thesaurus.json ` --urban-mcp-server "C:\Users\admin\Documents\urbandictmcp\server.js" ``` Mapped terms become active synonyms only when the right side is one of the known ShipMB compiler triggers such as `open`, `close`, or `execute`. Unmapped terms stay under `urban_dictionary_candidates` with Urban Dictionary provenance, scores, and definition IDs for review. The generated `triggers` object is still loaded through the same local thesaurus path as any hand-written JSON: ```powershell python shipmbc.py examples\roku_tv.smb --thesaurus-path examples\urban-slang-thesaurus.json --emit core_source,diagnostics ``` Crowdsourced definitions can be noisy or offensive, so keep generated files in review before relying on them in a project. The loader still refuses new compiler triggers outside the curated canonical trigger table, and blocked aliases such as `pack -> library` remain blocked to preserve identifier phrases like `tv pack library`.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Are there C++, Go, and Rust versions?
compiler / README.md / Language Ports
The Python implementation remains the reference compiler. Standalone C++, Go, and Rust ports implement the interoperable v0.1 Roku TV-pack prose/Core slice and emit the same structured `shipmblang-bytecode` contract for the supported examples. - [C++ port](cpp/README.md) — CMake/C++17, no third-party dependencies. - [Go port](go/README.md) — standard-library-only Go CLI. - [Rust port](rust/README.md) — Cargo crate using `serde_json` for JSON. All ports are offline and preserve lowercase bytecode opcode names. Their per-port READMEs include build and run commands.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
What does the VS Code extension support?
compiler / README.md / Test ShipMBLang in VS Code (Windows)
You need Python 3.11 or newer, VS Code 1.92 or newer, access to both private
repositories, and the ShipMBLang VSIX extension. ShipMBLangCore is not required
for this direct/general workflow. The extension is currently installed manually.
1. Clone both repositories into the same parent directory (or use your existing
current checkouts):
```powershell
git clone https://github.com/qramarq/shipmblang.git
git clone https://github.com/qramarq/shipmblang-compiler.git
cd shipmblang
```
2. In VS Code, use **File > Open Folder** to open the `shipmblang` checkout and
trust your workspace. Open **Terminal > New Terminal** with PowerShell.
Confirm `python --version` is 3.11 or newer, then install both packages into
the same environment:
```powershell
python -m venv .venv
& .venv/Scripts/python.exe -m pip install -e ../shipmblang-compiler/shipmbcompiler
& .venv/Scripts/python.exe -m pip install -e .
```
These commands assume sibling clones with the names above. Adjust paths for
existing checkouts. Environment activation is not required.
3. Obtain `shipmblang-0.3.0.vsix` from the project maintainer, or build it from
the language checkout with Node.js 22+ and npm installed:
```powershell
cd extensions/vscode-shipmblang
npx --yes @vscode/vsce package --no-dependencies --out shipmblang-0.3.0.vsix
cd ../..
```
Press **Ctrl+Shift+P**, select **Extensions: Install from VSIX**, select that
file, and reload VS Code if prompted. The generated VSIX is not committed to
the repository or published to the Marketplace.
4. Press **Ctrl+Shift+P** and choose **Preferences: Open Workspace Settings
(JSON)**. Merge these entries into the existing settings object, replacing
`C:/path/to/shipmblang` with your actual language checkout path:
```json
{
"shipmblang.pythonPath": "C:/path/to/shipmblang/.venv/Scripts/python.exe",
"shipmblang.projectRoot": "C:/path/to/shipmblang",
"shipmblang.pipeline": "direct",
"shipmblang.profile": "general",
"shipmblang.memory": false
}
```
Use a full executable path, not a command with arguments. An old
`shipmblang.projectRoot` setting can load an outdated source checkout even
when the Python environment is correct. Override it here with the current
checkout; remove obsolete user-level settings when no longer needed.
5. Press **Ctrl+Shift+E** to open Explorer on the left. Expand `examples` and
open `general_functions.shipmb`. With no text selected, press
**Ctrl+Shift+P** and run **ShipMBLang: Run Natural Program**. Open
**View > Output** and select **ShipMBLang** in the dropdown. Expect `720`.
**ShipMBLang: Compile Natural Program** shows compiler output without running.
If text is selected, only the selection is submitted.
6. To test diagnostics, create `test.smb` containing `Show missing.` and run
**ShipMBLang: Compile Natural Program**. Press **Ctrl+Shift+M** to see the
undefined-name diagnostic in Problems.
For a terminal check from the language checkout:
```powershell
& .venv/Scripts/python.exe -X utf8 -m shipmblang run --file examples/general_functions.shipmb --pipeline direct --profile general --memory off
```
The terminal returns JSON whose `runtime.stdout` is `720\n`. If you see
`No module named shipmblang`, check the selected interpreter and installation.
If options such as `--pipeline` or `--memory` are unrecognized, check for an old
`projectRoot` override. If commands are unavailable, check workspace trust and
that the extension is enabled.
Current VS Code support includes compile/run commands, basic syntax highlighting,
and Problems diagnostics. Autocomplete, rename, debugging, and a language server
are not implemented. General programs must use the implemented grammar; arbitrary
English is not guaranteed to compile. Other IDEs can invoke the installed CLI.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bCan I install the compiler without the internet?
compiler / README.md / Install Locally
From this folder in PowerShell: ```powershell powershell -ExecutionPolicy Bypass -File scripts/install_dev.ps1 .\.venv\Scripts\Activate.ps1 shipmbc examples\roku_tv.smb --run --emit core_source,runtime,diagnostics ``` This installs the compiler workspace in an isolated `.venv` and exposes local `shipmbc` wrappers in `.venv\Scripts`. No internet is required; the installer links the workspace into the venv directly instead of downloading Python packages.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Do remembered permissions authorize device actions?
compiler / README.md / What distinguishes ShipMB's approach
ShipMB keeps the user's supported English prose as the maintained program and combines direct compilation with source-bound clarification, contextual memory, and explicit guarded execution. These are architectural features, not a claim that ShipMB is the first or only language to provide them. - **Direct compilation:** English -> typed syntax and resolved names -> final ShipMB bytecode. No Core source, generated Python/JavaScript, TAC, or separate intermediate instruction list is produced by this path. The syntax tree is still an internal representation; `target_code` contains the final VM artifact, not native CPU code or another source-language compilation step. - **Clarification tied to source:** focused API answers identify a question and source revision. Stale answers cannot silently apply to changed prose; the revised program is validated before bytecode is emitted. - **Meaning remembered in context:** confirmed interpretations are reused only after compatibility and project/binding checks. Similar wording is a suggestion, not confirmation. Memory does not autonomously rewrite grammar or train models. - **Ability checked at execution:** guarded actions check current ability through an injected checker, skip with a reason when unable, and continue independent actions. This is verified with simulated outcomes in the Roku profile; it is not a claim of completed general device control. - **Explicit outcomes:** supported meaning compiles; ambiguity requests clarification; unsupported meaning gets an explanation. There is no silent fallback to a different compilation pipeline. The current frontend recognizes a defined English grammar, not arbitrary prose. Broader understanding requires reviewed grammar changes and regression tests. Remembering meaning never grants execution permission or proves current device availability. General app, messaging, camera and cross-device integrations remain planned work. The intended distinction is how these features work together; historical uniqueness has not been established.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
What is the compatibility IR pipeline?
compiler / README.md / Compatibility IR Compiler
The compatibility IR implementation is a narrow v0.1 slice, not the full future ShipMBLang spec. It supports the Roku TV pack prose path, editable Core source, offline trigger synonyms, TAC-style IR, conservative optimization, JSON bytecode, diagnostics, and an optional runtime shim. The runtime shim is event-only: it never executes a shell command, contacts a device, installs a package, or invokes MCP. It validates bytecode before recording any events and skips `--run` when compilation has errors. See [SECURITY.md](SECURITY.md) for the enforced boundaries and requirements for a real backend. The compatibility pipeline is: ```text source -> lexicon -> lexer -> prose/Core parser -> editable Core -> semantics -> TAC IR -> optimizer -> bytecode -> optional runtime ``` Unsupported prose, unsupported targets, and runtime capability problems are reported as structured diagnostics plus `printurf` explanations.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Where can I read program output?
language / README.md / Optional direct English compiler
On Python 3.11 or newer, install the separately named compiler distribution with `python -m pip install "shipmblang[direct]"`. Both distributions can coexist; the basic language package still has no required dependencies. ```bash python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline direct --memory off python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline direct --format json --memory off python -m shipmblang compile "Use the tv pack library in shipmblang to control this Roku TV like a remote." --pipeline ir --memory off ``` `legacy` remains the default and uses the existing language compiler. `direct` delegates English interpretation and bytecode generation to shipmbcompiler; `ir` explicitly selects that compiler's older IR pipeline. There is no automatic fallback. Direct/IR output defaults to compiler bytecode; JSON includes diagnostics and clarification questions. Core output is available through `legacy`. A direct result needing clarification or reporting unsupported behavior exits unsuccessfully and prints its full explanation, even when bytecode output was requested. Answer a clarification by keeping the original source and supplying explicit English with `--interpretation`: ```bash python -m shipmblang compile "Control it like a remote." --pipeline direct --interpretation "Use the tv pack library in shipmblang to control this Roku TV like a remote." --format json --memory off ``` The compiler validates that interpretation before generating bytecode. It does not silently substitute a guessed meaning. With memory enabled, confirmed meaning can be recorded by the compiler. This flag is supported only by the direct pipeline. Python callers can use `shipmblang.compile_direct_program(...)`. Its result keeps the compiler schema, including `status`, `clarifications`, and `target_code`. It accepts explicit bindings, clarification answers and an optional model-provider callback; no model is selected automatically. Compiler bytecode is not passed to the legacy language runtime. `run --pipeline direct` uses the compiler's validated artifact runner. Its Roku profile is an event sandbox, not a live-device controller. The opt-in `general` profile requires a profile-capable `shipmbcompiler>=0.2.1,<0.3` build. It compiles supported pure computation into version 0.3 compiler bytecode. For example, [general_sum.shipmb](examples/general_sum.shipmb) adds the values above 10 in the list 3, 12, 15 and captures `27` followed by a newline: ```bash python -m shipmblang run --file examples/general_sum.shipmb --pipeline direct --profile general --memory off ``` The JSON result contains `runtime.stdout` and `runtime.output`. Python callers use `compile_direct_program(source, profile="general", memory=False)` to compile. The [function example](examples/general_functions.shipmb) uses a typed recursive factorial function and produces `720`: ```bash python -m shipmblang run --file examples/general_functions.shipmb --pipeline direct --profile general --memory off ``` `--profile` is only valid with `--pipeline direct`; the default direct profile remains `roku`, and existing legacy/IR defaults are unchanged. General artifacts run through the compiler's version-aware loader, not the legacy language runtime. This initial profile supports its implemented computation subset; it does not provide arbitrary prose interpretation or live storage, API, UI, or device effects. Source submissions and outcomes are captured locally when compiler memory is installed. This includes unsuccessful interpretations and original source text. `--memory off` or API `memory=False` always disables capture. Otherwise an explicit `memory_path` or `--memory-path` (also `--memory-db`) enables that database even when `SHIPMB_MEMORY=off`. Without an explicit path, `SHIPMB_MEMORY=off` disables capture; `SHIPMB_MEMORY_DB` selects the default database when capture is enabled. Otherwise the compiler's local user-data location is used. Legacy capture failures, including a missing optional compiler, warn without discarding the compilation result. Use a disposable database or disable memory for tests and sensitive inputs.Source revision sha256:14457530380d613a445972fd1b580e2ed634d307622898ee12ae62acf9e8ded9
Are variables mutable?
compiler / README.md / General computation
Compiler 0.2.1 adds an explicit general profile with version 0.3 bytecode:
```powershell
python shipmbc.py examples/general_sum.smb --pipeline direct --profile general --memory off --run
python shipmbc.py examples/general_functions.smb --pipeline direct --profile general --memory off --run
```
The examples return `27` and `720`. This profile performs pure computation and captures
output without live adapters. A weather lookup was used as a temporary integration
experiment and is not part of the shipped language or build requirements.
General syntax currently supports typed integer/boolean/text values, homogeneous
lists, immutable bindings, explicit mutable variables, arithmetic/comparisons,
scoped `If`/`Otherwise`, `For each` and `While`, typed functions with recursion,
and captured `Show` output. Function signatures resolve before calls; ordinary
variables initialize in source order. Parameters are immutable and calls have
separate local scopes, without closures. Every function path must return its
declared type. A maximum of 64 call frames includes the root program.
End blocks explicitly with `End the condition` or `End the loop`. Arithmetic
grouping must be explicit when multiple operators could be interpreted differently.
The VM validates bytecode before execution and bounds steps, integers, collections,
stack size and output. Compilation stays independent of Core, IR and runtime imports.
Modules, richer data, persistence, async and UI remain roadmap work.
For focused API clarification, submit `clarification_answers={"source_revision":
result["source_revision"], "answers": {question_id: "English replacement"}}`.
Answers apply only to the identified source revision and question span. The result
retains original source, revised English and replacement provenance, and validates
the whole revised program before emitting bytecode. Whole-program `interpretation`
answers remain supported. Confirmed memories and parse caches are profile-isolated.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75bDoes memory train the compiler automatically?
compiler / README.md / What distinguishes ShipMB's approach
ShipMB keeps the user's supported English prose as the maintained program and combines direct compilation with source-bound clarification, contextual memory, and explicit guarded execution. These are architectural features, not a claim that ShipMB is the first or only language to provide them. - **Direct compilation:** English -> typed syntax and resolved names -> final ShipMB bytecode. No Core source, generated Python/JavaScript, TAC, or separate intermediate instruction list is produced by this path. The syntax tree is still an internal representation; `target_code` contains the final VM artifact, not native CPU code or another source-language compilation step. - **Clarification tied to source:** focused API answers identify a question and source revision. Stale answers cannot silently apply to changed prose; the revised program is validated before bytecode is emitted. - **Meaning remembered in context:** confirmed interpretations are reused only after compatibility and project/binding checks. Similar wording is a suggestion, not confirmation. Memory does not autonomously rewrite grammar or train models. - **Ability checked at execution:** guarded actions check current ability through an injected checker, skip with a reason when unable, and continue independent actions. This is verified with simulated outcomes in the Roku profile; it is not a claim of completed general device control. - **Explicit outcomes:** supported meaning compiles; ambiguity requests clarification; unsupported meaning gets an explanation. There is no silent fallback to a different compilation pipeline. The current frontend recognizes a defined English grammar, not arbitrary prose. Broader understanding requires reviewed grammar changes and regression tests. Remembering meaning never grants execution permission or proves current device availability. General app, messaging, camera and cross-device integrations remain planned work. The intended distinction is how these features work together; historical uniqueness has not been established.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b
Is ShipMB the first English programming language?
compiler / README.md / What distinguishes ShipMB's approach
ShipMB keeps the user's supported English prose as the maintained program and combines direct compilation with source-bound clarification, contextual memory, and explicit guarded execution. These are architectural features, not a claim that ShipMB is the first or only language to provide them. - **Direct compilation:** English -> typed syntax and resolved names -> final ShipMB bytecode. No Core source, generated Python/JavaScript, TAC, or separate intermediate instruction list is produced by this path. The syntax tree is still an internal representation; `target_code` contains the final VM artifact, not native CPU code or another source-language compilation step. - **Clarification tied to source:** focused API answers identify a question and source revision. Stale answers cannot silently apply to changed prose; the revised program is validated before bytecode is emitted. - **Meaning remembered in context:** confirmed interpretations are reused only after compatibility and project/binding checks. Similar wording is a suggestion, not confirmation. Memory does not autonomously rewrite grammar or train models. - **Ability checked at execution:** guarded actions check current ability through an injected checker, skip with a reason when unable, and continue independent actions. This is verified with simulated outcomes in the Roku profile; it is not a claim of completed general device control. - **Explicit outcomes:** supported meaning compiles; ambiguity requests clarification; unsupported meaning gets an explanation. There is no silent fallback to a different compilation pipeline. The current frontend recognizes a defined English grammar, not arbitrary prose. Broader understanding requires reviewed grammar changes and regression tests. Remembering meaning never grants execution permission or proves current device availability. General app, messaging, camera and cross-device integrations remain planned work. The intended distinction is how these features work together; historical uniqueness has not been established.Source revision sha256:91e8415329e017f76b33316b7156584a962a9e24270c8f11e2e02e90c4f8c75b