@greenpandastudios/aug-cli 0.20.1 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +1 -1
  2. package/docs/assets/benchmarks/execution.svg +774 -637
  3. package/docs/assets/benchmarks/http.svg +278 -249
  4. package/docs/assets/benchmarks/improvements.svg +66 -66
  5. package/docs/assets/benchmarks/kernels-mobile.svg +1 -0
  6. package/docs/assets/benchmarks/kernels.svg +1 -0
  7. package/docs/assets/benchmarks/memory.svg +153 -153
  8. package/docs/benchmark-results.json +227089 -90363
  9. package/docs/compatibility.md +6 -6
  10. package/docs/contributing-benchmarks.md +36 -6
  11. package/docs/dev-containers.md +8 -15
  12. package/docs/dgx-consumers.json +122 -0
  13. package/docs/dgx-gyms.json +784 -0
  14. package/docs/dgx-kernels.json +1170 -0
  15. package/docs/dgx-performance.json +227849 -0
  16. package/docs/dgx-spark.md +64 -0
  17. package/docs/diagnostics.md +1 -1
  18. package/docs/docker.md +16 -17
  19. package/docs/example-projects.json +32 -0
  20. package/docs/examples/approved-design/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  21. package/docs/examples/approved-design/domain/app.md +4 -4
  22. package/docs/examples/approved-design/main.md +2 -2
  23. package/docs/examples/calls-benchmark/index.md +36 -0
  24. package/docs/examples/calls-benchmark/main.md +78 -0
  25. package/docs/examples/calls-benchmark/operations.md +60 -0
  26. package/docs/examples/developer-workflow/calculator.md +5 -5
  27. package/docs/examples/developer-workflow/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  28. package/docs/examples/developer-workflow/logging/console.md +2 -2
  29. package/docs/examples/developer-workflow/logging/logger.md +2 -2
  30. package/docs/examples/developer-workflow/main.md +2 -2
  31. package/docs/examples/errors-benchmark/index.md +36 -0
  32. package/docs/examples/errors-benchmark/main.md +92 -0
  33. package/docs/examples/errors-benchmark/operations.md +65 -0
  34. package/docs/examples/float-benchmark/index.md +35 -0
  35. package/docs/examples/float-benchmark/main.md +75 -0
  36. package/docs/examples/generic-di/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  37. package/docs/examples/generic-di/main.md +2 -2
  38. package/docs/examples/generic-di/types.md +3 -3
  39. package/docs/examples/hello/app/greeter.md +3 -3
  40. package/docs/examples/hello/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  41. package/docs/examples/hello/logging/console.md +2 -2
  42. package/docs/examples/hello/logging/logger.md +2 -2
  43. package/docs/examples/hello/main.md +2 -2
  44. package/docs/examples/index.md +18 -1
  45. package/docs/examples/interceptors/app.md +5 -5
  46. package/docs/examples/interceptors/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  47. package/docs/examples/interceptors/interceptors.md +2 -2
  48. package/docs/examples/interceptors/logging.md +3 -3
  49. package/docs/examples/interceptors/main.md +2 -2
  50. package/docs/examples/list-benchmark/index.md +35 -0
  51. package/docs/examples/list-benchmark/main.md +78 -0
  52. package/docs/examples/map-churn-benchmark/index.md +35 -0
  53. package/docs/examples/map-churn-benchmark/main.md +106 -0
  54. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/api.md +104 -0
  55. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.md +54 -0
  56. package/docs/examples/native-blake3/dependencies/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi-json.md +48 -0
  57. package/docs/examples/native-blake3/hashing.md +93 -0
  58. package/docs/examples/native-blake3/index.md +38 -0
  59. package/docs/examples/native-blake3/main.md +73 -0
  60. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/api.md +406 -0
  61. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.md +51 -0
  62. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.md +63 -0
  63. package/docs/examples/native-pytorch/dependencies/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi-json.md +161 -0
  64. package/docs/examples/native-pytorch/index.md +38 -0
  65. package/docs/examples/native-pytorch/main.md +73 -0
  66. package/docs/examples/native-pytorch/tensors.md +123 -0
  67. package/docs/examples/native-sqlite/database.md +116 -0
  68. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/api.md +284 -0
  69. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.md +51 -0
  70. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.md +75 -0
  71. package/docs/examples/native-sqlite/dependencies/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi-json.md +119 -0
  72. package/docs/examples/native-sqlite/index.md +38 -0
  73. package/docs/examples/native-sqlite/main.md +73 -0
  74. package/docs/examples/native-zlib/compression.md +99 -0
  75. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/api.md +153 -0
  76. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.md +54 -0
  77. package/docs/examples/native-zlib/dependencies/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi-json.md +76 -0
  78. package/docs/examples/native-zlib/index.md +38 -0
  79. package/docs/examples/native-zlib/main.md +78 -0
  80. package/docs/examples/new-syntax/console.md +2 -2
  81. package/docs/examples/new-syntax/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  82. package/docs/examples/new-syntax/greeter.md +3 -3
  83. package/docs/examples/new-syntax/logger.md +2 -2
  84. package/docs/examples/new-syntax/main.md +2 -2
  85. package/docs/examples/ownership-transfer/dependencies/august/{0.20.1 → 0.21.0}/io/contracts.md +3 -3
  86. package/docs/examples/ownership-transfer/main.md +2 -2
  87. package/docs/examples/ownership-transfer/resource.md +2 -2
  88. package/docs/examples/packages-math/aug-package-json.md +1 -1
  89. package/docs/examples/records-benchmark/data.md +55 -0
  90. package/docs/examples/records-benchmark/index.md +36 -0
  91. package/docs/examples/records-benchmark/main.md +85 -0
  92. package/docs/examples/strings-benchmark/index.md +35 -0
  93. package/docs/examples/strings-benchmark/main.md +76 -0
  94. package/docs/examples/tasks-benchmark/index.md +36 -0
  95. package/docs/examples/tasks-benchmark/main.md +89 -0
  96. package/docs/examples/tasks-benchmark/operations.md +58 -0
  97. package/docs/getting-started.md +3 -3
  98. package/docs/grammar.md +2 -2
  99. package/docs/gym-results.json +784 -0
  100. package/docs/implementation-map.md +6 -0
  101. package/docs/index.md +1 -1
  102. package/docs/kernel-results.json +1170 -0
  103. package/docs/language-conformance.md +6 -0
  104. package/docs/language-constructs.md +9 -1
  105. package/docs/learn/index.md +1 -1
  106. package/docs/maintaining-docs.md +1 -1
  107. package/docs/native-implementation.md +276 -0
  108. package/docs/native-interop-llvm-plan.md +342 -0
  109. package/docs/native-package-examples.md +684 -0
  110. package/docs/native-packages.md +179 -0
  111. package/docs/packages.md +2 -2
  112. package/docs/performance.md +50 -29
  113. package/docs/production-readiness.md +11 -1
  114. package/docs/public/downloads/approved-design.zip +0 -0
  115. package/docs/public/downloads/calls-benchmark.zip +0 -0
  116. package/docs/public/downloads/developer-workflow.zip +0 -0
  117. package/docs/public/downloads/errors-benchmark.zip +0 -0
  118. package/docs/public/downloads/float-benchmark.zip +0 -0
  119. package/docs/public/downloads/generic-di.zip +0 -0
  120. package/docs/public/downloads/hello.zip +0 -0
  121. package/docs/public/downloads/interceptors.zip +0 -0
  122. package/docs/public/downloads/json-benchmark.zip +0 -0
  123. package/docs/public/downloads/list-benchmark.zip +0 -0
  124. package/docs/public/downloads/map-churn-benchmark.zip +0 -0
  125. package/docs/public/downloads/native-blake3.zip +0 -0
  126. package/docs/public/downloads/native-pytorch.zip +0 -0
  127. package/docs/public/downloads/native-sqlite.zip +0 -0
  128. package/docs/public/downloads/native-zlib.zip +0 -0
  129. package/docs/public/downloads/new-syntax.zip +0 -0
  130. package/docs/public/downloads/oidc-login.zip +0 -0
  131. package/docs/public/downloads/ownership-transfer.zip +0 -0
  132. package/docs/public/downloads/packages-app.zip +0 -0
  133. package/docs/public/downloads/packages-math.zip +0 -0
  134. package/docs/public/downloads/records-benchmark.zip +0 -0
  135. package/docs/public/downloads/strings-benchmark.zip +0 -0
  136. package/docs/public/downloads/tasks-benchmark.zip +0 -0
  137. package/docs/qualification-results.md +66 -0
  138. package/docs/reference.md +24 -0
  139. package/docs/releasing.md +81 -6
  140. package/docs/research/libtorch-native-qualification.md +115 -0
  141. package/docs/research/native-interop-llvm.md +197 -0
  142. package/docs/research/qualification-methods.md +15 -0
  143. package/docs/roadmap.md +1 -0
  144. package/docs/safety-gyms.md +41 -0
  145. package/docs/tooling.md +16 -15
  146. package/docs/web-library-gaps.md +1 -1
  147. package/docs/web.md +4 -0
  148. package/examples/approved-design/.aug-spec/manifest.json +3 -3
  149. package/examples/approved-design/domain/app.aug.md +4 -4
  150. package/examples/approved-design/main.aug.md +2 -2
  151. package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
  152. package/examples/developer-workflow/calculator.aug.md +5 -5
  153. package/examples/developer-workflow/logging/console.aug.md +2 -2
  154. package/examples/developer-workflow/logging/logger.aug.md +2 -2
  155. package/examples/developer-workflow/main.aug.md +2 -2
  156. package/examples/generic-di/.aug-spec/manifest.json +3 -3
  157. package/examples/generic-di/main.aug.md +2 -2
  158. package/examples/generic-di/types.aug.md +3 -3
  159. package/examples/hello/.aug-spec/manifest.json +3 -3
  160. package/examples/hello/app/greeter.aug.md +3 -3
  161. package/examples/hello/logging/console.aug.md +2 -2
  162. package/examples/hello/logging/logger.aug.md +2 -2
  163. package/examples/hello/main.aug.md +2 -2
  164. package/examples/interceptors/.aug-spec/manifest.json +3 -3
  165. package/examples/interceptors/app.aug.md +5 -5
  166. package/examples/interceptors/interceptors.aug.md +2 -2
  167. package/examples/interceptors/logging.aug.md +3 -3
  168. package/examples/interceptors/main.aug.md +2 -2
  169. package/examples/native-blake3/.aug-spec/manifest.json +16 -0
  170. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.1/native.abi.json +29 -0
  171. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug +14 -0
  172. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/api.aug.md +34 -0
  173. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug +4 -0
  174. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/contracts.aug.md +8 -0
  175. package/examples/native-blake3/.aug-spec/packages/@greenpandastudios/aug-blake3/0.1.3/native.abi.json +29 -0
  176. package/examples/native-blake3/AGENTS.md +5 -0
  177. package/examples/native-blake3/aug.lock.json +253 -0
  178. package/examples/native-blake3/hashing.aug +11 -0
  179. package/examples/native-blake3/hashing.aug.md +25 -0
  180. package/examples/native-blake3/main.aug +8 -0
  181. package/examples/native-blake3/main.aug.md +13 -0
  182. package/examples/native-pytorch/.aug-spec/manifest.json +18 -0
  183. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.1/native.abi.json +142 -0
  184. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.3/native.abi.json +142 -0
  185. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug +101 -0
  186. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/api.aug.md +160 -0
  187. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug +3 -0
  188. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/bindings.aug.md +8 -0
  189. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug +6 -0
  190. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/contracts.aug.md +13 -0
  191. package/examples/native-pytorch/.aug-spec/packages/@greenpandastudios/aug-pytorch/0.1.4/native.abi.json +142 -0
  192. package/examples/native-pytorch/AGENTS.md +5 -0
  193. package/examples/native-pytorch/aug.lock.json +309 -0
  194. package/examples/native-pytorch/main.aug +8 -0
  195. package/examples/native-pytorch/main.aug.md +13 -0
  196. package/examples/native-pytorch/tensors.aug +23 -0
  197. package/examples/native-pytorch/tensors.aug.md +35 -0
  198. package/examples/native-sqlite/.aug-spec/manifest.json +18 -0
  199. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.2/native.abi.json +100 -0
  200. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug +48 -0
  201. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/api.aug.md +91 -0
  202. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug +3 -0
  203. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/bindings.aug.md +8 -0
  204. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug +8 -0
  205. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/contracts.aug.md +22 -0
  206. package/examples/native-sqlite/.aug-spec/packages/@greenpandastudios/aug-sqlite/0.1.3/native.abi.json +100 -0
  207. package/examples/native-sqlite/AGENTS.md +5 -0
  208. package/examples/native-sqlite/aug.lock.json +236 -0
  209. package/examples/native-sqlite/database.aug +15 -0
  210. package/examples/native-sqlite/database.aug.md +27 -0
  211. package/examples/native-sqlite/main.aug +8 -0
  212. package/examples/native-sqlite/main.aug.md +13 -0
  213. package/examples/native-zlib/.aug-spec/manifest.json +16 -0
  214. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.1/native.abi.json +57 -0
  215. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug +29 -0
  216. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/api.aug.md +54 -0
  217. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug +4 -0
  218. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/contracts.aug.md +8 -0
  219. package/examples/native-zlib/.aug-spec/packages/@greenpandastudios/aug-zlib/0.1.3/native.abi.json +57 -0
  220. package/examples/native-zlib/AGENTS.md +5 -0
  221. package/examples/native-zlib/aug.lock.json +236 -0
  222. package/examples/native-zlib/compression.aug +15 -0
  223. package/examples/native-zlib/compression.aug.md +27 -0
  224. package/examples/native-zlib/main.aug +10 -0
  225. package/examples/native-zlib/main.aug.md +13 -0
  226. package/examples/new-syntax/.aug-spec/manifest.json +3 -3
  227. package/examples/new-syntax/console.aug.md +2 -2
  228. package/examples/new-syntax/greeter.aug.md +3 -3
  229. package/examples/new-syntax/logger.aug.md +2 -2
  230. package/examples/new-syntax/main.aug.md +2 -2
  231. package/examples/oidc-login/aug.lock.json +6 -6
  232. package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
  233. package/examples/ownership-transfer/main.aug.md +2 -2
  234. package/examples/ownership-transfer/resource.aug.md +2 -2
  235. package/examples/packages/math/aug-package.json +1 -1
  236. package/native/compiler-packs.json +43 -0
  237. package/package.json +3 -2
  238. package/runtime/aug_http.c +48 -21
  239. package/runtime/aug_http_ir.c +30 -0
  240. package/runtime/aug_http_ir.h +18 -0
  241. package/runtime/aug_ir.c +209 -0
  242. package/runtime/aug_ir.h +89 -0
  243. package/runtime/aug_json.c +6 -1
  244. package/runtime/aug_runtime.c +82 -16
  245. package/runtime/aug_runtime.h +16 -2
  246. package/runtime/aug_tasks.c +38 -7
  247. package/runtime/aug_values.c +12 -6
  248. package/scripts/bootstrap-native.mjs +4 -1
  249. package/src/ast.js +1 -1
  250. package/src/checker.js +110 -28
  251. package/src/cli.js +92 -14
  252. package/src/codegen.js +31 -6
  253. package/src/compiler-packs.js +66 -0
  254. package/src/config.js +2 -2
  255. package/src/editor.js +15 -6
  256. package/src/formatter.js +4 -2
  257. package/src/git-http.js +137 -0
  258. package/src/git-packages.js +9 -1
  259. package/src/help.js +10 -2
  260. package/src/ir-types.js +5 -0
  261. package/src/ir-verify.js +277 -0
  262. package/src/ir.js +962 -0
  263. package/src/llvm-debug.js +101 -0
  264. package/src/llvm-native.js +152 -0
  265. package/src/llvm-platform.js +20 -0
  266. package/src/llvm.js +781 -0
  267. package/src/native-artifacts.js +207 -0
  268. package/src/native-bindings.js +189 -0
  269. package/src/native-contracts.js +295 -0
  270. package/src/native-declarations.js +68 -0
  271. package/src/native-facts.js +63 -0
  272. package/src/package-locking.js +43 -0
  273. package/src/package-manager.js +23 -8
  274. package/src/parser.js +20 -2
  275. package/src/project.js +2 -2
  276. package/src/runtime-abi.js +23 -0
  277. package/src/runtime-adapters.js +18 -0
  278. package/src/schemas.js +24 -17
  279. package/src/semantic.js +8 -3
  280. package/src/snippets.js +1 -0
  281. package/src/spec.js +49 -8
  282. /package/examples/approved-design/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  283. /package/examples/approved-design/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
  284. /package/examples/developer-workflow/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  285. /package/examples/developer-workflow/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
  286. /package/examples/generic-di/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  287. /package/examples/generic-di/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
  288. /package/examples/hello/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  289. /package/examples/hello/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
  290. /package/examples/interceptors/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  291. /package/examples/interceptors/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
  292. /package/examples/new-syntax/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  293. /package/examples/new-syntax/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
  294. /package/examples/ownership-transfer/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug +0 -0
  295. /package/examples/ownership-transfer/.aug-spec/august/{0.20.1 → 0.21.0}/io/contracts.aug.md +0 -0
@@ -27,4 +27,10 @@ The compiler tracks object origins through aliases and fields. It can reject cod
27
27
 
28
28
  Tasks currently run cooperatively on one OS thread. A long loop reaches cancellation at compiler-inserted checkpoints. `Shared<T>` is the explicit path for synchronized mutable state. The runtime does not yet promise parallel CPU execution.
29
29
 
30
+ Scheduling an owned input transfers its cleanup responsibility immediately. If
31
+ a sibling cancels the child before entry, the scheduler releases that input.
32
+ The checker rejects owned task results, including inferred `Task<T>` results,
33
+ until the public task type has an owned-result transfer contract. Both backends
34
+ exercise these cases in the concurrency suite.
35
+
30
36
  Run the focused suite with `node --test tests/language-conformance.test.mjs`. The full repository test command also runs existing [concurrency](../tests/concurrency.test.mjs), ownership, errors, formatter, and generated-spec tests. This suite is growing through adversarial review; a green run does not establish complete ownership safety. The [roadmap](roadmap.md) keeps the language semantics gate open until that review and native CI finish.
@@ -782,7 +782,7 @@ Checked failure for an invalid List.get position. Catch it or let it propagate.
782
782
  initialize: ...
783
783
  ```
784
784
 
785
- Run constructor work once after header inputs and local fields are initialized, before returning the class or record. Put this block inside the declaration, before class methods. Construction stays pure. Records can validate inputs and raise checked errors, but cannot replace immutable fields.
785
+ Run constructor work once after header inputs and local fields are initialized, before returning the class or record. Put this block inside the declaration, before class methods. Construction stays pure. Classes declare checked constructor failures with unless before implements; failed construction releases transferred owned fields. Records can infer validation failures but cannot replace immutable fields.
786
786
 
787
787
  ## input
788
788
 
@@ -1044,6 +1044,14 @@ resolve Logger logger; resolve app to program
1044
1044
 
1045
1045
  Declare a dependency in a class or callable header. Callers omit its argument and forward the matching header dependency. Only main and test setup retrieve bindings directly with resolve app to program. Assignment-form resolve is rejected. Scoped dependencies require a scope block.
1046
1046
 
1047
+ ## resource
1048
+
1049
+ ```text
1050
+ extern C resource Tensor
1051
+ ```
1052
+
1053
+ Declare an opaque native object with a descriptor-checked release operation. Store acquired objects in own bindings; their scope releases them exactly once. Resource declarations belong to native packages, outside main.aug.
1054
+
1047
1055
  ## return
1048
1056
 
1049
1057
  ```text
@@ -6,7 +6,7 @@ next:
6
6
 
7
7
  # The August book
8
8
 
9
- This book teaches you to read, write, and change August programs. It assumes you have written code in another language. You do not need to know C to follow the lessons; the toolchain uses a C compiler when you run a program.
9
+ This book teaches you to read, write, and change August programs. It assumes you have written code in another language. August builds a native executable when you run a program; the pending 0.21.0 release downloads its own LLVM tools on [supported platforms](../getting-started.md).
10
10
 
11
11
  Start with a working application. Then add one idea at a time: labeled inputs, data and failures, module boundaries, dependencies, and controlled mutation. Each chapter contains a complete small project. Save its files together, run the commands, and compare your result with the output shown.
12
12
 
@@ -16,7 +16,7 @@ For writing and navigation, use [the editorial guide](writing-docs.md). The repo
16
16
 
17
17
  Public comments should explain observable behavior, named inputs, errors, side effects, and limits. Keep dependencies explicit in examples. Record incomplete capabilities in the gap ledger; do not imply that an unimplemented proposal is usable.
18
18
 
19
- Container guides install the published CLI and prepare its native dependencies. Keep their pinned CLI version, build tools, native library paths, and editor cache setting aligned with the release. Verify the HTTP application image and run the starter's check/run/test/spec workflow as the Dev Container's non-root user. State any verification mount substitutions: a Docker engine that cannot share local folders can test execution in an isolated volume, but that does not verify the default VS Code bind mount or editor port forwarding.
19
+ Container guides install the published CLI and obtain its pinned LLVM/runtime and package artifacts. Keep the CLI version, supported targets, writable cache paths and complete deployment bundle aligned with the release. Maintainer build images have a separate explicit toolchain. Verify the HTTP application image and run the starter's check/run/test/spec workflow as the Dev Container's non-root user. State any verification mount substitutions: a Docker engine that cannot share local folders can test execution in an isolated volume, but that does not verify the default VS Code bind mount or editor port forwarding.
20
20
 
21
21
  For dependency-setup changes, run `npm run test:setup-cold` after preparing the pinned downloads. It builds crypto and HTTP through an aliased empty cache, runs a digest, and serves a real HTTP response. The fast first-run suite covers JSON/tasks, downloads, offline reuse, packages, and cache concurrency. Verify the installed package too; source execution alone does not prove that setup helpers ship in the npm archive.
22
22
 
@@ -0,0 +1,276 @@
1
+ # Native packages and LLVM implementation
2
+
3
+ The [accepted architecture](native-interop-llvm-plan.md) is being implemented on
4
+ `codex/native-llvm`. The first delivery requires real repository imports of CPU
5
+ LibTorch, SQLite, zlib, and Rust BLAKE3, compiled through LLVM on macOS ARM64.
6
+ Passing a linker probe or metadata test does not complete that delivery.
7
+
8
+ The 0.21.0 candidate now selects LLVM for ordinary `build`, `run`, `test` and
9
+ `bench` commands. C remains an explicit migration reference. Its updated
10
+ language, debugger, sanitizer, performance and clean-consumer gates must pass
11
+ on all three hosts before the compiler release is published. The published
12
+ 0.20.1 CLI still uses C. CPU LibTorch `v0.1.4` and the other three libraries'
13
+ `v0.1.3` releases are already public.
14
+
15
+ The package manifest now has a checked format 2 for native dependencies. It pins
16
+ the binding descriptor, upstream identity, target requirements, archive hash and
17
+ size limits, link inputs, deployment files, and component versions. Source
18
+ installation validates those facts without running native build scripts. This
19
+ is development branch behavior; the published CLI does not support it yet.
20
+
21
+ The branch emits LLVM IR from checked execution IR, runs LLVM 23.1.2's optimizer
22
+ and object generator, and links with LLD using an independently authored platform
23
+ import stub. Consumers install a pinned compiler pack. Opaque resources have
24
+ deterministic release, call-duration loans, and checked package/provider identities.
25
+ Native failures use their resolved August constructors and method tables.
26
+
27
+ All four real adapters have been built and tested locally. Ten August cases
28
+ pass through the installed tool pack with native compilers, Git and SDK paths
29
+ unavailable to the test processes. Their versioned sources and native archives are
30
+ published in separate public repositories. A second check installs the npm CLI
31
+ archives into a fresh `node_modules`, downloads each library from GitHub, and
32
+ runs its program through LLVM using both URL imports and named package aliases.
33
+ All four programs produce the expected results, then run with unchanged frozen
34
+ locks offline. Each executable also runs after relocation with its deployment libraries and
35
+ notices. Real LibTorch adapter counters verify that a failed class constructor
36
+ releases its transferred handle and that an owned function input is released
37
+ before an early return reaches its caller. The check supplies only the unpublished
38
+ compiler archive locally; it uses real public transport for every library. The
39
+ macOS 14 ARM64 consumer gate passed in CI on commit `298c0a6`, including frozen,
40
+ offline and relocated execution. Compiler release publication remains outstanding;
41
+ each subsequent compiler change must pass that same gate before publication.
42
+ The independent native clients run
43
+ 1,000 cleanup cycles per library. SQLite also checks persistent storage and
44
+ rejects SQL attachment/VACUUM INTO before they can expand filesystem authority.
45
+ Scalar reads authorize only queries before execution, rejecting PRAGMA commands,
46
+ transactions, savepoints, and writes without changing the connection.
47
+
48
+ The compiler suite checks owned field transfers, native error dispatch, bounded
49
+ direct calls, archive integrity, modified lock metadata and ambiguous physical
50
+ symbols. These finite checks do not establish arbitrary foreign-code safety.
51
+ LibTorch's collected redistribution notices do not replace an exhaustive upstream
52
+ binary SBOM; the qualification research records that gap.
53
+
54
+ LLVM also lowers optional and nominal record matches, nested dependency scopes,
55
+ `Shared` locks, `always` cleanup and cooperative tasks. The existing concurrency
56
+ fixtures run against both backends: grouped and collection waits retain order,
57
+ child failures cancel siblings, cancellation runs cleanup, and scopes join child
58
+ loans before dropping their resources. A task cancelled before entry releases
59
+ its transferred owned inputs even though its function never runs. Native regressions check normal execution,
60
+ early returns, caught and pending errors, and errors raised during cleanup.
61
+ The [native example projects](examples/index.md#native-libraries-llvm-preview)
62
+ include checked source, generated explanations and same-file tests. They require
63
+ the development compiler until its matching npm release and compiler pack are public.
64
+
65
+ The migration now includes JSON parsing and typed decoding, clocks, the existing
66
+ GnuTLS crypto APIs, native HTTP handlers and their policies, form decoding,
67
+ streams, server HTML/actions, and interceptor chains. Both backends use one
68
+ concrete schema graph; JSON and forms invoke the appropriate checked constructor
69
+ callback. LLVM verification runs before native object generation in development
70
+ and optimized builds. The existing web and interceptor fixtures run against the
71
+ LLVM path during migration. CI and release builds share
72
+ `node scripts/check-llvm-parity.mjs` to run the existing language, task, web and
73
+ real-app expectations through LLVM with bounded test concurrency.
74
+
75
+ Constructor layers track fresh results from `next()`. If interception fails after
76
+ construction, cleanup releases the completed object's owned fields before the
77
+ failure reaches its caller. Action captures evaluate labeled inputs once in their
78
+ written order. Runtime-pack builds also check operation, schema and policy
79
+ identifiers against the compiled headers; installation rejects a different
80
+ identifier contract.
81
+
82
+ Crypto and HTTP are separate prebuilt runtime components. Programs link and
83
+ deploy the components named by their checked IR. Their GnuTLS, Nettle and GMP
84
+ libraries remain replaceable dynamic files, with source archives, August adapter
85
+ sources, build recipes and notices in the deployment metadata. Maintainer builds
86
+ target macOS 14 and reject binaries with a higher deployment requirement. The
87
+ macOS 14 consumer gate passed for the expanded pack in
88
+ [CI run 36942469546](https://github.com/GreenPandaStudios/augscript/actions/runs/36942469546),
89
+ on commit `253bb1b`. That runner physically removed Xcode and Command Line Tools
90
+ before installing the CLI. All four public library downloads, frozen/offline
91
+ runs, relocated deployments, real-resource cleanup checks, task calls and
92
+ JSON/crypto/HTTP checks passed. Later compiler candidates must pass that gate
93
+ again. Tool removal is confined to the disposable GitHub-hosted job.
94
+
95
+ Execution IR now records checked source types, parameter labels, rooted cells and
96
+ source locations. A structural verifier checks frame bounds, control-flow targets,
97
+ cleanup returns, resolved calls, data schemas and private runtime signatures before
98
+ LLVM emission. The frontend remains responsible for source typing and ownership;
99
+ this verifier does not prove foreign code safe. Contributors can inspect it with
100
+ `aug emit-ir`.
101
+
102
+ Concrete nonnullable scalar cells stay outside the GC root frame; managed values
103
+ retain their registered roots. LLVM preserves integer wrapping and the runtime's
104
+ mixed numeric dispatch. Collection services use pointer arguments across the
105
+ private runtime boundary, avoiding target-specific C aggregate calling rules.
106
+ Runtime packs measure private execution flag and fiber offsets on each target.
107
+ LLVM functions retain their current execution pointer across suspension, as
108
+ the C reference does, and observe both task fibers and checkpoint hooks.
109
+
110
+ All three host packs include a verified core archive as well as the shared runtime.
111
+ Programs that need no dynamic runtime component link that archive directly;
112
+ crypto and HTTP programs use one shared core with their components. Both paths
113
+ retain the same task, root and ownership behavior. Only the existing private
114
+ checkpoint-hook boundary is exported by core-only executables. The archive is
115
+ a maintainer-built input; application compilation does not invoke a C compiler.
116
+
117
+ The compressed-stream disconnect regression now receives enough chunks to
118
+ trigger managed collection before disconnecting. It exposed temporary header
119
+ strings that were not rooted while another argument was allocated. Header
120
+ construction now roots those values before allocating its name; the check
121
+ also verifies disconnect logging and that the server remains alive.
122
+
123
+ Streaming HEAD stops its producer after establishing the response. LLVM now
124
+ preserves that response when its cancellation path has no pending error; real
125
+ cleanup errors retain the normal failure path. Socket checks cover an endless
126
+ compressed stream, its empty HEAD body and successful log, and a cleanup failure
127
+ that still returns and logs 500. A deterministic runtime check inspects headers
128
+ before transport and rejects duplicate CORS policies. The preserved response
129
+ receives policies once; fresh error responses still receive them. Intentional
130
+ producer cancellation does not end the transport wait or request logging early.
131
+ The controlled wait also checks that a deadline returns and logs 504.
132
+ HEAD transport completes with its headers, rather than waiting for an empty-body
133
+ write. The request job retains its prepared response after session cleanup.
134
+ A deterministic completion check and live HTTP/1.1 and HTTP/2 requests cover
135
+ the connection-reuse race found by ARM64 CI.
136
+
137
+ LLVM output includes DWARF source lines and variables in both development and
138
+ optimized builds. The compiler pack contains `dsymutil`, which writes an adjacent
139
+ dSYM without an SDK. `.augmap.json` identifies the IR, object, executable, debug
140
+ file and selected native artifacts. Tests inspect the actual DWARF for source
141
+ functions, sibling lexical scopes, parameters, loop bindings and catch variables.
142
+ Local variable declarations appear at their source position. Debugger values use the real tagged representation;
143
+ LLDB uses its C-compatible type reader for that representation while the source
144
+ and producer identify August. This fixes missing variables in LLDB versions
145
+ that cannot read an unregistered vendor language. Rich views and August
146
+ expression evaluation are future work. LLVM tests also collect statement-line coverage,
147
+ including zero counts for unexecuted statements. Setup assertions do not count
148
+ toward a test case's required assertions. Same-file tests honor the configured
149
+ development or release optimization mode.
150
+ An actual LLDB check stops at an August source line, reads a parameter and local
151
+ in their tagged representation, then continues to a successful process exit.
152
+
153
+ Configured executable and OpenAPI output paths work with LLVM. Local
154
+ `libraries` and `library_paths` settings require the C reference backend; LLVM
155
+ requires package-declared native link inputs so its deployment closure stays
156
+ locked and does not depend on a consumer's toolchain.
157
+
158
+ ## Delivery order
159
+
160
+ | Step | Work | Acceptance |
161
+ | --- | --- | --- |
162
+ | 1 | ABI profile, resources, targets, descriptor and artifact validation | Reject mismatched contracts, unsupported platforms, unsafe archive paths, and unbounded downloads |
163
+ | 2 | Four separate repositories, real adapters and release builds | Independent native clients verify upstream operations and cleanup |
164
+ | 3 | Checked execution IR and LLVM generation | Native August functions preserve labels, control flow, errors, and roots |
165
+ | 4 | Runtime packs and pointer-call services | Immediate resource release and interface dispatch pass native checks |
166
+ | 5 | SDK-free linker and distributed tools | A relocated executable runs without SDK or compiler inputs |
167
+ | 6 | Repository transport, native locks and cache | URL and alias imports restore exact source and artifact identities |
168
+ | 7 | Compiler-checked bindings and CLI bundles | All four accepted examples compile through LLVM and run correctly |
169
+ | 8 | First milestone qualification | Installed CLI works on a clean macOS 14+ ARM64 machine with no native toolchain |
170
+ | 9 | Full language parity, debug information and release builds | Existing language, runtime, HTTP, editor and package suites pass with LLVM |
171
+ | 10 | Linux packs, migration and LLVM default | Per-platform parity, deployment and distribution gates pass |
172
+
173
+ Callbacks, exported August libraries, borrowed native views, additional platform
174
+ profiles and GPU support follow the qualified first profile as specified in the
175
+ architecture. Their semantics must not be implied by the initial resource ABI.
176
+
177
+ ## Evidence
178
+
179
+ Maintainers can check C adapter headers with `aug bind header`. It emits reviewed
180
+ declaration fragments and a physical ABI report; it keeps ownership and allocator
181
+ promises explicitly author-declared. Independent malformed-header fixtures check
182
+ integer signedness, byte booleans, buffer lengths, mutable pointers, releases,
183
+ callbacks and error layout. The audit found an unsigned cleanup-counter mismatch
184
+ in LibTorch's `v0.1.3` adapter. Its corrected signed exports passed native clients
185
+ on all three targets and are published as
186
+ [`v0.1.4`](https://github.com/GreenPandaStudios/aug-pytorch/releases/tag/v0.1.4);
187
+ the three other real package headers passed.
188
+
189
+ Compiler locks now retain independent selections for each host. Installed-CLI
190
+ qualification checks that recording another host preserves the current pin and
191
+ that a frozen build with its current entry removed fails without editing the lock.
192
+
193
+ The LLVM migration benchmark accepts `--backend llvm` and `--backend c` with the
194
+ same checked programs and independent output checks. Scalar lowering retains
195
+ wrapping int64 arithmetic, IEEE comparisons and checked runtime division. Tests
196
+ include the signed minimum divided by minus one, NaN, optional values and mixed
197
+ integer/float comparisons. All three platform jobs passed the frozen performance
198
+ limits on commit `e3c072b` in [macOS CI](https://github.com/GreenPandaStudios/augscript/actions/runs/36992865486)
199
+ and [GNU/Linux CI](https://github.com/GreenPandaStudios/augscript/actions/runs/36992865479).
200
+ They also passed the full safety gyms, expanded kernels and clean public-library
201
+ consumer checks. The [recorded measurements](qualification-results.md) and
202
+ [physical DGX Spark results](dgx-spark.md) retain the workloads and limits.
203
+ The frozen migration limits live in `native/llvm-performance-gates.json`: each
204
+ batch median may rise by at most 20% or 0.5ms against the same August program on
205
+ the C backend; HTTP throughput may fall by at most 20%. Qualification requires
206
+ 15 rotating samples after three warmups and five HTTP rounds at each declared
207
+ concurrency. These limits apply to migration, not a general speed claim.
208
+
209
+ The maintainer sanitizer harness accepts `--backend llvm`. LLVM's ASan pass
210
+ instruments the actual emitted program before object generation. The harness
211
+ adds `sanitize_address` to each generated function, checks the inserted memory
212
+ probes, and requires a deliberate stack overflow to fail. Clang builds
213
+ the same core runtime sources with ASan and UBSan, then links that LLVM object.
214
+ This is a maintainer test, and does not introduce a consumer toolchain
215
+ requirement. It checks collections, allocation pressure and owned task inputs.
216
+ UBSan covers the C runtime; it does not reconstruct source-level arithmetic
217
+ checks from LLVM IR or establish that an upstream binary is safe. Leak checking
218
+ is disabled for the coroutine harness; independent resource counters provide
219
+ the separate native cleanup evidence.
220
+
221
+ GNU/Linux lowering now supports x86-64 and ARM64 on Debian/Ubuntu with glibc
222
+ 2.36 or later. An independently authored process-entry object calls the public
223
+ libc initialization entry. LLD links against the host's runtime libc and loader;
224
+ application compilation requires no CRT development objects, headers or native
225
+ compiler. ELF libraries load relative to the executable. LLVM's own C++/ICU/XZ
226
+ dependencies stay in its tool directory and are not application dependencies.
227
+
228
+ Debian 12 x86-64 and ARM64 qualification passed in
229
+ [CI run 36953864621](https://github.com/GreenPandaStudios/augscript/actions/runs/36953864621)
230
+ on commit `c2cab3d`. Each architecture passed 247 LLVM regression cases; three
231
+ macOS DWARF inspection cases were skipped. Two native ABI boundary cases also
232
+ passed. An installed CLI ran CPU LibTorch, SQLite, zlib and Rust BLAKE3 using
233
+ verified local candidates, including their same-file tests, frozen/offline locks,
234
+ relocation, owned-resource cleanup and task calls. The independent native clients
235
+ ran 1,000 cleanup cycles per library. These checks use local native archives and
236
+ do not qualify public Linux downloads. All four libraries publish checksum-pinned
237
+ archives for macOS ARM64, GNU/Linux x86-64 and GNU/Linux ARM64. The
238
+ per-architecture workflows also run public repository imports in a separate
239
+ Debian 12 consumer container without compilers, Git or development headers.
240
+ Only the unpublished compiler pack is supplied locally for that check.
241
+
242
+ The local clean Debian 12 ARM64 consumer check also passed against all four public
243
+ `v0.1.3` repository tags and release archives. It ran without Clang, GCC, Git or
244
+ development headers, including the Node headers normally present in the base
245
+ image. URL imports, named aliases, same-file tests, frozen/offline runs, relocated
246
+ deployments, real-resource cleanup, tasks, JSON, crypto and HTTP forms passed.
247
+ Both clean GNU/Linux jobs passed independently on commit `c21cd88` in
248
+ [run 36956350591](https://github.com/GreenPandaStudios/augscript/actions/runs/36956350591).
249
+ The matching macOS 14 gate passed in
250
+ [run 36956350544](https://github.com/GreenPandaStudios/augscript/actions/runs/36956350544).
251
+ These gates used the then-current `v0.1.3` public libraries; later compiler and
252
+ library changes must pass them again.
253
+
254
+ The ARM64 LibTorch CPU archive contains OpenBLAS 0.3.34 and Arm Compute 53.2.0
255
+ alongside LibTorch 2.14.1. The build checks reported binary versions and retains
256
+ their exact source archives and license files. It rejects CUDA, NVPL and Python
257
+ libraries from the deployment closure. The GCC runtime dependencies are pinned
258
+ Debian packages with corresponding sources, patches and license texts. Consumers
259
+ never execute these maintainer recipes. The upstream binary's exhaustive static
260
+ component inventory remains a documented limit.
261
+
262
+ Physical [DGX Spark qualification](dgx-spark.md) passed on October 2, 2026, using
263
+ the same commit. The compiler and runtime built on the actual ARM64 machine,
264
+ all 266 LLVM parity cases passed without skips, and the full gyms and frozen
265
+ performance gates passed. An installed CLI exercised all four public native
266
+ repositories, including offline locks, relocated deployments and real cleanup
267
+ counters. These are CPU checks; GPU support remains deferred.
268
+
269
+ The metadata suite exercises package loading and target selection. The
270
+ [research note](research/native-interop-llvm.md) records a macOS ARM64 linker
271
+ probe with independent platform stubs and no SDK inputs. Neither is a fresh
272
+ machine installation test. Release qualification will record the exact LLVM
273
+ version, runtime build inputs, package tags, native artifacts and test results.
274
+ Run `node scripts/qualify-native-consumers.mjs --local-compiler` after packaging
275
+ to repeat the prepublication consumer check. Omit `--local-compiler` after the
276
+ compiler release asset is public to check every download through HTTPS.