When the host leaves these unset, the booter now sets
BARE_OS_SHELL_STREAMING=1, BARE_OS_SHELL_STREAMING_MULT=2, BARE_OS_PIPELINE_MAX_BYTES (512 MiB), and BARE_OS_PIPELINE_MAX_LINES (2M) so the high-throughput ~512 MiB burst profile does not require pre-launch exports. Align getconf Tier-1 statics with those bases; note legacy rc.profile exports; refresh handbook, environment appendix, cookbook, and bare-os-booter CHANGELOG.
This commit is contained in:
@@ -220,8 +220,8 @@ These are the variables operators touch most often; the full list is in [docs/re
|
||||
|
||||
**Throughput, IPC, and telemetry (host → guest)**
|
||||
|
||||
- **`BARE_OS_PIPELINE_MAX_*`** and **`BARE_OS_PIPELINE_ABS_MAX_BYTES`** / **`BARE_OS_PIPELINE_ABS_MAX_LINES`** — Simulated pipeline capture (absolute caps default **512 MiB** / **2 000 000** lines after the streaming multiplier).
|
||||
- **`BARE_OS_SHELL_STREAMING`**, **`BARE_OS_SHELL_STREAMING_MULT`** — Multiply capture limits; alias **`BARE_OS_STREAMING_MULTIPLIER`** when **`BARE_OS_SHELL_STREAMING_MULT`** is unset.
|
||||
- **`BARE_OS_PIPELINE_MAX_*`** and **`BARE_OS_PIPELINE_ABS_MAX_BYTES`** / **`BARE_OS_PIPELINE_ABS_MAX_LINES`** — Simulated pipeline capture (absolute caps default **512 MiB** / **2 000 000** lines after the streaming multiplier). The stock booter defaults **`BARE_OS_SHELL_STREAMING=1`**, **`BARE_OS_SHELL_STREAMING_MULT=2`**, **`BARE_OS_PIPELINE_MAX_BYTES`** (**512 MiB**), and **`BARE_OS_PIPELINE_MAX_LINES`** (**2 000 000**) when the host leaves them unset.
|
||||
- **`BARE_OS_SHELL_STREAMING`**, **`BARE_OS_SHELL_STREAMING_MULT`** — Multiply capture limits; alias **`BARE_OS_STREAMING_MULTIPLIER`** when **`BARE_OS_SHELL_STREAMING_MULT`** is unset (booter default mult is **2**).
|
||||
- **`BARE_OS_IPC_MAX_CHANNELS`**, **`BARE_OS_POSIX_MQ_MAX_MSGS`**, **`BARE_OS_POSIX_MQ_MSG_BYTES`** — FIFO/MQ quotas and POSIX **`mq_open`** defaults.
|
||||
- **`BARE_OS_VFS_MAX_OPEN`** — Advisory **`RLIMIT_NOFILE`** in **`/proc/bare_os/rlimits.json`** when set.
|
||||
- **`BARE_OS_TELEMETRY_OTEL`** / **`BARE_OS_TELEMETRY_OTEL_JSONL`** — OTel JSON line export (shorthand **`BARE_OS_TELEMETRY_OTEL=1`** defaults the path — see appendix).
|
||||
|
||||
@@ -130,7 +130,7 @@ flowchart LR
|
||||
|
||||
**Here-string / here-document:** **`<<< word`** feeds the expanded **word** as stdin to the first command in the pipeline. A line that **ends** with **`<<`** **`DELIMITER`** (optional **`'...'`** / **`"..."`** around the delimiter) collects following lines from **`readLine('> ')`** until a line equals **DELIMITER**, then uses that body as stdin (**`$`** expansion is skipped for a single-quoted delimiter name).
|
||||
|
||||
**Pipeline limits:** simulated pipe capture is bounded. Defaults: **`BARE_OS_PIPELINE_MAX_BYTES`** (2 MiB), **`BARE_OS_PIPELINE_MAX_LINES`** (50 000), **`BARE_OS_PIPELINE_MAX_STAGES`** (32). Effective capture is also capped by **`BARE_OS_PIPELINE_ABS_MAX_BYTES`** (default **512 MiB**) and **`BARE_OS_PIPELINE_ABS_MAX_LINES`** (default **2 000 000**) after the streaming multiplier. With **`BARE_OS_SHELL_STREAMING=1`**, effective byte and line caps are multiplied by **`BARE_OS_SHELL_STREAMING_MULT`** (default **4**, max **16**; alias **`BARE_OS_STREAMING_MULTIPLIER**`) so large captures remain bounded but less tight. Exceeding a limit fails the pipeline with exit status **1** and an error on stderr. Current caps and FIFO **`stats`** also surface in **`/proc/bare_os_quotas`** and **`ctx.bareOsRuntimeCaps.quotas`**. With **`BARE_OS_SHELL_PIPEFAIL`** (env or **`set -o pipefail`** / clear with **`set +o pipefail`**), a pipeline’s status reflects the first failing stage (bash-like); default is POSIX-like **last stage** only. With **`BARE_OS_SHELL_PIPESTATUS=1`**, after each pipeline completes, **`vfs.env.BARE_OS_PIPESTATUS`** holds space-separated stage exit codes (inspect-only **`PIPESTATUS`** analog).
|
||||
**Pipeline limits:** simulated pipe capture is bounded. The stock booter seeds **`BARE_OS_SHELL_STREAMING=1`**, **`BARE_OS_SHELL_STREAMING_MULT=2`** (alias **`BARE_OS_STREAMING_MULTIPLIER`**), **`BARE_OS_PIPELINE_MAX_BYTES`** (**512 MiB**), and **`BARE_OS_PIPELINE_MAX_LINES`** (**2 000 000**) when the host does not set them, so the default session targets a **~512 MiB** effective byte cap (after multiplier and **`BARE_OS_PIPELINE_ABS_MAX_BYTES`**, default **512 MiB**) and **2 M** lines. Tier-1 **`getconf`** statics are aligned to the same base sizes; live Tier-2 values follow **`vfs.env`**. **`BARE_OS_PIPELINE_MAX_STAGES`** defaults to **32**. Effective capture is also capped by **`BARE_OS_PIPELINE_ABS_MAX_BYTES`** and **`BARE_OS_PIPELINE_ABS_MAX_LINES`** after the streaming multiplier. With streaming on, effective byte and line caps are multiplied by **`BARE_OS_SHELL_STREAMING_MULT`** (stock **2** unless overridden; max **16**). Exceeding a limit fails the pipeline with exit status **1** and an error on stderr. Current caps and FIFO **`stats`** also surface in **`/proc/bare_os_quotas`** and **`ctx.bareOsRuntimeCaps.quotas`**. With **`BARE_OS_SHELL_PIPEFAIL`** (env or **`set -o pipefail`** / clear with **`set +o pipefail`**), a pipeline’s status reflects the first failing stage (bash-like); default is POSIX-like **last stage** only. With **`BARE_OS_SHELL_PIPESTATUS=1`**, after each pipeline completes, **`vfs.env.BARE_OS_PIPESTATUS`** holds space-separated stage exit codes (inspect-only **`PIPESTATUS`** analog).
|
||||
|
||||
**Errexit (subset):** **`BARE_OS_SHELL_ERREXIT=1`**, **`set -e`**, or **`set -o errexit`** stops further top-level **`;`-separated** commands after a non-zero exit (**`set +e`** / **`set +o errexit`** clears). The same flag now applies **inside** **`if`** **`then`** / **`else`** bodies and **`while`** / **`for`** loop bodies between semicolon-separated lists (POSIX-style: a failing command aborts the rest of that compound body). **Condition** expressions in **`if`** / **`while`** still evaluate without errexit stopping between predicate lists. This remains a declared subset, not full Issue **7** **`sh`**.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user