@greenpandastudios/aug-cli 0.20.1 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/docs/assets/benchmarks/execution.svg +774 -637
- package/docs/assets/benchmarks/http.svg +278 -249
- package/docs/assets/benchmarks/improvements.svg +66 -66
- package/docs/assets/benchmarks/kernels-mobile.svg +1 -0
- package/docs/assets/benchmarks/kernels.svg +1 -0
- package/docs/assets/benchmarks/memory.svg +153 -153
- package/docs/benchmark-results.json +227089 -90363
- package/docs/compatibility.md +6 -6
- package/docs/contributing-benchmarks.md +36 -6
- package/docs/dev-containers.md +8 -15
- package/docs/dgx-consumers.json +122 -0
- package/docs/dgx-gyms.json +784 -0
- package/docs/dgx-kernels.json +1170 -0
- package/docs/dgx-performance.json +227849 -0
- package/docs/dgx-spark.md +64 -0
- package/docs/diagnostics.md +1 -1
- package/docs/docker.md +16 -17
- package/docs/example-projects.json +32 -0
- package/docs/examples/approved-design/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/approved-design/domain/app.md +4 -4
- package/docs/examples/approved-design/main.md +2 -2
- package/docs/examples/calls-benchmark/index.md +36 -0
- package/docs/examples/calls-benchmark/main.md +78 -0
- package/docs/examples/calls-benchmark/operations.md +60 -0
- package/docs/examples/developer-workflow/calculator.md +5 -5
- package/docs/examples/developer-workflow/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/developer-workflow/logging/console.md +2 -2
- package/docs/examples/developer-workflow/logging/logger.md +2 -2
- package/docs/examples/developer-workflow/main.md +2 -2
- package/docs/examples/errors-benchmark/index.md +36 -0
- package/docs/examples/errors-benchmark/main.md +92 -0
- package/docs/examples/errors-benchmark/operations.md +65 -0
- package/docs/examples/float-benchmark/index.md +35 -0
- package/docs/examples/float-benchmark/main.md +75 -0
- package/docs/examples/generic-di/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/generic-di/main.md +2 -2
- package/docs/examples/generic-di/types.md +3 -3
- package/docs/examples/hello/app/greeter.md +3 -3
- package/docs/examples/hello/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/hello/logging/console.md +2 -2
- package/docs/examples/hello/logging/logger.md +2 -2
- package/docs/examples/hello/main.md +2 -2
- package/docs/examples/index.md +18 -1
- package/docs/examples/interceptors/app.md +5 -5
- package/docs/examples/interceptors/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/interceptors/interceptors.md +2 -2
- package/docs/examples/interceptors/logging.md +3 -3
- package/docs/examples/interceptors/main.md +2 -2
- package/docs/examples/list-benchmark/index.md +35 -0
- package/docs/examples/list-benchmark/main.md +78 -0
- package/docs/examples/map-churn-benchmark/index.md +35 -0
- package/docs/examples/map-churn-benchmark/main.md +106 -0
- package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/api.md +104 -0
- package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.md +54 -0
- package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi-json.md +48 -0
- package/docs/examples/native-blake3/hashing.md +93 -0
- package/docs/examples/native-blake3/index.md +38 -0
- package/docs/examples/native-blake3/main.md +73 -0
- package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/api.md +406 -0
- package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.md +51 -0
- package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.md +63 -0
- package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi-json.md +161 -0
- package/docs/examples/native-pytorch/index.md +38 -0
- package/docs/examples/native-pytorch/main.md +73 -0
- package/docs/examples/native-pytorch/tensors.md +123 -0
- package/docs/examples/native-sqlite/database.md +116 -0
- package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/api.md +284 -0
- package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.md +51 -0
- package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.md +75 -0
- package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi-json.md +119 -0
- package/docs/examples/native-sqlite/index.md +38 -0
- package/docs/examples/native-sqlite/main.md +73 -0
- package/docs/examples/native-zlib/compression.md +99 -0
- package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/api.md +153 -0
- package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.md +54 -0
- package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi-json.md +76 -0
- package/docs/examples/native-zlib/index.md +38 -0
- package/docs/examples/native-zlib/main.md +78 -0
- package/docs/examples/new-syntax/console.md +2 -2
- package/docs/examples/new-syntax/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/new-syntax/greeter.md +3 -3
- package/docs/examples/new-syntax/logger.md +2 -2
- package/docs/examples/new-syntax/main.md +2 -2
- package/docs/examples/ownership-transfer/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
- package/docs/examples/ownership-transfer/main.md +2 -2
- package/docs/examples/ownership-transfer/resource.md +2 -2
- package/docs/examples/packages-math/aug-package-json.md +1 -1
- package/docs/examples/records-benchmark/data.md +55 -0
- package/docs/examples/records-benchmark/index.md +36 -0
- package/docs/examples/records-benchmark/main.md +85 -0
- package/docs/examples/strings-benchmark/index.md +35 -0
- package/docs/examples/strings-benchmark/main.md +76 -0
- package/docs/examples/tasks-benchmark/index.md +36 -0
- package/docs/examples/tasks-benchmark/main.md +89 -0
- package/docs/examples/tasks-benchmark/operations.md +58 -0
- package/docs/getting-started.md +3 -3
- package/docs/grammar.md +2 -2
- package/docs/gym-results.json +784 -0
- package/docs/implementation-map.md +6 -0
- package/docs/index.md +1 -1
- package/docs/kernel-results.json +1170 -0
- package/docs/language-conformance.md +6 -0
- package/docs/language-constructs.md +9 -1
- package/docs/learn/index.md +1 -1
- package/docs/maintaining-docs.md +1 -1
- package/docs/native-implementation.md +276 -0
- package/docs/native-interop-llvm-plan.md +342 -0
- package/docs/native-package-examples.md +684 -0
- package/docs/native-packages.md +179 -0
- package/docs/packages.md +2 -2
- package/docs/performance.md +50 -29
- package/docs/production-readiness.md +11 -1
- package/docs/public/downloads/approved-design.zip +0 -0
- package/docs/public/downloads/calls-benchmark.zip +0 -0
- package/docs/public/downloads/developer-workflow.zip +0 -0
- package/docs/public/downloads/errors-benchmark.zip +0 -0
- package/docs/public/downloads/float-benchmark.zip +0 -0
- package/docs/public/downloads/generic-di.zip +0 -0
- package/docs/public/downloads/hello.zip +0 -0
- package/docs/public/downloads/interceptors.zip +0 -0
- package/docs/public/downloads/json-benchmark.zip +0 -0
- package/docs/public/downloads/list-benchmark.zip +0 -0
- package/docs/public/downloads/map-churn-benchmark.zip +0 -0
- package/docs/public/downloads/native-blake3.zip +0 -0
- package/docs/public/downloads/native-pytorch.zip +0 -0
- package/docs/public/downloads/native-sqlite.zip +0 -0
- package/docs/public/downloads/native-zlib.zip +0 -0
- package/docs/public/downloads/new-syntax.zip +0 -0
- package/docs/public/downloads/oidc-login.zip +0 -0
- package/docs/public/downloads/ownership-transfer.zip +0 -0
- package/docs/public/downloads/packages-app.zip +0 -0
- package/docs/public/downloads/packages-math.zip +0 -0
- package/docs/public/downloads/records-benchmark.zip +0 -0
- package/docs/public/downloads/strings-benchmark.zip +0 -0
- package/docs/public/downloads/tasks-benchmark.zip +0 -0
- package/docs/qualification-results.md +66 -0
- package/docs/reference.md +24 -0
- package/docs/releasing.md +81 -6
- package/docs/research/libtorch-native-qualification.md +115 -0
- package/docs/research/native-interop-llvm.md +197 -0
- package/docs/research/qualification-methods.md +15 -0
- package/docs/roadmap.md +1 -0
- package/docs/safety-gyms.md +41 -0
- package/docs/tooling.md +16 -15
- package/docs/web-library-gaps.md +1 -1
- package/docs/web.md +4 -0
- package/examples/approved-design/.aug-spec/manifest.json +3 -3
- package/examples/approved-design/domain/app.aug.md +4 -4
- package/examples/approved-design/main.aug.md +2 -2
- package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
- package/examples/developer-workflow/calculator.aug.md +5 -5
- package/examples/developer-workflow/logging/console.aug.md +2 -2
- package/examples/developer-workflow/logging/logger.aug.md +2 -2
- package/examples/developer-workflow/main.aug.md +2 -2
- package/examples/generic-di/.aug-spec/manifest.json +3 -3
- package/examples/generic-di/main.aug.md +2 -2
- package/examples/generic-di/types.aug.md +3 -3
- package/examples/hello/.aug-spec/manifest.json +3 -3
- package/examples/hello/app/greeter.aug.md +3 -3
- package/examples/hello/logging/console.aug.md +2 -2
- package/examples/hello/logging/logger.aug.md +2 -2
- package/examples/hello/main.aug.md +2 -2
- package/examples/interceptors/.aug-spec/manifest.json +3 -3
- package/examples/interceptors/app.aug.md +5 -5
- package/examples/interceptors/interceptors.aug.md +2 -2
- package/examples/interceptors/logging.aug.md +3 -3
- package/examples/interceptors/main.aug.md +2 -2
- package/examples/native-blake3/.aug-spec/manifest.json +16 -0
- package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.1/native.abi.json +29 -0
- package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug +14 -0
- package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug.md +34 -0
- package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug +4 -0
- package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug.md +8 -0
- package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi.json +29 -0
- package/examples/native-blake3/AGENTS.md +5 -0
- package/examples/native-blake3/aug.lock.json +253 -0
- package/examples/native-blake3/hashing.aug +11 -0
- package/examples/native-blake3/hashing.aug.md +25 -0
- package/examples/native-blake3/main.aug +8 -0
- package/examples/native-blake3/main.aug.md +13 -0
- package/examples/native-pytorch/.aug-spec/manifest.json +18 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.1/native.abi.json +142 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.3/native.abi.json +142 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug +101 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug.md +160 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug +3 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug.md +8 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug +6 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug.md +13 -0
- package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi.json +142 -0
- package/examples/native-pytorch/AGENTS.md +5 -0
- package/examples/native-pytorch/aug.lock.json +309 -0
- package/examples/native-pytorch/main.aug +8 -0
- package/examples/native-pytorch/main.aug.md +13 -0
- package/examples/native-pytorch/tensors.aug +23 -0
- package/examples/native-pytorch/tensors.aug.md +35 -0
- package/examples/native-sqlite/.aug-spec/manifest.json +18 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.2/native.abi.json +100 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug +48 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug.md +91 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug +3 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug.md +8 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug +8 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug.md +22 -0
- package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi.json +100 -0
- package/examples/native-sqlite/AGENTS.md +5 -0
- package/examples/native-sqlite/aug.lock.json +236 -0
- package/examples/native-sqlite/database.aug +15 -0
- package/examples/native-sqlite/database.aug.md +27 -0
- package/examples/native-sqlite/main.aug +8 -0
- package/examples/native-sqlite/main.aug.md +13 -0
- package/examples/native-zlib/.aug-spec/manifest.json +16 -0
- package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.1/native.abi.json +57 -0
- package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug +29 -0
- package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug.md +54 -0
- package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug +4 -0
- package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug.md +8 -0
- package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi.json +57 -0
- package/examples/native-zlib/AGENTS.md +5 -0
- package/examples/native-zlib/aug.lock.json +236 -0
- package/examples/native-zlib/compression.aug +15 -0
- package/examples/native-zlib/compression.aug.md +27 -0
- package/examples/native-zlib/main.aug +10 -0
- package/examples/native-zlib/main.aug.md +13 -0
- package/examples/new-syntax/.aug-spec/manifest.json +3 -3
- package/examples/new-syntax/console.aug.md +2 -2
- package/examples/new-syntax/greeter.aug.md +3 -3
- package/examples/new-syntax/logger.aug.md +2 -2
- package/examples/new-syntax/main.aug.md +2 -2
- package/examples/oidc-login/aug.lock.json +6 -6
- package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
- package/examples/ownership-transfer/main.aug.md +2 -2
- package/examples/ownership-transfer/resource.aug.md +2 -2
- package/examples/packages/math/aug-package.json +1 -1
- package/native/compiler-packs.json +43 -0
- package/package.json +3 -2
- package/runtime/aug_http.c +48 -21
- package/runtime/aug_http_ir.c +30 -0
- package/runtime/aug_http_ir.h +18 -0
- package/runtime/aug_ir.c +209 -0
- package/runtime/aug_ir.h +89 -0
- package/runtime/aug_json.c +6 -1
- package/runtime/aug_runtime.c +82 -16
- package/runtime/aug_runtime.h +16 -2
- package/runtime/aug_tasks.c +38 -7
- package/runtime/aug_values.c +12 -6
- package/scripts/bootstrap-native.mjs +4 -1
- package/src/ast.js +1 -1
- package/src/checker.js +110 -28
- package/src/cli.js +92 -14
- package/src/codegen.js +31 -6
- package/src/compiler-packs.js +66 -0
- package/src/config.js +2 -2
- package/src/editor.js +15 -6
- package/src/formatter.js +4 -2
- package/src/git-http.js +137 -0
- package/src/git-packages.js +9 -1
- package/src/help.js +10 -2
- package/src/ir-types.js +5 -0
- package/src/ir-verify.js +277 -0
- package/src/ir.js +962 -0
- package/src/llvm-debug.js +101 -0
- package/src/llvm-native.js +152 -0
- package/src/llvm-platform.js +20 -0
- package/src/llvm.js +781 -0
- package/src/native-artifacts.js +207 -0
- package/src/native-bindings.js +189 -0
- package/src/native-contracts.js +295 -0
- package/src/native-declarations.js +68 -0
- package/src/native-facts.js +63 -0
- package/src/package-locking.js +43 -0
- package/src/package-manager.js +23 -8
- package/src/parser.js +20 -2
- package/src/project.js +2 -2
- package/src/runtime-abi.js +23 -0
- package/src/runtime-adapters.js +18 -0
- package/src/schemas.js +24 -17
- package/src/semantic.js +8 -3
- package/src/snippets.js +1 -0
- package/src/spec.js +49 -8
- /package/examples/approved-design/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/approved-design/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
- /package/examples/developer-workflow/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/developer-workflow/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
- /package/examples/generic-di/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/generic-di/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
- /package/examples/hello/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/hello/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
- /package/examples/interceptors/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/interceptors/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
- /package/examples/new-syntax/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/new-syntax/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
- /package/examples/ownership-transfer/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
- /package/examples/ownership-transfer/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
package/docs/tooling.md
CHANGED
|
@@ -4,7 +4,7 @@ Use this page to look up CLI commands, project configuration, native requirement
|
|
|
4
4
|
|
|
5
5
|
## CLI
|
|
6
6
|
|
|
7
|
-
Install `aug` once as shown in [Your first project](getting-started.md). Commands take a project folder, defaulting to the current directory. Editor commands also accept --file and --offset; use --help for the command inventory.
|
|
7
|
+
Install `aug` once as shown in [Your first project](getting-started.md). Commands take a project folder, defaulting to the current directory. Editor commands also accept --file and --offset; use --help for the command inventory. `emit-ir`, `emit-llvm`, and the LLVM backend below require the unpublished development compiler until its matching preview release is available.
|
|
8
8
|
|
|
9
9
|
| Command | Output |
|
|
10
10
|
| --- | --- |
|
|
@@ -12,6 +12,8 @@ Install `aug` once as shown in [Your first project](getting-started.md). Command
|
|
|
12
12
|
| `build PROJECT [--out NAME] [--json]` | Native path; JSON contains output and sourceMap. |
|
|
13
13
|
| `run [PROJECT] [--offline] -- args...` | Prepares declared packages and required native libraries, checks, compiles, and runs; program stdout is preserved. |
|
|
14
14
|
| `emit-c PROJECT` | Generated C for inspection. |
|
|
15
|
+
| `emit-llvm PROJECT` | Checked execution IR lowered directly to LLVM IR. |
|
|
16
|
+
| `emit-ir PROJECT` | Verified August execution IR with typed root cells and source locations, for compiler contributors. |
|
|
15
17
|
| `format PROJECT [--file PATH] [--write] [--json]` | Canonical source; --write updates files. |
|
|
16
18
|
| `migrate PROJECT [--file PATH] [--write] [--json]` | Verified migration of rejected legacy syntax; preview by default. |
|
|
17
19
|
| `spec PROJECT [--check] [--json]` | Adjacent Markdown specs and offline dependency explanations; --check detects drift without writing. |
|
|
@@ -29,9 +31,9 @@ Warnings are nonblocking. Human diagnostics show the source line, a pointer, and
|
|
|
29
31
|
|
|
30
32
|
## Native standard libraries
|
|
31
33
|
|
|
32
|
-
`aug run`
|
|
34
|
+
The pending 0.21.0 compiler uses LLVM by default on macOS 14+ ARM64 and GNU/Linux x64/ARM64 with glibc 2.36+. `aug run` prepares source packages and the verified compiler/runtime pack, then builds and starts the application. `build`, `test`, and `bench` use the same backend; install source packages before running them in a fresh project. Consumers do not install Clang, LLVM, or an SDK. The published 0.20.1 CLI uses the older C workflow.
|
|
33
35
|
|
|
34
|
-
The first
|
|
36
|
+
The first LLVM run downloads the host's tools and prebuilt runtime components. JSON, tasks, crypto, and HTTP select components from that pack. A native package can add its own platform archives. Each download has a SHA-256 pin and size bound; later projects share verified cache entries. Installation never runs package build scripts or silently falls back to a source build. Missing artifacts and unsupported platforms include the failed requirement and a recovery step.
|
|
35
37
|
|
|
36
38
|
For an offline run, prepare the project once with network access, then use:
|
|
37
39
|
|
|
@@ -39,9 +41,9 @@ For an offline run, prepare the project once with network access, then use:
|
|
|
39
41
|
aug run --offline
|
|
40
42
|
```
|
|
41
43
|
|
|
42
|
-
`--offline` prevents dependency downloads; it does not restrict application networking.
|
|
44
|
+
`--offline` prevents dependency downloads; it does not restrict application networking. `--frozen` requires recorded source, native artifact, compiler, and runtime selections for the current host. Prepare a project once online before using both flags. A cache for another architecture cannot satisfy the current host. See [native packages](native-packages.md) for supported platforms and exact qualification status.
|
|
43
45
|
|
|
44
|
-
Set `
|
|
46
|
+
Set `AUG_NATIVE_ARTIFACT_CACHE` to share verified downloads across compiler copies. The CLI and bundled VS Code compiler use the same LLVM default and archive pins. Native library deployment files load relative to the executable. The temporary `--backend c` reference needs a C11 compiler and source-build tools; `AUG_NATIVE_HOME` and `aug-native` configure that contributor workflow.
|
|
45
47
|
|
|
46
48
|
The [web guide](web.md) covers transport/TLS/OpenAPI configuration and the working login app. The [gap ledger](web-library-gaps.md) records remaining native and language coverage.
|
|
47
49
|
|
|
@@ -70,16 +72,13 @@ lint:
|
|
|
70
72
|
module_dependencies:
|
|
71
73
|
- ".: app, contracts"
|
|
72
74
|
- "app: contracts, shared"
|
|
73
|
-
libraries:
|
|
74
|
-
- m
|
|
75
|
-
library_paths:
|
|
76
|
-
- native/lib
|
|
77
75
|
```
|
|
78
76
|
|
|
79
77
|
| Key | Contract |
|
|
80
78
|
| --- | --- |
|
|
81
79
|
| output | Executable name under .aug-build, or an absolute output path. |
|
|
82
80
|
| optimization | debug (-O0) or release (-O2); both retain debug information. |
|
|
81
|
+
| backend | llvm (default in 0.21.0) or the temporary c migration reference. |
|
|
83
82
|
| block_style | Formatter braces or indent. |
|
|
84
83
|
| indentation | Formatter spaces (four) or tabs. |
|
|
85
84
|
| assignment | Formatter equals or to; both remain accepted source forms. |
|
|
@@ -89,7 +88,7 @@ library_paths:
|
|
|
89
88
|
| max_dependencies | Import fan-out warning threshold, default 8. |
|
|
90
89
|
| lint | Optional warnings listed above. |
|
|
91
90
|
| module_dependencies | Allowed folder edges; same-folder imports and standard capabilities are allowed. |
|
|
92
|
-
| libraries / library_paths |
|
|
91
|
+
| libraries / library_paths | C reference linker names and project-relative search directories; LLVM requires native package metadata. |
|
|
93
92
|
|
|
94
93
|
An owner without a rule is unrestricted. . names the project root; folder names use slash paths. * matches any folder, and domain/* matches that folder and descendants. Rules use the first matching owner. Import cycles are always rejected independently of the policy.
|
|
95
94
|
|
|
@@ -135,13 +134,15 @@ C calls require unsafe, and executable callers infer uses C.function. Ordinary s
|
|
|
135
134
|
|
|
136
135
|
Standard adapters use `extern C value` for the managed AugValue ABI. Each C argument and result must actually be AugValue; headers expose the declared capability effect and checked failures. `pure` asserts a trusted native implementation has no observable effects. These declarations are unsafe contracts, not automatic C bindings. Crypto, HTTP, JSON and time adapters demonstrate this narrow boundary in src/stdlib and runtime.
|
|
137
136
|
|
|
138
|
-
The extern declaration must match the real native ABI.
|
|
137
|
+
The extern declaration must match the real native ABI. For owned opaque handles and binary buffers, use [native package descriptors](native-packages.md); binding maintainers can check a reviewed descriptor against a C header with `aug bind header`. Ordinary scalar extern declarations do not expose pointers, callbacks or arbitrary structs.
|
|
139
138
|
|
|
140
139
|
## Source locations and debugging
|
|
141
140
|
|
|
142
|
-
Native output lives under
|
|
141
|
+
Native output lives under `.aug-build`. LLVM failures identify the August source location or failing artifact/link input. A successful build writes `EXECUTABLE.augmap.json` with compiler/runtime identities, hashes, selected artifacts and source symbols. C reference output uses `#line` locations and records its C arguments separately.
|
|
143
142
|
|
|
144
|
-
|
|
143
|
+
Both development and optimized builds include source debug information: an adjacent dSYM on macOS, and DWARF in the ELF executable on Linux. The compiler pack supplies macOS `dsymutil`; consumers do not need Apple developer tools to create the dSYM. LLDB reads the C-compatible tagged storage, while files, locations and producer identify the August source. Optimized variables may be unavailable. Rich collection views and August expression evaluation remain unfinished.
|
|
144
|
+
|
|
145
|
+
Use **Debug AugScript** in VS Code with LLVM lldb-dap on PATH, or configure augscript.lldbDapPath. The extension builds the project and launches the standard adapter. See the [VS Code debugger API](https://code.visualstudio.com/api/extension-guides/debugger-extension) and [LLDB DAP documentation](https://lldb.llvm.org/use/lldbdap.html).
|
|
145
146
|
|
|
146
147
|
**AugScript: Debug in LLDB Terminal** works with an ordinary lldb executable. Example terminal commands:
|
|
147
148
|
|
|
@@ -157,7 +158,7 @@ AUG_TRACE_DROPS=1 enables runtime cleanup tracing to stderr for lifecycle verifi
|
|
|
157
158
|
|
|
158
159
|
## Benchmarks
|
|
159
160
|
|
|
160
|
-
`aug bench`
|
|
161
|
+
`aug bench` uses the selected backend's release mode, runs warmups, then reports every sample, median, minimum, and p95 in milliseconds. Measurements include process startup and exclude compilation. The timeout bounds each native run.
|
|
161
162
|
|
|
162
163
|
See [performance and benchmark graphs](performance.md) for measured comparisons with C, Node and Python, peak memory, HTTP throughput, raw results, and reproducible commands. `npm run bench:compare` measures the fixed workloads under `benchmarks/`. The earlier [single-workload baseline](benchmarks.json) is preserved as historical evidence.
|
|
163
164
|
|
|
@@ -201,7 +202,7 @@ The language server implements the [LSP 3.17 protocol](https://github.com/Micros
|
|
|
201
202
|
|
|
202
203
|
One server runs per project. Parsed modules and checked import closures are cached by source/configuration revision. Unrelated edits reuse the previous immutable semantic document; dependency edits invalidate its closure. Local files can be checked while main composition is incomplete. Whole-project check/build still validates all bindings and startup.
|
|
203
204
|
|
|
204
|
-
Compiler and extension development dependencies use exact versions and lockfiles.
|
|
205
|
+
Compiler and extension development dependencies use exact versions and lockfiles. LLVM source maps record the compiler/runtime identities, target, source revision, native artifacts, executable, and debug files. Source packages use public repository URLs, local folders, or npm archives, with revisions and integrity in `aug.lock.json`; [the package guide](packages.md) covers creation, installation, public imports and frozen builds.
|
|
205
206
|
|
|
206
207
|
## Inferred contract hints
|
|
207
208
|
|
package/docs/web-library-gaps.md
CHANGED
|
@@ -18,7 +18,7 @@ This ledger records gaps discovered while implementing the confirmed web design
|
|
|
18
18
|
| Public task error contracts | Task helpers should show their delayed failures in context. | Locally scheduled errors follow task aliases, collections, waits, exception paths and implicit joins. A helper accepting Task<T> must handle or declare Error; a public type spelling for a narrower delayed-error contract remains. |
|
|
19
19
|
| Injected captures and owned shared payloads | Concurrent helpers must preserve dependency loans and resource lifetime. | The compiler tracks task reads through injected dependencies as well as written arguments and receivers. A native regression verifies that dropping an owned `Shared<T>` drops its transferred payload before later locals. Broader ownership and cancellation conformance work remains in the language roadmap. |
|
|
20
20
|
|
|
21
|
-
Release review regressions cover duplicate scalar query/header/cookie/form inputs without process failure, inherited child deadlines, lock progress, owned resource lifetime, sibling and grouped cleanup errors, bounded response statuses, int64 action captures, complex and Json-valued forms, empty streams, and post-yield endpoint-test failures.
|
|
21
|
+
Release review regressions cover duplicate scalar query/header/cookie/form inputs without process failure, inherited child deadlines, lock progress, owned resource lifetime, sibling and grouped cleanup errors, bounded response statuses, int64 action captures, complex and Json-valued forms, empty streams, and post-yield endpoint-test failures. Streaming HEAD preserves its headers and status when stopping the producer; a cleanup error before headers remains a 500. HEAD completes at its headers on HTTP/1.1 and HTTP/2, with its prepared response retained through session cleanup. Compressed disconnect checks cross managed collection pressure and verify server survival.
|
|
22
22
|
|
|
23
23
|
## Scope boundaries
|
|
24
24
|
|
package/docs/web.md
CHANGED
|
@@ -168,6 +168,10 @@ Options are compile-time literals. Import the policy interfaces from the web sou
|
|
|
168
168
|
|
|
169
169
|
An endpoint may `streams ServerEvent<T>`, `streams Bytes`, or `streams Html`. `yield` supplies one item. Each pending encoded item is bounded to 64 KiB and sent under transport backpressure. A response has one consumer. Errors before headers become HTTP responses; later failures terminate output without appending a second error representation. Disconnect cancels the request and its children; `always` cleanup runs. The request DI scope survives through response completion.
|
|
170
170
|
|
|
171
|
+
A HEAD request sends the GET response headers without a body. For a stream, the first yield establishes the response, then the producer stops and runs its cleanup. Intentional completion keeps the response status; a real cleanup failure still produces an error response. [HTTP HEAD semantics](https://www.rfc-editor.org/rfc/rfc9110.html#name-head).
|
|
172
|
+
|
|
173
|
+
HEAD transport completes at its headers, including the stream-end flag for HTTP/2. Connection reuse does not turn a completed request into a disconnect log.
|
|
174
|
+
|
|
171
175
|
`start fetch(...)` creates a task owned by its lexical scope. `wait for loadingUsers and loadingOrders to users and orders` waits in the stated result order; `wait for taskList` returns an ordered result list. `to`, `as`, and `=` result assignments are supported where the grammar permits them. Scope exit joins children; an unhandled child failure cancels siblings. Read-only frozen values can be shared without copying. Mutable captures are loaned until the task is observed. `lock shared as value` grants exclusive mutation and forbids nested locks, I/O, task starts and waits inside the locked region.
|
|
172
176
|
|
|
173
177
|
Declare an owned resource directly in its task's `scope` block to keep it alive through implicit joining. A resource declared in a shorter nested block must be waited for before that block ends; the compiler rejects a live task borrow at that boundary. Unrelated owned cleanup does not join the enclosing scope's children. Pure loops under a lock finish or observe cancellation before another coroutine runs.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"files": [
|
|
4
|
-
".aug-spec/august/0.
|
|
5
|
-
".aug-spec/august/0.
|
|
4
|
+
".aug-spec/august/0.21.0/io/contracts.aug",
|
|
5
|
+
".aug-spec/august/0.21.0/io/contracts.aug.md",
|
|
6
6
|
"counters.aug.md",
|
|
7
7
|
"domain/app.aug.md",
|
|
8
8
|
"domain/export.aug.md",
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
"domain/numbers.aug.md",
|
|
11
11
|
"main.aug.md"
|
|
12
12
|
],
|
|
13
|
-
"digest": "
|
|
13
|
+
"digest": "a6219552bff760605d79d8e158b84db5cd48b192e0f7de2eef95a6e1c0089931"
|
|
14
14
|
}
|
|
@@ -10,18 +10,18 @@ The application's explicit startup operation.
|
|
|
10
10
|
<a id="symbol-Application.start"></a>
|
|
11
11
|
### `Application.start` · [source](app.aug#L7)
|
|
12
12
|
|
|
13
|
-
Writes the fruit names through the selected console. It can call [`Console.write`](../.aug-spec/august/0.
|
|
13
|
+
Writes the fruit names through the selected console. It can call [`Console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
<a id="symbol-ApplicationImpl"></a>
|
|
16
16
|
## `ApplicationImpl` · class · [source](app.aug#L9)
|
|
17
17
|
|
|
18
|
-
Construction stores dependencies; start performs the visible external work. It implements [`Application`](app.aug.md#symbol-Application). The `console` dependency is injected as [`Console`](../.aug-spec/august/0.
|
|
18
|
+
Construction stores dependencies; start performs the visible external work. It implements [`Application`](app.aug.md#symbol-Application). The `console` dependency is injected as [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) and stored read-only.
|
|
19
19
|
|
|
20
20
|
<a id="symbol-ApplicationImpl.start"></a>
|
|
21
21
|
### `ApplicationImpl.start` · [source](app.aug#L10)
|
|
22
22
|
|
|
23
|
-
Writes the fruit names through the selected console. It sets `fruit` to a list containing a [`Fruit`](models.aug.md#symbol-Fruit) with `code` `1` and `name` `"apple"`, a [`Fruit`](models.aug.md#symbol-Fruit) with `name` `"pear"` and `code` `2`. For each `item` in a snapshot of `fruit`, it passes `item.name` to [`console.write`](../.aug-spec/august/0.
|
|
23
|
+
Writes the fruit names through the selected console. It sets `fruit` to a list containing a [`Fruit`](models.aug.md#symbol-Fruit) with `code` `1` and `name` `"apple"`, a [`Fruit`](models.aug.md#symbol-Fruit) with `name` `"pear"` and `code` `2`. For each `item` in a snapshot of `fruit`, it passes `item.name` to [`console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
24
24
|
|
|
25
25
|
## Dependencies
|
|
26
26
|
|
|
27
|
-
It uses [`Console`](../.aug-spec/august/0.
|
|
27
|
+
It uses [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`. It uses [`Fruit`](models.aug.md#symbol-Fruit) (`name`) from `models`.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Providers
|
|
6
6
|
|
|
7
|
-
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.
|
|
7
|
+
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared.
|
|
8
8
|
|
|
9
9
|
`Application` is provided by [`ApplicationImpl`](domain/app.aug.md#symbol-ApplicationImpl). The same instance is shared. It requires bindings for `Console`. Include providers from [`Counters`](counters.aug.md#symbol-Counters).
|
|
10
10
|
|
|
@@ -20,6 +20,6 @@ It calls [`double`](domain/numbers.aug.md#symbol-double) with `amount` `-1`. If
|
|
|
20
20
|
|
|
21
21
|
## Dependencies
|
|
22
22
|
|
|
23
|
-
It uses [`SystemConsole`](.aug-spec/august/0.
|
|
23
|
+
It uses [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`Counter`](counters.aug.md#symbol-Counter) ([`increment`](counters.aug.md#symbol-Counter.increment) and [`value`](counters.aug.md#symbol-Counter.value)) and [`Counters`](counters.aug.md#symbol-Counters) from `counters`. It uses [`Application`](domain/app.aug.md#symbol-Application) ([`start`](domain/app.aug.md#symbol-Application.start)), [`ApplicationImpl`](domain/app.aug.md#symbol-ApplicationImpl), [`Fruit`](domain/models.aug.md#symbol-Fruit), [`RangeError`](domain/numbers.aug.md#symbol-RangeError), and [`double`](domain/numbers.aug.md#symbol-double) from `domain`.
|
|
24
24
|
|
|
25
25
|
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"files": [
|
|
4
|
-
".aug-spec/august/0.
|
|
5
|
-
".aug-spec/august/0.
|
|
4
|
+
".aug-spec/august/0.21.0/io/contracts.aug",
|
|
5
|
+
".aug-spec/august/0.21.0/io/contracts.aug.md",
|
|
6
6
|
"calculator.aug.md",
|
|
7
7
|
"logging/console.aug.md",
|
|
8
8
|
"logging/export.aug.md",
|
|
9
9
|
"logging/logger.aug.md",
|
|
10
10
|
"main.aug.md"
|
|
11
11
|
],
|
|
12
|
-
"digest": "
|
|
12
|
+
"digest": "44c597e8467c0fad529c3dba2db647157020dd0ec3ad4852e7c068b93934679c"
|
|
13
13
|
}
|
|
@@ -10,7 +10,7 @@ Adds two integers.
|
|
|
10
10
|
<a id="symbol-Arithmetic.add"></a>
|
|
11
11
|
### `Arithmetic.add` · [source](calculator.aug#L6)
|
|
12
12
|
|
|
13
|
-
It takes `left` and `right` as integers. It gets `console` ([`Console`](.aug-spec/august/0.
|
|
13
|
+
It takes `left` and `right` as integers. It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It returns `int`. It can call [`Console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
<a id="symbol-Calculator"></a>
|
|
16
16
|
## `Calculator` · class · [source](calculator.aug#L9)
|
|
@@ -20,7 +20,7 @@ Uses the selected logger to describe each addition. It implements [`Arithmetic`]
|
|
|
20
20
|
<a id="symbol-Calculator.add"></a>
|
|
21
21
|
### `Calculator.add` · [source](calculator.aug#L16)
|
|
22
22
|
|
|
23
|
-
Adds left and right, logging the operation. It takes `left` as an integer (First integer) and `right` as an integer (Second integer). It gets `console` ([`Console`](.aug-spec/august/0.
|
|
23
|
+
Adds left and right, logging the operation. It takes `left` as an integer (First integer) and `right` as an integer (Second integer). It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It returns `int` — Sum of the two integers.
|
|
24
24
|
|
|
25
25
|
It passes `"adding integers"` to [`_logger.log`](logging/logger.aug.md#symbol-Logger.log), using injected `console`. It returns `left` plus `right`.
|
|
26
26
|
|
|
@@ -39,7 +39,7 @@ Test adapter: keeps calculator tests independent of console output. It implement
|
|
|
39
39
|
<a id="symbol-_SilentLogger.log"></a>
|
|
40
40
|
### `_SilentLogger.log` · [source](calculator.aug#L34)
|
|
41
41
|
|
|
42
|
-
It takes `message` as a string (Text to write). It gets `console` ([`Console`](.aug-spec/august/0.
|
|
42
|
+
It takes `message` as a string (Text to write). It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It continues without an operation.
|
|
43
43
|
|
|
44
44
|
<a id="symbol-test Calculator calculator"></a>
|
|
45
45
|
## `test Calculator calculator` · [source](calculator.aug#L38)
|
|
@@ -48,7 +48,7 @@ Tests [`Calculator`](calculator.aug.md#symbol-Calculator). Each case gets fresh
|
|
|
48
48
|
|
|
49
49
|
### `addition`
|
|
50
50
|
|
|
51
|
-
Setup for each case: `Console` is provided by [`SystemConsole`](.aug-spec/august/0.
|
|
51
|
+
Setup for each case: `Console` is provided by [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole). Stateless instances are reused; stateful instances are created for each resolve. `Logger` is provided by [`_SilentLogger`](calculator.aug.md#symbol-_SilentLogger). Stateless instances are reused; stateful instances are created for each resolve.
|
|
52
52
|
|
|
53
53
|
It sets `calculator` to a [`Calculator`](calculator.aug.md#symbol-Calculator) using injected `Logger` for `_logger`. It sets `values` of type `List<int>` to a list containing `1`, `2`.
|
|
54
54
|
|
|
@@ -62,6 +62,6 @@ The test requires the number of elements in `values` equals `2`. The test requir
|
|
|
62
62
|
|
|
63
63
|
## Dependencies
|
|
64
64
|
|
|
65
|
-
It uses [`Console`](.aug-spec/august/0.
|
|
65
|
+
It uses [`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) and [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`Logger`](logging/logger.aug.md#symbol-Logger) ([`log`](logging/logger.aug.md#symbol-Logger.log)) from `logging`.
|
|
66
66
|
|
|
67
67
|
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -10,8 +10,8 @@ Writes application messages to standard output. It implements [`Logger`](logger.
|
|
|
10
10
|
<a id="symbol-ConsoleLogger.log"></a>
|
|
11
11
|
### `ConsoleLogger.log` · [source](console.aug#L6)
|
|
12
12
|
|
|
13
|
-
It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.
|
|
13
|
+
It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It passes `message` to [`console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`Console`](../.aug-spec/august/0.
|
|
17
|
+
It uses [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`. It uses [`Logger`](logger.aug.md#symbol-Logger) from `logger`.
|
|
@@ -10,8 +10,8 @@ Receives a message describing an application operation.
|
|
|
10
10
|
<a id="symbol-Logger.log"></a>
|
|
11
11
|
### `Logger.log` · [source](logger.aug#L6)
|
|
12
12
|
|
|
13
|
-
It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.
|
|
13
|
+
It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It can call [`Console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`Console`](../.aug-spec/august/0.
|
|
17
|
+
It uses [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Providers
|
|
6
6
|
|
|
7
|
-
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.
|
|
7
|
+
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared. `Logger` is provided by [`ConsoleLogger`](logging/console.aug.md#symbol-ConsoleLogger). The same instance is shared.
|
|
8
8
|
|
|
9
9
|
## Startup
|
|
10
10
|
|
|
@@ -16,6 +16,6 @@ It prints the value under `2` in `fruit`. It prints [`load`](calculator.aug.md#s
|
|
|
16
16
|
|
|
17
17
|
## Dependencies
|
|
18
18
|
|
|
19
|
-
It uses [`SystemConsole`](.aug-spec/august/0.
|
|
19
|
+
It uses [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`Calculator`](calculator.aug.md#symbol-Calculator) ([`add`](calculator.aug.md#symbol-Calculator.add)) and [`load`](calculator.aug.md#symbol-load) from `calculator`. It uses [`ConsoleLogger`](logging/console.aug.md#symbol-ConsoleLogger) from `logging`.
|
|
20
20
|
|
|
21
21
|
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"files": [
|
|
4
|
-
".aug-spec/august/0.
|
|
5
|
-
".aug-spec/august/0.
|
|
4
|
+
".aug-spec/august/0.21.0/io/contracts.aug",
|
|
5
|
+
".aug-spec/august/0.21.0/io/contracts.aug.md",
|
|
6
6
|
"main.aug.md",
|
|
7
7
|
"types.aug.md"
|
|
8
8
|
],
|
|
9
|
-
"digest": "
|
|
9
|
+
"digest": "c35d712e53007b314341ed8017500a3d47af4489d9e1623931cf0af40a6a8208"
|
|
10
10
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Providers
|
|
6
6
|
|
|
7
|
-
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.
|
|
7
|
+
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared. `Repository<int>` is provided by [`NumberRepository`](types.aug.md#symbol-NumberRepository). The same instance is shared.
|
|
8
8
|
|
|
9
9
|
`app` is provided by [`Program`](types.aug.md#symbol-Program). The same instance is shared. It requires bindings for `Repository<int>`.
|
|
10
10
|
|
|
@@ -14,4 +14,4 @@ It sets `program` to the instance provided for `app`. It calls [`program.start`]
|
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`SystemConsole`](.aug-spec/august/0.
|
|
17
|
+
It uses [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`NumberRepository`](types.aug.md#symbol-NumberRepository) and [`Program`](types.aug.md#symbol-Program) ([`start`](types.aug.md#symbol-Program.start)) from `types`.
|
|
@@ -30,7 +30,7 @@ It implements [`IProgram`](types.aug.md#symbol-IProgram). The `repository` depen
|
|
|
30
30
|
<a id="symbol-Program.start"></a>
|
|
31
31
|
### `Program.start` · [source](types.aug#L12)
|
|
32
32
|
|
|
33
|
-
It gets `console` ([`Console`](.aug-spec/august/0.
|
|
33
|
+
It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It passes [`repository.get`](types.aug.md#symbol-Repository.get) to [`console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
34
34
|
|
|
35
35
|
<a id="symbol-IProgram"></a>
|
|
36
36
|
## `IProgram` · interface · [source](types.aug#L16)
|
|
@@ -38,8 +38,8 @@ It gets `console` ([`Console`](.aug-spec/august/0.20.1/io/contracts.aug.md#symbo
|
|
|
38
38
|
<a id="symbol-IProgram.start"></a>
|
|
39
39
|
### `IProgram.start` · [source](types.aug#L17)
|
|
40
40
|
|
|
41
|
-
It gets `console` ([`Console`](.aug-spec/august/0.
|
|
41
|
+
It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It can call [`Console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
42
42
|
|
|
43
43
|
## Dependencies
|
|
44
44
|
|
|
45
|
-
It uses [`Console`](.aug-spec/august/0.
|
|
45
|
+
It uses [`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"files": [
|
|
4
|
-
".aug-spec/august/0.
|
|
5
|
-
".aug-spec/august/0.
|
|
4
|
+
".aug-spec/august/0.21.0/io/contracts.aug",
|
|
5
|
+
".aug-spec/august/0.21.0/io/contracts.aug.md",
|
|
6
6
|
"app/export.aug.md",
|
|
7
7
|
"app/greeter.aug.md",
|
|
8
8
|
"logging/console.aug.md",
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
"logging/logger.aug.md",
|
|
11
11
|
"main.aug.md"
|
|
12
12
|
],
|
|
13
|
-
"digest": "
|
|
13
|
+
"digest": "662623df9a89e7f4b0879bb8b6187f83a05aacd1bd2cf7ebb2e6049c1db73f54"
|
|
14
14
|
}
|
|
@@ -10,7 +10,7 @@ Welcomes a user through the configured logger. It implements [`IGreeter`](greete
|
|
|
10
10
|
<a id="symbol-Greeter.greet"></a>
|
|
11
11
|
### `Greeter.greet` · [source](greeter.aug#L13)
|
|
12
12
|
|
|
13
|
-
Prints a personalized greeting. It takes `name` as a string (the user to welcome). It gets `console` ([`Console`](../.aug-spec/august/0.
|
|
13
|
+
Prints a personalized greeting. It takes `name` as a string (the user to welcome). It gets `console` ([`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It passes the text `Hello, {name}!` to [`logger.log`](../logging/logger.aug.md#symbol-Logger.log), using injected `console`.
|
|
14
14
|
|
|
15
15
|
<a id="symbol-IGreeter"></a>
|
|
16
16
|
## `IGreeter` · interface · [source](greeter.aug#L17)
|
|
@@ -18,8 +18,8 @@ Prints a personalized greeting. It takes `name` as a string (the user to welcome
|
|
|
18
18
|
<a id="symbol-IGreeter.greet"></a>
|
|
19
19
|
### `IGreeter.greet` · [source](greeter.aug#L22)
|
|
20
20
|
|
|
21
|
-
Prints a personalized greeting. It takes `name` as a string (the user to welcome). It gets `console` ([`Console`](../.aug-spec/august/0.
|
|
21
|
+
Prints a personalized greeting. It takes `name` as a string (the user to welcome). It gets `console` ([`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It can call [`Console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
22
22
|
|
|
23
23
|
## Dependencies
|
|
24
24
|
|
|
25
|
-
It uses [`Console`](../.aug-spec/august/0.
|
|
25
|
+
It uses [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`. It uses [`Logger`](../logging/logger.aug.md#symbol-Logger) ([`log`](../logging/logger.aug.md#symbol-Logger.log)) from `logging`.
|
|
@@ -10,8 +10,8 @@ It implements [`Logger`](logger.aug.md#symbol-Logger).
|
|
|
10
10
|
<a id="symbol-ConsoleLogger.log"></a>
|
|
11
11
|
### `ConsoleLogger.log` · [source](console.aug#L5)
|
|
12
12
|
|
|
13
|
-
Writes one message. It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.
|
|
13
|
+
Writes one message. It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It passes `message` to [`console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`Console`](../.aug-spec/august/0.
|
|
17
|
+
It uses [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`. It uses [`Logger`](logger.aug.md#symbol-Logger) from `logger`.
|
|
@@ -10,8 +10,8 @@ Writes messages to an application log.
|
|
|
10
10
|
<a id="symbol-Logger.log"></a>
|
|
11
11
|
### `Logger.log` · [source](logger.aug#L9)
|
|
12
12
|
|
|
13
|
-
Writes one message. It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.
|
|
13
|
+
Writes one message. It takes `message` as a string (Text to write). It gets `console` ([`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It can call [`Console.write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`Console`](../.aug-spec/august/0.
|
|
17
|
+
It uses [`Console`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](../.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Providers
|
|
6
6
|
|
|
7
|
-
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.
|
|
7
|
+
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared. `Logger` is provided by [`ConsoleLogger`](logging/console.aug.md#symbol-ConsoleLogger). The same instance is shared.
|
|
8
8
|
|
|
9
9
|
`app` is provided by [`Greeter`](app/greeter.aug.md#symbol-Greeter). The same instance is shared. It requires bindings for `Logger`.
|
|
10
10
|
|
|
@@ -14,4 +14,4 @@ It sets `greeter` to the instance provided for `app`. It passes `"AugScript"` to
|
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`SystemConsole`](.aug-spec/august/0.
|
|
17
|
+
It uses [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`Greeter`](app/greeter.aug.md#symbol-Greeter) ([`greet`](app/greeter.aug.md#symbol-Greeter.greet)) from `app`. It uses [`ConsoleLogger`](logging/console.aug.md#symbol-ConsoleLogger) from `logging`.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"files": [
|
|
4
|
-
".aug-spec/august/0.
|
|
5
|
-
".aug-spec/august/0.
|
|
4
|
+
".aug-spec/august/0.21.0/io/contracts.aug",
|
|
5
|
+
".aug-spec/august/0.21.0/io/contracts.aug.md",
|
|
6
6
|
"app.aug.md",
|
|
7
7
|
"interceptors.aug.md",
|
|
8
8
|
"logging.aug.md",
|
|
9
9
|
"main.aug.md"
|
|
10
10
|
],
|
|
11
|
-
"digest": "
|
|
11
|
+
"digest": "7585a80829aa29023840432758d4550c3e7411b89f8e2eab88cdeabb2af935fb"
|
|
12
12
|
}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<a id="symbol-describe"></a>
|
|
6
6
|
## `describe` · [source](app.aug#L15)
|
|
7
7
|
|
|
8
|
-
Prints a number and returns its label. It takes `x` as an integer (the numeric input, validated and incremented by the chain) and `label` as a string (Text forwarded through each layer unchanged). It gets `logger` ([`Logger`](logging.aug.md#symbol-Logger)) and `console` ([`Console`](.aug-spec/august/0.
|
|
8
|
+
Prints a number and returns its label. It takes `x` as an integer (the numeric input, validated and incremented by the chain) and `label` as a string (Text forwarded through each layer unchanged). It gets `logger` ([`Logger`](logging.aug.md#symbol-Logger)) and `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. Failures can raise `ValidationError`.
|
|
9
9
|
|
|
10
10
|
Layers run in the declared order. Call [`Audit.around`](interceptors.aug.md#symbol-Audit.around). Call [`Positive.around`](interceptors.aug.md#symbol-Positive.around). Map `x` to `y`. Call [`AddOne.around`](interceptors.aug.md#symbol-AddOne.around). Map `x` to `y`.
|
|
11
11
|
|
|
12
|
-
It passes `x` to [`console.write`](.aug-spec/august/0.
|
|
12
|
+
It passes `x` to [`console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write). It returns `label`.
|
|
13
13
|
|
|
14
14
|
<a id="symbol-IGreeter"></a>
|
|
15
15
|
## `IGreeter` · interface · [source](app.aug#L19)
|
|
@@ -17,7 +17,7 @@ It passes `x` to [`console.write`](.aug-spec/august/0.20.1/io/contracts.aug.md#s
|
|
|
17
17
|
<a id="symbol-IGreeter.greet"></a>
|
|
18
18
|
### `IGreeter.greet` · [source](app.aug#L20)
|
|
19
19
|
|
|
20
|
-
It gets `logger` ([`Logger`](logging.aug.md#symbol-Logger)) and `console` ([`Console`](.aug-spec/august/0.
|
|
20
|
+
It gets `logger` ([`Logger`](logging.aug.md#symbol-Logger)) and `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It returns `string`. It can call [`Console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
21
21
|
|
|
22
22
|
<a id="symbol-Greeter"></a>
|
|
23
23
|
## `Greeter` · class · [source](app.aug#L23)
|
|
@@ -27,10 +27,10 @@ Construction stores its inputs; startup is visible in the greet call. It impleme
|
|
|
27
27
|
<a id="symbol-Greeter.greet"></a>
|
|
28
28
|
### `Greeter.greet` · [source](app.aug#L26)
|
|
29
29
|
|
|
30
|
-
Method annotations wrap each method invocation separately. It gets `logger` ([`Logger`](logging.aug.md#symbol-Logger)) and `console` ([`Console`](.aug-spec/august/0.
|
|
30
|
+
Method annotations wrap each method invocation separately. It gets `logger` ([`Logger`](logging.aug.md#symbol-Logger)) and `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. Layers run in the declared order. Call [`Audit.around`](interceptors.aug.md#symbol-Audit.around).
|
|
31
31
|
|
|
32
32
|
It returns the text `Hello, {name}!`.
|
|
33
33
|
|
|
34
34
|
## Dependencies
|
|
35
35
|
|
|
36
|
-
It uses [`Console`](.aug-spec/august/0.
|
|
36
|
+
It uses [`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`. It uses [`AddOne`](interceptors.aug.md#symbol-AddOne) ([`around`](interceptors.aug.md#symbol-AddOne.around)), [`Audit`](interceptors.aug.md#symbol-Audit) ([`around`](interceptors.aug.md#symbol-Audit.around)), and [`Positive`](interceptors.aug.md#symbol-Positive) ([`around`](interceptors.aug.md#symbol-Positive.around)) from `interceptors`. It uses [`Logger`](logging.aug.md#symbol-Logger) from `logging`.
|
|
@@ -18,7 +18,7 @@ The `logger` dependency is injected as [`Logger`](logging.aug.md#symbol-Logger)
|
|
|
18
18
|
<a id="symbol-Audit.around"></a>
|
|
19
19
|
### `Audit.around` · [source](interceptors.aug#L15)
|
|
20
20
|
|
|
21
|
-
Wrap a call without changing its result. It gets `console` ([`Console`](.aug-spec/august/0.
|
|
21
|
+
Wrap a call without changing its result. It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection.
|
|
22
22
|
|
|
23
23
|
It passes `"before"` to [`logger.log`](logging.aug.md#symbol-Logger.log), using injected `console`. It sets `result` of type `T` to `next`. It passes `"after"` to [`logger.log`](logging.aug.md#symbol-Logger.log), using injected `console`. It returns `result`.
|
|
24
24
|
|
|
@@ -44,4 +44,4 @@ It takes `y` as an integer (the input to increment). It returns `next` with `y`
|
|
|
44
44
|
|
|
45
45
|
## Dependencies
|
|
46
46
|
|
|
47
|
-
It uses [`Console`](.aug-spec/august/0.
|
|
47
|
+
It uses [`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`. It uses [`Logger`](logging.aug.md#symbol-Logger) ([`log`](logging.aug.md#symbol-Logger.log)) from `logging`.
|
|
@@ -10,7 +10,7 @@ Writes a message to the application log.
|
|
|
10
10
|
<a id="symbol-Logger.log"></a>
|
|
11
11
|
### `Logger.log` · [source](logging.aug#L6)
|
|
12
12
|
|
|
13
|
-
It takes `message` as a string (Text to display). It gets `console` ([`Console`](.aug-spec/august/0.
|
|
13
|
+
It takes `message` as a string (Text to display). It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It can call [`Console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
14
14
|
|
|
15
15
|
<a id="symbol-ConsoleLogger"></a>
|
|
16
16
|
## `ConsoleLogger` · class · [source](logging.aug#L9)
|
|
@@ -20,8 +20,8 @@ Console logger shared by interceptor instances and the application. It implement
|
|
|
20
20
|
<a id="symbol-ConsoleLogger.log"></a>
|
|
21
21
|
### `ConsoleLogger.log` · [source](logging.aug#L10)
|
|
22
22
|
|
|
23
|
-
It takes `message` as a string (Text to display). It gets `console` ([`Console`](.aug-spec/august/0.
|
|
23
|
+
It takes `message` as a string (Text to display). It gets `console` ([`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console)) from dependency injection. It passes `message` to [`console.write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write).
|
|
24
24
|
|
|
25
25
|
## Dependencies
|
|
26
26
|
|
|
27
|
-
It uses [`Console`](.aug-spec/august/0.
|
|
27
|
+
It uses [`Console`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console) ([`write`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-Console.write)) from `august.io`.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Providers
|
|
6
6
|
|
|
7
|
-
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.
|
|
7
|
+
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared. `Logger` is provided by [`ConsoleLogger`](logging.aug.md#symbol-ConsoleLogger). The same instance is shared.
|
|
8
8
|
|
|
9
9
|
## Startup
|
|
10
10
|
|
|
@@ -14,6 +14,6 @@ It tries to call [`describe`](app.aug.md#symbol-describe) with `x` `-1` and `lab
|
|
|
14
14
|
|
|
15
15
|
## Dependencies
|
|
16
16
|
|
|
17
|
-
It uses [`SystemConsole`](.aug-spec/august/0.
|
|
17
|
+
It uses [`SystemConsole`](.aug-spec/august/0.21.0/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`Greeter`](app.aug.md#symbol-Greeter) ([`greet`](app.aug.md#symbol-Greeter.greet)) and [`describe`](app.aug.md#symbol-describe) from `app`. It uses [`ValidationError`](interceptors.aug.md#symbol-ValidationError) from `interceptors`. It uses [`ConsoleLogger`](logging.aug.md#symbol-ConsoleLogger) from `logging`.
|
|
18
18
|
|
|
19
19
|
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": 1,
|
|
3
|
+
"files": [
|
|
4
|
+
".aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug",
|
|
5
|
+
".aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug.md",
|
|
6
|
+
".aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug",
|
|
7
|
+
".aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug.md",
|
|
8
|
+
".aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi.json",
|
|
9
|
+
"hashing.aug.md",
|
|
10
|
+
"main.aug.md"
|
|
11
|
+
],
|
|
12
|
+
"nativeDescriptors": {
|
|
13
|
+
".aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi.json": "3bf8dea97cde70a03021bf77ea08314d6d37fe7b4935ff16030b2ab929c21279"
|
|
14
|
+
},
|
|
15
|
+
"digest": "ffe72583bdbab712c267ceb7f0e8d8e624dea7c3e672e75541694832c904cbf7"
|
|
16
|
+
}
|