@greenpandastudios/aug-cli 0.19.0 → 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 +9 -6
- package/THIRD_PARTY_NOTICES.md +4 -0
- package/bin/aug.mjs +12 -2
- package/docs/about.md +27 -0
- package/docs/api/crypto.md +103 -69
- package/docs/api/io.md +35 -33
- package/docs/api/json.md +3 -3
- package/docs/api/memory.md +23 -19
- package/docs/api/time.md +10 -9
- package/docs/api/web.md +33 -38
- 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 +8 -8
- package/docs/contributing-benchmarks.md +68 -0
- package/docs/dev-containers.md +88 -0
- 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 +15 -5
- package/docs/docker.md +173 -12
- package/docs/editor.md +35 -0
- package/docs/example-projects.json +238 -24
- package/docs/examples/approved-design/counters.md +34 -126
- package/docs/examples/approved-design/dependencies/august/0.21.0/io/contracts.md +178 -0
- package/docs/examples/approved-design/domain/app.md +13 -77
- package/docs/examples/approved-design/domain/export.md +5 -19
- package/docs/examples/approved-design/domain/models.md +4 -23
- package/docs/examples/approved-design/domain/numbers.md +24 -114
- package/docs/examples/approved-design/index.md +16 -7
- package/docs/examples/approved-design/main.md +19 -96
- package/docs/examples/benchmark/index.md +6 -5
- package/docs/examples/benchmark/main.md +7 -35
- 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/cli-args/index.md +6 -5
- package/docs/examples/cli-args/main.md +6 -31
- package/docs/examples/collections/index.md +6 -5
- package/docs/examples/collections/main.md +7 -35
- package/docs/examples/collections-benchmark/index.md +6 -5
- package/docs/examples/collections-benchmark/main.md +7 -35
- package/docs/examples/cpu-benchmark/index.md +6 -5
- package/docs/examples/cpu-benchmark/main.md +5 -24
- package/docs/examples/developer-workflow/calculator.md +39 -186
- package/docs/examples/developer-workflow/dependencies/august/0.21.0/io/contracts.md +178 -0
- package/docs/examples/developer-workflow/index.md +16 -7
- package/docs/examples/developer-workflow/logging/console.md +10 -56
- package/docs/examples/developer-workflow/logging/export.md +4 -14
- package/docs/examples/developer-workflow/logging/logger.md +7 -43
- package/docs/examples/developer-workflow/main.md +17 -69
- package/docs/examples/drop/index.md +6 -5
- package/docs/examples/drop/main.md +7 -27
- package/docs/examples/drop/resource.md +7 -30
- package/docs/examples/errors/errors.md +7 -27
- package/docs/examples/errors/index.md +6 -5
- package/docs/examples/errors/main.md +7 -28
- 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/ffi/index.md +6 -5
- package/docs/examples/ffi/main.md +6 -20
- package/docs/examples/ffi/native.md +8 -34
- 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.21.0/io/contracts.md +178 -0
- package/docs/examples/generic-di/index.md +6 -5
- package/docs/examples/generic-di/main.md +9 -39
- package/docs/examples/generic-di/types.md +23 -92
- package/docs/examples/generics/index.md +6 -5
- package/docs/examples/generics/main.md +10 -47
- package/docs/examples/generics/types.md +25 -100
- package/docs/examples/hello/app/export.md +4 -12
- package/docs/examples/hello/app/greeter.md +13 -91
- package/docs/examples/hello/dependencies/august/0.21.0/io/contracts.md +178 -0
- package/docs/examples/hello/index.md +17 -6
- package/docs/examples/hello/logging/console.md +10 -54
- package/docs/examples/hello/logging/export.md +4 -14
- package/docs/examples/hello/logging/logger.md +7 -45
- package/docs/examples/hello/main.md +9 -39
- package/docs/examples/http-benchmark/index.md +6 -5
- package/docs/examples/http-benchmark/main.md +6 -20
- package/docs/examples/http-benchmark/routes.md +9 -31
- package/docs/examples/index.md +63 -29
- package/docs/examples/interceptors/app.md +20 -139
- package/docs/examples/interceptors/dependencies/august/0.21.0/io/contracts.md +178 -0
- package/docs/examples/interceptors/index.md +6 -5
- package/docs/examples/interceptors/interceptors.md +24 -148
- package/docs/examples/interceptors/logging.md +13 -76
- package/docs/examples/interceptors/main.md +10 -65
- package/docs/examples/json-benchmark/data.md +4 -20
- package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
- package/docs/examples/json-benchmark/index.md +7 -5
- package/docs/examples/json-benchmark/main-yaml.md +20 -0
- package/docs/examples/json-benchmark/main.md +10 -49
- 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 +10 -52
- package/docs/examples/new-syntax/dependencies/august/0.21.0/io/contracts.md +178 -0
- package/docs/examples/new-syntax/greeter.md +13 -71
- package/docs/examples/new-syntax/index.md +6 -5
- package/docs/examples/new-syntax/logger.md +7 -43
- package/docs/examples/new-syntax/main.md +10 -53
- package/docs/examples/new-syntax/math.md +6 -24
- package/docs/examples/oidc-login/client/contracts.md +10 -61
- package/docs/examples/oidc-login/client/endpoints.md +32 -154
- package/docs/examples/oidc-login/client/export.md +5 -23
- package/docs/examples/oidc-login/client/login.md +234 -344
- package/docs/examples/oidc-login/client/logout.md +38 -143
- package/docs/examples/oidc-login/client/protocol.md +183 -304
- package/docs/examples/oidc-login/client/session.md +41 -149
- package/docs/examples/oidc-login/client/views.md +13 -58
- package/docs/examples/oidc-login/common/export.md +6 -26
- package/docs/examples/oidc-login/common/headers.md +42 -72
- package/docs/examples/oidc-login/common/keys.md +40 -164
- package/docs/examples/oidc-login/common/settings.md +24 -40
- package/docs/examples/oidc-login/common/views.md +7 -28
- package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
- package/docs/examples/oidc-login/index.md +8 -7
- package/docs/examples/oidc-login/main-yaml.md +7 -0
- package/docs/examples/oidc-login/main.md +26 -153
- package/docs/examples/oidc-login/provider/authorization.md +232 -275
- package/docs/examples/oidc-login/provider/contracts.md +24 -146
- package/docs/examples/oidc-login/provider/credentials.md +24 -57
- package/docs/examples/oidc-login/provider/discovery.md +48 -122
- package/docs/examples/oidc-login/provider/export.md +11 -37
- package/docs/examples/oidc-login/provider/token.md +159 -237
- package/docs/examples/oidc-login/provider/userinfo.md +47 -102
- package/docs/examples/oidc-login/provider/views.md +13 -53
- package/docs/examples/ownership/counter.md +17 -63
- package/docs/examples/ownership/index.md +6 -5
- package/docs/examples/ownership/main.md +7 -30
- package/docs/examples/ownership-transfer/dependencies/august/0.21.0/io/contracts.md +178 -0
- package/docs/examples/ownership-transfer/index.md +6 -5
- package/docs/examples/ownership-transfer/main.md +10 -52
- package/docs/examples/ownership-transfer/resource.md +15 -67
- package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
- package/docs/examples/packages-app/index.md +7 -6
- package/docs/examples/packages-app/main.md +7 -25
- package/docs/examples/packages-math/aug-package-json.md +1 -1
- package/docs/examples/packages-math/index.md +7 -6
- package/docs/examples/packages-math/src/arithmetic.md +12 -50
- package/docs/examples/packages-math/src/export.md +4 -12
- 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/startup-benchmark/index.md +6 -5
- package/docs/examples/startup-benchmark/main.md +5 -17
- 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/examples/visibility/counter.md +19 -67
- package/docs/examples/visibility/index.md +6 -5
- package/docs/examples/visibility/main.md +7 -31
- package/docs/examples/weather-api/forecasts.md +168 -0
- package/docs/examples/weather-api/index.md +42 -0
- package/docs/examples/weather-api/main-yaml.md +21 -0
- package/docs/examples/weather-api/main.md +65 -0
- package/docs/examples.json +10 -0
- package/docs/getting-started.md +105 -2
- package/docs/grammar.md +7 -5
- package/docs/guides/change-a-module.md +64 -0
- package/docs/guides/index.md +27 -0
- package/docs/gym-results.json +784 -0
- package/docs/implementation-map.md +6 -0
- package/docs/index.md +51 -29
- package/docs/kernel-results.json +1170 -0
- package/docs/language-conformance.md +7 -1
- package/docs/language-constructs.md +30 -22
- package/docs/language-design-audit.md +1 -1
- package/docs/learn/data-and-errors.md +77 -0
- package/docs/learn/index.md +30 -0
- package/docs/learn/modules-and-dependencies.md +73 -0
- package/docs/learn/state-and-tests.md +71 -0
- package/docs/learn/values-and-functions.md +62 -0
- package/docs/lesson-failures.json +8 -0
- package/docs/maintaining-docs.md +16 -4
- 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 +72 -126
- package/docs/performance.md +61 -68
- package/docs/production-readiness.md +16 -5
- package/docs/public/downloads/approved-design.zip +0 -0
- package/docs/public/downloads/benchmark.zip +0 -0
- package/docs/public/downloads/calls-benchmark.zip +0 -0
- package/docs/public/downloads/cli-args.zip +0 -0
- package/docs/public/downloads/collections-benchmark.zip +0 -0
- package/docs/public/downloads/collections.zip +0 -0
- package/docs/public/downloads/cpu-benchmark.zip +0 -0
- package/docs/public/downloads/developer-workflow.zip +0 -0
- package/docs/public/downloads/drop.zip +0 -0
- package/docs/public/downloads/errors-benchmark.zip +0 -0
- package/docs/public/downloads/errors.zip +0 -0
- package/docs/public/downloads/ffi.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/generics.zip +0 -0
- package/docs/public/downloads/hello.zip +0 -0
- package/docs/public/downloads/http-benchmark.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/ownership.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/startup-benchmark.zip +0 -0
- package/docs/public/downloads/strings-benchmark.zip +0 -0
- package/docs/public/downloads/tasks-benchmark.zip +0 -0
- package/docs/public/downloads/visibility.zip +0 -0
- package/docs/public/downloads/weather-api.zip +0 -0
- package/docs/qualification-results.md +66 -0
- package/docs/reference.md +47 -17
- package/docs/releasing.md +105 -16
- package/docs/research/code-to-natural-language.md +108 -0
- package/docs/research/ecosystem-workflow.md +41 -0
- 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/research/wiki-editorial-design.md +71 -0
- package/docs/roadmap.md +2 -1
- package/docs/safety-gyms.md +41 -0
- package/docs/specifications.md +27 -11
- package/docs/testing.md +19 -5
- package/docs/tooling.md +36 -22
- package/docs/weather-api.md +65 -0
- package/docs/web-library-gaps.md +1 -1
- package/docs/web.md +54 -18
- package/docs/writing-docs.md +49 -0
- package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
- package/examples/approved-design/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/approved-design/.aug-spec/manifest.json +3 -3
- package/examples/approved-design/counters.aug +5 -4
- package/examples/approved-design/counters.aug.md +25 -132
- package/examples/approved-design/domain/app.aug +2 -1
- package/examples/approved-design/domain/app.aug.md +10 -80
- package/examples/approved-design/domain/export.aug +1 -0
- package/examples/approved-design/domain/export.aug.md +4 -20
- package/examples/approved-design/domain/models.aug +1 -0
- package/examples/approved-design/domain/models.aug.md +3 -25
- package/examples/approved-design/domain/numbers.aug +3 -2
- package/examples/approved-design/domain/numbers.aug.md +19 -116
- package/examples/approved-design/main.aug +1 -0
- package/examples/approved-design/main.aug.md +12 -95
- package/examples/benchmark/.aug-spec/manifest.json +1 -1
- package/examples/benchmark/main.aug +1 -0
- package/examples/benchmark/main.aug.md +6 -36
- package/examples/cli-args/.aug-spec/manifest.json +1 -1
- package/examples/cli-args/main.aug +1 -0
- package/examples/cli-args/main.aug.md +5 -32
- package/examples/collections/.aug-spec/manifest.json +1 -1
- package/examples/collections/main.aug +1 -0
- package/examples/collections/main.aug.md +6 -36
- package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
- package/examples/developer-workflow/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
- package/examples/developer-workflow/calculator.aug +3 -2
- package/examples/developer-workflow/calculator.aug.md +28 -189
- package/examples/developer-workflow/logging/console.aug +2 -1
- package/examples/developer-workflow/logging/console.aug.md +7 -57
- package/examples/developer-workflow/logging/export.aug +1 -0
- package/examples/developer-workflow/logging/export.aug.md +3 -15
- package/examples/developer-workflow/logging/logger.aug +1 -0
- package/examples/developer-workflow/logging/logger.aug.md +6 -46
- package/examples/developer-workflow/main.aug +1 -0
- package/examples/developer-workflow/main.aug.md +10 -68
- package/examples/drop/.aug-spec/manifest.json +1 -1
- package/examples/drop/main.aug +1 -0
- package/examples/drop/main.aug.md +6 -28
- package/examples/drop/resource.aug +1 -0
- package/examples/drop/resource.aug.md +6 -34
- package/examples/errors/.aug-spec/manifest.json +1 -1
- package/examples/errors/errors.aug +2 -1
- package/examples/errors/errors.aug.md +4 -27
- package/examples/errors/main.aug +1 -0
- package/examples/errors/main.aug.md +6 -29
- package/examples/ffi/.aug-spec/manifest.json +1 -1
- package/examples/ffi/main.aug +1 -0
- package/examples/ffi/main.aug.md +5 -21
- package/examples/ffi/native.aug +2 -1
- package/examples/ffi/native.aug.md +5 -35
- package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
- package/examples/generic-di/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/generic-di/.aug-spec/manifest.json +3 -3
- package/examples/generic-di/main.aug +1 -0
- package/examples/generic-di/main.aug.md +8 -40
- package/examples/generic-di/types.aug +3 -2
- package/examples/generic-di/types.aug.md +18 -97
- package/examples/generics/.aug-spec/manifest.json +1 -1
- package/examples/generics/main.aug +1 -0
- package/examples/generics/main.aug.md +9 -48
- package/examples/generics/types.aug +4 -3
- package/examples/generics/types.aug.md +18 -104
- package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
- package/examples/hello/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/hello/.aug-spec/manifest.json +3 -3
- package/examples/hello/app/export.aug +1 -0
- package/examples/hello/app/export.aug.md +3 -13
- package/examples/hello/app/greeter.aug +2 -1
- package/examples/hello/app/greeter.aug.md +10 -94
- package/examples/hello/logging/console.aug +2 -1
- package/examples/hello/logging/console.aug.md +7 -55
- package/examples/hello/logging/export.aug +1 -0
- package/examples/hello/logging/export.aug.md +3 -15
- package/examples/hello/logging/logger.aug +1 -0
- package/examples/hello/logging/logger.aug.md +6 -48
- package/examples/hello/main.aug +1 -0
- package/examples/hello/main.aug.md +8 -40
- package/examples/interceptors/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
- package/examples/interceptors/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/interceptors/.aug-spec/manifest.json +3 -3
- package/examples/interceptors/app.aug +3 -2
- package/examples/interceptors/app.aug.md +15 -141
- package/examples/interceptors/interceptors.aug +3 -2
- package/examples/interceptors/interceptors.aug.md +19 -152
- package/examples/interceptors/logging.aug +2 -1
- package/examples/interceptors/logging.aug.md +10 -79
- package/examples/interceptors/main.aug +1 -0
- package/examples/interceptors/main.aug.md +9 -66
- 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/august/0.21.0/io/contracts.aug +37 -0
- package/examples/new-syntax/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/new-syntax/.aug-spec/manifest.json +3 -3
- package/examples/new-syntax/console.aug +2 -1
- package/examples/new-syntax/console.aug.md +7 -53
- package/examples/new-syntax/greeter.aug +2 -1
- package/examples/new-syntax/greeter.aug.md +10 -74
- package/examples/new-syntax/logger.aug +1 -0
- package/examples/new-syntax/logger.aug.md +6 -46
- package/examples/new-syntax/main.aug +1 -0
- package/examples/new-syntax/main.aug.md +9 -54
- package/examples/new-syntax/math.aug +2 -1
- package/examples/new-syntax/math.aug.md +3 -24
- package/examples/oidc-login/.aug-spec/manifest.json +13 -13
- package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
- package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
- package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
- package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
- package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
- package/examples/oidc-login/aug.lock.json +100 -0
- package/examples/oidc-login/client/contracts.aug +1 -0
- package/examples/oidc-login/client/contracts.aug.md +9 -66
- package/examples/oidc-login/client/endpoints.aug +6 -5
- package/examples/oidc-login/client/endpoints.aug.md +13 -145
- package/examples/oidc-login/client/export.aug +1 -0
- package/examples/oidc-login/client/export.aug.md +4 -24
- package/examples/oidc-login/client/login.aug +7 -6
- package/examples/oidc-login/client/login.aug.md +25 -303
- package/examples/oidc-login/client/logout.aug +5 -4
- package/examples/oidc-login/client/logout.aug.md +13 -135
- package/examples/oidc-login/client/protocol.aug +7 -6
- package/examples/oidc-login/client/protocol.aug.md +36 -283
- package/examples/oidc-login/client/session.aug +5 -4
- package/examples/oidc-login/client/session.aug.md +12 -139
- package/examples/oidc-login/client/views.aug +3 -2
- package/examples/oidc-login/client/views.aug.md +8 -57
- package/examples/oidc-login/common/export.aug +1 -0
- package/examples/oidc-login/common/export.aug.md +5 -27
- package/examples/oidc-login/common/headers.aug +4 -3
- package/examples/oidc-login/common/headers.aug.md +9 -67
- package/examples/oidc-login/common/keys.aug +6 -5
- package/examples/oidc-login/common/keys.aug.md +29 -165
- package/examples/oidc-login/common/settings.aug +2 -1
- package/examples/oidc-login/common/settings.aug.md +5 -39
- package/examples/oidc-login/common/views.aug +2 -1
- package/examples/oidc-login/common/views.aug.md +4 -28
- package/examples/oidc-login/main.aug +6 -16
- package/examples/oidc-login/main.aug.md +17 -146
- package/examples/oidc-login/main.yaml +7 -0
- package/examples/oidc-login/provider/authorization.aug +7 -6
- package/examples/oidc-login/provider/authorization.aug.md +23 -238
- package/examples/oidc-login/provider/contracts.aug +1 -0
- package/examples/oidc-login/provider/contracts.aug.md +23 -158
- package/examples/oidc-login/provider/credentials.aug +3 -2
- package/examples/oidc-login/provider/credentials.aug.md +9 -53
- package/examples/oidc-login/provider/discovery.aug +4 -3
- package/examples/oidc-login/provider/discovery.aug.md +11 -118
- package/examples/oidc-login/provider/export.aug +1 -0
- package/examples/oidc-login/provider/export.aug.md +6 -34
- package/examples/oidc-login/provider/token.aug +6 -5
- package/examples/oidc-login/provider/token.aug.md +16 -204
- package/examples/oidc-login/provider/userinfo.aug +4 -3
- package/examples/oidc-login/provider/userinfo.aug.md +10 -92
- package/examples/oidc-login/provider/views.aug +3 -2
- package/examples/oidc-login/provider/views.aug.md +8 -52
- package/examples/ownership/.aug-spec/manifest.json +1 -1
- package/examples/ownership/counter.aug +3 -2
- package/examples/ownership/counter.aug.md +12 -66
- package/examples/ownership/main.aug +1 -0
- package/examples/ownership/main.aug.md +6 -31
- package/examples/ownership-transfer/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
- package/examples/ownership-transfer/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
- package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
- package/examples/ownership-transfer/main.aug +1 -0
- package/examples/ownership-transfer/main.aug.md +9 -53
- package/examples/ownership-transfer/resource.aug +2 -1
- package/examples/ownership-transfer/resource.aug.md +12 -71
- package/examples/packages/app/.aug-spec/manifest.json +1 -1
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
- package/examples/packages/app/main.aug +1 -0
- package/examples/packages/app/main.aug.md +6 -26
- package/examples/packages/math/.aug-spec/manifest.json +1 -1
- package/examples/packages/math/aug-package.json +1 -1
- package/examples/packages/math/src/arithmetic.aug +2 -1
- package/examples/packages/math/src/arithmetic.aug.md +9 -51
- package/examples/packages/math/src/export.aug +1 -0
- package/examples/packages/math/src/export.aug.md +3 -13
- package/examples/visibility/.aug-spec/manifest.json +1 -1
- package/examples/visibility/counter.aug +4 -3
- package/examples/visibility/counter.aug.md +12 -68
- package/examples/visibility/main.aug +1 -0
- package/examples/visibility/main.aug.md +6 -32
- package/examples/weather-api/.aug-spec/manifest.json +8 -0
- package/examples/weather-api/AGENTS.md +17 -0
- package/examples/weather-api/README.md +19 -0
- package/examples/weather-api/forecasts.aug +47 -0
- package/examples/weather-api/forecasts.aug.md +32 -0
- package/examples/weather-api/main.aug +4 -0
- package/examples/weather-api/main.aug.md +15 -0
- package/examples/weather-api/main.yaml +5 -0
- package/examples/weather-api/weather.http +5 -0
- package/native/compiler-packs.json +43 -0
- package/package.json +4 -4
- 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 +184 -106
- package/scripts/native-setup.mjs +98 -0
- package/scripts/native-toolchain.mjs +28 -0
- package/src/ast.js +1 -1
- package/src/builtins.js +1 -1
- package/src/checker.js +369 -100
- package/src/cli.js +198 -26
- package/src/codegen.js +32 -7
- package/src/compiler-packs.js +66 -0
- package/src/config.js +3 -3
- package/src/contracts.js +10 -0
- package/src/editor.js +86 -22
- package/src/fixes.js +90 -2
- package/src/formatter.js +23 -10
- package/src/git-http.js +137 -0
- package/src/git-packages.js +118 -0
- package/src/help.js +33 -24
- package/src/http-contracts.js +14 -0
- package/src/http-policies.js +5 -5
- package/src/ir-types.js +5 -0
- package/src/ir-verify.js +277 -0
- package/src/ir.js +962 -0
- package/src/libraries.js +1 -1
- 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/lsp.js +14 -5
- 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/native.js +19 -13
- package/src/navigation.js +4 -2
- package/src/openapi.js +5 -4
- package/src/package-locking.js +88 -0
- package/src/package-manager.js +267 -68
- package/src/parser.js +32 -6
- package/src/policies.js +3 -3
- package/src/project-init.js +78 -4
- package/src/project.js +11 -9
- package/src/runtime-abi.js +23 -0
- package/src/runtime-adapters.js +18 -0
- package/src/schemas.js +24 -17
- package/src/semantic.js +54 -5
- package/src/snippets.js +60 -0
- package/src/spec-hints.js +56 -0
- package/src/spec-tree.js +241 -0
- package/src/spec.js +669 -305
- package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
- package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
- package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
- package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
- package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
- package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
- package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
package/src/libraries.js
CHANGED
|
@@ -15,7 +15,7 @@ export function standardLibraries() {
|
|
|
15
15
|
throw new Error(`August ${name} must match compiler ${version}; reinstall the CLI and its pinned libraries.`);
|
|
16
16
|
return join(dirname(file), manifest.source);
|
|
17
17
|
};
|
|
18
|
-
return { root: load('stdlib'), modules: new Map(
|
|
18
|
+
return { root: load('stdlib'), modules: new Map() };
|
|
19
19
|
}
|
|
20
20
|
export function libraryChild(libraries, folder, name) {
|
|
21
21
|
return folder === libraries.root ? libraries.modules.get(name) ?? join(folder, name) : join(folder, name);
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { basename, dirname } from 'node:path';
|
|
2
|
+
const quote = (value) => '"' + [...Buffer.from(value)].map(byte => byte >= 32 && byte < 127 && byte !== 34 && byte !== 92 ? String.fromCharCode(byte) : '\\' + byte.toString(16).padStart(2, '0').toUpperCase()).join('') + '"';
|
|
3
|
+
const typeName = (type) => (type.optional || type.nullable ? 'optional ' : '') + type.name + (type.args.length ? '<' + type.args.map(typeName).join(', ') + '>' : '');
|
|
4
|
+
/** DWARF describes August source and the real boxed storage. Rich collection
|
|
5
|
+
* views and an August-aware debugger are separate from source-line information. */
|
|
6
|
+
export class DebugMetadata {
|
|
7
|
+
nodes = [];
|
|
8
|
+
files = new Map();
|
|
9
|
+
functions = new Map();
|
|
10
|
+
retained = new Map();
|
|
11
|
+
locations = new Map();
|
|
12
|
+
scopes = new Map();
|
|
13
|
+
variables = new Map();
|
|
14
|
+
types = new Map();
|
|
15
|
+
unit;
|
|
16
|
+
subroutine;
|
|
17
|
+
boxed;
|
|
18
|
+
optimized;
|
|
19
|
+
constructor(ir, optimized) {
|
|
20
|
+
this.optimized = optimized;
|
|
21
|
+
const source = ir.functions.find(fn => fn.name === ir.main);
|
|
22
|
+
// Use LLDB's C type reader for the concrete tagged C-compatible storage.
|
|
23
|
+
// An unregistered vendor language prevents older LLDBs from finding locals.
|
|
24
|
+
// Source paths, names and producer still identify the August program; this
|
|
25
|
+
// does not enable August expression evaluation in the debugger.
|
|
26
|
+
this.unit = this.node(`distinct !DICompileUnit(language: DW_LANG_C99, file: ${this.file(source.span.file)}, producer: "August LLVM", isOptimized: ${optimized}, runtimeVersion: 0, emissionKind: FullDebug)`);
|
|
27
|
+
this.subroutine = this.node(`!DISubroutineType(types: ${this.node('!{}')})`);
|
|
28
|
+
const tag = this.node('!DIBasicType(name: "tag", size: 32, encoding: DW_ATE_unsigned)');
|
|
29
|
+
const integer = this.node('!DIBasicType(name: "int64", size: 64, encoding: DW_ATE_signed)');
|
|
30
|
+
const floating = this.node('!DIBasicType(name: "float64", size: 64, encoding: DW_ATE_float)');
|
|
31
|
+
const pointer = this.node('!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)');
|
|
32
|
+
const payload = this.node(`!DICompositeType(tag: DW_TAG_union_type, name: "August payload", size: 64, align: 64, elements: ${this.node('!{' + [
|
|
33
|
+
this.node(`!DIDerivedType(tag: DW_TAG_member, name: "integer", baseType: ${integer}, size: 64)`),
|
|
34
|
+
this.node(`!DIDerivedType(tag: DW_TAG_member, name: "floating", baseType: ${floating}, size: 64)`),
|
|
35
|
+
this.node(`!DIDerivedType(tag: DW_TAG_member, name: "object", baseType: ${pointer}, size: 64)`)
|
|
36
|
+
].join(', ') + '}')})`);
|
|
37
|
+
this.boxed = this.node(`!DICompositeType(tag: DW_TAG_structure_type, name: "August value", size: 128, align: 64, elements: ${this.node('!{' + [
|
|
38
|
+
this.node(`!DIDerivedType(tag: DW_TAG_member, name: "tag", baseType: ${tag}, size: 32, offset: 0)`),
|
|
39
|
+
this.node(`!DIDerivedType(tag: DW_TAG_member, name: "payload", baseType: ${payload}, size: 64, offset: 64)`)
|
|
40
|
+
].join(', ') + '}')})`);
|
|
41
|
+
}
|
|
42
|
+
node(value) { const name = '!' + this.nodes.length; this.nodes.push(name + ' = ' + value); return name; }
|
|
43
|
+
file(path) { let file = this.files.get(path); if (!file) {
|
|
44
|
+
file = this.node(`!DIFile(filename: ${quote(basename(path))}, directory: ${quote(dirname(path))})`);
|
|
45
|
+
this.files.set(path, file);
|
|
46
|
+
} return file; }
|
|
47
|
+
function(fn) {
|
|
48
|
+
let scope = this.functions.get(fn.name);
|
|
49
|
+
if (!scope) {
|
|
50
|
+
const retained = this.node('!{}');
|
|
51
|
+
this.retained.set(fn.name, { node: retained, variables: [] });
|
|
52
|
+
scope = this.node(`distinct !DISubprogram(name: ${quote(fn.sourceName)}, linkageName: ${quote(fn.name)}, scope: ${this.file(fn.span.file)}, file: ${this.file(fn.span.file)}, line: ${fn.span.line}, type: ${this.subroutine}, scopeLine: ${fn.span.line}, spFlags: DISPFlagDefinition${fn.name === 'main' ? '' : ' | DISPFlagLocalToUnit'}${this.optimized ? ' | DISPFlagOptimized' : ''}, unit: ${this.unit}, retainedNodes: ${retained})`);
|
|
53
|
+
this.functions.set(fn.name, scope);
|
|
54
|
+
}
|
|
55
|
+
return scope;
|
|
56
|
+
}
|
|
57
|
+
scope(fn, name) {
|
|
58
|
+
if (name === undefined)
|
|
59
|
+
return this.function(fn);
|
|
60
|
+
const key = fn.name + ':' + name;
|
|
61
|
+
let result = this.scopes.get(key);
|
|
62
|
+
if (!result) {
|
|
63
|
+
const source = fn.scopes.find(scope => scope.name === name);
|
|
64
|
+
result = this.node(`distinct !DILexicalBlock(scope: ${this.scope(fn, source.parent)}, file: ${this.file(source.span.file)}, line: ${source.span.line}, column: ${source.span.column})`);
|
|
65
|
+
this.scopes.set(key, result);
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
location(fn, span, scopeName) {
|
|
70
|
+
const key = [fn.name, span.file, span.line, span.column, scopeName].join(':');
|
|
71
|
+
let location = this.locations.get(key);
|
|
72
|
+
if (!location) {
|
|
73
|
+
const base = this.scope(fn, scopeName);
|
|
74
|
+
const scope = span.file === fn.span.file ? base : this.node(`!DILexicalBlockFile(scope: ${base}, file: ${this.file(span.file)}, discriminator: 0)`);
|
|
75
|
+
location = this.node(`!DILocation(line: ${Math.max(1, span.line)}, column: ${Math.max(1, span.column)}, scope: ${scope})`);
|
|
76
|
+
this.locations.set(key, location);
|
|
77
|
+
}
|
|
78
|
+
return location;
|
|
79
|
+
}
|
|
80
|
+
variable(fn, variable) {
|
|
81
|
+
const existing = this.variables.get(variable);
|
|
82
|
+
if (existing)
|
|
83
|
+
return existing;
|
|
84
|
+
const key = JSON.stringify(variable.type);
|
|
85
|
+
let type = this.types.get(key);
|
|
86
|
+
if (!type) {
|
|
87
|
+
type = this.node(`!DIDerivedType(tag: DW_TAG_typedef, name: ${quote(typeName(variable.type))}, baseType: ${this.boxed})`);
|
|
88
|
+
this.types.set(key, type);
|
|
89
|
+
}
|
|
90
|
+
const result = this.node(`!DILocalVariable(name: ${quote(variable.name)}, ${variable.argument ? 'arg: ' + variable.argument + ', ' : ''}scope: ${this.scope(fn, variable.scope)}, file: ${this.file(variable.span.file)}, line: ${variable.span.line}, type: ${type})`);
|
|
91
|
+
this.retained.get(fn.name).variables.push(result);
|
|
92
|
+
this.variables.set(variable, result);
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
generate() {
|
|
96
|
+
for (const entry of this.retained.values())
|
|
97
|
+
this.nodes[Number(entry.node.slice(1))] = entry.node + ' = !{' + entry.variables.join(', ') + '}';
|
|
98
|
+
const dwarf = this.node('!{i32 7, !"Dwarf Version", i32 4}'), debug = this.node('!{i32 2, !"Debug Info Version", i32 3}');
|
|
99
|
+
return [`!llvm.dbg.cu = !{${this.unit}}`, `!llvm.module.flags = !{${dwarf}, ${debug}}`, ...this.nodes].join('\n');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { copyFileSync, existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { spawnSync } from 'node:child_process';
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
6
|
+
import { generateLLVM, runtimeLayout } from "./llvm.js";
|
|
7
|
+
import { lowerToIR } from "./ir.js";
|
|
8
|
+
import { compilerVersion } from "./package-manager.js";
|
|
9
|
+
import { nativePath, nativeHostTarget } from "./native-contracts.js";
|
|
10
|
+
import { runtimeIdentifierSha256 } from "./runtime-abi.js";
|
|
11
|
+
import { generateOpenApi } from "./openapi.js";
|
|
12
|
+
import { llvmPlatform, systemLibc } from "./llvm-platform.js";
|
|
13
|
+
export function readRuntimePack(directory) {
|
|
14
|
+
if (!existsSync(join(directory, 'runtime.json')))
|
|
15
|
+
throw new Error('LLVM_RUNTIME: A matching prebuilt August runtime is not available. Contributor builds can run node scripts/build-runtime-pack.mjs.');
|
|
16
|
+
const pack = JSON.parse(readFileSync(join(directory, 'runtime.json'), 'utf8'));
|
|
17
|
+
const platform = llvmPlatform();
|
|
18
|
+
if (pack.identifierSha256 !== runtimeIdentifierSha256)
|
|
19
|
+
throw new Error('LLVM_RUNTIME: Runtime operation identifiers differ from this compiler');
|
|
20
|
+
if (!pack || pack.format !== 1 || pack.version !== compilerVersion() || pack.target !== platform.target || pack.minimumOS !== platform.minimumOS || pack.minimumLibc !== platform.minimumLibc || !pack.files || typeof pack.files !== 'object' || Array.isArray(pack.files) || !Array.isArray(pack.libraries) || !pack.libraries.length || !/^([0-9a-f]{64})$/.test(pack.sourceSha256) || JSON.stringify(pack.layout) !== JSON.stringify(runtimeLayout))
|
|
21
|
+
throw new Error('LLVM_RUNTIME: Runtime pack does not match this compiler, layout and target');
|
|
22
|
+
const root = realpathSync(directory);
|
|
23
|
+
for (const [path, expected] of Object.entries(pack.files)) {
|
|
24
|
+
nativePath(path);
|
|
25
|
+
const file = join(root, path);
|
|
26
|
+
if (!/^[0-9a-f]{64}$/.test(expected) || !lstatSync(file).isFile() || !realpathSync(file).startsWith(root + '/'))
|
|
27
|
+
throw new Error('NATIVE_INTEGRITY: Invalid runtime pack member ' + path);
|
|
28
|
+
const actual = createHash('sha256').update(readFileSync(file)).digest('hex');
|
|
29
|
+
if (actual !== expected)
|
|
30
|
+
throw new Error('NATIVE_INTEGRITY: Runtime pack file changed: ' + path);
|
|
31
|
+
}
|
|
32
|
+
for (const path of [...pack.libraries, platform.entry ? 'platform/start.o' : 'platform/libSystem.tbd'])
|
|
33
|
+
if (!pack.files[nativePath(path)])
|
|
34
|
+
throw new Error('LLVM_RUNTIME: Runtime manifest does not identify required file ' + path);
|
|
35
|
+
if (pack.staticCore !== undefined && (typeof pack.staticCore !== 'string' || !pack.staticCore.endsWith('.a') || !pack.files[nativePath(pack.staticCore)]))
|
|
36
|
+
throw new Error('LLVM_RUNTIME: Runtime manifest does not identify its core archive');
|
|
37
|
+
if (!pack.components || typeof pack.components !== 'object' || Array.isArray(pack.components))
|
|
38
|
+
throw new Error('LLVM_RUNTIME: Missing component contracts');
|
|
39
|
+
for (const [name, component] of Object.entries(pack.components)) {
|
|
40
|
+
if (!/^[a-z][a-z0-9-]*$/.test(name) || !component || !Array.isArray(component.libraries) || !component.libraries.length || !Array.isArray(component.runtimeFiles) || !Array.isArray(component.metadata))
|
|
41
|
+
throw new Error('LLVM_RUNTIME: Invalid component ' + name);
|
|
42
|
+
for (const path of [...component.libraries, ...component.runtimeFiles, ...component.metadata])
|
|
43
|
+
if (typeof path !== 'string' || !pack.files[nativePath(path)])
|
|
44
|
+
throw new Error('LLVM_RUNTIME: Missing component file ' + name + ' ' + path);
|
|
45
|
+
}
|
|
46
|
+
return pack;
|
|
47
|
+
}
|
|
48
|
+
/** Link target objects with prebuilt runtimes. Application builds never invoke Clang. */
|
|
49
|
+
export function compileLLVM(checked, options = {}) {
|
|
50
|
+
const root = checked.project.root, target = nativeHostTarget();
|
|
51
|
+
const config = checked.project.config;
|
|
52
|
+
const release = options.release ?? config.optimization === 'release';
|
|
53
|
+
if (config.libraries.length || config.library_paths.length)
|
|
54
|
+
throw new Error('LLVM_LINK_INPUT: LLVM builds require native libraries to be declared by a locked August package. Remove main.yaml libraries/library_paths or use the C reference backend for this local toolchain build.');
|
|
55
|
+
const platform = llvmPlatform(target);
|
|
56
|
+
const compilerRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
57
|
+
const tools = options.toolchain?.tools ?? process.env.AUG_LLVM_HOME, runtime = resolve(options.toolchain?.runtime ?? process.env.AUG_RUNTIME_PACK ?? join(compilerRoot, '.aug-native/llvm/runtime'));
|
|
58
|
+
if (!tools)
|
|
59
|
+
throw new Error('LLVM_TOOLS: Prepare the compiler-owned tool pack before invoking the LLVM compilation API. The CLI installs it automatically.');
|
|
60
|
+
const llc = join(tools, 'bin/llc'), lld = join(tools, 'bin/lld'), opt = join(tools, 'bin/opt'), dsymutil = join(tools, 'bin/dsymutil');
|
|
61
|
+
if (platform.tools.some(tool => !existsSync(join(tools, 'bin', tool))))
|
|
62
|
+
throw new Error('LLVM_TOOLS: The configured tool pack is missing ' + platform.tools.join(', '));
|
|
63
|
+
const pack = readRuntimePack(runtime), ir = lowerToIR(checked, { coverage: options.coverage }), module = generateLLVM(ir, { layout: pack.layout, release, triple: platform.triple });
|
|
64
|
+
const directory = resolve(options.bundle ?? join(root, '.aug-build', ...(options.testIndex === undefined ? [] : ['tests'])));
|
|
65
|
+
mkdirSync(join(directory, 'lib'), { recursive: true });
|
|
66
|
+
const name = options.testIndex === undefined ? 'program' : 'test-' + options.testIndex;
|
|
67
|
+
const source = join(directory, name + '.ll'), object = join(directory, name + '.o');
|
|
68
|
+
const outputName = options.testIndex === undefined ? options.output ?? config.output ?? basename(root) : name;
|
|
69
|
+
const output = resolve(directory, outputName);
|
|
70
|
+
const deployment = join(dirname(output), 'lib');
|
|
71
|
+
mkdirSync(deployment, { recursive: true });
|
|
72
|
+
writeFileSync(source, module);
|
|
73
|
+
writeFileSync(join(directory, name + '.aug-ir.json'), JSON.stringify(ir, null, 2) + '\n');
|
|
74
|
+
if (config.openapi.enabled && options.testIndex === undefined) {
|
|
75
|
+
const target = resolve(root, config.openapi.output);
|
|
76
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
77
|
+
writeFileSync(target, JSON.stringify(generateOpenApi(checked).document, null, 2) + '\n');
|
|
78
|
+
}
|
|
79
|
+
const run = (tool, args) => { const result = spawnSync(tool, args, { encoding: 'utf8', cwd: root, env: { ...process.env, SDKROOT: '/nonexistent', DEVELOPER_DIR: '/nonexistent' } }); if (result.status !== 0)
|
|
80
|
+
throw new Error(`LLVM compilation failed with ${basename(tool)}.\n${result.stderr || result.error?.message || result.stdout}\nLLVM IR: ${source}`); return result; };
|
|
81
|
+
const optimized = join(directory, name + '.optimized.ll');
|
|
82
|
+
run(opt, ['-passes=verify', '-disable-output', source]);
|
|
83
|
+
if (release)
|
|
84
|
+
run(opt, ['-passes=default<O2>', '-S', source, '-o', optimized]);
|
|
85
|
+
run(llc, ['-filetype=obj', release ? '-O=2' : '-O=0', '-relocation-model=pic', release ? optimized : source, '-o', object]);
|
|
86
|
+
const libraries = [], deployed = new Map();
|
|
87
|
+
const deploy = (origin, path, link) => {
|
|
88
|
+
nativePath(path);
|
|
89
|
+
const destination = join(deployment, basename(path));
|
|
90
|
+
const digest = createHash('sha256').update(readFileSync(join(origin, path))).digest('hex');
|
|
91
|
+
if (deployed.has(destination) && deployed.get(destination) !== digest)
|
|
92
|
+
throw new Error('NATIVE_CONFLICT: Different runtime files have the same deployment name ' + basename(path));
|
|
93
|
+
deployed.set(destination, digest);
|
|
94
|
+
copyFileSync(join(origin, path), destination);
|
|
95
|
+
if (link)
|
|
96
|
+
libraries.push(destination);
|
|
97
|
+
};
|
|
98
|
+
const metadata = (origin, namespace, paths) => {
|
|
99
|
+
for (const path of paths) {
|
|
100
|
+
nativePath(path);
|
|
101
|
+
const destination = join(dirname(output), 'share', 'august-native', namespace, path);
|
|
102
|
+
mkdirSync(dirname(destination), { recursive: true });
|
|
103
|
+
copyFileSync(join(origin, path), destination);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const staticCore = !ir.components.length && pack.staticCore !== undefined;
|
|
107
|
+
if (staticCore)
|
|
108
|
+
libraries.push(join(runtime, pack.staticCore));
|
|
109
|
+
else
|
|
110
|
+
for (const library of pack.libraries)
|
|
111
|
+
deploy(runtime, library, true);
|
|
112
|
+
for (const name of ir.components) {
|
|
113
|
+
const component = pack.components[name];
|
|
114
|
+
if (!component)
|
|
115
|
+
throw new Error('LLVM_RUNTIME: Compiler pack is missing the ' + name + ' runtime component. Install a matching complete compiler pack.');
|
|
116
|
+
for (const path of component.libraries)
|
|
117
|
+
deploy(runtime, path, true);
|
|
118
|
+
for (const path of component.runtimeFiles)
|
|
119
|
+
deploy(runtime, path, false);
|
|
120
|
+
metadata(runtime, 'runtime-' + pack.sourceSha256, component.metadata);
|
|
121
|
+
}
|
|
122
|
+
metadata(runtime, 'runtime-' + pack.sourceSha256, [...Object.keys(pack.files).filter(path => path.startsWith('licenses/')), 'runtime.json']);
|
|
123
|
+
for (const input of options.native ?? []) {
|
|
124
|
+
for (const library of input.libraries)
|
|
125
|
+
deploy(input.directory, library, true);
|
|
126
|
+
for (const file of input.runtimeFiles)
|
|
127
|
+
if (!input.libraries.includes(file))
|
|
128
|
+
deploy(input.directory, file, false);
|
|
129
|
+
if (input.metadata?.length) {
|
|
130
|
+
if (!/^[0-9a-f]{64}$/.test(input.artifactSha256 ?? ''))
|
|
131
|
+
throw new Error('NATIVE_INTEGRITY: Deployment metadata requires an artifact identity');
|
|
132
|
+
metadata(input.directory, input.artifactSha256, input.metadata);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (platform.entry) {
|
|
136
|
+
const libc = systemLibc(platform), math = join(dirname(libc), 'libm.so.6');
|
|
137
|
+
if (staticCore && !existsSync(math))
|
|
138
|
+
throw new Error('LLVM_RUNTIME: The qualified GNU/Linux math runtime is absent. Install the operating system libc runtime; no development headers or compiler are required.');
|
|
139
|
+
// Only the existing private checkpoint-hook boundary needs dynamic lookup.
|
|
140
|
+
// August function exports and native runtime entry remain separate profiles.
|
|
141
|
+
const coreExports = staticCore ? ['--gc-sections', '--export-dynamic-symbol=aug_execution_current', '--export-dynamic-symbol=aug_task_checkpoint_hook'] : [];
|
|
142
|
+
run(lld, ['-flavor', 'gnu', '-pie', '-z', 'now', '-z', 'noexecstack', '--hash-style=gnu', '--eh-frame-hdr', ...coreExports, '--dynamic-linker', platform.loader, '-e', '_start', '-rpath', '$ORIGIN/lib', join(runtime, 'platform/start.o'), object, ...libraries, libc, ...(staticCore ? [math] : []), '-o', output]);
|
|
143
|
+
}
|
|
144
|
+
else
|
|
145
|
+
run(lld, ['-flavor', 'darwin', ...(staticCore ? ['-dead_strip', '-exported_symbol', '_aug_execution_current', '-exported_symbol', '_aug_task_checkpoint_hook'] : []), '-arch', 'arm64', '-platform_version', 'macos', '14.0', '14.0', '-Z', '-fixup_chains', '-adhoc_codesign', '-e', '_main', '-rpath', '@executable_path/lib', object, ...libraries, join(runtime, 'platform/libSystem.tbd'), '-o', output]);
|
|
146
|
+
const debugInfo = platform.entry ? output : output + '.dSYM';
|
|
147
|
+
if (!platform.entry)
|
|
148
|
+
run(dsymutil, [output, '-o', debugInfo]);
|
|
149
|
+
const hash = (file) => createHash('sha256').update(readFileSync(file)).digest('hex');
|
|
150
|
+
writeFileSync(output + '.augmap.json', JSON.stringify({ format: 1, backend: 'llvm', version: compilerVersion(), llvm: '23.1.2', mode: release ? 'release' : 'development', target: pack.target, minimumOS: pack.minimumOS, minimumLibc: pack.minimumLibc, sourceRevision: ir.sourceRevision, llvmIR: source, llvmIRSha256: hash(source), optimizedIRSha256: release ? hash(optimized) : undefined, object, objectSha256: hash(object), executableSha256: hash(output), debugInfo, debugInfoSha256: hash(platform.entry ? output : join(debugInfo, 'Contents/Resources/DWARF', basename(output))), runtime: pack.sourceSha256, compilerArtifact: options.toolchain?.archiveSha256, developmentToolchain: options.toolchain?.developmentOverride ?? true, nativeArtifacts: options.native?.map(input => input.artifactSha256), libraries: [...deployed].map(([file, sha256]) => ({ file: basename(file), sha256 })), symbols: ir.functions.map(f => ({ name: f.name, sourceName: f.sourceName, location: f.span })) }, null, 2) + '\n');
|
|
151
|
+
return { output, status: 0, error: '', diagnostics: [] };
|
|
152
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { nativeHostTarget } from "./native-contracts.js";
|
|
3
|
+
export const llvmPlatforms = [
|
|
4
|
+
{ host: 'darwin-arm64', target: 'aarch64-apple-darwin', triple: 'arm64-apple-macosx14.0.0', artifact: 'macos-arm64', minimumOS: '14.0', tools: ['llc', 'opt', 'lld', 'dsymutil'] },
|
|
5
|
+
{ host: 'linux-x64', target: 'x86_64-unknown-linux-gnu', triple: 'x86_64-unknown-linux-gnu', artifact: 'linux-x64', minimumLibc: '2.36', tools: ['llc', 'opt', 'lld'], entry: 'linux-x64/start.S', loader: '/lib64/ld-linux-x86-64.so.2', libc: ['/lib/x86_64-linux-gnu/libc.so.6', '/usr/lib/x86_64-linux-gnu/libc.so.6'] },
|
|
6
|
+
{ host: 'linux-arm64', target: 'aarch64-unknown-linux-gnu', triple: 'aarch64-unknown-linux-gnu', artifact: 'linux-arm64', minimumLibc: '2.36', tools: ['llc', 'opt', 'lld'], entry: 'linux-arm64/start.S', loader: '/lib/ld-linux-aarch64.so.1', libc: ['/lib/aarch64-linux-gnu/libc.so.6', '/usr/lib/aarch64-linux-gnu/libc.so.6'] }
|
|
7
|
+
];
|
|
8
|
+
const atLeast = (actual, minimum) => !!actual && Number(actual.split('.')[0]) * 1000 + Number(actual.split('.')[1]) >= Number(minimum.split('.')[0]) * 1000 + Number(minimum.split('.')[1]);
|
|
9
|
+
export function llvmPlatform(target = nativeHostTarget()) {
|
|
10
|
+
const platform = llvmPlatforms.find(platform => platform.target === target.triple && platform.host === process.platform + '-' + process.arch);
|
|
11
|
+
if (!platform || platform.minimumOS && !atLeast(target.minimumOS, platform.minimumOS) || platform.minimumLibc && !atLeast(target.minimumLibc, platform.minimumLibc))
|
|
12
|
+
throw new Error('NATIVE_TARGET: LLVM requires macOS 14+ ARM64 or GNU/Linux x86-64/ARM64 with glibc 2.36+. This host is ' + target.triple + ' (' + (target.minimumOS ?? target.minimumLibc ?? target.libc) + '). Cross compilation and musl are not supported.');
|
|
13
|
+
return platform;
|
|
14
|
+
}
|
|
15
|
+
export function systemLibc(platform) {
|
|
16
|
+
const libc = platform.libc?.find(path => existsSync(path));
|
|
17
|
+
if (!libc || !platform.loader || !existsSync(platform.loader))
|
|
18
|
+
throw new Error('LLVM_RUNTIME: The qualified GNU/Linux libc/loader is absent. Use a glibc 2.36+ Debian/Ubuntu runtime. No development headers or compiler are required.');
|
|
19
|
+
return libc;
|
|
20
|
+
}
|