commit 8390b6dbf6a2f34e4c56f488cca159f459518c22 parent b11bc756c6e1dea2e52b60c26314c9d304348ca5 Author: James Eversole <james@eversole.co> Date: Mon, 19 Oct 2026 18:30:35 -0500 Refresh browser assets and verify owner-relative layout on both WASM backends Promote compiler pin b11bc75 and refresh independent captures, core demos, curated/native packages and all 50 complete library interfaces. New releases use 0.3.0; all 192 historical release records and bytes remain unchanged. Validate 129 serial Node tests, JS parity, independent compiler/contract conformance, inspector/project controls and bounded Chromium editor flows on Haskell and Zig. Browser source edits exercise aligned multiline bodies and backend rebuilding. Correct the browser harness default from retired js to haskell-wasm, and include complete-library refresh in the promotion procedure. Final nix flake check passes. Rolling retention remains pending. Diffstat:
36 files changed, 524 insertions(+), 20 deletions(-)
diff --git a/ext/demo-site/README.md b/ext/demo-site/README.md @@ -981,6 +981,8 @@ python3 test/library_inspector.py result/bin/tricu \ --directory "$WORK/inspection" --version "$VERSION" --stage-site ext/demo-site python3 ext/demo-site/prepare-showcase.py result/bin/tricu \ --directory "$WORK/showcase" --version "$VERSION" --stage-site +python3 ext/demo-site/prepare-libraries.py result/bin/tricu \ + --version "$VERSION" --stage-site ``` Then run `prepare-index.py` with explicit `--version NAME=VERSION` arguments for diff --git a/ext/demo-site/bundles/0898334053aa3bd7cea49407ec3d51c5b155a030eb51dee670da1e349229e1b3.arboricx b/ext/demo-site/bundles/0898334053aa3bd7cea49407ec3d51c5b155a030eb51dee670da1e349229e1b3.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/1f722cc4ebbe2096dd68e1d9720596cfe9c99b327fd02d55ea01c5c66e66477a.arboricx b/ext/demo-site/bundles/1f722cc4ebbe2096dd68e1d9720596cfe9c99b327fd02d55ea01c5c66e66477a.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/396195ecdb24ea812aa285192ccc552c36eb91577300042ba938408b5d01e2c9.arboricx b/ext/demo-site/bundles/396195ecdb24ea812aa285192ccc552c36eb91577300042ba938408b5d01e2c9.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/4586d8b96a93d22e2382f40a0eed353dccebe6ab05713336451b13dfd756e813.arboricx b/ext/demo-site/bundles/4586d8b96a93d22e2382f40a0eed353dccebe6ab05713336451b13dfd756e813.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/5bbdeb9f451895d515464d0fc2c3fe7f83a282bf8a0d51b9c2a52c6ca9748c93.arboricx b/ext/demo-site/bundles/5bbdeb9f451895d515464d0fc2c3fe7f83a282bf8a0d51b9c2a52c6ca9748c93.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/660f9077134b141f0398b5506f0295084953801e9360ef668e185d244f529c40.arboricx b/ext/demo-site/bundles/660f9077134b141f0398b5506f0295084953801e9360ef668e185d244f529c40.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/6a8e34e2185846c701afdd8f5ee842e21d0fa2c8cee2040113e72f1b94b5e6ab.arboricx b/ext/demo-site/bundles/6a8e34e2185846c701afdd8f5ee842e21d0fa2c8cee2040113e72f1b94b5e6ab.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/6fc6e4138589d8550886cbb2cc95d1de91940bee589ef400e5e6098bf3cc55ff.arboricx b/ext/demo-site/bundles/6fc6e4138589d8550886cbb2cc95d1de91940bee589ef400e5e6098bf3cc55ff.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/7da891b3098e3f405741f78a59e068445bbf4def4c41553bda2e5a57a4e63e2c.arboricx b/ext/demo-site/bundles/7da891b3098e3f405741f78a59e068445bbf4def4c41553bda2e5a57a4e63e2c.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/7dc94b30f4fd1043ff6e1cc4c7ddde55d9338c262de145d1d1446d7b156fac33.arboricx b/ext/demo-site/bundles/7dc94b30f4fd1043ff6e1cc4c7ddde55d9338c262de145d1d1446d7b156fac33.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/7e6e0a045b50e8e6e44e28d8b06f2a471c26a14e9613837bc20e72941a2a5bb9.arboricx b/ext/demo-site/bundles/7e6e0a045b50e8e6e44e28d8b06f2a471c26a14e9613837bc20e72941a2a5bb9.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/80b2e70901d380aaca74a7a40019d3394b1171e6e76e771f58955f03bf8da798.arboricx b/ext/demo-site/bundles/80b2e70901d380aaca74a7a40019d3394b1171e6e76e771f58955f03bf8da798.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/8e179edc0710085a37167af76c1f5bad871bb84901a7aa7345febda5d0f6c460.arboricx b/ext/demo-site/bundles/8e179edc0710085a37167af76c1f5bad871bb84901a7aa7345febda5d0f6c460.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d.arboricx b/ext/demo-site/bundles/91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/93174e0bad1894364a0a12560a75eea646e5747bcc2a71b7fd198bf9bb635596.arboricx b/ext/demo-site/bundles/93174e0bad1894364a0a12560a75eea646e5747bcc2a71b7fd198bf9bb635596.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/9b504c57dd3989c64c748841a5be71dd0f217994bae874ee799f4f09c7dfc1f8.arboricx b/ext/demo-site/bundles/9b504c57dd3989c64c748841a5be71dd0f217994bae874ee799f4f09c7dfc1f8.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/b4bc7576279d3721981a0254b55184fdd7cc11426c2591adf8a6405c3e388283.arboricx b/ext/demo-site/bundles/b4bc7576279d3721981a0254b55184fdd7cc11426c2591adf8a6405c3e388283.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/bd9b236492bb6359a6cc4dcd7c988ac2bf64abea4a1cc1c7233d1d023ca0dd1e.arboricx b/ext/demo-site/bundles/bd9b236492bb6359a6cc4dcd7c988ac2bf64abea4a1cc1c7233d1d023ca0dd1e.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/c2426615e6f90e2084bbb268305b11c06aea844e6cd3905efb92708fb2b91dde.arboricx b/ext/demo-site/bundles/c2426615e6f90e2084bbb268305b11c06aea844e6cd3905efb92708fb2b91dde.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/dcb5f1c60fac3c0cf1752d88b9e2482223d0759ef310cd7b401ef0148b7a6ffa.arboricx b/ext/demo-site/bundles/dcb5f1c60fac3c0cf1752d88b9e2482223d0759ef310cd7b401ef0148b7a6ffa.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/ec7f3cddb70f48ec5db7eac7afb7641150a6bb3400d0734ca3419b6f7a5bbfff.arboricx b/ext/demo-site/bundles/ec7f3cddb70f48ec5db7eac7afb7641150a6bb3400d0734ca3419b6f7a5bbfff.arboricx Binary files differ. diff --git a/ext/demo-site/bundles/ef024a03aeb00f82d77a0c710303e88ce254b20cd1d0d0aebb29c0309900c480.arboricx b/ext/demo-site/bundles/ef024a03aeb00f82d77a0c710303e88ce254b20cd1d0d0aebb29c0309900c480.arboricx Binary files differ. diff --git a/ext/demo-site/compiler-reference.v1 b/ext/demo-site/compiler-reference.v1 @@ -11,13 +11,13 @@ module source.build source_build lib/source/build.tri 5c24cc853df42e433916b1528f module parser parser lib/parser.tri 31e8c679e086bdf9b68e05a4bb71fd413e66e53fd93b2e4b4a806930020b36e4 module source.order source_order lib/source/order.tri ec97f34c89ead701af75053ea340ead1bb0fda13d83b474ca760c3aa359970fa module source.compile source_compile lib/source/compile.tri 3764484ae723d4311cf04b769251badf7f7a190d9480389303847be1ce665bb9 -module source.program source_program lib/source/program.tri 67cd6e68d939e49922b1718e0164854a01e5c85023a45bfab485c71c4dde55b1 +module source.program source_program lib/source/program.tri 7a99fcc8da4c502ff67bc723b3ef317409a84f608c607cfa99331dd30245845a module source.ast source_ast lib/source/ast.tri b6d05cace61c04032ea39a858dedc7482988dbb3ed47581a9a3239094263d314 module base base lib/base.tri 7ba2537cc4ec0571a7aa8a02557551245ca04f5bc08d9f9c1eb4d2606ec67b37 module bytes bytes lib/bytes.tri 6d057be42bc16788a34ce80cca7cb97251cf7dbbae8fd57100a31206ab3dd2a0 module conversions conversions lib/conversions.tri fd93454ad6cf7b0d906f367bed9a679f7f7e73cf424e33d8a62e63b023db6522 module source.lexer source_lexer lib/source/lexer.tri 94ee3a70dbed59015891f7f5c2ef588d64f1a885218edc35eed98d96d85fd11b -module source.parser source_parser lib/source/parser.tri 00d64064122dace90dd8fa8535e4f9a76450bc61de572ae40f4a05692aeac9a0 +module source.parser source_parser lib/source/parser.tri 23c8142e9629f029ae22b7c0b377bbfb69e4f9ecc5ce452094c47d063a49c9d6 module source.core source_core lib/source/core.tri b132ca49c22098c8a5d638517d701ad8141028d9389594ac2134240d240a2637 module source.lock source_lock lib/source/lock.tri 31ffd58166bf861e82da0a90594cfb9c6c12e19baa51d5166fe0e4414d24af94 module source.bundle source_bundle lib/source/bundle.tri 3fedb41000f22609b0bdab8fb222175d1347202eceabe7bdb983bc28b3258627 @@ -27,4 +27,4 @@ module source.pattern source_pattern lib/source/pattern.tri b27f1eac18cbe8ad80cd module source.equations source_equations lib/source/equations.tri 825f175f5c6dd56e103b94e924283acf5913cbc4554fb42fc07a034f460d2076 module source.stable source_stable lib/source/stable.tri b407662fec9436bfb7cc06eed2c14961174c6fa19863413ffc74d58ef72c5431 module math.native native_math lib/math/native.tri e9d0b87564d13695bef695c552e9707710d9147877f9d9dc5282c7335664cc57 -bundle 110c5740b61f91f8a6dc8926541fd2ca89cebe8771191b13ed284122964b7c2b +bundle aa29656c146d2fc239d27da869498670c401cf344516314d06b7e5634c02d6f1 diff --git a/ext/demo-site/compiler.json b/ext/demo-site/compiler.json @@ -1,8 +1,8 @@ { "schema": 1, - "hash": "9c61d59cd76036000691da6ff5e2e9f641cf5c614b424d7280e052cfcb716e75", + "hash": "91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d", "export": "source_unit.compileStableModuleDefinitions", "backend": "stable", "reference": "test/fixtures/compiler-library.arboricx", - "referenceCommit": "0cbd8346580b9d86ebd6e266c84a2de677e45d57" + "referenceCommit": "b11bc756c6e1dea2e52b60c26314c9d304348ca5" } diff --git a/ext/demo-site/demos.json b/ext/demo-site/demos.json @@ -1,11 +1,11 @@ { "schema": 1, "backend": "stable", - "nativeCompilerSha256": "d70de875988dfa309f2c167992928866f88b08af351918b8c7b5d88c541c6e94", + "nativeCompilerSha256": "bd9b236492bb6359a6cc4dcd7c988ac2bf64abea4a1cc1c7233d1d023ca0dd1e", "compilerExport": "source_unit.compileStableModuleDefinitions", - "compilerBundleSha256": "9c61d59cd76036000691da6ff5e2e9f641cf5c614b424d7280e052cfcb716e75", - "compilerManifest": "17df7d4ef56684d423ca59d5f4c4d03aa73b24c5579e00f8719e2f06641c39e6", - "hostSha256": "c1eea492839b4425f285dd3a0765bbb8bdc323d2320a2181760d34180ee15073", + "compilerBundleSha256": "91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d", + "compilerManifest": "c3d5c2c0efdac3641467968669031ba1bc21883db7307772a594c8dc04ef1582", + "hostSha256": "2bb21ddb1307e69bad141eb62f4e94b71efdf900614ba7333821e2eef2204547", "demos": { "names-values": { "demandCases": [], diff --git a/ext/demo-site/environments.json b/ext/demo-site/environments.json @@ -1,6 +1,6 @@ { "schema": 1, - "compiler": "9c61d59cd76036000691da6ff5e2e9f641cf5c614b424d7280e052cfcb716e75", + "compiler": "91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d", "profiles": { "empty": null, "practical": { diff --git a/ext/demo-site/lexer-demo.json b/ext/demo-site/lexer-demo.json @@ -3,7 +3,7 @@ "source": "!import 6aa33a710955e5746f322775b9078f57ba4145f6b723ff4b76a292285e919823 *\n!import 14282088469cc420dd014700da06998f6bb8dcf990fc885a464c0a1e1858e20d *\n!import 816df1a32853750a1254112aff8ae8c55ca86bf70e809d226969ab1d43a6688b *\n!import 7f87549d587fa8c3be88af0ea988db3adcc3b35f1ffb48973553491b075614db as N\n!export scanWord\n!export scanWhitespace\n\n-- Positioned prefix scans, not whole-input parsers. The remainder begins\n-- at the first nonmatching character. Positions count source characters,\n-- not UTF-8 bytes or display columns: only LF advances the line.\n-- Edit a predicate below and evaluate scanWord \"hello,world\" to compare.\n-- scanWhitespace accepts space, LF and tab, but deliberately not CR.\nreport reply = (let\n payload = parserReplyPayload reply\n end = snd payload\n in [\n [\"matched\" 0 (fst payload)]\n [\"remaining\" 0 (parserReplyRest reply)]\n [\"line\" 1 (lexerPositionLine end)]\n [\"column\" 1 (lexerPositionColumn end)]\n [\"offset\" 1 (lexerPositionOffset end)]\n [\"consumed\" 2 (parserReplyConsumed reply)]])\n\nscan predicate text = report (lexerMapScan reverse\n (lexerScanWhile text lexerStart [] predicate (state character : pair character state)))\nscanWord text = scan (character : N.inRange character 97 122) text\nscanWhitespace text = scan (character : or? (equal? character 32)\n (or? (equal? character 9) (equal? character 10))) text\n", "hash": "e756a481b3056a2e76f50316ccf77bfab8b15727b7bec899580c2eb919e668b2", "mode": "pure", - "compilerSha256": "d70de875988dfa309f2c167992928866f88b08af351918b8c7b5d88c541c6e94", + "compilerSha256": "bd9b236492bb6359a6cc4dcd7c988ac2bf64abea4a1cc1c7233d1d023ca0dd1e", "sourceSha256": "ec68af4102c16ef56be01e78a3288bea57af71ca57ab35374a0d12005b5a10a1", "haskellCases": [ { diff --git a/ext/demo-site/packages.json b/ext/demo-site/packages.json @@ -1393,6 +1393,484 @@ "manifest": "9984385a5ab9b81094343d2b4203e825d44c07de67f0e399ad55660e5e431998", "title": "Language reference", "demo": "language-reference" + }, + { + "name": "tricu-base", + "version": "0.3.0", + "hash": "f9f0ab0e44f6ae39479d74c6c66a2bdaba3f40bd26781c3ec95300c2ee3c07f3", + "manifest": "fa9d4df0f82cac2754fdd3e92009cb48064856ff4cc5b18f092309aef7ff5ed4", + "title": "Foundation: lists, Results and decimal formatting" + }, + { + "name": "tricu-file-io", + "version": "0.3.0", + "hash": "401961d889131c735bf48b415f53d3b85dfab0136496299f60cf1dcb0b264f14", + "manifest": "6a22866c2cff143599cb854b2cd3bb3c8948e40835425ed62d942d88bed5c5aa", + "title": "File IO and hashing actions" + }, + { + "name": "arboricx-inspection", + "version": "0.3.0", + "hash": "f571888c5aa3f7a91e9d5d6c45c674851ea8e3598514ad8d535fd3e9056d0314", + "manifest": "fe9b420e1e776fa1dda7b77857e322c0509ed308bb18441b76a3b03023f93468", + "title": "Arboricx inspection: validate without execution" + }, + { + "name": "tricu-compiler", + "version": "0.3.0", + "hash": "91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d", + "manifest": "c3d5c2c0efdac3641467968669031ba1bc21883db7307772a594c8dc04ef1582", + "title": "Compiler library (stable browser source-unit API; native helpers)" + }, + { + "name": "tricu-source-builder", + "version": "0.3.0", + "hash": "bd9b236492bb6359a6cc4dcd7c988ac2bf64abea4a1cc1c7233d1d023ca0dd1e", + "manifest": "a0820abd99bc31fb9aa0e463c61b37d0a181d44e540a03a9016e3b00c751b25c", + "title": "Stable native application compiler (modules, imports and publication)" + }, + { + "name": "arboricx-server", + "version": "0.3.0", + "hash": "c8bc5c1ebeff9189d64ffd23554026d6f39aed92e2b25a4fa0935a0d25b99608", + "manifest": "451e24aeec39ff1295c0c735897dcefd34b9219ef72a8b0c619b678373afcfa1", + "title": "Arboricx registry server (native sockets and filesystem)" + }, + { + "name": "tricu-http", + "version": "0.3.0", + "hash": "7f7b4191c8780da6a4bf20084835e67007e9e5a7b9af43476b97faf502338545", + "manifest": "e6195e968697ca5799891bcd9096b568dceb717ea6e2b14adbdb8ca041a01691", + "title": "HTTP parsing, responses and native socket handlers" + }, + { + "name": "tricu-intensional-contracts", + "version": "0.3.0", + "hash": "dd39639f1d0a1a14f7856b8d0db682adf36d1e7501ea1889bd185ea500989380", + "manifest": "7467e74f0c5b7dfad8d6a14d34171b2b0bcd7750423894e2ca920e0535fde7d1", + "title": "Intensional contracts: tree shapes and numeric structure" + }, + { + "name": "tricu-graphs", + "version": "0.3.0", + "hash": "b588b07ac71f87ab85059ea0788ee2e11d3ee77ad319310e5a21f844c98dabf4", + "manifest": "7b798a3afae6dce07b718bed855c7209ec3b898bb70b379dece935c4033cf9b6", + "title": "Dependency ordering and cycle witnesses (validated small graphs)" + }, + { + "name": "tricu-parser", + "version": "0.3.0", + "hash": "3d364a349e4a623bc022a6cdc558a490d764c4c9d6a224b65a727f2380ce5b0d", + "manifest": "14282088469cc420dd014700da06998f6bb8dcf990fc885a464c0a1e1858e20d", + "title": "Parser combinators: diagnostics, consumption and commitment" + }, + { + "name": "tricu-math", + "version": "0.3.0", + "hash": "ef024a03aeb00f82d77a0c710303e88ce254b20cd1d0d0aebb29c0309900c480", + "manifest": "7f87549d587fa8c3be88af0ea988db3adcc3b35f1ffb48973553491b075614db", + "title": "Binary arithmetic and ASCII classifiers (canonical naturals only)" + }, + { + "name": "tricu-lexer", + "version": "0.3.0", + "hash": "9bc1c7c66b150fdac8f046b2bad48b07bf585c9ea2c63b416dc72c4191b0128e", + "manifest": "816df1a32853750a1254112aff8ae8c55ca86bf70e809d226969ab1d43a6688b", + "title": "Located character scans and token positions" + }, + { + "name": "tricu-binary", + "version": "0.3.0", + "hash": "fe3b02f68025b90d0ce782885c8f72582642a985694eb4bcd702c2e006846a86", + "manifest": "7a24af56a9ce9b947cadcafd3a9da127b1507275bfac62b9fa55e27490b176dc", + "title": "Checked byte readers, prefix parsing and UTF-8 validation" + }, + { + "name": "tricu-patterns", + "version": "0.3.0", + "hash": "fb81fe47421564ac80fedc90be6003906e017978385f749d2da95297e58587c2", + "manifest": "703db8cd6c5679861257d1cc38c17be200241ade8db3812e8c387e9274aaa56e", + "title": "Ordered predicate/action dispatch and thunked conditionals" + }, + { + "name": "tricu-list-traversal", + "version": "0.3.0", + "hash": "60afc41f04fa65130326eeed4ca9e128bee5e90c7041f9641bbf9cfe87c142cd", + "manifest": "4c79b7ad124027147b8fddd98c2b66cfd776c36d915c95dfb1fbf9b31a51fb88", + "title": "Early-stopping list folds with retained input suffixes" + }, + { + "name": "tricu-formatter", + "version": "0.3.0", + "hash": "3bd4df273ab4e4599417a18210ec3ad39e2ace2f7df6c0b7cad62999c4cb52a2", + "manifest": "e8bad7dcea5944336083f5bfa3ada63d7542286fbdec0f34dfeb65e9879ba2fc", + "title": "Conservative tricu equation alignment (not an AST printer)" + }, + { + "name": "parser-demo", + "version": "0.3.0", + "hash": "355e41506f39e05da8c8a72a68aa810a486e062480322bac11af67e86980520e", + "manifest": "0c34bfdf800f8bd1b742e375a8f7c555c88d0c827268f684259433e834d94fed", + "title": "Parser combinators: complete input, prefixes and committed errors", + "demo": "parser" + }, + { + "name": "lexer-demo", + "version": "0.3.0", + "hash": "e756a481b3056a2e76f50316ccf77bfab8b15727b7bec899580c2eb919e668b2", + "manifest": "ed99e054e9c862668e165f458d3afcdc56279f766eea7a3886d440aea7252b63", + "title": "Located scans: matched prefix, remainder and character positions", + "demo": "lexer" + }, + { + "name": "tricu-lib-arboricx", + "version": "0.3.0", + "manifest": "3f70d95cf1bae0928ee89acd2a9e0cdd8287796efae32a9f08d33e3dd0149c55", + "hash": "40dfb23da91b505ea4586bbfea46a7374d299bb747796f18428de7da43fa7315", + "title": "lib/arboricx/arboricx.tri" + }, + { + "name": "tricu-lib-arboricx-common", + "version": "0.3.0", + "manifest": "0d779adef29b51ee875bf2f46ec03bef30ec48d200e7e05c9e20bd90b28ac4a4", + "hash": "2c8f29c5e1a96eac7b6d57f6dad02f7adbfca1da93742f48c2aff3534c378284", + "title": "lib/arboricx/common.tri" + }, + { + "name": "tricu-lib-arboricx-dispatch", + "version": "0.3.0", + "manifest": "eda078ba018de68718b2b7aa2d790578ac079cf98c963a78f7fcae5178fd2c19", + "hash": "7fbcf00a8412785c5c61b61c21c89d00d2597953b040faa02e6e811677b37578", + "title": "lib/arboricx/dispatch.tri" + }, + { + "name": "tricu-lib-arboricx-manifest", + "version": "0.3.0", + "manifest": "2a8a2b591dfc4192b8ded6e2ea75e94f6ff41183636f6024b6d5eb590ec8d2aa", + "hash": "718c96fe7ab33504ece9c041f7a93dddf15b281f8dfceba84291a349e260b15f", + "title": "lib/arboricx/manifest.tri" + }, + { + "name": "tricu-lib-arboricx-nodes", + "version": "0.3.0", + "manifest": "d158e4ebe9fd6cfb752023bbe031614b190b9eab79e9680875a1fc55dc481a23", + "hash": "84a7479abac8663864a5615e5c0be69b6bb64530a904ab0da274bbf68b682b01", + "title": "lib/arboricx/nodes.tri" + }, + { + "name": "tricu-lib-arboricx-server", + "version": "0.3.0", + "manifest": "451e24aeec39ff1295c0c735897dcefd34b9219ef72a8b0c619b678373afcfa1", + "hash": "c8bc5c1ebeff9189d64ffd23554026d6f39aed92e2b25a4fa0935a0d25b99608", + "title": "lib/arboricx/server.tri" + }, + { + "name": "tricu-lib-base", + "version": "0.3.0", + "manifest": "bd2c14d6db6b69308a5252a8e839705a55d30e815f012900b094315263e08d81", + "hash": "1f722cc4ebbe2096dd68e1d9720596cfe9c99b327fd02d55ea01c5c66e66477a", + "title": "lib/base.tri" + }, + { + "name": "tricu-lib-binary", + "version": "0.3.0", + "manifest": "7a24af56a9ce9b947cadcafd3a9da127b1507275bfac62b9fa55e27490b176dc", + "hash": "fe3b02f68025b90d0ce782885c8f72582642a985694eb4bcd702c2e006846a86", + "title": "lib/binary.tri" + }, + { + "name": "tricu-lib-bytes", + "version": "0.3.0", + "manifest": "16cff955cb9ab44063ed21651002d209ef7d3592fa005cd3dc32e287d6ca5b68", + "hash": "c0a9ffd923b4dd17f6c1fd105502d9e82a9064f75b6312b37c155c94a3ce73d3", + "title": "lib/bytes.tri" + }, + { + "name": "tricu-lib-conversions", + "version": "0.3.0", + "manifest": "78ce6db3557cd57f2c5799989d16a8f40104de5c4485646734a23093dc458a4e", + "hash": "fc37dd8c558961c88211c3f4faf31bc438bcda12384f94125f563f1651e09ac9", + "title": "lib/conversions.tri" + }, + { + "name": "tricu-lib-graph", + "version": "0.3.0", + "manifest": "7b798a3afae6dce07b718bed855c7209ec3b898bb70b379dece935c4033cf9b6", + "hash": "b588b07ac71f87ab85059ea0788ee2e11d3ee77ad319310e5a21f844c98dabf4", + "title": "lib/graph.tri" + }, + { + "name": "tricu-lib-http", + "version": "0.3.0", + "manifest": "e6195e968697ca5799891bcd9096b568dceb717ea6e2b14adbdb8ca041a01691", + "hash": "7f7b4191c8780da6a4bf20084835e67007e9e5a7b9af43476b97faf502338545", + "title": "lib/http.tri" + }, + { + "name": "tricu-lib-intensional", + "version": "0.3.0", + "manifest": "7467e74f0c5b7dfad8d6a14d34171b2b0bcd7750423894e2ca920e0535fde7d1", + "hash": "dd39639f1d0a1a14f7856b8d0db682adf36d1e7501ea1889bd185ea500989380", + "title": "lib/intensionalContracts.tri" + }, + { + "name": "tricu-lib-io", + "version": "0.3.0", + "manifest": "2d23be85d277457fd36c84f5eaa227e94e1c4efec281ff73017aaee109096f49", + "hash": "a51d9fcffd12aebc39166e2ba4e5b86896832db299f06322b7a2805bc4d57f05", + "title": "lib/io.tri" + }, + { + "name": "tricu-lib-lexer", + "version": "0.3.0", + "manifest": "816df1a32853750a1254112aff8ae8c55ca86bf70e809d226969ab1d43a6688b", + "hash": "9bc1c7c66b150fdac8f046b2bad48b07bf585c9ea2c63b416dc72c4191b0128e", + "title": "lib/lexer.tri" + }, + { + "name": "tricu-lib-native-math", + "version": "0.3.0", + "manifest": "7f87549d587fa8c3be88af0ea988db3adcc3b35f1ffb48973553491b075614db", + "hash": "ef024a03aeb00f82d77a0c710303e88ce254b20cd1d0d0aebb29c0309900c480", + "title": "lib/math/native.tri" + }, + { + "name": "tricu-lib-parser", + "version": "0.3.0", + "manifest": "14282088469cc420dd014700da06998f6bb8dcf990fc885a464c0a1e1858e20d", + "hash": "3d364a349e4a623bc022a6cdc558a490d764c4c9d6a224b65a727f2380ce5b0d", + "title": "lib/parser.tri" + }, + { + "name": "tricu-lib-patterns", + "version": "0.3.0", + "manifest": "703db8cd6c5679861257d1cc38c17be200241ade8db3812e8c387e9274aaa56e", + "hash": "fb81fe47421564ac80fedc90be6003906e017978385f749d2da95297e58587c2", + "title": "lib/patterns.tri" + }, + { + "name": "tricu-lib-prelude", + "version": "0.3.0", + "manifest": "6aa33a710955e5746f322775b9078f57ba4145f6b723ff4b76a292285e919823", + "hash": "7dc94b30f4fd1043ff6e1cc4c7ddde55d9338c262de145d1d1446d7b156fac33", + "title": "lib/prelude.tri" + }, + { + "name": "tricu-lib-socket", + "version": "0.3.0", + "manifest": "49fc19156894c8f5b5a7124760eb8db2ac504404dcda77ae0e3a0dea39983d44", + "hash": "decfff4079c7c202f664a55496926cce1fcd1e9c67cf67b84718bf7d663e6f4d", + "title": "lib/socket.tri" + }, + { + "name": "tricu-lib-source-ast", + "version": "0.3.0", + "manifest": "c6579f89e47a16694f1c08fe9825b183d8bc272e23cd744eb954c106b689c32f", + "hash": "af66062931c5de826bd336625d53c1c354fe6cc736e56e247ae550c542f0fa8a", + "title": "lib/source/ast.tri" + }, + { + "name": "tricu-lib-source-build-stable", + "version": "0.3.0", + "manifest": "899ebd78231147cbf6b72a71298a72c7047d6fb1d8033fac88898e178613e6a7", + "hash": "396195ecdb24ea812aa285192ccc552c36eb91577300042ba938408b5d01e2c9", + "title": "lib/source/build-stable.tri" + }, + { + "name": "tricu-lib-source-build", + "version": "0.3.0", + "manifest": "5a1c79afb0609925c1748a45f720119d35bf6ff44ea2cf1b074971f6a222d14f", + "hash": "5bbdeb9f451895d515464d0fc2c3fe7f83a282bf8a0d51b9c2a52c6ca9748c93", + "title": "lib/source/build.tri" + }, + { + "name": "tricu-lib-source-bundle", + "version": "0.3.0", + "manifest": "d1af60d301f08b0c8715da80b9c632b04e71270817e0925aec81121734f3d1e6", + "hash": "660f9077134b141f0398b5506f0295084953801e9360ef668e185d244f529c40", + "title": "lib/source/bundle.tri" + }, + { + "name": "tricu-lib-source-compile", + "version": "0.3.0", + "manifest": "fb41d71410ad8fb9c0da35a5ab0a6b782b9814bd7629737b710b7404648939cd", + "hash": "6a8e34e2185846c701afdd8f5ee842e21d0fa2c8cee2040113e72f1b94b5e6ab", + "title": "lib/source/compile.tri" + }, + { + "name": "tricu-lib-source-core", + "version": "0.3.0", + "manifest": "83e1dc8052f806b19ebc737998bbdfff23211b23a6bbe2ae6adbede8ad1652a2", + "hash": "d7105ef477224dfb10ad2773e54744cb3f87ddf304eb753d7cb9ba40ea9cc3df", + "title": "lib/source/core.tri" + }, + { + "name": "tricu-lib-source-equations", + "version": "0.3.0", + "manifest": "568c5d782a847e4f8d6b7061d51d34fc527a466b872ede27032104293df3bf8f", + "hash": "0898334053aa3bd7cea49407ec3d51c5b155a030eb51dee670da1e349229e1b3", + "title": "lib/source/equations.tri" + }, + { + "name": "tricu-lib-source-export-cache", + "version": "0.3.0", + "manifest": "7f29e52b9154b0ba6410836b055f8628f76bc51aa572efa2ef691f37ecaec077", + "hash": "7e6e0a045b50e8e6e44e28d8b06f2a471c26a14e9613837bc20e72941a2a5bb9", + "title": "lib/source/export-cache.tri" + }, + { + "name": "tricu-lib-source-index", + "version": "0.3.0", + "manifest": "c2946fe3ac0daf1a06d6f7deab9f7ad08d679c241b04ad9c0c6d3b6038cf091d", + "hash": "1f18232479e776982515edc3fe2c0f39fad79e2b428c2ff040d92edf5441ac6a", + "title": "lib/source/index.tri" + }, + { + "name": "tricu-lib-source-lexer", + "version": "0.3.0", + "manifest": "4cc4ed214d6e474b339c970d04cc09ced20c6472758b58897aabbd6f3a5bbb42", + "hash": "b61e8d7d31f730c1e4db08c729435302e76eb911ee2c45b110f2932a60b2eb33", + "title": "lib/source/lexer.tri" + }, + { + "name": "tricu-lib-source-lock", + "version": "0.3.0", + "manifest": "eb0f1347b5ff7773d074212c4f01276398a8dcd9e01fbd61643a5ce0cdb7ec6e", + "hash": "dcb5f1c60fac3c0cf1752d88b9e2482223d0759ef310cd7b401ef0148b7a6ffa", + "title": "lib/source/lock.tri" + }, + { + "name": "tricu-lib-source-map", + "version": "0.3.0", + "manifest": "b8326b79c0b2f7b1c95d7892752a8543077897ce0d61fe5050cbb60d1a9f0cf9", + "hash": "93174e0bad1894364a0a12560a75eea646e5747bcc2a71b7fd198bf9bb635596", + "title": "lib/source/map.tri" + }, + { + "name": "tricu-lib-source-module", + "version": "0.3.0", + "manifest": "4241d44daa8875d2c479fc02e854ee62e5b03ce45395f026d0430a80e912ab74", + "hash": "80b2e70901d380aaca74a7a40019d3394b1171e6e76e771f58955f03bf8da798", + "title": "lib/source/module.tri" + }, + { + "name": "tricu-lib-source-object", + "version": "0.3.0", + "manifest": "dc29e3d043b9dc8685ed05ede1c226b3f14f47c63365b623214cf709a275b3bf", + "hash": "acb79eb9c2f56a18c1c740aaaee97e9e5e53f55b56602bd16a351d85cfadc192", + "title": "lib/source/object.tri" + }, + { + "name": "tricu-lib-source-order", + "version": "0.3.0", + "manifest": "1d55b1616e892be989d2c987099c84bef61686fc67f6a3eb5b1a373626b0ca5e", + "hash": "4586d8b96a93d22e2382f40a0eed353dccebe6ab05713336451b13dfd756e813", + "title": "lib/source/order.tri" + }, + { + "name": "tricu-lib-source-parser", + "version": "0.3.0", + "manifest": "425b921ef62e99dd93f6d3389c82fdbb583eaeb857975717441c5469f98f3a73", + "hash": "ec7f3cddb70f48ec5db7eac7afb7641150a6bb3400d0734ca3419b6f7a5bbfff", + "title": "lib/source/parser.tri" + }, + { + "name": "tricu-lib-source-pattern", + "version": "0.3.0", + "manifest": "d14232cb623da7a59883ae5e0c773fa71037a887a7dcf3352e48cc8dff421123", + "hash": "c2426615e6f90e2084bbb268305b11c06aea844e6cd3905efb92708fb2b91dde", + "title": "lib/source/pattern.tri" + }, + { + "name": "tricu-lib-source-program", + "version": "0.3.0", + "manifest": "447aa7d321344146772a2693e83b2ab87a0058e281c42780e1bb5b24e0ea995d", + "hash": "7da891b3098e3f405741f78a59e068445bbf4def4c41553bda2e5a57a4e63e2c", + "title": "lib/source/program.tri" + }, + { + "name": "tricu-lib-source-resolve", + "version": "0.3.0", + "manifest": "ed934dd01014852aa2e3734444538d0c0807da41bc661cd3965eca6ed16ceffe", + "hash": "6fc6e4138589d8550886cbb2cc95d1de91940bee589ef400e5e6098bf3cc55ff", + "title": "lib/source/resolve.tri" + }, + { + "name": "tricu-lib-source-stable", + "version": "0.3.0", + "manifest": "5189315a72af93ee9fe3dbc8c73e07e97b980b4c91b9c2f6244d447461db55dd", + "hash": "b4bc7576279d3721981a0254b55184fdd7cc11426c2591adf8a6405c3e388283", + "title": "lib/source/stable.tri" + }, + { + "name": "tricu-lib-source-staged-conditional-experiment", + "version": "0.3.0", + "manifest": "43113de593d0e70f3f94e8dafff0600d6f60b5a011d80cdc6e84166fed29b682", + "hash": "9b504c57dd3989c64c748841a5be71dd0f217994bae874ee799f4f09c7dfc1f8", + "title": "lib/source/staged-conditional-experiment.tri" + }, + { + "name": "tricu-lib-source-staged-list-experiment", + "version": "0.3.0", + "manifest": "c1c062475b966bd6adae0148db1751959400f59ba73c6f84ca0e561599639e98", + "hash": "eac98c45250ba80f2331cb71128306b25bd61b4e8e3e063b9b635ec654f4d698", + "title": "lib/source/staged-list-experiment.tri" + }, + { + "name": "tricu-lib-source-staging-experiment", + "version": "0.3.0", + "manifest": "db8e78afce2dadd987a2e7840b1107da75d3cc9c4ac3e5cd217cf0bc2ff00790", + "hash": "bd742a4ec55cf68f1f1b382979fdf6b5c098039089be16c76b4621b8ca07d9cb", + "title": "lib/source/staging-experiment.tri" + }, + { + "name": "tricu-lib-source-unit", + "version": "0.3.0", + "manifest": "1e395371289a7c43d4237a30b3a6c186a38039f0b7c9a87f27e64f43f4da90a9", + "hash": "8e179edc0710085a37167af76c1f5bad871bb84901a7aa7345febda5d0f6c460", + "title": "lib/source/unit.tri" + }, + { + "name": "tricu-lib-arboricx-inspect", + "version": "0.3.0", + "manifest": "fe9b420e1e776fa1dda7b77857e322c0509ed308bb18441b76a3b03023f93468", + "hash": "f571888c5aa3f7a91e9d5d6c45c674851ea8e3598514ad8d535fd3e9056d0314", + "title": "lib/arboricx/inspect.tri" + }, + { + "name": "tricu-lib-packages-base", + "version": "0.3.0", + "manifest": "fa9d4df0f82cac2754fdd3e92009cb48064856ff4cc5b18f092309aef7ff5ed4", + "hash": "f9f0ab0e44f6ae39479d74c6c66a2bdaba3f40bd26781c3ec95300c2ee3c07f3", + "title": "lib/packages/base.tri" + }, + { + "name": "tricu-lib-packages-io", + "version": "0.3.0", + "manifest": "6a22866c2cff143599cb854b2cd3bb3c8948e40835425ed62d942d88bed5c5aa", + "hash": "401961d889131c735bf48b415f53d3b85dfab0136496299f60cf1dcb0b264f14", + "title": "lib/packages/io.tri" + }, + { + "name": "tricu-lib-recursion-list", + "version": "0.3.0", + "manifest": "4c79b7ad124027147b8fddd98c2b66cfd776c36d915c95dfb1fbf9b31a51fb88", + "hash": "60afc41f04fa65130326eeed4ca9e128bee5e90c7041f9641bbf9cfe87c142cd", + "title": "lib/recursion/list.tri" + }, + { + "name": "tricu-lib-source-bundle-stable", + "version": "0.3.0", + "manifest": "a06948780686a4432f97ce0a7ab5f8ed66a535a6d5563275e5f32375a679cb59", + "hash": "3de401378f33dd8f93e9ca11c1c2bd73a458dabcd8d631a33ba17306f83d7d3b", + "title": "lib/source/bundle-stable.tri" + }, + { + "name": "tricu-lib-tools-format-tri", + "version": "0.3.0", + "manifest": "e8bad7dcea5944336083f5bfa3ada63d7542286fbdec0f34dfeb65e9879ba2fc", + "hash": "3bd4df273ab4e4599417a18210ec3ad39e2ace2f7df6c0b7cad62999c4cb52a2", + "title": "lib/tools/format-tri.tri" } ] } diff --git a/ext/demo-site/parser-demo.json b/ext/demo-site/parser-demo.json @@ -3,7 +3,7 @@ "source": "!import 6aa33a710955e5746f322775b9078f57ba4145f6b723ff4b76a292285e919823 *\n!import 14282088469cc420dd014700da06998f6bb8dcf990fc885a464c0a1e1858e20d *\n!import 7f87549d587fa8c3be88af0ea988db3adcc3b35f1ffb48973553491b075614db as N\n!export parseNames\n!export parsePrefix\n\n-- Lowercase names separated by commas. Try \"red,green\", \"red,,blue\",\n-- \"red,\" and \"red green\". A comma commits to another name.\n-- parseNames requires the entire input; parsePrefix exposes any remainder.\n-- Edit the parser or labels below; valid edits compile locally.\n-- Imports pin complete library interfaces, fetched only when compiling.\nnameParser = parserLabel \"lowercase name\" (parserSome (parserSatisfy (c : N.inRange c 97 122)))\ncommaParser = parserThen (parserExpect 44) parserCommit\nnamesPrefix = parserSepBy1 nameParser commaParser\nnamesComplete = parserBefore namesPrefix (parserLabel \"end of input\" parserEof)\n\nreport reply = (parserMatchReply\n (diagnostic rest consumed committed : [\n [\"status\" 0 \"error\"]\n [\"expected\" 0 (parserDiagnosticExpected diagnostic)]\n [\"remaining\" 0 rest]\n [\"consumed\" 2 consumed]\n [\"committed\" 2 committed]])\n (names rest consumed committed : [\n [\"status\" 0 \"ok\"]\n [\"names\" 0 (intercalate \", \" names)]\n [\"count\" 1 (length names)]\n [\"remaining\" 0 rest]\n [\"consumed\" 2 consumed]\n [\"committed\" 2 committed]])\n reply)\nparseNames text = report (namesComplete text)\nparsePrefix text = report (namesPrefix text)\n", "hash": "355e41506f39e05da8c8a72a68aa810a486e062480322bac11af67e86980520e", "mode": "pure", - "compilerSha256": "d70de875988dfa309f2c167992928866f88b08af351918b8c7b5d88c541c6e94", + "compilerSha256": "bd9b236492bb6359a6cc4dcd7c988ac2bf64abea4a1cc1c7233d1d023ca0dd1e", "sourceSha256": "18aa0a464dabb595749abdab5edb1bb11c4356c0e753cf0985a644901bb5c241", "haskellCases": [ { diff --git a/ext/demo-site/test/browser.mjs b/ext/demo-site/test/browser.mjs @@ -5,7 +5,7 @@ import {resolve} from 'node:path'; if(!process.env.ARBORICX_SITE_ROOT)throw Error('Set ARBORICX_SITE_ROOT to the built arboricxSite, including all runtime assets'); process.env.TEST_IDE='1'; -process.env.TEST_BACKEND??='js'; +process.env.TEST_BACKEND??='haskell-wasm'; if(process.argv[3])process.env.TEST_SCREENSHOT_PREFIX=process.argv[3]; const browser=process.argv[2]||'chromium'; process.argv=[process.argv[0],process.argv[1],resolve(process.env.ARBORICX_SITE_ROOT,'runtime/haskell'),browser]; diff --git a/ext/demo-site/test/bundle.test.mjs b/ext/demo-site/test/bundle.test.mjs @@ -7,7 +7,7 @@ import {COMPILER_BUNDLE_LIMIT,decodeBundle,loadBundle,bundleHash,fetchBytes,fetc import {makeBundle,sizedBundle} from './bundle-fixture.mjs'; // Independently counted from the authenticated compiler manifest with the // Python bundle reader; older indexed compiler releases remain retained. -const COMPILER_EXPORT_COUNT=1191; +const COMPILER_EXPORT_COUNT=1194; const data=JSON.parse(await readFile(new URL('../demos.json',import.meta.url))); test('stable packaged sources/pins and real compiler bundle decode',async()=>{ for(const [name,demo] of Object.entries(data.demos)){ diff --git a/ext/demo-site/test/compiler-conformance.json b/ext/demo-site/test/compiler-conformance.json @@ -1,6 +1,6 @@ { - "compilerBundleSha256": "9c61d59cd76036000691da6ff5e2e9f641cf5c614b424d7280e052cfcb716e75", - "hostSha256": "662fcf80231c070e4aa15dff1438aa1f5c99fb27a905f46a62efaff46c49f668", + "compilerBundleSha256": "91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d", + "hostSha256": "2bb21ddb1307e69bad141eb62f4e94b71efdf900614ba7333821e2eef2204547", "backend": "stable", "export": "source_unit.compileStableModuleDefinitions", "cases": [ @@ -76,6 +76,29 @@ "result": "2021020210202100" }, { + "source": "id x = x\nmain =\n id\n 42", + "export": "main", + "arguments": [], + "expectedNumber": 42, + "extended": true, + "definitions": { + "id": "21100", + "main": "2021020210202100" + }, + "result": "2021020210202100" + }, + { + "source": "main = case t of\n t = value\n _ = 0\nwhere value = 42", + "export": "main", + "arguments": [], + "expectedNumber": 42, + "extended": true, + "definitions": { + "main": "2021020210202100" + }, + "result": "2021020210202100" + }, + { "source": "id = (", "diagnostic": "Compiler diagnostic 2: expected token kind 7" }, diff --git a/ext/demo-site/test/conformance.json b/ext/demo-site/test/conformance.json @@ -1,5 +1,5 @@ { - "hostSha256": "662fcf80231c070e4aa15dff1438aa1f5c99fb27a905f46a62efaff46c49f668", + "hostSha256": "2bb21ddb1307e69bad141eb62f4e94b71efdf900614ba7333821e2eef2204547", "description": "All normal trees <=5 nodes, every ordered application pair; lazy regression and partial/multiple applications.", "cases": [ { diff --git a/ext/demo-site/test/contracts-conformance.json b/ext/demo-site/test/contracts-conformance.json @@ -1,6 +1,6 @@ { - "compilerBundleSha256": "9c61d59cd76036000691da6ff5e2e9f641cf5c614b424d7280e052cfcb716e75", - "hostSha256": "662fcf80231c070e4aa15dff1438aa1f5c99fb27a905f46a62efaff46c49f668", + "compilerBundleSha256": "91f78730b3623d019e33f96e9e2712d61b04837b21ef3eccec3071ac9260944d", + "hostSha256": "2bb21ddb1307e69bad141eb62f4e94b71efdf900614ba7333821e2eef2204547", "contractsSourceSha256": "8f69b32c50461edd5db536becb6faedd5ba33945bf774534592034350702600a", "bindings": { "matchResult": "base.matchResult", diff --git a/ext/demo-site/test/live-ux-probe.mjs b/ext/demo-site/test/live-ux-probe.mjs @@ -88,7 +88,8 @@ export async function run(control,backend='haskell-wasm',alreadyUsed=false){ input('source-editor','answer = missingLatestName');await status('Compilation failed'); assert(el('run').disabled&&!el('compile-diagnostic').hidden,'Invalid latest source blocks evaluation'); assert(el('result').textContent==='45'&&!el('result-stale').hidden,'Diagnostic preserves prior result'); - input('source-editor','answer = 46');await status('Compiled');await evaluate('answer','46'); + // The body and its argument align: no parentheses or extra argument indent. + input('source-editor','identity value = value\nanswer =\n identity\n 46');await status('Compiled');await evaluate('answer','46'); // Runtime switching rebuilds automatically but cannot carry definitions across. const other=backend==='haskell-wasm'?'zig-wasm':'haskell-wasm'; change('runtime-backend',other);assert(el('run').disabled,'Backend change invalidates runnable revision');