semantifold 0.5.0 → 0.7.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 (201) hide show
  1. package/README.md +15 -9
  2. package/build/index.d.ts +8 -8
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +6 -6
  5. package/build/src/backends/android.js +8 -4
  6. package/build/src/backends/dart.d.ts +19 -0
  7. package/build/src/backends/dart.d.ts.map +1 -1
  8. package/build/src/backends/dart.js +28 -16
  9. package/build/src/backends/flutter.d.ts +51 -0
  10. package/build/src/backends/flutter.d.ts.map +1 -0
  11. package/build/src/backends/flutter.js +1362 -0
  12. package/build/src/backends/identifiers.d.ts +6 -0
  13. package/build/src/backends/identifiers.d.ts.map +1 -1
  14. package/build/src/backends/identifiers.js +28 -5
  15. package/build/src/backends/ios.js +2 -2
  16. package/build/src/backends/native-validation.d.ts +2 -2
  17. package/build/src/backends/native-validation.d.ts.map +1 -1
  18. package/build/src/backends/native-validation.js +2 -2
  19. package/build/src/backends/program.d.ts +4 -4
  20. package/build/src/backends/program.d.ts.map +1 -1
  21. package/build/src/backends/program.js +4 -4
  22. package/build/src/backends/scalars.d.ts.map +1 -1
  23. package/build/src/backends/scalars.js +2 -1
  24. package/build/src/backends/shared.d.ts +7 -0
  25. package/build/src/backends/shared.d.ts.map +1 -1
  26. package/build/src/backends/shared.js +14 -9
  27. package/build/src/backends/zig-runtime.d.ts +5 -0
  28. package/build/src/backends/zig-runtime.d.ts.map +1 -0
  29. package/build/src/backends/zig-runtime.js +92 -0
  30. package/build/src/backends/zig-validation.d.ts +9 -0
  31. package/build/src/backends/zig-validation.d.ts.map +1 -0
  32. package/build/src/backends/zig-validation.js +73 -0
  33. package/build/src/backends/zig.d.ts +42 -0
  34. package/build/src/backends/zig.d.ts.map +1 -0
  35. package/build/src/backends/zig.js +584 -0
  36. package/build/src/frontends/scalars.d.ts.map +1 -1
  37. package/build/src/frontends/scalars.js +2 -1
  38. package/build/src/frontends/zig-parser.d.ts +31 -0
  39. package/build/src/frontends/zig-parser.d.ts.map +1 -0
  40. package/build/src/frontends/zig-parser.js +17 -0
  41. package/build/src/frontends/zig.d.ts +14 -0
  42. package/build/src/frontends/zig.d.ts.map +1 -0
  43. package/build/src/frontends/zig.js +970 -0
  44. package/build/src/language-registry.d.ts.map +1 -1
  45. package/build/src/language-registry.js +40 -1
  46. package/build/src/mapping.js +2 -2
  47. package/build/src/semantic/provenance.js +3 -3
  48. package/build/src/semantic/types.d.ts +154 -4
  49. package/build/src/semantic/types.d.ts.map +1 -1
  50. package/build/src/semantic/types.js +39 -3
  51. package/build/src/semantic/validate.js +2 -2
  52. package/build/src/toolchains.d.ts +6 -0
  53. package/build/src/toolchains.d.ts.map +1 -1
  54. package/build/src/toolchains.js +2 -1
  55. package/build/src/zig-bindings.d.ts +10 -0
  56. package/build/src/zig-bindings.d.ts.map +1 -0
  57. package/build/src/zig-bindings.js +54 -0
  58. package/docs/android.md +7 -3
  59. package/docs/architecture.md +13 -5
  60. package/docs/flutter.md +47 -0
  61. package/docs/goals.md +1 -1
  62. package/docs/language-support.md +16 -5
  63. package/docs/parser-qualification.md +31 -1
  64. package/docs/source-maps.md +7 -3
  65. package/docs/testing.md +47 -4
  66. package/docs/zig.md +33 -0
  67. package/index.js +5 -5
  68. package/node_modules/semantifold-tree-sitter-zig-internal/LICENSE +15 -0
  69. package/node_modules/semantifold-tree-sitter-zig-internal/README.md +5 -0
  70. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/LICENSE +21 -0
  71. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/README.md +21 -0
  72. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/binding.gyp +29 -0
  73. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding.cc +20 -0
  74. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding_test.js +9 -0
  75. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.d.ts +28 -0
  76. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.js +11 -0
  77. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/grammar.js +900 -0
  78. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/package.json +57 -0
  79. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  80. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  81. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  82. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  83. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  84. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
  85. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/folds.scm +23 -0
  86. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/highlights.scm +291 -0
  87. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/indents.scm +22 -0
  88. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/injections.scm +10 -0
  89. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/grammar.json +6570 -0
  90. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/node-types.json +3178 -0
  91. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/parser.c +169829 -0
  92. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/alloc.h +54 -0
  93. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/array.h +291 -0
  94. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/parser.h +266 -0
  95. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm +0 -0
  96. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter.json +38 -0
  97. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/LICENSE +21 -0
  98. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/README.md +128 -0
  99. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/binding.gyp +80 -0
  100. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/index.js +916 -0
  101. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/package.json +76 -0
  102. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  103. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  104. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  105. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  106. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  107. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  108. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  109. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  110. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  111. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  112. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.cc +106 -0
  113. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.h +17 -0
  114. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  115. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.h +19 -0
  116. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  117. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  118. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.cc +1088 -0
  119. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.h +30 -0
  120. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.cc +306 -0
  121. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.h +35 -0
  122. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.cc +397 -0
  123. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.h +40 -0
  124. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.cc +316 -0
  125. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.h +45 -0
  126. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  127. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  128. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/tree-sitter.d.ts +1042 -0
  129. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1318 -0
  130. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  131. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  132. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  133. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  134. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  135. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  136. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  137. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  138. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  139. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +223 -0
  140. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +297 -0
  141. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  142. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +435 -0
  143. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  144. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  145. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +920 -0
  146. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2165 -0
  147. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +266 -0
  148. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  149. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +206 -0
  150. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4187 -0
  151. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  152. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  153. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  154. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +130 -0
  155. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1066 -0
  156. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  157. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  158. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  159. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +712 -0
  160. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  161. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  162. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  163. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  164. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  165. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  166. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  167. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  168. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  169. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  170. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  171. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +83 -0
  172. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  173. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  174. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1302 -0
  175. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1859 -0
  176. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  177. package/node_modules/semantifold-tree-sitter-zig-internal/package.json +21 -0
  178. package/node_modules/semantifold-tree-sitter-zig-internal/src/zig.js +134 -0
  179. package/package.json +11 -6
  180. package/src/backends/android.js +7 -3
  181. package/src/backends/dart.js +28 -15
  182. package/src/backends/flutter.js +1465 -0
  183. package/src/backends/identifiers.js +28 -4
  184. package/src/backends/ios.js +1 -1
  185. package/src/backends/native-validation.js +1 -1
  186. package/src/backends/program.js +3 -3
  187. package/src/backends/scalars.js +1 -0
  188. package/src/backends/shared.js +15 -11
  189. package/src/backends/zig-runtime.js +93 -0
  190. package/src/backends/zig-validation.js +68 -0
  191. package/src/backends/zig.js +579 -0
  192. package/src/frontends/scalars.js +1 -0
  193. package/src/frontends/zig-parser.js +20 -0
  194. package/src/frontends/zig.js +994 -0
  195. package/src/language-registry.js +40 -0
  196. package/src/mapping.js +1 -1
  197. package/src/semantic/provenance.js +2 -2
  198. package/src/semantic/types.js +41 -2
  199. package/src/semantic/validate.js +1 -1
  200. package/src/toolchains.js +1 -0
  201. package/src/zig-bindings.js +46 -0
@@ -9,6 +9,7 @@ import {generateGoModule} from "./backends/go.js"
9
9
  import {generateRustProject} from "./backends/rust.js"
10
10
  import {generateSwift} from "./backends/swift.js"
11
11
  import {generateDartPackage} from "./backends/dart.js"
12
+ import {generateZigProject} from "./backends/zig.js"
12
13
  import {generateJavaScript} from "./backends/javascript.js"
13
14
  import {generatePhp} from "./backends/php.js"
14
15
  import {generatePython} from "./backends/python.js"
@@ -17,6 +18,7 @@ import {generateTypeScript} from "./backends/typescript.js"
17
18
  import {generateBrowserWasm} from "./backends/wasm.js"
18
19
  import {generateIosApplication} from "./backends/ios.js"
19
20
  import {generateAndroidApplication} from "./backends/android.js"
21
+ import {generateFlutterApplication} from "./backends/flutter.js"
20
22
  import {parseJava} from "./frontends/java.js"
21
23
  import {parseKotlin} from "./frontends/kotlin.js"
22
24
  import {parseCSharp} from "./frontends/csharp.js"
@@ -24,6 +26,7 @@ import {parseGo} from "./frontends/go.js"
24
26
  import {parseRust} from "./frontends/rust.js"
25
27
  import {parseSwift} from "./frontends/swift.js"
26
28
  import {parseDart} from "./frontends/dart.js"
29
+ import {parseZig} from "./frontends/zig.js"
27
30
  import {parseCpp} from "./frontends/cpp.js"
28
31
  import {generateCpp} from "./backends/cpp.js"
29
32
  import {parseC} from "./frontends/c.js"
@@ -373,6 +376,12 @@ const goFrontend = ({filename, source}) => parseGo({filename, source})
373
376
  */
374
377
  const dartFrontend = ({filename, source}) => parseDart({filename, source})
375
378
 
379
+ /**
380
+ * Zig registry frontend wrapper.
381
+ * @type {Frontend}
382
+ */
383
+ const zigFrontend = ({filename, source}) => parseZig({filename, source})
384
+
376
385
  const records = [
377
386
  language({
378
387
  acceptance: {stages: ["parse", "generate", "execute"], toolchains: ["php82"]},
@@ -490,6 +499,28 @@ const records = [
490
499
  mediaType: "text/x-dart",
491
500
  textBackend: generateDartPackage
492
501
  }),
502
+ language({
503
+ acceptance: {stages: ["parse", "generate", "compile", "validate", "execute"], toolchains: ["zig"]},
504
+ artifactMultiplicity: "multiple",
505
+ defaultFilename: "src/main.zig",
506
+ features: {
507
+ closedRecords: false,
508
+ conditionControlledLoops: false,
509
+ effectfulCapabilitiesAndResources: false,
510
+ generalFunctionsAndCalls: true,
511
+ immutableCollections: false,
512
+ optionalValues: false,
513
+ orderedListIteration: false,
514
+ orderedMapIteration: false,
515
+ referenceClasses: false,
516
+ typedErrors: false,
517
+ typeParametersAndGenerics: false
518
+ },
519
+ frontend: zigFrontend,
520
+ id: "zig",
521
+ mediaType: "text/x-zig",
522
+ textBackend: generateZigProject
523
+ }),
493
524
  {
494
525
  acceptance: {stages: ["generate", "validate", "instantiate", "execute"], toolchains: ["wasm-validate", "node", "chromium"]},
495
526
  applicationBackend: generateBrowserWasm,
@@ -519,6 +550,15 @@ const records = [
519
550
  id: "ios",
520
551
  mapping: {binaryRanges: true, richText: true, sourceMapV3: true},
521
552
  roundTrip: false
553
+ },
554
+ {
555
+ acceptance: {stages: ["generate", "restore", "compile", "validate", "instantiate", "execute"], toolchains: ["flutter", "android"]},
556
+ applicationBackend: generateFlutterApplication,
557
+ artifactMultiplicity: "multiple",
558
+ features: {closedRecords: false, conditionControlledLoops: false, effectfulCapabilitiesAndResources: false, generalFunctionsAndCalls: false, immutableCollections: false, optionalValues: false, orderedListIteration: false, orderedMapIteration: false, referenceClasses: false, typedErrors: false, typeParametersAndGenerics: false},
559
+ id: "flutter",
560
+ mapping: {binaryRanges: true, richText: true, sourceMapV3: true},
561
+ roundTrip: false
522
562
  }
523
563
  ]
524
564
 
package/src/mapping.js CHANGED
@@ -1120,7 +1120,7 @@ function validPoint(value) {
1120
1120
  */
1121
1121
  function isSemanticLanguage(value) {
1122
1122
  return value == "php" || value == "ruby" || value == "javascript" || value == "typescript" || value == "java" ||
1123
- value == "kotlin" || value == "python" || value == "csharp" || value == "go" || value == "c" || value == "cpp" || value == "rust" || value == "swift" || value == "dart"
1123
+ value == "kotlin" || value == "python" || value == "csharp" || value == "go" || value == "c" || value == "cpp" || value == "rust" || value == "swift" || value == "dart" || value == "zig"
1124
1124
  }
1125
1125
 
1126
1126
  /**
@@ -204,7 +204,7 @@ export function createGenerationIndex(module, providedSources = []) {
204
204
  */
205
205
  function addSource(filename, content, language) {
206
206
  if (typeof filename != "string" || content !== null && typeof content != "string" ||
207
- language !== null && !["php", "ruby", "javascript", "typescript", "java", "kotlin", "python", "csharp", "go", "c", "cpp", "rust", "swift", "dart"].includes(language)) {
207
+ language !== null && !["php", "ruby", "javascript", "typescript", "java", "kotlin", "python", "csharp", "go", "c", "cpp", "rust", "swift", "dart", "zig"].includes(language)) {
208
208
  throw new TypeError("Malformed semantic source registry entry.")
209
209
  }
210
210
 
@@ -261,7 +261,7 @@ function usableSourceProvenance(provenance) {
261
261
  if (!source || typeof source.id != "string" || sourceIds.has(source.id) || typeof source.filename != "string" ||
262
262
  source.filename.length == 0 ||
263
263
  source.content !== null && typeof source.content != "string" || source.language !== null &&
264
- !["php", "ruby", "javascript", "typescript", "java", "kotlin", "python", "csharp", "go", "c", "cpp", "rust", "swift", "dart"].includes(source.language)) return undefined
264
+ !["php", "ruby", "javascript", "typescript", "java", "kotlin", "python", "csharp", "go", "c", "cpp", "rust", "swift", "dart", "zig"].includes(source.language)) return undefined
265
265
  sourceIds.add(source.id)
266
266
  }
267
267
 
@@ -1,8 +1,8 @@
1
1
  // @ts-check
2
2
 
3
- /** @typedef {"php" | "ruby" | "javascript" | "typescript" | "java" | "kotlin" | "python" | "csharp" | "go" | "c" | "cpp" | "rust" | "swift" | "dart"} SemanticLanguage */
3
+ /** @typedef {"php" | "ruby" | "javascript" | "typescript" | "java" | "kotlin" | "python" | "csharp" | "go" | "c" | "cpp" | "rust" | "swift" | "dart" | "zig"} SemanticLanguage */
4
4
  /** @typedef {SemanticLanguage} TextBackendLanguage */
5
- /** @typedef {TextBackendLanguage | "wasm" | "ios" | "android"} BackendLanguage */
5
+ /** @typedef {TextBackendLanguage | "wasm" | "ios" | "android" | "flutter"} BackendLanguage */
6
6
  /** @typedef {SemanticLanguage | "html"} GeneratedTextLanguage */
7
7
  /** @typedef {"integer" | "boolean" | "string"} SemanticTypeName */
8
8
  /** @typedef {SemanticTypeName | "void"} FunctionReturnTypeName */
@@ -103,6 +103,45 @@
103
103
  * @property {string} sha256 - Lowercase SHA-256 of exact UTF-8 text or bytes.
104
104
  */
105
105
 
106
+ /**
107
+ * @typedef FlutterApplicationConfigurationInput
108
+ * @property {string} [packageName] - Lowercase Dart package identity.
109
+ * @property {string} [organization] - Lowercase reverse-DNS owning organization.
110
+ * @property {string} [applicationId] - Lowercase reverse-DNS Android application identity extending the organization.
111
+ * @property {string} [activityClassName] - Generated Java launcher Activity class name.
112
+ * @property {string} [displayName] - User-visible application label.
113
+ * @property {23} [minimumSdk] - Qualified minimum Android API.
114
+ * @property {35} [targetSdk] - Qualified target Android API.
115
+ * @property {35} [compileSdk] - Qualified compile Android API.
116
+ * @property {"35.0.0"} [buildToolsVersion] - Qualified Android Build Tools version.
117
+ * @property {number} [versionCode] - Positive Android/Flutter build number.
118
+ * @property {string} [versionName] - Canonical application version name.
119
+ * @property {unknown[]} [permissions] - Validated as the closed empty permission set.
120
+ */
121
+
122
+ /**
123
+ * @typedef FlutterApplicationConfiguration
124
+ * @property {string} packageName - Validated Dart package identity.
125
+ * @property {string} organization - Validated owning organization.
126
+ * @property {string} applicationId - Validated Android application identity.
127
+ * @property {string} activityClassName - Generated Java launcher Activity class name.
128
+ * @property {string} displayName - User-visible application label.
129
+ * @property {23} minimumSdk - Qualified minimum Android API.
130
+ * @property {35} targetSdk - Qualified target Android API.
131
+ * @property {35} compileSdk - Qualified compile Android API.
132
+ * @property {"35.0.0"} buildToolsVersion - Qualified Android Build Tools version.
133
+ * @property {number} versionCode - Positive Android/Flutter build number.
134
+ * @property {string} versionName - Canonical application version name.
135
+ */
136
+
137
+ /**
138
+ * @typedef FlutterApplicationAssetInput
139
+ * @property {string} path - Safe path below the generated Flutter assets root.
140
+ * @property {string | Uint8Array} content - Exact caller-provided text or bytes.
141
+ * @property {string} mediaType - Explicit artifact media type.
142
+ * @property {string} sha256 - Lowercase SHA-256 of exact UTF-8 text or bytes.
143
+ */
144
+
106
145
  /**
107
146
  * @typedef LanguageRoleCapabilities
108
147
  * @property {boolean} frontend - Parser adapter availability.
@@ -8,7 +8,7 @@ import {parserRangeFor} from "./provenance.js"
8
8
  import {validateEffectGraph} from "./effects.js"
9
9
  import {validateResourceLifetimes} from "./lifetime.js"
10
10
 
11
- const task005Languages = new Set(["php", "ruby", "javascript", "typescript", "java", "dart"])
11
+ const task005Languages = new Set(["php", "ruby", "javascript", "typescript", "java", "dart", "zig"])
12
12
 
13
13
  /** @typedef {Map<string, import("./types.js").RecordDeclaration>} RecordRegistry */
14
14
  /** @typedef {Map<string, import("./types.js").ClassDeclaration>} ClassRegistry */
package/src/toolchains.js CHANGED
@@ -30,6 +30,7 @@ export const canonicalToolchains = deepFreeze({
30
30
  clang: definition("clang", "SEMANTIFOLD_CLANG", ["--version"], /^Ubuntu clang version 21\.1\.8 [^\n]+\nTarget: x86_64-pc-linux-gnu\n/u),
31
31
  rustc: definition("rustc", "SEMANTIFOLD_RUSTC", ["--version", "--verbose"], /^rustc 1\.98\.1 \(48a229cea 2026-09-01\)\nbinary: rustc\ncommit-hash: 48a229ceaefd4985c50990b14116b6d856af0985\ncommit-date: 2026-09-01\nhost: x86_64-unknown-linux-gnu\nrelease: 1\.98\.1\nLLVM version: 22\.1\.8$/u),
32
32
  cargo: definition("cargo", "SEMANTIFOLD_CARGO", ["--version", "--verbose"], /^cargo 1\.98\.1 \(797e8a9bc 2026-08-05\)\nrelease: 1\.98\.1\ncommit-hash: 797e8a9bca276c1c9f9f738d2a20f484fa4eea9d\ncommit-date: 2026-08-05\nhost: x86_64-unknown-linux-gnu\n/u),
33
+ zig: definition("zig", "SEMANTIFOLD_ZIG", ["version"], /^0\.15\.2$/u),
33
34
  swiftc: definition("swiftc", "SEMANTIFOLD_SWIFTC", ["--driver-mode=swiftc", "--version"], /^Swift version 6\.3\.3 \(swift-6\.3\.3-RELEASE\)\nTarget: x86_64-unknown-linux-gnu$/u),
34
35
  "wasm-validate": definition("wasm-validate", "SEMANTIFOLD_WASM_VALIDATE", ["--version"], /^1\.0\.36$/u),
35
36
  chromium: definition("chromium", "SEMANTIFOLD_CHROMIUM", ["--version"], /^Google Chrome 152\.0\.7977\.82$/u)
@@ -0,0 +1,46 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * Collects semantic binding reads and explicit assignment targets for Zig's compile-error-level binding checks.
5
+ * @param {import("./semantic/types.js").Block} block - Complete function or entry block.
6
+ * @returns {{reads: Set<string>, writes: Set<string>}} Binding usage by exact source name.
7
+ */
8
+ export function collectZigBindingUsage(block) {
9
+ const reads = new Set()
10
+ const writes = new Set()
11
+ /**
12
+ * Records every binding read in one expression.
13
+ * @param {import("./semantic/types.js").Expression} expression - Expression to traverse.
14
+ */
15
+ const expression = (expression) => {
16
+ if (expression.kind == "IdentifierExpression") reads.add(expression.name)
17
+ else if (expression.kind == "CallExpression") expression.arguments.forEach(argument => expressionVisit(argument))
18
+ else if (expression.kind == "UnaryExpression") expressionVisit(expression.operand)
19
+ else if (expression.kind == "BinaryExpression") {
20
+ expressionVisit(expression.left)
21
+ expressionVisit(expression.right)
22
+ }
23
+ }
24
+ const expressionVisit = expression
25
+ /**
26
+ * Records reads and writes throughout one block subtree.
27
+ * @param {import("./semantic/types.js").Block} current - Block to traverse.
28
+ */
29
+ const visit = (current) => {
30
+ for (const statement of current.statements) {
31
+ if (statement.kind == "LocalDeclaration") expressionVisit(statement.initializer)
32
+ else if (statement.kind == "AssignmentStatement") {
33
+ writes.add(statement.target.name)
34
+ expressionVisit(statement.expression)
35
+ } else if (statement.kind == "IfStatement") {
36
+ expressionVisit(statement.condition)
37
+ visit(statement.consequent)
38
+ if (statement.alternate) visit(statement.alternate)
39
+ } else if (statement.kind == "ExpressionStatement" || statement.kind == "PrintStatement") expressionVisit(statement.expression)
40
+ else if (statement.kind == "ReturnStatement" && statement.expression) expressionVisit(statement.expression)
41
+ }
42
+ }
43
+
44
+ visit(block)
45
+ return {reads, writes}
46
+ }