semantifold 0.5.0 → 0.6.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 (182) hide show
  1. package/README.md +10 -7
  2. package/build/src/backends/android.js +7 -3
  3. package/build/src/backends/identifiers.d.ts +6 -0
  4. package/build/src/backends/identifiers.d.ts.map +1 -1
  5. package/build/src/backends/identifiers.js +24 -1
  6. package/build/src/backends/ios.js +2 -2
  7. package/build/src/backends/native-validation.d.ts +2 -2
  8. package/build/src/backends/native-validation.d.ts.map +1 -1
  9. package/build/src/backends/native-validation.js +2 -2
  10. package/build/src/backends/scalars.d.ts.map +1 -1
  11. package/build/src/backends/scalars.js +2 -1
  12. package/build/src/backends/shared.js +4 -4
  13. package/build/src/backends/zig-runtime.d.ts +5 -0
  14. package/build/src/backends/zig-runtime.d.ts.map +1 -0
  15. package/build/src/backends/zig-runtime.js +92 -0
  16. package/build/src/backends/zig-validation.d.ts +9 -0
  17. package/build/src/backends/zig-validation.d.ts.map +1 -0
  18. package/build/src/backends/zig-validation.js +73 -0
  19. package/build/src/backends/zig.d.ts +42 -0
  20. package/build/src/backends/zig.d.ts.map +1 -0
  21. package/build/src/backends/zig.js +584 -0
  22. package/build/src/frontends/scalars.d.ts.map +1 -1
  23. package/build/src/frontends/scalars.js +2 -1
  24. package/build/src/frontends/zig-parser.d.ts +31 -0
  25. package/build/src/frontends/zig-parser.d.ts.map +1 -0
  26. package/build/src/frontends/zig-parser.js +17 -0
  27. package/build/src/frontends/zig.d.ts +14 -0
  28. package/build/src/frontends/zig.d.ts.map +1 -0
  29. package/build/src/frontends/zig.js +970 -0
  30. package/build/src/language-registry.d.ts.map +1 -1
  31. package/build/src/language-registry.js +30 -1
  32. package/build/src/mapping.js +2 -2
  33. package/build/src/semantic/provenance.js +3 -3
  34. package/build/src/semantic/types.d.ts +2 -2
  35. package/build/src/semantic/types.d.ts.map +1 -1
  36. package/build/src/semantic/types.js +2 -2
  37. package/build/src/semantic/validate.js +2 -2
  38. package/build/src/toolchains.d.ts +6 -0
  39. package/build/src/toolchains.d.ts.map +1 -1
  40. package/build/src/toolchains.js +2 -1
  41. package/build/src/zig-bindings.d.ts +10 -0
  42. package/build/src/zig-bindings.d.ts.map +1 -0
  43. package/build/src/zig-bindings.js +54 -0
  44. package/docs/android.md +2 -2
  45. package/docs/architecture.md +11 -5
  46. package/docs/goals.md +1 -1
  47. package/docs/language-support.md +8 -4
  48. package/docs/parser-qualification.md +31 -1
  49. package/docs/source-maps.md +5 -3
  50. package/docs/testing.md +26 -4
  51. package/docs/zig.md +33 -0
  52. package/node_modules/semantifold-tree-sitter-zig-internal/LICENSE +15 -0
  53. package/node_modules/semantifold-tree-sitter-zig-internal/README.md +5 -0
  54. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/LICENSE +21 -0
  55. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/README.md +21 -0
  56. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/binding.gyp +29 -0
  57. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding.cc +20 -0
  58. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding_test.js +9 -0
  59. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.d.ts +28 -0
  60. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.js +11 -0
  61. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/grammar.js +900 -0
  62. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/package.json +57 -0
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/folds.scm +23 -0
  70. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/highlights.scm +291 -0
  71. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/indents.scm +22 -0
  72. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/injections.scm +10 -0
  73. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/grammar.json +6570 -0
  74. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/node-types.json +3178 -0
  75. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/parser.c +169829 -0
  76. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/alloc.h +54 -0
  77. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/array.h +291 -0
  78. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/parser.h +266 -0
  79. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm +0 -0
  80. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter.json +38 -0
  81. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/LICENSE +21 -0
  82. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/README.md +128 -0
  83. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/binding.gyp +80 -0
  84. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/index.js +916 -0
  85. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/package.json +76 -0
  86. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  87. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  88. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  89. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  90. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  91. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  92. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  93. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  94. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  95. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  96. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.cc +106 -0
  97. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.h +17 -0
  98. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  99. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.h +19 -0
  100. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  101. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  102. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.cc +1088 -0
  103. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.h +30 -0
  104. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.cc +306 -0
  105. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.h +35 -0
  106. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.cc +397 -0
  107. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.h +40 -0
  108. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.cc +316 -0
  109. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.h +45 -0
  110. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  111. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  112. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/tree-sitter.d.ts +1042 -0
  113. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1318 -0
  114. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  115. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  116. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  117. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  118. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  119. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  120. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  121. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  122. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  123. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +223 -0
  124. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +297 -0
  125. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  126. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +435 -0
  127. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  128. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  129. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +920 -0
  130. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2165 -0
  131. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +266 -0
  132. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  133. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +206 -0
  134. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4187 -0
  135. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  136. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  137. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  138. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +130 -0
  139. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1066 -0
  140. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  141. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  142. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  143. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +712 -0
  144. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  145. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  146. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  147. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  148. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  149. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  150. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  151. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  152. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  153. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  154. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  155. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +83 -0
  156. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  157. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  158. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1302 -0
  159. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1859 -0
  160. package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  161. package/node_modules/semantifold-tree-sitter-zig-internal/package.json +21 -0
  162. package/node_modules/semantifold-tree-sitter-zig-internal/src/zig.js +134 -0
  163. package/package.json +11 -6
  164. package/src/backends/android.js +6 -2
  165. package/src/backends/identifiers.js +24 -0
  166. package/src/backends/ios.js +1 -1
  167. package/src/backends/native-validation.js +1 -1
  168. package/src/backends/scalars.js +1 -0
  169. package/src/backends/shared.js +3 -3
  170. package/src/backends/zig-runtime.js +93 -0
  171. package/src/backends/zig-validation.js +68 -0
  172. package/src/backends/zig.js +579 -0
  173. package/src/frontends/scalars.js +1 -0
  174. package/src/frontends/zig-parser.js +20 -0
  175. package/src/frontends/zig.js +994 -0
  176. package/src/language-registry.js +30 -0
  177. package/src/mapping.js +1 -1
  178. package/src/semantic/provenance.js +2 -2
  179. package/src/semantic/types.js +1 -1
  180. package/src/semantic/validate.js +1 -1
  181. package/src/toolchains.js +1 -0
  182. 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"
@@ -24,6 +25,7 @@ import {parseGo} from "./frontends/go.js"
24
25
  import {parseRust} from "./frontends/rust.js"
25
26
  import {parseSwift} from "./frontends/swift.js"
26
27
  import {parseDart} from "./frontends/dart.js"
28
+ import {parseZig} from "./frontends/zig.js"
27
29
  import {parseCpp} from "./frontends/cpp.js"
28
30
  import {generateCpp} from "./backends/cpp.js"
29
31
  import {parseC} from "./frontends/c.js"
@@ -373,6 +375,12 @@ const goFrontend = ({filename, source}) => parseGo({filename, source})
373
375
  */
374
376
  const dartFrontend = ({filename, source}) => parseDart({filename, source})
375
377
 
378
+ /**
379
+ * Zig registry frontend wrapper.
380
+ * @type {Frontend}
381
+ */
382
+ const zigFrontend = ({filename, source}) => parseZig({filename, source})
383
+
376
384
  const records = [
377
385
  language({
378
386
  acceptance: {stages: ["parse", "generate", "execute"], toolchains: ["php82"]},
@@ -490,6 +498,28 @@ const records = [
490
498
  mediaType: "text/x-dart",
491
499
  textBackend: generateDartPackage
492
500
  }),
501
+ language({
502
+ acceptance: {stages: ["parse", "generate", "compile", "validate", "execute"], toolchains: ["zig"]},
503
+ artifactMultiplicity: "multiple",
504
+ defaultFilename: "src/main.zig",
505
+ features: {
506
+ closedRecords: false,
507
+ conditionControlledLoops: false,
508
+ effectfulCapabilitiesAndResources: false,
509
+ generalFunctionsAndCalls: true,
510
+ immutableCollections: false,
511
+ optionalValues: false,
512
+ orderedListIteration: false,
513
+ orderedMapIteration: false,
514
+ referenceClasses: false,
515
+ typedErrors: false,
516
+ typeParametersAndGenerics: false
517
+ },
518
+ frontend: zigFrontend,
519
+ id: "zig",
520
+ mediaType: "text/x-zig",
521
+ textBackend: generateZigProject
522
+ }),
493
523
  {
494
524
  acceptance: {stages: ["generate", "validate", "instantiate", "execute"], toolchains: ["wasm-validate", "node", "chromium"]},
495
525
  applicationBackend: generateBrowserWasm,
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,6 +1,6 @@
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
5
  /** @typedef {TextBackendLanguage | "wasm" | "ios" | "android"} BackendLanguage */
6
6
  /** @typedef {SemanticLanguage | "html"} GeneratedTextLanguage */
@@ -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
+ }