@greenpandastudios/aug-cli 0.19.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 (414) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/THIRD_PARTY_NOTICES.md +18 -0
  4. package/bin/aug.mjs +3 -0
  5. package/docs/api/crypto.md +351 -0
  6. package/docs/api/io.md +207 -0
  7. package/docs/api/json.md +21 -0
  8. package/docs/api/memory.md +109 -0
  9. package/docs/api/time.md +54 -0
  10. package/docs/api/web.md +184 -0
  11. package/docs/assets/benchmarks/execution.svg +2978 -0
  12. package/docs/assets/benchmarks/http.svg +1674 -0
  13. package/docs/assets/benchmarks/improvements.svg +2315 -0
  14. package/docs/assets/benchmarks/memory.svg +1891 -0
  15. package/docs/benchmark-baseline.json +1087 -0
  16. package/docs/benchmark-results.json +91123 -0
  17. package/docs/benchmarks.json +38 -0
  18. package/docs/compatibility.md +42 -0
  19. package/docs/concurrency-implementation.md +18 -0
  20. package/docs/diagnostics.md +97 -0
  21. package/docs/docker.md +35 -0
  22. package/docs/example-projects.json +26 -0
  23. package/docs/examples/approved-design/counters.md +253 -0
  24. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +395 -0
  25. package/docs/examples/approved-design/domain/app.md +165 -0
  26. package/docs/examples/approved-design/domain/export.md +83 -0
  27. package/docs/examples/approved-design/domain/models.md +80 -0
  28. package/docs/examples/approved-design/domain/numbers.md +248 -0
  29. package/docs/examples/approved-design/index.md +39 -0
  30. package/docs/examples/approved-design/main-yaml.md +24 -0
  31. package/docs/examples/approved-design/main.md +215 -0
  32. package/docs/examples/benchmark/index.md +33 -0
  33. package/docs/examples/benchmark/main-yaml.md +17 -0
  34. package/docs/examples/benchmark/main.md +117 -0
  35. package/docs/examples/cli-args/index.md +32 -0
  36. package/docs/examples/cli-args/main.md +107 -0
  37. package/docs/examples/collections/index.md +32 -0
  38. package/docs/examples/collections/main.md +118 -0
  39. package/docs/examples/collections-benchmark/index.md +34 -0
  40. package/docs/examples/collections-benchmark/main.md +115 -0
  41. package/docs/examples/cpu-benchmark/index.md +34 -0
  42. package/docs/examples/cpu-benchmark/main.md +90 -0
  43. package/docs/examples/developer-workflow/calculator.md +357 -0
  44. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +395 -0
  45. package/docs/examples/developer-workflow/index.md +37 -0
  46. package/docs/examples/developer-workflow/logging/console.md +124 -0
  47. package/docs/examples/developer-workflow/logging/export.md +70 -0
  48. package/docs/examples/developer-workflow/logging/logger.md +111 -0
  49. package/docs/examples/developer-workflow/main.md +172 -0
  50. package/docs/examples/drop/index.md +33 -0
  51. package/docs/examples/drop/main.md +85 -0
  52. package/docs/examples/drop/resource.md +95 -0
  53. package/docs/examples/errors/errors.md +85 -0
  54. package/docs/examples/errors/index.md +33 -0
  55. package/docs/examples/errors/main.md +92 -0
  56. package/docs/examples/ffi/index.md +33 -0
  57. package/docs/examples/ffi/main.md +75 -0
  58. package/docs/examples/ffi/native.md +93 -0
  59. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +395 -0
  60. package/docs/examples/generic-di/index.md +33 -0
  61. package/docs/examples/generic-di/main.md +111 -0
  62. package/docs/examples/generic-di/types.md +180 -0
  63. package/docs/examples/generics/index.md +33 -0
  64. package/docs/examples/generics/main.md +120 -0
  65. package/docs/examples/generics/types.md +189 -0
  66. package/docs/examples/hello/app/export.md +67 -0
  67. package/docs/examples/hello/app/greeter.md +190 -0
  68. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +395 -0
  69. package/docs/examples/hello/index.md +37 -0
  70. package/docs/examples/hello/logging/console.md +121 -0
  71. package/docs/examples/hello/logging/export.md +71 -0
  72. package/docs/examples/hello/logging/logger.md +120 -0
  73. package/docs/examples/hello/main.md +115 -0
  74. package/docs/examples/http-benchmark/index.md +35 -0
  75. package/docs/examples/http-benchmark/main.md +79 -0
  76. package/docs/examples/http-benchmark/routes.md +88 -0
  77. package/docs/examples/index.md +60 -0
  78. package/docs/examples/interceptors/app.md +250 -0
  79. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +395 -0
  80. package/docs/examples/interceptors/index.md +35 -0
  81. package/docs/examples/interceptors/interceptors.md +284 -0
  82. package/docs/examples/interceptors/logging.md +155 -0
  83. package/docs/examples/interceptors/main.md +162 -0
  84. package/docs/examples/json-benchmark/data.md +71 -0
  85. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +103 -0
  86. package/docs/examples/json-benchmark/index.md +35 -0
  87. package/docs/examples/json-benchmark/main.md +131 -0
  88. package/docs/examples/new-syntax/console.md +118 -0
  89. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +395 -0
  90. package/docs/examples/new-syntax/greeter.md +145 -0
  91. package/docs/examples/new-syntax/index.md +36 -0
  92. package/docs/examples/new-syntax/logger.md +111 -0
  93. package/docs/examples/new-syntax/main.md +135 -0
  94. package/docs/examples/new-syntax/math.md +79 -0
  95. package/docs/examples/oidc-login/client/contracts.md +151 -0
  96. package/docs/examples/oidc-login/client/endpoints.md +263 -0
  97. package/docs/examples/oidc-login/client/export.md +107 -0
  98. package/docs/examples/oidc-login/client/login.md +515 -0
  99. package/docs/examples/oidc-login/client/logout.md +249 -0
  100. package/docs/examples/oidc-login/client/protocol.md +595 -0
  101. package/docs/examples/oidc-login/client/session.md +297 -0
  102. package/docs/examples/oidc-login/client/views.md +144 -0
  103. package/docs/examples/oidc-login/common/export.md +115 -0
  104. package/docs/examples/oidc-login/common/headers.md +162 -0
  105. package/docs/examples/oidc-login/common/keys.md +336 -0
  106. package/docs/examples/oidc-login/common/settings.md +116 -0
  107. package/docs/examples/oidc-login/common/views.md +103 -0
  108. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +925 -0
  109. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +434 -0
  110. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +103 -0
  111. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +374 -0
  112. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +150 -0
  113. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +532 -0
  114. package/docs/examples/oidc-login/index.md +57 -0
  115. package/docs/examples/oidc-login/main-yaml.md +28 -0
  116. package/docs/examples/oidc-login/main.md +283 -0
  117. package/docs/examples/oidc-login/provider/authorization.md +457 -0
  118. package/docs/examples/oidc-login/provider/contracts.md +267 -0
  119. package/docs/examples/oidc-login/provider/credentials.md +148 -0
  120. package/docs/examples/oidc-login/provider/discovery.md +215 -0
  121. package/docs/examples/oidc-login/provider/export.md +131 -0
  122. package/docs/examples/oidc-login/provider/token.md +364 -0
  123. package/docs/examples/oidc-login/provider/userinfo.md +228 -0
  124. package/docs/examples/oidc-login/provider/views.md +137 -0
  125. package/docs/examples/ownership/counter.md +140 -0
  126. package/docs/examples/ownership/index.md +33 -0
  127. package/docs/examples/ownership/main.md +90 -0
  128. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +395 -0
  129. package/docs/examples/ownership-transfer/index.md +33 -0
  130. package/docs/examples/ownership-transfer/main.md +125 -0
  131. package/docs/examples/ownership-transfer/resource.md +150 -0
  132. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +117 -0
  133. package/docs/examples/packages-app/index.md +34 -0
  134. package/docs/examples/packages-app/main-yaml.md +18 -0
  135. package/docs/examples/packages-app/main.md +80 -0
  136. package/docs/examples/packages-math/aug-package-json.md +24 -0
  137. package/docs/examples/packages-math/index.md +36 -0
  138. package/docs/examples/packages-math/package-json.md +25 -0
  139. package/docs/examples/packages-math/src/arithmetic.md +121 -0
  140. package/docs/examples/packages-math/src/export.md +63 -0
  141. package/docs/examples/startup-benchmark/index.md +34 -0
  142. package/docs/examples/startup-benchmark/main.md +68 -0
  143. package/docs/examples/visibility/counter.md +142 -0
  144. package/docs/examples/visibility/index.md +33 -0
  145. package/docs/examples/visibility/main.md +96 -0
  146. package/docs/examples.json +47 -0
  147. package/docs/getting-started.md +5 -0
  148. package/docs/grammar.md +136 -0
  149. package/docs/implementation-map.md +106 -0
  150. package/docs/index.md +46 -0
  151. package/docs/language-conformance.md +30 -0
  152. package/docs/language-constructs.md +1461 -0
  153. package/docs/language-design-audit.md +147 -0
  154. package/docs/maintaining-docs.md +43 -0
  155. package/docs/packages.md +184 -0
  156. package/docs/performance.md +535 -0
  157. package/docs/production-readiness.md +39 -0
  158. package/docs/reference.md +361 -0
  159. package/docs/release-review.md +23 -0
  160. package/docs/releasing.md +79 -0
  161. package/docs/roadmap.md +13 -0
  162. package/docs/specifications.md +86 -0
  163. package/docs/testing.md +120 -0
  164. package/docs/tooling.md +197 -0
  165. package/docs/web-implementation-plan.md +39 -0
  166. package/docs/web-library-gaps.md +27 -0
  167. package/docs/web.md +197 -0
  168. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  169. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  170. package/examples/approved-design/.aug-spec/manifest.json +14 -0
  171. package/examples/approved-design/counters.aug +22 -0
  172. package/examples/approved-design/counters.aug.md +177 -0
  173. package/examples/approved-design/domain/app.aug +12 -0
  174. package/examples/approved-design/domain/app.aug.md +97 -0
  175. package/examples/approved-design/domain/export.aug +5 -0
  176. package/examples/approved-design/domain/export.aug.md +25 -0
  177. package/examples/approved-design/domain/models.aug +2 -0
  178. package/examples/approved-design/domain/models.aug.md +30 -0
  179. package/examples/approved-design/domain/numbers.aug +29 -0
  180. package/examples/approved-design/domain/numbers.aug.md +141 -0
  181. package/examples/approved-design/main.aug +26 -0
  182. package/examples/approved-design/main.aug.md +108 -0
  183. package/examples/approved-design/main.yaml +8 -0
  184. package/examples/benchmark/.aug-spec/manifest.json +7 -0
  185. package/examples/benchmark/main.aug +17 -0
  186. package/examples/benchmark/main.aug.md +43 -0
  187. package/examples/benchmark/main.yaml +1 -0
  188. package/examples/cli-args/.aug-spec/manifest.json +7 -0
  189. package/examples/cli-args/main.aug +15 -0
  190. package/examples/cli-args/main.aug.md +38 -0
  191. package/examples/collections/.aug-spec/manifest.json +7 -0
  192. package/examples/collections/main.aug +18 -0
  193. package/examples/collections/main.aug.md +43 -0
  194. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  195. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  196. package/examples/developer-workflow/.aug-spec/manifest.json +13 -0
  197. package/examples/developer-workflow/calculator.aug +55 -0
  198. package/examples/developer-workflow/calculator.aug.md +228 -0
  199. package/examples/developer-workflow/logging/console.aug +8 -0
  200. package/examples/developer-workflow/logging/console.aug.md +67 -0
  201. package/examples/developer-workflow/logging/export.aug +2 -0
  202. package/examples/developer-workflow/logging/export.aug.md +19 -0
  203. package/examples/developer-workflow/logging/logger.aug +6 -0
  204. package/examples/developer-workflow/logging/logger.aug.md +57 -0
  205. package/examples/developer-workflow/main.aug +25 -0
  206. package/examples/developer-workflow/main.aug.md +79 -0
  207. package/examples/drop/.aug-spec/manifest.json +8 -0
  208. package/examples/drop/main.aug +3 -0
  209. package/examples/drop/main.aug.md +35 -0
  210. package/examples/drop/resource.aug +8 -0
  211. package/examples/drop/resource.aug.md +44 -0
  212. package/examples/errors/.aug-spec/manifest.json +8 -0
  213. package/examples/errors/errors.aug +6 -0
  214. package/examples/errors/errors.aug.md +33 -0
  215. package/examples/errors/main.aug +7 -0
  216. package/examples/errors/main.aug.md +36 -0
  217. package/examples/ffi/.aug-spec/manifest.json +8 -0
  218. package/examples/ffi/main.aug +2 -0
  219. package/examples/ffi/main.aug.md +27 -0
  220. package/examples/ffi/native.aug +6 -0
  221. package/examples/ffi/native.aug.md +43 -0
  222. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  223. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  224. package/examples/generic-di/.aug-spec/manifest.json +10 -0
  225. package/examples/generic-di/main.aug +9 -0
  226. package/examples/generic-di/main.aug.md +49 -0
  227. package/examples/generic-di/types.aug +17 -0
  228. package/examples/generic-di/types.aug.md +124 -0
  229. package/examples/generics/.aug-spec/manifest.json +8 -0
  230. package/examples/generics/main.aug +9 -0
  231. package/examples/generics/main.aug.md +58 -0
  232. package/examples/generics/types.aug +19 -0
  233. package/examples/generics/types.aug.md +132 -0
  234. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  235. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  236. package/examples/hello/.aug-spec/manifest.json +14 -0
  237. package/examples/hello/app/export.aug +1 -0
  238. package/examples/hello/app/export.aug.md +17 -0
  239. package/examples/hello/app/greeter.aug +22 -0
  240. package/examples/hello/app/greeter.aug.md +109 -0
  241. package/examples/hello/logging/console.aug +7 -0
  242. package/examples/hello/logging/console.aug.md +65 -0
  243. package/examples/hello/logging/export.aug +2 -0
  244. package/examples/hello/logging/export.aug.md +19 -0
  245. package/examples/hello/logging/logger.aug +9 -0
  246. package/examples/hello/logging/logger.aug.md +59 -0
  247. package/examples/hello/main.aug +9 -0
  248. package/examples/hello/main.aug.md +49 -0
  249. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  250. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  251. package/examples/interceptors/.aug-spec/manifest.json +12 -0
  252. package/examples/interceptors/app.aug +28 -0
  253. package/examples/interceptors/app.aug.md +162 -0
  254. package/examples/interceptors/interceptors.aug +40 -0
  255. package/examples/interceptors/interceptors.aug.md +180 -0
  256. package/examples/interceptors/logging.aug +12 -0
  257. package/examples/interceptors/logging.aug.md +96 -0
  258. package/examples/interceptors/main.aug +22 -0
  259. package/examples/interceptors/main.aug.md +76 -0
  260. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  261. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  262. package/examples/new-syntax/.aug-spec/manifest.json +13 -0
  263. package/examples/new-syntax/console.aug +7 -0
  264. package/examples/new-syntax/console.aug.md +63 -0
  265. package/examples/new-syntax/greeter.aug +10 -0
  266. package/examples/new-syntax/greeter.aug.md +89 -0
  267. package/examples/new-syntax/logger.aug +6 -0
  268. package/examples/new-syntax/logger.aug.md +57 -0
  269. package/examples/new-syntax/main.aug +12 -0
  270. package/examples/new-syntax/main.aug.md +64 -0
  271. package/examples/new-syntax/math.aug +3 -0
  272. package/examples/new-syntax/math.aug.md +29 -0
  273. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug +73 -0
  274. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +791 -0
  275. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug +68 -0
  276. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +266 -0
  277. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug +6 -0
  278. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +55 -0
  279. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug +45 -0
  280. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +250 -0
  281. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug +11 -0
  282. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +96 -0
  283. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug +58 -0
  284. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +420 -0
  285. package/examples/oidc-login/.aug-spec/manifest.json +40 -0
  286. package/examples/oidc-login/README.md +29 -0
  287. package/examples/oidc-login/client/contracts.aug +7 -0
  288. package/examples/oidc-login/client/contracts.aug.md +80 -0
  289. package/examples/oidc-login/client/endpoints.aug +21 -0
  290. package/examples/oidc-login/client/endpoints.aug.md +161 -0
  291. package/examples/oidc-login/client/export.aug +7 -0
  292. package/examples/oidc-login/client/export.aug.md +29 -0
  293. package/examples/oidc-login/client/login.aug +58 -0
  294. package/examples/oidc-login/client/login.aug.md +331 -0
  295. package/examples/oidc-login/client/logout.aug +18 -0
  296. package/examples/oidc-login/client/logout.aug.md +150 -0
  297. package/examples/oidc-login/client/protocol.aug +106 -0
  298. package/examples/oidc-login/client/protocol.aug.md +326 -0
  299. package/examples/oidc-login/client/session.aug +34 -0
  300. package/examples/oidc-login/client/session.aug.md +155 -0
  301. package/examples/oidc-login/client/views.aug +21 -0
  302. package/examples/oidc-login/client/views.aug.md +68 -0
  303. package/examples/oidc-login/common/export.aug +9 -0
  304. package/examples/oidc-login/common/export.aug.md +33 -0
  305. package/examples/oidc-login/common/headers.aug +11 -0
  306. package/examples/oidc-login/common/headers.aug.md +79 -0
  307. package/examples/oidc-login/common/keys.aug +37 -0
  308. package/examples/oidc-login/common/keys.aug.md +207 -0
  309. package/examples/oidc-login/common/settings.aug +4 -0
  310. package/examples/oidc-login/common/settings.aug.md +47 -0
  311. package/examples/oidc-login/common/views.aug +16 -0
  312. package/examples/oidc-login/common/views.aug.md +34 -0
  313. package/examples/oidc-login/main.aug +39 -0
  314. package/examples/oidc-login/main.aug.md +166 -0
  315. package/examples/oidc-login/main.yaml +12 -0
  316. package/examples/oidc-login/provider/authorization.aug +59 -0
  317. package/examples/oidc-login/provider/authorization.aug.md +264 -0
  318. package/examples/oidc-login/provider/contracts.aug +15 -0
  319. package/examples/oidc-login/provider/contracts.aug.md +193 -0
  320. package/examples/oidc-login/provider/credentials.aug +10 -0
  321. package/examples/oidc-login/provider/credentials.aug.md +64 -0
  322. package/examples/oidc-login/provider/discovery.aug +13 -0
  323. package/examples/oidc-login/provider/discovery.aug.md +133 -0
  324. package/examples/oidc-login/provider/export.aug +13 -0
  325. package/examples/oidc-login/provider/export.aug.md +41 -0
  326. package/examples/oidc-login/provider/token.aug +37 -0
  327. package/examples/oidc-login/provider/token.aug.md +223 -0
  328. package/examples/oidc-login/provider/userinfo.aug +26 -0
  329. package/examples/oidc-login/provider/userinfo.aug.md +104 -0
  330. package/examples/oidc-login/provider/views.aug +18 -0
  331. package/examples/oidc-login/provider/views.aug.md +63 -0
  332. package/examples/ownership/.aug-spec/manifest.json +8 -0
  333. package/examples/ownership/counter.aug +14 -0
  334. package/examples/ownership/counter.aug.md +85 -0
  335. package/examples/ownership/main.aug +4 -0
  336. package/examples/ownership/main.aug.md +38 -0
  337. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  338. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  339. package/examples/ownership-transfer/.aug-spec/manifest.json +10 -0
  340. package/examples/ownership-transfer/main.aug +9 -0
  341. package/examples/ownership-transfer/main.aug.md +63 -0
  342. package/examples/ownership-transfer/resource.aug +16 -0
  343. package/examples/ownership-transfer/resource.aug.md +89 -0
  344. package/examples/packages/README.md +15 -0
  345. package/examples/packages/app/.aug-spec/manifest.json +9 -0
  346. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +9 -0
  347. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +63 -0
  348. package/examples/packages/app/main.aug +2 -0
  349. package/examples/packages/app/main.aug.md +33 -0
  350. package/examples/packages/app/main.yaml +2 -0
  351. package/examples/packages/math/.aug-spec/manifest.json +8 -0
  352. package/examples/packages/math/README.md +3 -0
  353. package/examples/packages/math/aug-package.json +8 -0
  354. package/examples/packages/math/package.json +9 -0
  355. package/examples/packages/math/src/arithmetic.aug +8 -0
  356. package/examples/packages/math/src/arithmetic.aug.md +63 -0
  357. package/examples/packages/math/src/export.aug +1 -0
  358. package/examples/packages/math/src/export.aug.md +17 -0
  359. package/examples/visibility/.aug-spec/manifest.json +8 -0
  360. package/examples/visibility/counter.aug +14 -0
  361. package/examples/visibility/counter.aug.md +87 -0
  362. package/examples/visibility/main.aug +7 -0
  363. package/examples/visibility/main.aug.md +39 -0
  364. package/package.json +50 -0
  365. package/runtime/aug_crypto.c +121 -0
  366. package/runtime/aug_html.c +93 -0
  367. package/runtime/aug_http.c +829 -0
  368. package/runtime/aug_json.c +165 -0
  369. package/runtime/aug_runtime.c +792 -0
  370. package/runtime/aug_runtime.h +245 -0
  371. package/runtime/aug_tasks.c +172 -0
  372. package/runtime/aug_time.c +5 -0
  373. package/runtime/aug_values.c +80 -0
  374. package/scripts/bootstrap-native.mjs +121 -0
  375. package/scripts/native-dependencies.lock.json +65 -0
  376. package/scripts/native-home.mjs +11 -0
  377. package/src/actions.js +109 -0
  378. package/src/ast.js +19 -0
  379. package/src/builtins.js +93 -0
  380. package/src/checker.js +2896 -0
  381. package/src/cli.js +344 -0
  382. package/src/codegen.js +1159 -0
  383. package/src/config.js +149 -0
  384. package/src/continuation.js +110 -0
  385. package/src/di.js +24 -0
  386. package/src/documentation.js +27 -0
  387. package/src/editor.js +782 -0
  388. package/src/effects.js +29 -0
  389. package/src/fixes.js +222 -0
  390. package/src/formatter.js +296 -0
  391. package/src/freshness.js +154 -0
  392. package/src/help.js +212 -0
  393. package/src/html.js +27 -0
  394. package/src/http-policies.js +90 -0
  395. package/src/inference.js +16 -0
  396. package/src/interceptors.js +70 -0
  397. package/src/javadoc.js +67 -0
  398. package/src/lexer.js +199 -0
  399. package/src/libraries.js +31 -0
  400. package/src/lsp.js +180 -0
  401. package/src/native.js +144 -0
  402. package/src/navigation.js +162 -0
  403. package/src/openapi.js +220 -0
  404. package/src/ownership.js +232 -0
  405. package/src/package-manager.js +299 -0
  406. package/src/parser.js +1155 -0
  407. package/src/policies.js +130 -0
  408. package/src/project-init.js +19 -0
  409. package/src/project.js +292 -0
  410. package/src/schemas.js +62 -0
  411. package/src/semantic.js +255 -0
  412. package/src/spec.js +738 -0
  413. package/src/testing.js +186 -0
  414. package/src/types.js +10 -0
@@ -0,0 +1,248 @@
1
+ ---
2
+ title: "domain/numbers.aug · Modules and composition"
3
+ generated: true
4
+ source: "examples/approved-design/domain/numbers.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `domain/numbers.aug`
13
+
14
+ [Modules and composition](../index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](../main.md)
19
+ - [`counters.aug`](../counters.md)
20
+ - [`domain/app.aug`](app.md)
21
+ - [`domain/export.aug`](export.md)
22
+ - [`domain/models.aug`](models.md)
23
+ - [`domain/numbers.aug`](numbers.md)
24
+
25
+ :::
26
+
27
+ ::::: example-compare
28
+
29
+ :::: example-code
30
+
31
+ ## Code {#code}
32
+
33
+ ::: code-group
34
+
35
+ ```aug [Indentation]
36
+ /** Raised when an input is outside the operation's domain. */
37
+ RangeError(int value) implements Error:
38
+ pass
39
+ /** A pure validation layer, shared by any compatible callable. */
40
+ interceptor Positive<T>():
41
+ around(int amount) returns T unless RangeError:
42
+ if amount < 0:
43
+ throw RangeError(value=amount)
44
+ return next()
45
+ /**
46
+ * Double a nonnegative amount.
47
+ * @param amount Integer to double.
48
+ * @return Twice the amount, with defined integer wrapping.
49
+ * @throws RangeError A validation layer rejected a negative input.
50
+ */
51
+ [Positive]
52
+ double(int amount) returns int:
53
+ return amount * 2
54
+ test double:
55
+ when "positive":
56
+ it "doubles" for (input, expected) in [(0, 0), (3, 6), (7, 14)]:
57
+ assert(double(amount=input) == expected)
58
+ it "rejects_negative":
59
+ bool rejected to false
60
+ try:
61
+ double(amount=-1)
62
+ catch RangeError error:
63
+ rejected to error.value == -1
64
+ assert(rejected)
65
+ ```
66
+
67
+ ```aug [Braces]
68
+ /** Raised when an input is outside the operation's domain. */
69
+ RangeError(int value) implements Error {
70
+ pass
71
+ }
72
+ /** A pure validation layer, shared by any compatible callable. */
73
+ interceptor Positive<T>() {
74
+ around(int amount) returns T unless RangeError {
75
+ if amount < 0 {
76
+ throw RangeError(value=amount)
77
+ }
78
+ return next()
79
+ }
80
+ }
81
+ /**
82
+ * Double a nonnegative amount.
83
+ * @param amount Integer to double.
84
+ * @return Twice the amount, with defined integer wrapping.
85
+ * @throws RangeError A validation layer rejected a negative input.
86
+ */
87
+ [Positive]
88
+ double(int amount) returns int {
89
+ return amount * 2
90
+ }
91
+ test double {
92
+ when "positive" {
93
+ it "doubles" for (input, expected) in [(0, 0), (3, 6), (7, 14)] {
94
+ assert(double(amount=input) == expected)
95
+ }
96
+ it "rejects_negative" {
97
+ bool rejected to false
98
+ try {
99
+ double(amount=-1)
100
+ }
101
+ catch RangeError error {
102
+ rejected to error.value == -1
103
+ }
104
+ assert(rejected)
105
+ }
106
+ }
107
+ }
108
+ ```
109
+
110
+ :::
111
+
112
+ ::::
113
+
114
+ :::: example-spec
115
+
116
+ ## Compiled specification {#specification}
117
+
118
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
119
+
120
+ ### In this file
121
+
122
+ - [`RangeError`](numbers.md#symbol-RangeError) is a class implementing `Error`.
123
+ - [`Positive`](numbers.md#symbol-Positive) is an interceptor.
124
+ - [`double`](numbers.md#symbol-double) is a function returning `int`.
125
+ - [`test double`](numbers.md#symbol-test-20-double) is a same-file test suite.
126
+
127
+ ### `RangeError` {#symbol-RangeError}
128
+
129
+ [source](numbers.md#code)
130
+
131
+ Behavioral class.
132
+
133
+ Satisfies `Error`.
134
+
135
+ **Author documentation**
136
+
137
+ Raised when an input is outside the operation's domain.
138
+
139
+ **Inputs**
140
+
141
+ - `value` (`int`) — required labeled input — stored as `value` and read-only after initialization.
142
+
143
+ ### `Positive` {#symbol-Positive}
144
+
145
+ [source](numbers.md#code)
146
+
147
+ Function or constructor middleware.
148
+
149
+ Type parameters: `T`.
150
+
151
+ **Author documentation**
152
+
153
+ A pure validation layer, shared by any compatible callable.
154
+
155
+ Create a fresh interceptor for each invocation. Its around operation can delegate once, change selected inputs, or short-circuit with a compatible result or failure.
156
+
157
+ #### `Positive.around` {#symbol-Positive.around}
158
+
159
+ [source](numbers.md#code)
160
+
161
+ **Inputs**
162
+
163
+ - `amount` (`int`) — required labeled input.
164
+
165
+ Returns: `T`.
166
+
167
+ Can fail with `RangeError`. Callers must catch or propagate these errors.
168
+
169
+ **What it does**
170
+
171
+ - If `amount` is less than `0`:
172
+ - Fail with call [`RangeError`](numbers.md#symbol-RangeError) with `value` = `amount`. Transfer control to a matching catch or propagate the failure.
173
+ - Return call `next`.
174
+
175
+ ### `double` {#symbol-double}
176
+
177
+ [source](numbers.md#code)
178
+
179
+ **Inputs**
180
+
181
+ - `amount` (`int`) — required labeled input.
182
+
183
+ Returns: `int`.
184
+
185
+ Can fail with `RangeError`. Callers must catch or propagate these errors.
186
+
187
+ **Interceptors, in execution order**
188
+
189
+ 1. Call [`Positive.around`](numbers.md#symbol-Positive.around). It can call the next layer or finish with its own result or failure. Unselected inputs pass through.
190
+
191
+ The first layer wraps the remaining layers. HTTP policies run before wire decoding; custom interceptors run after decoding. Follow linked behavior to see its conditions, input changes, and calls to the next layer.
192
+
193
+ **What it does**
194
+
195
+ - Return `amount` times `2`.
196
+
197
+ **Author documentation**
198
+
199
+ Double a nonnegative amount.
200
+
201
+ **Returns** Twice the amount, with defined integer wrapping.
202
+
203
+ **Parameters**
204
+ - `amount`: Integer to double.
205
+
206
+ **Throws**
207
+ - `RangeError`: A validation layer rejected a negative input.
208
+
209
+ ### `test double` {#symbol-test-20-double}
210
+
211
+ [source](numbers.md#code)
212
+
213
+ Same-file function tests for [`double`](numbers.md#symbol-double). Each case gets isolated setup and dependency bindings.
214
+
215
+ #### Group `positive`
216
+
217
+ ##### `doubles`
218
+
219
+ [source](numbers.md#code)
220
+
221
+ Run once for each row of a tuple containing `0`, `0`; a tuple containing `3`, `6`; a tuple containing `7`, `14`. Bind row positions to `input`, `expected`.
222
+
223
+ - Call `assert` with (call [`double`](numbers.md#symbol-double) with `amount` = `input` equals `expected`).
224
+
225
+ ##### `rejects_negative`
226
+
227
+ [source](numbers.md#code)
228
+
229
+ - Set `rejected` of type `bool` to `false`.
230
+ - Try these operations:
231
+ - Call [`double`](numbers.md#symbol-double) with `amount` = `-1`.
232
+ - If they fail with [`RangeError`](numbers.md#symbol-RangeError), name the failure `error` and recover:
233
+ - Set `rejected` to `value` of `error` equals `-1`.
234
+ - Call `assert` with `rejected` = `rejected`.
235
+
236
+ ### Built-in operations used by this file
237
+
238
+ - `assert` (`condition`: `bool`) → `void`: Assert a bool in a test case or its setup. Catching an assertion failure cannot make the case pass; every case must execute an assertion.
239
+
240
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
241
+
242
+ ### Shared language rules
243
+
244
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
245
+
246
+ ::::
247
+
248
+ :::::
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: "Modules and composition"
3
+ generated: true
4
+ source: "examples/approved-design"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # Modules and composition
12
+
13
+ Combine domain modules, generic values, explicit capabilities, and scoped providers.
14
+
15
+ Read a file below to see its highlighted source and the Markdown produced by `aug spec`. Choose **Indentation** or **Braces** above the code. Both views describe the same checked program; your choice is kept when you open another file.
16
+
17
+ ## Project files
18
+
19
+ - [`main.aug`](main.md)
20
+ - [`counters.aug`](counters.md)
21
+ - [`domain/app.aug`](domain/app.md)
22
+ - [`domain/export.aug`](domain/export.md)
23
+ - [`domain/models.aug`](domain/models.md)
24
+ - [`domain/numbers.aug`](domain/numbers.md)
25
+
26
+ - [`main.yaml`](main-yaml.md)
27
+
28
+ ## Try this project
29
+
30
+ From a repository checkout with August installed:
31
+
32
+ ```sh
33
+ aug check examples/approved-design
34
+ aug spec examples/approved-design
35
+ aug test examples/approved-design
36
+ aug run examples/approved-design
37
+ ```
38
+
39
+ [Browse all examples](../index.md)
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: "main.yaml · Modules and composition"
3
+ generated: true
4
+ source: "examples/approved-design/main.yaml"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # `main.yaml`
12
+
13
+ [Modules and composition](index.md) · Project configuration
14
+
15
+ ```yaml
16
+ block_style: indent
17
+ indentation: tabs
18
+ assignment: to
19
+ lint:
20
+ - architecture
21
+ module_dependencies:
22
+ - ".: domain"
23
+ - "domain:"
24
+ ```
@@ -0,0 +1,215 @@
1
+ ---
2
+ title: "main.aug · Modules and composition"
3
+ generated: true
4
+ source: "examples/approved-design/main.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `main.aug`
13
+
14
+ [Modules and composition](index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](main.md)
19
+ - [`counters.aug`](counters.md)
20
+ - [`domain/app.aug`](domain/app.md)
21
+ - [`domain/export.aug`](domain/export.md)
22
+ - [`domain/models.aug`](domain/models.md)
23
+ - [`domain/numbers.aug`](domain/numbers.md)
24
+
25
+ :::
26
+
27
+ ::::: example-compare
28
+
29
+ :::: example-code
30
+
31
+ ## Code {#code}
32
+
33
+ ::: code-group
34
+
35
+ ```aug [Indentation]
36
+ import Console and SystemConsole from august.io
37
+ import Application and ApplicationImpl and Fruit and double and RangeError from domain
38
+ import Counter and Counters from counters
39
+ implement Console with SystemConsole
40
+ implement Application with ApplicationImpl
41
+ include Counters
42
+ resolve Application to app
43
+ app.start()
44
+ names to {1: "apple", 2: "pear"}
45
+ match names.get(key=2):
46
+ when null:
47
+ print(value="missing fruit")
48
+ when some name:
49
+ print(value=name)
50
+ (code, label) to (3, "plum")
51
+ print(value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length())
52
+ scope:
53
+ resolve Counter to counter
54
+ borrow counter:
55
+ counter.increment()
56
+ print(value=counter.value())
57
+ try:
58
+ print(value=double(amount=7))
59
+ double(amount=-1)
60
+ catch RangeError error:
61
+ print(value="negative amount rejected")
62
+ ```
63
+
64
+ ```aug [Braces]
65
+ import Console and SystemConsole from august.io
66
+ import Application and ApplicationImpl and Fruit and double and RangeError from domain
67
+ import Counter and Counters from counters
68
+ implement Console with SystemConsole
69
+ implement Application with ApplicationImpl
70
+ include Counters
71
+ resolve Application to app
72
+ app.start()
73
+ names to {1: "apple", 2: "pear"}
74
+ match names.get(key=2) {
75
+ when null {
76
+ print(value="missing fruit")
77
+ }
78
+ when some name {
79
+ print(value=name)
80
+ }
81
+ }
82
+ (code, label) to (3, "plum")
83
+ print(value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length())
84
+ scope {
85
+ resolve Counter to counter
86
+ borrow counter {
87
+ counter.increment()
88
+ }
89
+ print(value=counter.value())
90
+ }
91
+ try {
92
+ print(value=double(amount=7))
93
+ double(amount=-1)
94
+ }
95
+ catch RangeError error {
96
+ print(value="negative amount rejected")
97
+ }
98
+ ```
99
+
100
+ :::
101
+
102
+ ::::
103
+
104
+ :::: example-spec
105
+
106
+ ## Compiled specification {#specification}
107
+
108
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
109
+
110
+ ### In this file
111
+
112
+ - Include providers from `Counters`.
113
+ - Register 2 dependency providers before startup.
114
+ - Run startup operations with checked error recovery.
115
+ - Run 7 other startup steps in source order.
116
+
117
+ ### Dependency providers
118
+
119
+ Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
120
+
121
+ - Provide [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole) when `Console` is requested. Reuse one instance.
122
+ - Provide [`ApplicationImpl`](domain/app.md#symbol-ApplicationImpl) when `Application` is requested. Reuse one instance. Required dependencies: `Console`.
123
+ - Include the providers from [`Counters`](counters.md#symbol-Counters) before execution.
124
+
125
+ ### Startup, in source order
126
+
127
+ - Set `app` to the instance provided for `Application`.
128
+ - Call [`Application.start`](domain/app.md#symbol-Application.start) on `app`.
129
+ - Set `names` to a map with `1` mapped to `"apple"`; `2` mapped to `"pear"`.
130
+ - Select the matching case for call `get` on `names` with `key` = `2`:
131
+ - A null value, including omitted optional input:
132
+ - Call `print` with `value` = `"missing fruit"`.
133
+ - A present, non-null value, named `name`:
134
+ - Call `print` with `value` = `name`.
135
+ - Split a tuple containing `3`, `"plum"` into `code`, `label`, in that order.
136
+ - Call `print` with `value` = call `length` on a set containing call [`Fruit`](domain/models.md#symbol-Fruit) with `code` = `code`; `name` = `label`, call [`Fruit`](domain/models.md#symbol-Fruit) with `name` = `label`; `code` = `code`.
137
+ - Create a dependency and task scope. Join its child tasks and release scoped values before leaving:
138
+ - Set `counter` to the instance provided for `Counter`.
139
+ - Grant exclusive mutable access to `counter` for this block, then end the borrow:
140
+ - Call [`Counter.increment`](counters.md#symbol-Counter.increment) on `counter`.
141
+ - Call `print` with `value` = call [`Counter.value`](counters.md#symbol-Counter.value) on `counter`.
142
+ - Try these operations:
143
+ - Call `print` with `value` = call [`double`](domain/numbers.md#symbol-double) with `amount` = `7`.
144
+ - Call [`double`](domain/numbers.md#symbol-double) with `amount` = `-1`.
145
+ - If they fail with [`RangeError`](domain/numbers.md#symbol-RangeError), name the failure `error` and recover:
146
+ - Call `print` with `value` = `"negative amount rejected"`.
147
+
148
+ ### Dependencies used by this file
149
+
150
+ Only referenced types and operations appear here. Each name links to its complete specification.
151
+
152
+ #### [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole)
153
+
154
+ Class from `august.io`.
155
+
156
+ Used as a type or provider.
157
+
158
+ #### [`Counter`](counters.md#symbol-Counter)
159
+
160
+ Interface from `counters`.
161
+
162
+ - [`Counter.increment`](counters.md#symbol-Counter.increment) (no caller inputs) → `void`; changes `self`.
163
+ - [`Counter.value`](counters.md#symbol-Counter.value) (no caller inputs) → `int`.
164
+
165
+ #### [`Counters`](counters.md#symbol-Counters)
166
+
167
+ Composition from `counters`.
168
+
169
+ Used as a type or provider.
170
+
171
+ #### [`Application`](domain/app.md#symbol-Application)
172
+
173
+ Interface from `domain`.
174
+
175
+ - [`Application.start`](domain/app.md#symbol-Application.start) (no caller inputs) → `void`; uses [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
176
+
177
+ #### [`ApplicationImpl`](domain/app.md#symbol-ApplicationImpl)
178
+
179
+ Class from `domain`.
180
+
181
+ Used as a type or provider.
182
+
183
+ #### [`Fruit`](domain/models.md#symbol-Fruit)
184
+
185
+ Record from `domain`.
186
+
187
+ - Construct with `code`: `int`, `name`: `string` → [`Fruit`](domain/models.md#symbol-Fruit).
188
+
189
+ #### [`RangeError`](domain/numbers.md#symbol-RangeError)
190
+
191
+ Class from `domain`.
192
+
193
+ Used as a type or provider.
194
+
195
+ #### [`double`](domain/numbers.md#symbol-double)
196
+
197
+ Function from `domain`.
198
+
199
+ - [`double`](domain/numbers.md#symbol-double) (`amount`: `int`) → `int`; can fail with `RangeError`.
200
+
201
+ ### Built-in operations used by this file
202
+
203
+ - `Map<int, string>.get` (`key`: `int`) → `optional string`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
204
+ - `Set<Fruit>.length` (no inputs) → `int`: Read the number of elements.
205
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
206
+
207
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
208
+
209
+ ### Shared language rules
210
+
211
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
212
+
213
+ ::::
214
+
215
+ :::::
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "A finite benchmark"
3
+ generated: true
4
+ source: "examples/benchmark"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # A finite benchmark
12
+
13
+ Measure a deterministic arithmetic workload with aug bench.
14
+
15
+ Read a file below to see its highlighted source and the Markdown produced by `aug spec`. Choose **Indentation** or **Braces** above the code. Both views describe the same checked program; your choice is kept when you open another file.
16
+
17
+ ## Project files
18
+
19
+ - [`main.aug`](main.md)
20
+
21
+ - [`main.yaml`](main-yaml.md)
22
+
23
+ ## Try this project
24
+
25
+ From a repository checkout with August installed:
26
+
27
+ ```sh
28
+ aug check examples/benchmark
29
+ aug spec examples/benchmark
30
+ aug run examples/benchmark
31
+ ```
32
+
33
+ [Browse all examples](../index.md)
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: "main.yaml · A finite benchmark"
3
+ generated: true
4
+ source: "examples/benchmark/main.yaml"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # `main.yaml`
12
+
13
+ [A finite benchmark](index.md) · Project configuration
14
+
15
+ ```yaml
16
+ optimization: release
17
+ ```
@@ -0,0 +1,117 @@
1
+ ---
2
+ title: "main.aug · A finite benchmark"
3
+ generated: true
4
+ source: "examples/benchmark/main.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `main.aug`
13
+
14
+ [A finite benchmark](index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](main.md)
19
+
20
+ :::
21
+
22
+ ::::: example-compare
23
+
24
+ :::: example-code
25
+
26
+ ## Code {#code}
27
+
28
+ ::: code-group
29
+
30
+ ```aug [Indentation]
31
+ // A deterministic native workload: arithmetic and 20,000 hash entries.
32
+ own Map<int,int> values = {}
33
+ own Set<int> unique = {}
34
+ int index = 0
35
+ while index < 20000:
36
+ values.set(key=index, value=index * 3)
37
+ unique.add(value=index)
38
+ index = index + 1
39
+ int checksum = 0
40
+ for (key, value) in values:
41
+ if unique.contains(value=key):
42
+ checksum = checksum + value
43
+ print(value=checksum)
44
+ print(value=values.length() == unique.length())
45
+ ```
46
+
47
+ ```aug [Braces]
48
+ // A deterministic native workload: arithmetic and 20,000 hash entries.
49
+ own Map<int,int> values = {}
50
+ own Set<int> unique = {}
51
+ int index = 0
52
+ while index < 20000 {
53
+ values.set(key=index, value=index * 3)
54
+ unique.add(value=index)
55
+ index = index + 1
56
+ }
57
+ int checksum = 0
58
+ for (key, value) in values {
59
+ if unique.contains(value=key) {
60
+ checksum = checksum + value
61
+ }
62
+ }
63
+ print(value=checksum)
64
+ print(value=values.length() == unique.length())
65
+ ```
66
+
67
+ :::
68
+
69
+ ::::
70
+
71
+ :::: example-spec
72
+
73
+ ## Compiled specification {#specification}
74
+
75
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
76
+
77
+ ### In this file
78
+
79
+ - Run 8 other startup steps in source order.
80
+
81
+ ### Startup, in source order
82
+
83
+ - Set `values` of type `Map<int,int>` to a context-typed empty collection with no items.
84
+ - This variable owns the value.
85
+ - Set `unique` of type `Set<int>` to a context-typed empty collection with no items.
86
+ - This variable owns the value.
87
+ - Set `index` of type `int` to `0`.
88
+ - While `index` is less than `20000`, repeat:
89
+ - Call `set` on `values` with `key` = `index`; `value` = (`index` times `3`).
90
+ - Call `add` on `unique` with `value` = `index`.
91
+ - Set `index` to `index` plus `1`.
92
+ - Check the condition again before the next iteration.
93
+ - Set `checksum` of type `int` to `0`.
94
+ - For each `key` and `value` in a snapshot of `values`, in iteration order:
95
+ - If call `contains` on `unique` with `value` = `key` is true:
96
+ - Set `checksum` to `checksum` plus `value`.
97
+ - Call `print` with `value` = `checksum`.
98
+ - Call `print` with `value` = (call `length` on `values` equals call `length` on `unique`).
99
+
100
+ ### Built-in operations used by this file
101
+
102
+ - `Map<int, int>.length` (no inputs) → `int`: Read the number of elements.
103
+ - `Map<int, int>.set` (`key`: `int`, `value`: `int`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
104
+ - `Set<int>.add` (`value`: `int`) → `void`: Insert a unique element with exclusive mutable access. Changes the receiver.
105
+ - `Set<int>.contains` (`value`: `int`) → `bool`: Test structural or identity equality with a stored element.
106
+ - `Set<int>.length` (no inputs) → `int`: Read the number of elements.
107
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
108
+
109
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
110
+
111
+ ### Shared language rules
112
+
113
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
114
+
115
+ ::::
116
+
117
+ :::::