feat(shell): pathname globbing, noglob/set -f, and syscall pathconf

- Add shell-glob.js (fnmatch, brace expansion gate, GLOB_* / DOTGLOB / STRICT_POSIX)
- Tokenizer tracks u/s/d quote segments; expand argv, redirects, and `for … in`
- Builtin `set -f` / `set +f`; richer `case` patterns via bareOsFnmatch
- CI: verify-bundle-throws.mjs + bundle-throw-allowlist.json in pretest
- VFS: symlink cycle detection (ELOOP); stat follow depth 64
- ctx.bareOsPathconf + bareOsSyscall pathconf; syscalls.json schemaVersion 2 + errnoHints
- getconf: pathconf in BARE_OS_SYSCALL_OPS; _PC_*, _POSIX_THREAD_ATTR_STACKSIZE
- Docs: handbook ch.9, environment appendix, user manual ch.4, release-checklist, scripts README
- Tests: tokenize/glob cases in bare-os-booter test.js

Keep posix-conformance-matrix.json bareOsSyscallOps in sync with getconf (add pathconf).
This commit is contained in:
Raven Scott
2026-04-04 19:36:32 -04:00
parent 0d7b27bea8
commit 44355f6924
27 changed files with 1277 additions and 532 deletions
@@ -2,9 +2,9 @@
"version": 1,
"bundles": [
{
"path": "/lib/bare/bundles/safetyCatch.js",
"path": "/lib/bare/bundles/b4a.js",
"keys": [
"safetyCatch"
"b4a"
]
},
{
@@ -14,9 +14,9 @@
]
},
{
"path": "/lib/bare/bundles/b4a.js",
"path": "/lib/bare/bundles/safetyCatch.js",
"keys": [
"b4a"
"safetyCatch"
]
},
{
@@ -37,12 +37,6 @@
"bareUrl"
]
},
{
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"barePath"
]
},
{
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
@@ -56,9 +50,9 @@
]
},
{
"path": "/lib/bare/bundles/bareAbortController.js",
"path": "/lib/bare/bundles/barePath.js",
"keys": [
"bareAbortController"
"barePath"
]
},
{
@@ -68,15 +62,9 @@
]
},
{
"path": "/lib/bare/bundles/bareAddonResolve.js",
"path": "/lib/bare/bundles/bareAbortController.js",
"keys": [
"bareAddonResolve"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
"bareAbortController"
]
},
{
@@ -85,6 +73,12 @@
"bareReadline"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
]
},
{
"path": "/lib/bare/bundles/bareCrypto.js",
"keys": [
@@ -92,9 +86,9 @@
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"path": "/lib/bare/bundles/bareAddonResolve.js",
"keys": [
"bareAsyncHooks"
"bareAddonResolve"
]
},
{
@@ -104,21 +98,9 @@
]
},
{
"path": "/lib/bare/bundles/bareAtomics.js",
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAtomics"
]
},
{
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"fetch"
"bareAsyncHooks"
]
},
{
@@ -127,6 +109,18 @@
"bareApk"
]
},
{
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/bareAtomics.js",
"keys": [
"bareAtomics"
]
},
{
"path": "/lib/bare/bundles/bareBmp.js",
"keys": [
@@ -134,9 +128,9 @@
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"path": "/lib/bare/bundles/fetch.js",
"keys": [
"bareBundleCompile"
"fetch"
]
},
{
@@ -145,6 +139,12 @@
"bareBundle"
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
"bareBundleCompile"
]
},
{
"path": "/lib/bare/bundles/bareBuffer.js",
"keys": [
@@ -169,12 +169,6 @@
"bareBoot"
]
},
{
"path": "/lib/bare/bundles/bareConsole.js",
"keys": [
"bareConsole"
]
},
{
"path": "/lib/bare/bundles/bareBundleId.js",
"keys": [
@@ -182,33 +176,9 @@
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"path": "/lib/bare/bundles/bareConsole.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareDelta.js",
"keys": [
"bareDelta"
]
},
{
"path": "/lib/bare/bundles/bareDebugLog.js",
"keys": [
"bareDebugLog"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
"bareDns"
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareDiagnosticsChannel"
"bareConsole"
]
},
{
@@ -217,12 +187,48 @@
"bareDaemon"
]
},
{
"path": "/lib/bare/bundles/bareDebugLog.js",
"keys": [
"bareDebugLog"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareDiagnosticsChannel"
]
},
{
"path": "/lib/bare/bundles/bareDelta.js",
"keys": [
"bareDelta"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
"bareDns"
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"keys": [
"bareEnv"
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"keys": [
"bareDgram"
]
},
{
"path": "/lib/bare/bundles/bareExif.js",
"keys": [
@@ -230,9 +236,9 @@
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareDgram"
"bareCov"
]
},
{
@@ -247,12 +253,6 @@
"bareFfmpegEncodings"
]
},
{
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareFormat"
]
},
{
"path": "/lib/bare/bundles/bareFormData.js",
"keys": [
@@ -260,9 +260,15 @@
]
},
{
"path": "/lib/bare/bundles/bareCov.js",
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareCov"
"bareFormat"
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareFileLogger"
]
},
{
@@ -272,9 +278,9 @@
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
"bareFileLogger"
"bareGtk"
]
},
{
@@ -289,12 +295,6 @@
"bareHrtime"
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
"bareGtk"
]
},
{
"path": "/lib/bare/bundles/bareHttpParser.js",
"keys": [
@@ -307,42 +307,48 @@
"bareFs"
]
},
{
"path": "/lib/bare/bundles/bareIco.js",
"keys": [
"bareIco"
]
},
{
"path": "/lib/bare/bundles/bareImageResample.js",
"keys": [
"bareImageResample"
]
},
{
"path": "/lib/bare/bundles/bareIco.js",
"keys": [
"bareIco"
]
},
{
"path": "/lib/bare/bundles/bareHttp1.js",
"keys": [
"bareHttp1"
]
},
{
"path": "/lib/bare/bundles/bareHttps.js",
"keys": [
"bareHttps"
]
},
{
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareInspect"
]
},
{
"path": "/lib/bare/bundles/bareHttps.js",
"keys": [
"bareHttps"
]
},
{
"path": "/lib/bare/bundles/bareJpeg.js",
"keys": [
"bareJpeg"
]
},
{
"path": "/lib/bare/bundles/bareIpc.js",
"keys": [
"bareIpc"
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"keys": [
@@ -356,15 +362,9 @@
]
},
{
"path": "/lib/bare/bundles/bareIpc.js",
"path": "/lib/bare/bundles/bareLink.js",
"keys": [
"bareIpc"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareInspector"
"bareLink"
]
},
{
@@ -374,15 +374,9 @@
]
},
{
"path": "/lib/bare/bundles/bareLink.js",
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
"bareLink"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
"bareInspector"
]
},
{
@@ -397,6 +391,12 @@
"bareModuleLexer"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareModule.js",
"keys": [
@@ -410,9 +410,9 @@
]
},
{
"path": "/lib/bare/bundles/bareNative.js",
"path": "/lib/bare/bundles/bareMedia.js",
"keys": [
"bareNative"
"bareMedia"
]
},
{
@@ -421,6 +421,18 @@
"bareModuleTraverse"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareNative.js",
"keys": [
"bareNative"
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
@@ -440,15 +452,9 @@
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"path": "/lib/bare/bundles/barePerformance.js",
"keys": [
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareMedia.js",
"keys": [
"bareMedia"
"barePerformance"
]
},
{
@@ -457,30 +463,24 @@
"barePack"
]
},
{
"path": "/lib/bare/bundles/barePerformance.js",
"keys": [
"barePerformance"
]
},
{
"path": "/lib/bare/bundles/barePackDrive.js",
"keys": [
"barePackDrive"
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"keys": [
"barePipe"
]
},
{
"path": "/lib/bare/bundles/barePng.js",
"keys": [
"barePng"
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"keys": [
"barePipe"
]
},
{
"path": "/lib/bare/bundles/bareNodeRuntime.js",
"keys": [
@@ -494,9 +494,9 @@
]
},
{
"path": "/lib/bare/bundles/barePunycode.js",
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"barePunycode"
"bareProcess"
]
},
{
@@ -506,15 +506,15 @@
]
},
{
"path": "/lib/bare/bundles/bareDev.js",
"path": "/lib/bare/bundles/barePunycode.js",
"keys": [
"bareDev"
"barePunycode"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"path": "/lib/bare/bundles/bareDev.js",
"keys": [
"bareProcess"
"bareDev"
]
},
{
@@ -536,9 +536,9 @@
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"path": "/lib/bare/bundles/bareRpc.js",
"keys": [
"barePromClient"
"bareRpc"
]
},
{
@@ -547,18 +547,6 @@
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareRpc.js",
"keys": [
"bareRpc"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/bareSemver.js",
"keys": [
@@ -566,15 +554,9 @@
]
},
{
"path": "/lib/bare/bundles/bareRun.js",
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"bareRun"
]
},
{
"path": "/lib/bare/bundles/bareSignals.js",
"keys": [
"bareSignals"
"barePromClient"
]
},
{
@@ -584,27 +566,15 @@
]
},
{
"path": "/lib/bare/bundles/bareStorage.js",
"path": "/lib/bare/bundles/bareRun.js",
"keys": [
"bareStorage"
"bareRun"
]
},
{
"path": "/lib/bare/bundles/bareStream.js",
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareStdio.js",
"keys": [
"bareStdio"
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"keys": [
"bareSvg"
"bareRepl"
]
},
{
@@ -613,6 +583,30 @@
"bareStringDecoder"
]
},
{
"path": "/lib/bare/bundles/bareSignals.js",
"keys": [
"bareSignals"
]
},
{
"path": "/lib/bare/bundles/bareStream.js",
"keys": [
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareStorage.js",
"keys": [
"bareStorage"
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"keys": [
"bareSvg"
]
},
{
"path": "/lib/bare/bundles/bareStructuredClone.js",
"keys": [
@@ -620,9 +614,9 @@
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"path": "/lib/bare/bundles/bareStdio.js",
"keys": [
"bareTap"
"bareStdio"
]
},
{
@@ -631,12 +625,6 @@
"bareSystemLogger"
]
},
{
"path": "/lib/bare/bundles/bareSubprocess.js",
"keys": [
"bareSubprocess"
]
},
{
"path": "/lib/bare/bundles/bareTiff.js",
"keys": [
@@ -644,9 +632,15 @@
]
},
{
"path": "/lib/bare/bundles/bareThread.js",
"path": "/lib/bare/bundles/bareSubprocess.js",
"keys": [
"bareThread"
"bareSubprocess"
]
},
{
"path": "/lib/bare/bundles/bareTap.js",
"keys": [
"bareTap"
]
},
{
@@ -655,6 +649,12 @@
"bareTimers"
]
},
{
"path": "/lib/bare/bundles/bareTpl.js",
"keys": [
"bareTpl"
]
},
{
"path": "/lib/bare/bundles/bareTcp.js",
"keys": [
@@ -662,9 +662,9 @@
]
},
{
"path": "/lib/bare/bundles/bareTpl.js",
"path": "/lib/bare/bundles/bareThread.js",
"keys": [
"bareTpl"
"bareThread"
]
},
{
@@ -673,12 +673,6 @@
"bareType"
]
},
{
"path": "/lib/bare/bundles/bareTty.js",
"keys": [
"bareTty"
]
},
{
"path": "/lib/bare/bundles/bareTls.js",
"keys": [
@@ -686,9 +680,9 @@
]
},
{
"path": "/lib/bare/bundles/bareUnpack.js",
"path": "/lib/bare/bundles/bareTty.js",
"keys": [
"bareUnpack"
"bareTty"
]
},
{
@@ -698,15 +692,15 @@
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"path": "/lib/bare/bundles/bareUnpack.js",
"keys": [
"bareV8"
"bareUnpack"
]
},
{
"path": "/lib/bare/bundles/bareWalkHandles.js",
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareWalkHandles"
"bareV8"
]
},
{
@@ -716,9 +710,21 @@
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
"bareWebp"
"bareUnionBundle"
]
},
{
"path": "/lib/bare/bundles/bareWalkHandles.js",
"keys": [
"bareWalkHandles"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
@@ -728,21 +734,9 @@
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
"bareUnionBundle"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareWhich"
"bareWebp"
]
},
{
@@ -752,9 +746,15 @@
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
"bareV8ToIstanbul"
"bareWhich"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
@@ -770,9 +770,9 @@
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"path": "/lib/bare/bundles/bareZmq.js",
"keys": [
"bareWs"
"bareZmq"
]
},
{
@@ -781,17 +781,17 @@
"bareZlib"
]
},
{
"path": "/lib/bare/bundles/bareZmq.js",
"keys": [
"bareZmq"
]
},
{
"path": "/lib/bare/bundles/bareWorker.js",
"keys": [
"bareWorker"
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
"bareWs"
]
}
],
"bundleStats": {