@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.
Files changed (628) hide show
  1. package/README.md +9 -6
  2. package/THIRD_PARTY_NOTICES.md +4 -0
  3. package/bin/aug.mjs +12 -2
  4. package/docs/about.md +27 -0
  5. package/docs/api/crypto.md +103 -69
  6. package/docs/api/io.md +35 -33
  7. package/docs/api/json.md +3 -3
  8. package/docs/api/memory.md +23 -19
  9. package/docs/api/time.md +10 -9
  10. package/docs/api/web.md +33 -38
  11. package/docs/assets/benchmarks/execution.svg +774 -637
  12. package/docs/assets/benchmarks/http.svg +278 -249
  13. package/docs/assets/benchmarks/improvements.svg +66 -66
  14. package/docs/assets/benchmarks/kernels-mobile.svg +1 -0
  15. package/docs/assets/benchmarks/kernels.svg +1 -0
  16. package/docs/assets/benchmarks/memory.svg +153 -153
  17. package/docs/benchmark-results.json +227089 -90363
  18. package/docs/compatibility.md +8 -8
  19. package/docs/contributing-benchmarks.md +68 -0
  20. package/docs/dev-containers.md +88 -0
  21. package/docs/dgx-consumers.json +122 -0
  22. package/docs/dgx-gyms.json +784 -0
  23. package/docs/dgx-kernels.json +1170 -0
  24. package/docs/dgx-performance.json +227849 -0
  25. package/docs/dgx-spark.md +64 -0
  26. package/docs/diagnostics.md +15 -5
  27. package/docs/docker.md +173 -12
  28. package/docs/editor.md +35 -0
  29. package/docs/example-projects.json +238 -24
  30. package/docs/examples/approved-design/counters.md +34 -126
  31. package/docs/examples/approved-design/dependencies/august/0.21.0/io/contracts.md +178 -0
  32. package/docs/examples/approved-design/domain/app.md +13 -77
  33. package/docs/examples/approved-design/domain/export.md +5 -19
  34. package/docs/examples/approved-design/domain/models.md +4 -23
  35. package/docs/examples/approved-design/domain/numbers.md +24 -114
  36. package/docs/examples/approved-design/index.md +16 -7
  37. package/docs/examples/approved-design/main.md +19 -96
  38. package/docs/examples/benchmark/index.md +6 -5
  39. package/docs/examples/benchmark/main.md +7 -35
  40. package/docs/examples/calls-benchmark/index.md +36 -0
  41. package/docs/examples/calls-benchmark/main.md +78 -0
  42. package/docs/examples/calls-benchmark/operations.md +60 -0
  43. package/docs/examples/cli-args/index.md +6 -5
  44. package/docs/examples/cli-args/main.md +6 -31
  45. package/docs/examples/collections/index.md +6 -5
  46. package/docs/examples/collections/main.md +7 -35
  47. package/docs/examples/collections-benchmark/index.md +6 -5
  48. package/docs/examples/collections-benchmark/main.md +7 -35
  49. package/docs/examples/cpu-benchmark/index.md +6 -5
  50. package/docs/examples/cpu-benchmark/main.md +5 -24
  51. package/docs/examples/developer-workflow/calculator.md +39 -186
  52. package/docs/examples/developer-workflow/dependencies/august/0.21.0/io/contracts.md +178 -0
  53. package/docs/examples/developer-workflow/index.md +16 -7
  54. package/docs/examples/developer-workflow/logging/console.md +10 -56
  55. package/docs/examples/developer-workflow/logging/export.md +4 -14
  56. package/docs/examples/developer-workflow/logging/logger.md +7 -43
  57. package/docs/examples/developer-workflow/main.md +17 -69
  58. package/docs/examples/drop/index.md +6 -5
  59. package/docs/examples/drop/main.md +7 -27
  60. package/docs/examples/drop/resource.md +7 -30
  61. package/docs/examples/errors/errors.md +7 -27
  62. package/docs/examples/errors/index.md +6 -5
  63. package/docs/examples/errors/main.md +7 -28
  64. package/docs/examples/errors-benchmark/index.md +36 -0
  65. package/docs/examples/errors-benchmark/main.md +92 -0
  66. package/docs/examples/errors-benchmark/operations.md +65 -0
  67. package/docs/examples/ffi/index.md +6 -5
  68. package/docs/examples/ffi/main.md +6 -20
  69. package/docs/examples/ffi/native.md +8 -34
  70. package/docs/examples/float-benchmark/index.md +35 -0
  71. package/docs/examples/float-benchmark/main.md +75 -0
  72. package/docs/examples/generic-di/dependencies/august/0.21.0/io/contracts.md +178 -0
  73. package/docs/examples/generic-di/index.md +6 -5
  74. package/docs/examples/generic-di/main.md +9 -39
  75. package/docs/examples/generic-di/types.md +23 -92
  76. package/docs/examples/generics/index.md +6 -5
  77. package/docs/examples/generics/main.md +10 -47
  78. package/docs/examples/generics/types.md +25 -100
  79. package/docs/examples/hello/app/export.md +4 -12
  80. package/docs/examples/hello/app/greeter.md +13 -91
  81. package/docs/examples/hello/dependencies/august/0.21.0/io/contracts.md +178 -0
  82. package/docs/examples/hello/index.md +17 -6
  83. package/docs/examples/hello/logging/console.md +10 -54
  84. package/docs/examples/hello/logging/export.md +4 -14
  85. package/docs/examples/hello/logging/logger.md +7 -45
  86. package/docs/examples/hello/main.md +9 -39
  87. package/docs/examples/http-benchmark/index.md +6 -5
  88. package/docs/examples/http-benchmark/main.md +6 -20
  89. package/docs/examples/http-benchmark/routes.md +9 -31
  90. package/docs/examples/index.md +63 -29
  91. package/docs/examples/interceptors/app.md +20 -139
  92. package/docs/examples/interceptors/dependencies/august/0.21.0/io/contracts.md +178 -0
  93. package/docs/examples/interceptors/index.md +6 -5
  94. package/docs/examples/interceptors/interceptors.md +24 -148
  95. package/docs/examples/interceptors/logging.md +13 -76
  96. package/docs/examples/interceptors/main.md +10 -65
  97. package/docs/examples/json-benchmark/data.md +4 -20
  98. package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  99. package/docs/examples/json-benchmark/index.md +7 -5
  100. package/docs/examples/json-benchmark/main-yaml.md +20 -0
  101. package/docs/examples/json-benchmark/main.md +10 -49
  102. package/docs/examples/list-benchmark/index.md +35 -0
  103. package/docs/examples/list-benchmark/main.md +78 -0
  104. package/docs/examples/map-churn-benchmark/index.md +35 -0
  105. package/docs/examples/map-churn-benchmark/main.md +106 -0
  106. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/api.md +104 -0
  107. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.md +54 -0
  108. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi-json.md +48 -0
  109. package/docs/examples/native-blake3/hashing.md +93 -0
  110. package/docs/examples/native-blake3/index.md +38 -0
  111. package/docs/examples/native-blake3/main.md +73 -0
  112. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/api.md +406 -0
  113. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.md +51 -0
  114. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.md +63 -0
  115. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi-json.md +161 -0
  116. package/docs/examples/native-pytorch/index.md +38 -0
  117. package/docs/examples/native-pytorch/main.md +73 -0
  118. package/docs/examples/native-pytorch/tensors.md +123 -0
  119. package/docs/examples/native-sqlite/database.md +116 -0
  120. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/api.md +284 -0
  121. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.md +51 -0
  122. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.md +75 -0
  123. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi-json.md +119 -0
  124. package/docs/examples/native-sqlite/index.md +38 -0
  125. package/docs/examples/native-sqlite/main.md +73 -0
  126. package/docs/examples/native-zlib/compression.md +99 -0
  127. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/api.md +153 -0
  128. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.md +54 -0
  129. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi-json.md +76 -0
  130. package/docs/examples/native-zlib/index.md +38 -0
  131. package/docs/examples/native-zlib/main.md +78 -0
  132. package/docs/examples/new-syntax/console.md +10 -52
  133. package/docs/examples/new-syntax/dependencies/august/0.21.0/io/contracts.md +178 -0
  134. package/docs/examples/new-syntax/greeter.md +13 -71
  135. package/docs/examples/new-syntax/index.md +6 -5
  136. package/docs/examples/new-syntax/logger.md +7 -43
  137. package/docs/examples/new-syntax/main.md +10 -53
  138. package/docs/examples/new-syntax/math.md +6 -24
  139. package/docs/examples/oidc-login/client/contracts.md +10 -61
  140. package/docs/examples/oidc-login/client/endpoints.md +32 -154
  141. package/docs/examples/oidc-login/client/export.md +5 -23
  142. package/docs/examples/oidc-login/client/login.md +234 -344
  143. package/docs/examples/oidc-login/client/logout.md +38 -143
  144. package/docs/examples/oidc-login/client/protocol.md +183 -304
  145. package/docs/examples/oidc-login/client/session.md +41 -149
  146. package/docs/examples/oidc-login/client/views.md +13 -58
  147. package/docs/examples/oidc-login/common/export.md +6 -26
  148. package/docs/examples/oidc-login/common/headers.md +42 -72
  149. package/docs/examples/oidc-login/common/keys.md +40 -164
  150. package/docs/examples/oidc-login/common/settings.md +24 -40
  151. package/docs/examples/oidc-login/common/views.md +7 -28
  152. package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
  153. package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  154. package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
  155. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
  156. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
  157. package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
  158. package/docs/examples/oidc-login/index.md +8 -7
  159. package/docs/examples/oidc-login/main-yaml.md +7 -0
  160. package/docs/examples/oidc-login/main.md +26 -153
  161. package/docs/examples/oidc-login/provider/authorization.md +232 -275
  162. package/docs/examples/oidc-login/provider/contracts.md +24 -146
  163. package/docs/examples/oidc-login/provider/credentials.md +24 -57
  164. package/docs/examples/oidc-login/provider/discovery.md +48 -122
  165. package/docs/examples/oidc-login/provider/export.md +11 -37
  166. package/docs/examples/oidc-login/provider/token.md +159 -237
  167. package/docs/examples/oidc-login/provider/userinfo.md +47 -102
  168. package/docs/examples/oidc-login/provider/views.md +13 -53
  169. package/docs/examples/ownership/counter.md +17 -63
  170. package/docs/examples/ownership/index.md +6 -5
  171. package/docs/examples/ownership/main.md +7 -30
  172. package/docs/examples/ownership-transfer/dependencies/august/0.21.0/io/contracts.md +178 -0
  173. package/docs/examples/ownership-transfer/index.md +6 -5
  174. package/docs/examples/ownership-transfer/main.md +10 -52
  175. package/docs/examples/ownership-transfer/resource.md +15 -67
  176. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
  177. package/docs/examples/packages-app/index.md +7 -6
  178. package/docs/examples/packages-app/main.md +7 -25
  179. package/docs/examples/packages-math/aug-package-json.md +1 -1
  180. package/docs/examples/packages-math/index.md +7 -6
  181. package/docs/examples/packages-math/src/arithmetic.md +12 -50
  182. package/docs/examples/packages-math/src/export.md +4 -12
  183. package/docs/examples/records-benchmark/data.md +55 -0
  184. package/docs/examples/records-benchmark/index.md +36 -0
  185. package/docs/examples/records-benchmark/main.md +85 -0
  186. package/docs/examples/startup-benchmark/index.md +6 -5
  187. package/docs/examples/startup-benchmark/main.md +5 -17
  188. package/docs/examples/strings-benchmark/index.md +35 -0
  189. package/docs/examples/strings-benchmark/main.md +76 -0
  190. package/docs/examples/tasks-benchmark/index.md +36 -0
  191. package/docs/examples/tasks-benchmark/main.md +89 -0
  192. package/docs/examples/tasks-benchmark/operations.md +58 -0
  193. package/docs/examples/visibility/counter.md +19 -67
  194. package/docs/examples/visibility/index.md +6 -5
  195. package/docs/examples/visibility/main.md +7 -31
  196. package/docs/examples/weather-api/forecasts.md +168 -0
  197. package/docs/examples/weather-api/index.md +42 -0
  198. package/docs/examples/weather-api/main-yaml.md +21 -0
  199. package/docs/examples/weather-api/main.md +65 -0
  200. package/docs/examples.json +10 -0
  201. package/docs/getting-started.md +105 -2
  202. package/docs/grammar.md +7 -5
  203. package/docs/guides/change-a-module.md +64 -0
  204. package/docs/guides/index.md +27 -0
  205. package/docs/gym-results.json +784 -0
  206. package/docs/implementation-map.md +6 -0
  207. package/docs/index.md +51 -29
  208. package/docs/kernel-results.json +1170 -0
  209. package/docs/language-conformance.md +7 -1
  210. package/docs/language-constructs.md +30 -22
  211. package/docs/language-design-audit.md +1 -1
  212. package/docs/learn/data-and-errors.md +77 -0
  213. package/docs/learn/index.md +30 -0
  214. package/docs/learn/modules-and-dependencies.md +73 -0
  215. package/docs/learn/state-and-tests.md +71 -0
  216. package/docs/learn/values-and-functions.md +62 -0
  217. package/docs/lesson-failures.json +8 -0
  218. package/docs/maintaining-docs.md +16 -4
  219. package/docs/native-implementation.md +276 -0
  220. package/docs/native-interop-llvm-plan.md +342 -0
  221. package/docs/native-package-examples.md +684 -0
  222. package/docs/native-packages.md +179 -0
  223. package/docs/packages.md +72 -126
  224. package/docs/performance.md +61 -68
  225. package/docs/production-readiness.md +16 -5
  226. package/docs/public/downloads/approved-design.zip +0 -0
  227. package/docs/public/downloads/benchmark.zip +0 -0
  228. package/docs/public/downloads/calls-benchmark.zip +0 -0
  229. package/docs/public/downloads/cli-args.zip +0 -0
  230. package/docs/public/downloads/collections-benchmark.zip +0 -0
  231. package/docs/public/downloads/collections.zip +0 -0
  232. package/docs/public/downloads/cpu-benchmark.zip +0 -0
  233. package/docs/public/downloads/developer-workflow.zip +0 -0
  234. package/docs/public/downloads/drop.zip +0 -0
  235. package/docs/public/downloads/errors-benchmark.zip +0 -0
  236. package/docs/public/downloads/errors.zip +0 -0
  237. package/docs/public/downloads/ffi.zip +0 -0
  238. package/docs/public/downloads/float-benchmark.zip +0 -0
  239. package/docs/public/downloads/generic-di.zip +0 -0
  240. package/docs/public/downloads/generics.zip +0 -0
  241. package/docs/public/downloads/hello.zip +0 -0
  242. package/docs/public/downloads/http-benchmark.zip +0 -0
  243. package/docs/public/downloads/interceptors.zip +0 -0
  244. package/docs/public/downloads/json-benchmark.zip +0 -0
  245. package/docs/public/downloads/list-benchmark.zip +0 -0
  246. package/docs/public/downloads/map-churn-benchmark.zip +0 -0
  247. package/docs/public/downloads/native-blake3.zip +0 -0
  248. package/docs/public/downloads/native-pytorch.zip +0 -0
  249. package/docs/public/downloads/native-sqlite.zip +0 -0
  250. package/docs/public/downloads/native-zlib.zip +0 -0
  251. package/docs/public/downloads/new-syntax.zip +0 -0
  252. package/docs/public/downloads/oidc-login.zip +0 -0
  253. package/docs/public/downloads/ownership-transfer.zip +0 -0
  254. package/docs/public/downloads/ownership.zip +0 -0
  255. package/docs/public/downloads/packages-app.zip +0 -0
  256. package/docs/public/downloads/packages-math.zip +0 -0
  257. package/docs/public/downloads/records-benchmark.zip +0 -0
  258. package/docs/public/downloads/startup-benchmark.zip +0 -0
  259. package/docs/public/downloads/strings-benchmark.zip +0 -0
  260. package/docs/public/downloads/tasks-benchmark.zip +0 -0
  261. package/docs/public/downloads/visibility.zip +0 -0
  262. package/docs/public/downloads/weather-api.zip +0 -0
  263. package/docs/qualification-results.md +66 -0
  264. package/docs/reference.md +47 -17
  265. package/docs/releasing.md +105 -16
  266. package/docs/research/code-to-natural-language.md +108 -0
  267. package/docs/research/ecosystem-workflow.md +41 -0
  268. package/docs/research/libtorch-native-qualification.md +115 -0
  269. package/docs/research/native-interop-llvm.md +197 -0
  270. package/docs/research/qualification-methods.md +15 -0
  271. package/docs/research/wiki-editorial-design.md +71 -0
  272. package/docs/roadmap.md +2 -1
  273. package/docs/safety-gyms.md +41 -0
  274. package/docs/specifications.md +27 -11
  275. package/docs/testing.md +19 -5
  276. package/docs/tooling.md +36 -22
  277. package/docs/weather-api.md +65 -0
  278. package/docs/web-library-gaps.md +1 -1
  279. package/docs/web.md +54 -18
  280. package/docs/writing-docs.md +49 -0
  281. package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  282. package/examples/approved-design/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  283. package/examples/approved-design/.aug-spec/manifest.json +3 -3
  284. package/examples/approved-design/counters.aug +5 -4
  285. package/examples/approved-design/counters.aug.md +25 -132
  286. package/examples/approved-design/domain/app.aug +2 -1
  287. package/examples/approved-design/domain/app.aug.md +10 -80
  288. package/examples/approved-design/domain/export.aug +1 -0
  289. package/examples/approved-design/domain/export.aug.md +4 -20
  290. package/examples/approved-design/domain/models.aug +1 -0
  291. package/examples/approved-design/domain/models.aug.md +3 -25
  292. package/examples/approved-design/domain/numbers.aug +3 -2
  293. package/examples/approved-design/domain/numbers.aug.md +19 -116
  294. package/examples/approved-design/main.aug +1 -0
  295. package/examples/approved-design/main.aug.md +12 -95
  296. package/examples/benchmark/.aug-spec/manifest.json +1 -1
  297. package/examples/benchmark/main.aug +1 -0
  298. package/examples/benchmark/main.aug.md +6 -36
  299. package/examples/cli-args/.aug-spec/manifest.json +1 -1
  300. package/examples/cli-args/main.aug +1 -0
  301. package/examples/cli-args/main.aug.md +5 -32
  302. package/examples/collections/.aug-spec/manifest.json +1 -1
  303. package/examples/collections/main.aug +1 -0
  304. package/examples/collections/main.aug.md +6 -36
  305. package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  306. package/examples/developer-workflow/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  307. package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
  308. package/examples/developer-workflow/calculator.aug +3 -2
  309. package/examples/developer-workflow/calculator.aug.md +28 -189
  310. package/examples/developer-workflow/logging/console.aug +2 -1
  311. package/examples/developer-workflow/logging/console.aug.md +7 -57
  312. package/examples/developer-workflow/logging/export.aug +1 -0
  313. package/examples/developer-workflow/logging/export.aug.md +3 -15
  314. package/examples/developer-workflow/logging/logger.aug +1 -0
  315. package/examples/developer-workflow/logging/logger.aug.md +6 -46
  316. package/examples/developer-workflow/main.aug +1 -0
  317. package/examples/developer-workflow/main.aug.md +10 -68
  318. package/examples/drop/.aug-spec/manifest.json +1 -1
  319. package/examples/drop/main.aug +1 -0
  320. package/examples/drop/main.aug.md +6 -28
  321. package/examples/drop/resource.aug +1 -0
  322. package/examples/drop/resource.aug.md +6 -34
  323. package/examples/errors/.aug-spec/manifest.json +1 -1
  324. package/examples/errors/errors.aug +2 -1
  325. package/examples/errors/errors.aug.md +4 -27
  326. package/examples/errors/main.aug +1 -0
  327. package/examples/errors/main.aug.md +6 -29
  328. package/examples/ffi/.aug-spec/manifest.json +1 -1
  329. package/examples/ffi/main.aug +1 -0
  330. package/examples/ffi/main.aug.md +5 -21
  331. package/examples/ffi/native.aug +2 -1
  332. package/examples/ffi/native.aug.md +5 -35
  333. package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  334. package/examples/generic-di/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  335. package/examples/generic-di/.aug-spec/manifest.json +3 -3
  336. package/examples/generic-di/main.aug +1 -0
  337. package/examples/generic-di/main.aug.md +8 -40
  338. package/examples/generic-di/types.aug +3 -2
  339. package/examples/generic-di/types.aug.md +18 -97
  340. package/examples/generics/.aug-spec/manifest.json +1 -1
  341. package/examples/generics/main.aug +1 -0
  342. package/examples/generics/main.aug.md +9 -48
  343. package/examples/generics/types.aug +4 -3
  344. package/examples/generics/types.aug.md +18 -104
  345. package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.21.0}/io/contracts.aug +4 -3
  346. package/examples/hello/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  347. package/examples/hello/.aug-spec/manifest.json +3 -3
  348. package/examples/hello/app/export.aug +1 -0
  349. package/examples/hello/app/export.aug.md +3 -13
  350. package/examples/hello/app/greeter.aug +2 -1
  351. package/examples/hello/app/greeter.aug.md +10 -94
  352. package/examples/hello/logging/console.aug +2 -1
  353. package/examples/hello/logging/console.aug.md +7 -55
  354. package/examples/hello/logging/export.aug +1 -0
  355. package/examples/hello/logging/export.aug.md +3 -15
  356. package/examples/hello/logging/logger.aug +1 -0
  357. package/examples/hello/logging/logger.aug.md +6 -48
  358. package/examples/hello/main.aug +1 -0
  359. package/examples/hello/main.aug.md +8 -40
  360. package/examples/interceptors/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
  361. package/examples/interceptors/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  362. package/examples/interceptors/.aug-spec/manifest.json +3 -3
  363. package/examples/interceptors/app.aug +3 -2
  364. package/examples/interceptors/app.aug.md +15 -141
  365. package/examples/interceptors/interceptors.aug +3 -2
  366. package/examples/interceptors/interceptors.aug.md +19 -152
  367. package/examples/interceptors/logging.aug +2 -1
  368. package/examples/interceptors/logging.aug.md +10 -79
  369. package/examples/interceptors/main.aug +1 -0
  370. package/examples/interceptors/main.aug.md +9 -66
  371. package/examples/native-blake3/.aug-spec/manifest.json +16 -0
  372. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.1/native.abi.json +29 -0
  373. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug +14 -0
  374. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug.md +34 -0
  375. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug +4 -0
  376. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug.md +8 -0
  377. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi.json +29 -0
  378. package/examples/native-blake3/AGENTS.md +5 -0
  379. package/examples/native-blake3/aug.lock.json +253 -0
  380. package/examples/native-blake3/hashing.aug +11 -0
  381. package/examples/native-blake3/hashing.aug.md +25 -0
  382. package/examples/native-blake3/main.aug +8 -0
  383. package/examples/native-blake3/main.aug.md +13 -0
  384. package/examples/native-pytorch/.aug-spec/manifest.json +18 -0
  385. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.1/native.abi.json +142 -0
  386. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.3/native.abi.json +142 -0
  387. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug +101 -0
  388. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug.md +160 -0
  389. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug +3 -0
  390. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug.md +8 -0
  391. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug +6 -0
  392. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug.md +13 -0
  393. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi.json +142 -0
  394. package/examples/native-pytorch/AGENTS.md +5 -0
  395. package/examples/native-pytorch/aug.lock.json +309 -0
  396. package/examples/native-pytorch/main.aug +8 -0
  397. package/examples/native-pytorch/main.aug.md +13 -0
  398. package/examples/native-pytorch/tensors.aug +23 -0
  399. package/examples/native-pytorch/tensors.aug.md +35 -0
  400. package/examples/native-sqlite/.aug-spec/manifest.json +18 -0
  401. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.2/native.abi.json +100 -0
  402. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug +48 -0
  403. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug.md +91 -0
  404. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug +3 -0
  405. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug.md +8 -0
  406. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug +8 -0
  407. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug.md +22 -0
  408. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi.json +100 -0
  409. package/examples/native-sqlite/AGENTS.md +5 -0
  410. package/examples/native-sqlite/aug.lock.json +236 -0
  411. package/examples/native-sqlite/database.aug +15 -0
  412. package/examples/native-sqlite/database.aug.md +27 -0
  413. package/examples/native-sqlite/main.aug +8 -0
  414. package/examples/native-sqlite/main.aug.md +13 -0
  415. package/examples/native-zlib/.aug-spec/manifest.json +16 -0
  416. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.1/native.abi.json +57 -0
  417. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug +29 -0
  418. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug.md +54 -0
  419. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug +4 -0
  420. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug.md +8 -0
  421. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi.json +57 -0
  422. package/examples/native-zlib/AGENTS.md +5 -0
  423. package/examples/native-zlib/aug.lock.json +236 -0
  424. package/examples/native-zlib/compression.aug +15 -0
  425. package/examples/native-zlib/compression.aug.md +27 -0
  426. package/examples/native-zlib/main.aug +10 -0
  427. package/examples/native-zlib/main.aug.md +13 -0
  428. package/examples/new-syntax/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
  429. package/examples/new-syntax/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  430. package/examples/new-syntax/.aug-spec/manifest.json +3 -3
  431. package/examples/new-syntax/console.aug +2 -1
  432. package/examples/new-syntax/console.aug.md +7 -53
  433. package/examples/new-syntax/greeter.aug +2 -1
  434. package/examples/new-syntax/greeter.aug.md +10 -74
  435. package/examples/new-syntax/logger.aug +1 -0
  436. package/examples/new-syntax/logger.aug.md +6 -46
  437. package/examples/new-syntax/main.aug +1 -0
  438. package/examples/new-syntax/main.aug.md +9 -54
  439. package/examples/new-syntax/math.aug +2 -1
  440. package/examples/new-syntax/math.aug.md +3 -24
  441. package/examples/oidc-login/.aug-spec/manifest.json +13 -13
  442. package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
  443. package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
  444. package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
  445. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
  446. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
  447. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
  448. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
  449. package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
  450. package/examples/oidc-login/aug.lock.json +100 -0
  451. package/examples/oidc-login/client/contracts.aug +1 -0
  452. package/examples/oidc-login/client/contracts.aug.md +9 -66
  453. package/examples/oidc-login/client/endpoints.aug +6 -5
  454. package/examples/oidc-login/client/endpoints.aug.md +13 -145
  455. package/examples/oidc-login/client/export.aug +1 -0
  456. package/examples/oidc-login/client/export.aug.md +4 -24
  457. package/examples/oidc-login/client/login.aug +7 -6
  458. package/examples/oidc-login/client/login.aug.md +25 -303
  459. package/examples/oidc-login/client/logout.aug +5 -4
  460. package/examples/oidc-login/client/logout.aug.md +13 -135
  461. package/examples/oidc-login/client/protocol.aug +7 -6
  462. package/examples/oidc-login/client/protocol.aug.md +36 -283
  463. package/examples/oidc-login/client/session.aug +5 -4
  464. package/examples/oidc-login/client/session.aug.md +12 -139
  465. package/examples/oidc-login/client/views.aug +3 -2
  466. package/examples/oidc-login/client/views.aug.md +8 -57
  467. package/examples/oidc-login/common/export.aug +1 -0
  468. package/examples/oidc-login/common/export.aug.md +5 -27
  469. package/examples/oidc-login/common/headers.aug +4 -3
  470. package/examples/oidc-login/common/headers.aug.md +9 -67
  471. package/examples/oidc-login/common/keys.aug +6 -5
  472. package/examples/oidc-login/common/keys.aug.md +29 -165
  473. package/examples/oidc-login/common/settings.aug +2 -1
  474. package/examples/oidc-login/common/settings.aug.md +5 -39
  475. package/examples/oidc-login/common/views.aug +2 -1
  476. package/examples/oidc-login/common/views.aug.md +4 -28
  477. package/examples/oidc-login/main.aug +6 -16
  478. package/examples/oidc-login/main.aug.md +17 -146
  479. package/examples/oidc-login/main.yaml +7 -0
  480. package/examples/oidc-login/provider/authorization.aug +7 -6
  481. package/examples/oidc-login/provider/authorization.aug.md +23 -238
  482. package/examples/oidc-login/provider/contracts.aug +1 -0
  483. package/examples/oidc-login/provider/contracts.aug.md +23 -158
  484. package/examples/oidc-login/provider/credentials.aug +3 -2
  485. package/examples/oidc-login/provider/credentials.aug.md +9 -53
  486. package/examples/oidc-login/provider/discovery.aug +4 -3
  487. package/examples/oidc-login/provider/discovery.aug.md +11 -118
  488. package/examples/oidc-login/provider/export.aug +1 -0
  489. package/examples/oidc-login/provider/export.aug.md +6 -34
  490. package/examples/oidc-login/provider/token.aug +6 -5
  491. package/examples/oidc-login/provider/token.aug.md +16 -204
  492. package/examples/oidc-login/provider/userinfo.aug +4 -3
  493. package/examples/oidc-login/provider/userinfo.aug.md +10 -92
  494. package/examples/oidc-login/provider/views.aug +3 -2
  495. package/examples/oidc-login/provider/views.aug.md +8 -52
  496. package/examples/ownership/.aug-spec/manifest.json +1 -1
  497. package/examples/ownership/counter.aug +3 -2
  498. package/examples/ownership/counter.aug.md +12 -66
  499. package/examples/ownership/main.aug +1 -0
  500. package/examples/ownership/main.aug.md +6 -31
  501. package/examples/ownership-transfer/.aug-spec/august/0.21.0/io/contracts.aug +37 -0
  502. package/examples/ownership-transfer/.aug-spec/august/0.21.0/io/contracts.aug.md +82 -0
  503. package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
  504. package/examples/ownership-transfer/main.aug +1 -0
  505. package/examples/ownership-transfer/main.aug.md +9 -53
  506. package/examples/ownership-transfer/resource.aug +2 -1
  507. package/examples/ownership-transfer/resource.aug.md +12 -71
  508. package/examples/packages/app/.aug-spec/manifest.json +1 -1
  509. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
  510. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
  511. package/examples/packages/app/main.aug +1 -0
  512. package/examples/packages/app/main.aug.md +6 -26
  513. package/examples/packages/math/.aug-spec/manifest.json +1 -1
  514. package/examples/packages/math/aug-package.json +1 -1
  515. package/examples/packages/math/src/arithmetic.aug +2 -1
  516. package/examples/packages/math/src/arithmetic.aug.md +9 -51
  517. package/examples/packages/math/src/export.aug +1 -0
  518. package/examples/packages/math/src/export.aug.md +3 -13
  519. package/examples/visibility/.aug-spec/manifest.json +1 -1
  520. package/examples/visibility/counter.aug +4 -3
  521. package/examples/visibility/counter.aug.md +12 -68
  522. package/examples/visibility/main.aug +1 -0
  523. package/examples/visibility/main.aug.md +6 -32
  524. package/examples/weather-api/.aug-spec/manifest.json +8 -0
  525. package/examples/weather-api/AGENTS.md +17 -0
  526. package/examples/weather-api/README.md +19 -0
  527. package/examples/weather-api/forecasts.aug +47 -0
  528. package/examples/weather-api/forecasts.aug.md +32 -0
  529. package/examples/weather-api/main.aug +4 -0
  530. package/examples/weather-api/main.aug.md +15 -0
  531. package/examples/weather-api/main.yaml +5 -0
  532. package/examples/weather-api/weather.http +5 -0
  533. package/native/compiler-packs.json +43 -0
  534. package/package.json +4 -4
  535. package/runtime/aug_http.c +48 -21
  536. package/runtime/aug_http_ir.c +30 -0
  537. package/runtime/aug_http_ir.h +18 -0
  538. package/runtime/aug_ir.c +209 -0
  539. package/runtime/aug_ir.h +89 -0
  540. package/runtime/aug_json.c +6 -1
  541. package/runtime/aug_runtime.c +82 -16
  542. package/runtime/aug_runtime.h +16 -2
  543. package/runtime/aug_tasks.c +38 -7
  544. package/runtime/aug_values.c +12 -6
  545. package/scripts/bootstrap-native.mjs +184 -106
  546. package/scripts/native-setup.mjs +98 -0
  547. package/scripts/native-toolchain.mjs +28 -0
  548. package/src/ast.js +1 -1
  549. package/src/builtins.js +1 -1
  550. package/src/checker.js +369 -100
  551. package/src/cli.js +198 -26
  552. package/src/codegen.js +32 -7
  553. package/src/compiler-packs.js +66 -0
  554. package/src/config.js +3 -3
  555. package/src/contracts.js +10 -0
  556. package/src/editor.js +86 -22
  557. package/src/fixes.js +90 -2
  558. package/src/formatter.js +23 -10
  559. package/src/git-http.js +137 -0
  560. package/src/git-packages.js +118 -0
  561. package/src/help.js +33 -24
  562. package/src/http-contracts.js +14 -0
  563. package/src/http-policies.js +5 -5
  564. package/src/ir-types.js +5 -0
  565. package/src/ir-verify.js +277 -0
  566. package/src/ir.js +962 -0
  567. package/src/libraries.js +1 -1
  568. package/src/llvm-debug.js +101 -0
  569. package/src/llvm-native.js +152 -0
  570. package/src/llvm-platform.js +20 -0
  571. package/src/llvm.js +781 -0
  572. package/src/lsp.js +14 -5
  573. package/src/native-artifacts.js +207 -0
  574. package/src/native-bindings.js +189 -0
  575. package/src/native-contracts.js +295 -0
  576. package/src/native-declarations.js +68 -0
  577. package/src/native-facts.js +63 -0
  578. package/src/native.js +19 -13
  579. package/src/navigation.js +4 -2
  580. package/src/openapi.js +5 -4
  581. package/src/package-locking.js +88 -0
  582. package/src/package-manager.js +267 -68
  583. package/src/parser.js +32 -6
  584. package/src/policies.js +3 -3
  585. package/src/project-init.js +78 -4
  586. package/src/project.js +11 -9
  587. package/src/runtime-abi.js +23 -0
  588. package/src/runtime-adapters.js +18 -0
  589. package/src/schemas.js +24 -17
  590. package/src/semantic.js +54 -5
  591. package/src/snippets.js +60 -0
  592. package/src/spec-hints.js +56 -0
  593. package/src/spec-tree.js +241 -0
  594. package/src/spec.js +669 -305
  595. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
  596. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
  597. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
  598. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
  599. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
  600. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
  601. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
  602. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
  603. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
  604. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
  605. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
  606. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
  607. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
  608. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
  609. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  610. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  611. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  612. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  613. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  614. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  615. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  616. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  617. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
  618. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
  619. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
  620. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
  621. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
  622. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
  623. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  624. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  625. /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
  626. /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  627. /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  628. /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([['web', load('web')], ['crypto', load('crypto')]]) };
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
+ }