ailang-lang 1.0.1__tar.gz

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 (257) hide show
  1. ailang_lang-1.0.1/AUTHORS.md +10 -0
  2. ailang_lang-1.0.1/CHANGELOG.md +443 -0
  3. ailang_lang-1.0.1/LICENSE +21 -0
  4. ailang_lang-1.0.1/MANIFEST.in +5 -0
  5. ailang_lang-1.0.1/PKG-INFO +205 -0
  6. ailang_lang-1.0.1/README.md +161 -0
  7. ailang_lang-1.0.1/ail_platform/__init__.py +22 -0
  8. ailang_lang-1.0.1/ail_platform/configuration.py +88 -0
  9. ailang_lang-1.0.1/ail_platform/diagnostics.py +117 -0
  10. ailang_lang-1.0.1/ail_platform/events.py +27 -0
  11. ailang_lang-1.0.1/ail_platform/manifest.py +150 -0
  12. ailang_lang-1.0.1/ail_platform/project.py +87 -0
  13. ailang_lang-1.0.1/ail_platform/report_schema.py +134 -0
  14. ailang_lang-1.0.1/ail_platform/symbol_index.py +131 -0
  15. ailang_lang-1.0.1/ail_platform/workspace.py +72 -0
  16. ailang_lang-1.0.1/ailang_lang.egg-info/PKG-INFO +205 -0
  17. ailang_lang-1.0.1/ailang_lang.egg-info/SOURCES.txt +255 -0
  18. ailang_lang-1.0.1/ailang_lang.egg-info/dependency_links.txt +1 -0
  19. ailang_lang-1.0.1/ailang_lang.egg-info/entry_points.txt +2 -0
  20. ailang_lang-1.0.1/ailang_lang.egg-info/requires.txt +27 -0
  21. ailang_lang-1.0.1/ailang_lang.egg-info/top_level.txt +4 -0
  22. ailang_lang-1.0.1/compiler/__init__.py +1 -0
  23. ailang_lang-1.0.1/compiler/__main__.py +19 -0
  24. ailang_lang-1.0.1/compiler/ast/__init__.py +39 -0
  25. ailang_lang-1.0.1/compiler/ast/builder.py +365 -0
  26. ailang_lang-1.0.1/compiler/ast/nodes.py +177 -0
  27. ailang_lang-1.0.1/compiler/cli/__init__.py +3 -0
  28. ailang_lang-1.0.1/compiler/cli/main.py +1570 -0
  29. ailang_lang-1.0.1/compiler/compilation/__init__.py +3 -0
  30. ailang_lang-1.0.1/compiler/compilation/graph.py +132 -0
  31. ailang_lang-1.0.1/compiler/compilation/resolution.py +143 -0
  32. ailang_lang-1.0.1/compiler/compilation/session.py +638 -0
  33. ailang_lang-1.0.1/compiler/diagnostics.py +102 -0
  34. ailang_lang-1.0.1/compiler/formatter.py +498 -0
  35. ailang_lang-1.0.1/compiler/ir/__init__.py +16 -0
  36. ailang_lang-1.0.1/compiler/ir/builder.py +508 -0
  37. ailang_lang-1.0.1/compiler/ir/nodes.py +154 -0
  38. ailang_lang-1.0.1/compiler/ir/printer.py +150 -0
  39. ailang_lang-1.0.1/compiler/ir/validator.py +130 -0
  40. ailang_lang-1.0.1/compiler/lexer.py +628 -0
  41. ailang_lang-1.0.1/compiler/lsp/__init__.py +5 -0
  42. ailang_lang-1.0.1/compiler/lsp/documents.py +93 -0
  43. ailang_lang-1.0.1/compiler/lsp/features/__init__.py +0 -0
  44. ailang_lang-1.0.1/compiler/lsp/features/code_actions.py +194 -0
  45. ailang_lang-1.0.1/compiler/lsp/features/completion.py +181 -0
  46. ailang_lang-1.0.1/compiler/lsp/features/definition.py +53 -0
  47. ailang_lang-1.0.1/compiler/lsp/features/diagnostics.py +22 -0
  48. ailang_lang-1.0.1/compiler/lsp/features/hover.py +177 -0
  49. ailang_lang-1.0.1/compiler/lsp/features/references.py +54 -0
  50. ailang_lang-1.0.1/compiler/lsp/features/rename.py +76 -0
  51. ailang_lang-1.0.1/compiler/lsp/features/signature_help.py +178 -0
  52. ailang_lang-1.0.1/compiler/lsp/features/symbols.py +85 -0
  53. ailang_lang-1.0.1/compiler/lsp/features/workspace_symbols.py +96 -0
  54. ailang_lang-1.0.1/compiler/lsp/protocol.py +221 -0
  55. ailang_lang-1.0.1/compiler/lsp/server.py +249 -0
  56. ailang_lang-1.0.1/compiler/lsp/utils.py +136 -0
  57. ailang_lang-1.0.1/compiler/package/__init__.py +1 -0
  58. ailang_lang-1.0.1/compiler/package/registry.py +264 -0
  59. ailang_lang-1.0.1/compiler/parser/__init__.py +4 -0
  60. ailang_lang-1.0.1/compiler/parser/declarations.py +56 -0
  61. ailang_lang-1.0.1/compiler/parser/expressions.py +214 -0
  62. ailang_lang-1.0.1/compiler/parser/nodes.py +22 -0
  63. ailang_lang-1.0.1/compiler/parser/parser.py +172 -0
  64. ailang_lang-1.0.1/compiler/parser/recovery.py +12 -0
  65. ailang_lang-1.0.1/compiler/parser/statements.py +118 -0
  66. ailang_lang-1.0.1/compiler/parser/token_stream.py +72 -0
  67. ailang_lang-1.0.1/compiler/py.typed +0 -0
  68. ailang_lang-1.0.1/compiler/rename.py +352 -0
  69. ailang_lang-1.0.1/compiler/runtime/__init__.py +7 -0
  70. ailang_lang-1.0.1/compiler/runtime/builtins.py +498 -0
  71. ailang_lang-1.0.1/compiler/runtime/environment.py +74 -0
  72. ailang_lang-1.0.1/compiler/runtime/interpreter.py +341 -0
  73. ailang_lang-1.0.1/compiler/runtime/stack_frame.py +40 -0
  74. ailang_lang-1.0.1/compiler/runtime/values.py +9 -0
  75. ailang_lang-1.0.1/compiler/semantic/__init__.py +6 -0
  76. ailang_lang-1.0.1/compiler/semantic/analyzer.py +302 -0
  77. ailang_lang-1.0.1/compiler/semantic/symbol_table.py +173 -0
  78. ailang_lang-1.0.1/compiler/source.py +29 -0
  79. ailang_lang-1.0.1/compiler/types/__init__.py +17 -0
  80. ailang_lang-1.0.1/compiler/types/checker.py +397 -0
  81. ailang_lang-1.0.1/compiler/types/types.py +55 -0
  82. ailang_lang-1.0.1/compiler/watch.py +418 -0
  83. ailang_lang-1.0.1/examples/age_calc/main.ail +71 -0
  84. ailang_lang-1.0.1/examples/attendance/main.ail +58 -0
  85. ailang_lang-1.0.1/examples/banking/main.ail +60 -0
  86. ailang_lang-1.0.1/examples/bmi_calc/main.ail +60 -0
  87. ailang_lang-1.0.1/examples/calculator/main.ail +8 -0
  88. ailang_lang-1.0.1/examples/chained_member_access.ail +3 -0
  89. ailang_lang-1.0.1/examples/collections.ail +24 -0
  90. ailang_lang-1.0.1/examples/config_loader/main.ail +29 -0
  91. ailang_lang-1.0.1/examples/csv_demo.ail +31 -0
  92. ailang_lang-1.0.1/examples/csv_reader/main.ail +34 -0
  93. ailang_lang-1.0.1/examples/currency_converter/main.ail +64 -0
  94. ailang_lang-1.0.1/examples/date_validate/main.ail +93 -0
  95. ailang_lang-1.0.1/examples/dir_tree/main.ail +34 -0
  96. ailang_lang-1.0.1/examples/electricity_bill/main.ail +59 -0
  97. ailang_lang-1.0.1/examples/env_demo.ail +16 -0
  98. ailang_lang-1.0.1/examples/expr_eval/main.ail +47 -0
  99. ailang_lang-1.0.1/examples/fibonacci/main.ail +9 -0
  100. ailang_lang-1.0.1/examples/file_copy/main.ail +61 -0
  101. ailang_lang-1.0.1/examples/file_io.ail +26 -0
  102. ailang_lang-1.0.1/examples/functions/main.ail +10 -0
  103. ailang_lang-1.0.1/examples/functions.ail +3 -0
  104. ailang_lang-1.0.1/examples/hello_world/main.ail +4 -0
  105. ailang_lang-1.0.1/examples/http_client/main.ail +70 -0
  106. ailang_lang-1.0.1/examples/if_else/main.ail +8 -0
  107. ailang_lang-1.0.1/examples/if_else.ail +7 -0
  108. ailang_lang-1.0.1/examples/income_tax/main.ail +75 -0
  109. ailang_lang-1.0.1/examples/ini_parser/main.ail +49 -0
  110. ailang_lang-1.0.1/examples/integration/max_function.ail +7 -0
  111. ailang_lang-1.0.1/examples/invoice_gen/main.ail +69 -0
  112. ailang_lang-1.0.1/examples/json_demo.ail +31 -0
  113. ailang_lang-1.0.1/examples/json_parser/main.ail +56 -0
  114. ailang_lang-1.0.1/examples/library_mgr/main.ail +61 -0
  115. ailang_lang-1.0.1/examples/loan_emi/main.ail +62 -0
  116. ailang_lang-1.0.1/examples/markdown_parser/main.ail +52 -0
  117. ailang_lang-1.0.1/examples/member_access.ail +3 -0
  118. ailang_lang-1.0.1/examples/member_function_calls.ail +3 -0
  119. ailang_lang-1.0.1/examples/modules/add.ail +4 -0
  120. ailang_lang-1.0.1/examples/modules/main.ail +6 -0
  121. ailang_lang-1.0.1/examples/modules/math/add.ail +4 -0
  122. ailang_lang-1.0.1/examples/modules/math/math.ail +4 -0
  123. ailang_lang-1.0.1/examples/modules/math.ail +4 -0
  124. ailang_lang-1.0.1/examples/num_stats/main.ail +45 -0
  125. ailang_lang-1.0.1/examples/password_validate/main.ail +62 -0
  126. ailang_lang-1.0.1/examples/path_ops.ail +25 -0
  127. ailang_lang-1.0.1/examples/patterns/csv_reader.ail +49 -0
  128. ailang_lang-1.0.1/examples/patterns/dependency_graph.ail +87 -0
  129. ailang_lang-1.0.1/examples/patterns/json_store.ail +67 -0
  130. ailang_lang-1.0.1/examples/patterns/recursive_filter.ail +45 -0
  131. ailang_lang-1.0.1/examples/patterns/recursive_map.ail +42 -0
  132. ailang_lang-1.0.1/examples/patterns/recursive_reduce.ail +38 -0
  133. ailang_lang-1.0.1/examples/patterns/recursive_search.ail +40 -0
  134. ailang_lang-1.0.1/examples/patterns/string_find.ail +40 -0
  135. ailang_lang-1.0.1/examples/patterns/string_split.ail +51 -0
  136. ailang_lang-1.0.1/examples/patterns/topological_sort.ail +88 -0
  137. ailang_lang-1.0.1/examples/payroll/main.ail +74 -0
  138. ailang_lang-1.0.1/examples/prime_checker/main.ail +10 -0
  139. ailang_lang-1.0.1/examples/random_demo.ail +23 -0
  140. ailang_lang-1.0.1/examples/recursion/main.ail +10 -0
  141. ailang_lang-1.0.1/examples/rule_engine/main.ail +65 -0
  142. ailang_lang-1.0.1/examples/salary_calc/main.ail +63 -0
  143. ailang_lang-1.0.1/examples/shopping_cart/main.ail +58 -0
  144. ailang_lang-1.0.1/examples/string_utils.ail +10 -0
  145. ailang_lang-1.0.1/examples/student_records/main.ail +59 -0
  146. ailang_lang-1.0.1/examples/text_search/main.ail +49 -0
  147. ailang_lang-1.0.1/examples/time_demo.ail +19 -0
  148. ailang_lang-1.0.1/examples/variables/main.ail +7 -0
  149. ailang_lang-1.0.1/examples/variables.ail +1 -0
  150. ailang_lang-1.0.1/examples/voting_eligibility/main.ail +70 -0
  151. ailang_lang-1.0.1/examples/word_counter/main.ail +26 -0
  152. ailang_lang-1.0.1/pyproject.toml +93 -0
  153. ailang_lang-1.0.1/setup.cfg +4 -0
  154. ailang_lang-1.0.1/stdlib/__init__.py +2 -0
  155. ailang_lang-1.0.1/stdlib/array.ail +27 -0
  156. ailang_lang-1.0.1/stdlib/convert.ail +18 -0
  157. ailang_lang-1.0.1/stdlib/csv.ail +11 -0
  158. ailang_lang-1.0.1/stdlib/environment.ail +11 -0
  159. ailang_lang-1.0.1/stdlib/file.ail +23 -0
  160. ailang_lang-1.0.1/stdlib/io.ail +14 -0
  161. ailang_lang-1.0.1/stdlib/json.ail +7 -0
  162. ailang_lang-1.0.1/stdlib/list.ail +91 -0
  163. ailang_lang-1.0.1/stdlib/map.ail +39 -0
  164. ailang_lang-1.0.1/stdlib/math.ail +36 -0
  165. ailang_lang-1.0.1/stdlib/path.ail +19 -0
  166. ailang_lang-1.0.1/stdlib/random.ail +11 -0
  167. ailang_lang-1.0.1/stdlib/set.ail +23 -0
  168. ailang_lang-1.0.1/stdlib/string.ail +63 -0
  169. ailang_lang-1.0.1/stdlib/system.ail +3 -0
  170. ailang_lang-1.0.1/stdlib/time.ail +15 -0
  171. ailang_lang-1.0.1/tests/test_ai_validation.py +497 -0
  172. ailang_lang-1.0.1/tests/test_ail_context.py +39 -0
  173. ailang_lang-1.0.1/tests/test_ail_doctor.py +81 -0
  174. ailang_lang-1.0.1/tests/test_ast_builder.py +370 -0
  175. ailang_lang-1.0.1/tests/test_benchmark.py +623 -0
  176. ailang_lang-1.0.1/tests/test_cli.py +448 -0
  177. ailang_lang-1.0.1/tests/test_diagnostics.py +68 -0
  178. ailang_lang-1.0.1/tests/test_experimental_loops.py +426 -0
  179. ailang_lang-1.0.1/tests/test_formatter.py +433 -0
  180. ailang_lang-1.0.1/tests/test_imports.py +47 -0
  181. ailang_lang-1.0.1/tests/test_inventory_app.py +56 -0
  182. ailang_lang-1.0.1/tests/test_inventory_level0.py +371 -0
  183. ailang_lang-1.0.1/tests/test_ir_builder.py +196 -0
  184. ailang_lang-1.0.1/tests/test_lexer.py +206 -0
  185. ailang_lang-1.0.1/tests/test_lsp.py +1379 -0
  186. ailang_lang-1.0.1/tests/test_member_access.py +143 -0
  187. ailang_lang-1.0.1/tests/test_module_integration.py +522 -0
  188. ailang_lang-1.0.1/tests/test_module_resolution.py +184 -0
  189. ailang_lang-1.0.1/tests/test_new_stdlib.py +301 -0
  190. ailang_lang-1.0.1/tests/test_package_commands.py +141 -0
  191. ailang_lang-1.0.1/tests/test_package_naming.py +210 -0
  192. ailang_lang-1.0.1/tests/test_rename.py +261 -0
  193. ailang_lang-1.0.1/tests/test_runtime.py +311 -0
  194. ailang_lang-1.0.1/tests/test_scope_cache.py +852 -0
  195. ailang_lang-1.0.1/tests/test_semantic.py +195 -0
  196. ailang_lang-1.0.1/tests/test_session.py +49 -0
  197. ailang_lang-1.0.1/tests/test_source.py +28 -0
  198. ailang_lang-1.0.1/tests/test_static_analyzer_enhancement.py +130 -0
  199. ailang_lang-1.0.1/tests/test_stdlib_collections.py +432 -0
  200. ailang_lang-1.0.1/tests/test_stdlib_csv.py +287 -0
  201. ailang_lang-1.0.1/tests/test_stdlib_environment.py +115 -0
  202. ailang_lang-1.0.1/tests/test_stdlib_file.py +137 -0
  203. ailang_lang-1.0.1/tests/test_stdlib_json.py +315 -0
  204. ailang_lang-1.0.1/tests/test_stdlib_path.py +154 -0
  205. ailang_lang-1.0.1/tests/test_stdlib_random.py +112 -0
  206. ailang_lang-1.0.1/tests/test_stdlib_system.py +68 -0
  207. ailang_lang-1.0.1/tests/test_stdlib_time.py +123 -0
  208. ailang_lang-1.0.1/tests/test_stress.py +558 -0
  209. ailang_lang-1.0.1/tests/test_type_checker.py +125 -0
  210. ailang_lang-1.0.1/tests/test_validation.py +443 -0
  211. ailang_lang-1.0.1/tests/test_validation_comprehensive.py +948 -0
  212. ailang_lang-1.0.1/tests/test_watch.py +155 -0
  213. ailang_lang-1.0.1/tools/ail_benchmark/__init__.py +1 -0
  214. ailang_lang-1.0.1/tools/ail_benchmark/__main__.py +333 -0
  215. ailang_lang-1.0.1/tools/ail_benchmark/compare.py +135 -0
  216. ailang_lang-1.0.1/tools/ail_benchmark/discovery.py +132 -0
  217. ailang_lang-1.0.1/tools/ail_benchmark/reporter.py +258 -0
  218. ailang_lang-1.0.1/tools/ail_benchmark/runner.py +233 -0
  219. ailang_lang-1.0.1/tools/ail_context/__main__.py +206 -0
  220. ailang_lang-1.0.1/tools/ail_doctor/__main__.py +416 -0
  221. ailang_lang-1.0.1/tools/ail_order/__init__.py +3 -0
  222. ailang_lang-1.0.1/tools/ail_order/__main__.py +181 -0
  223. ailang_lang-1.0.1/tools/ail_order/analyzer.py +50 -0
  224. ailang_lang-1.0.1/tools/ail_order/discovery.py +244 -0
  225. ailang_lang-1.0.1/tools/ail_order/fixer.py +132 -0
  226. ailang_lang-1.0.1/tools/ail_order/graph.py +219 -0
  227. ailang_lang-1.0.1/tools/ail_order/models.py +59 -0
  228. ailang_lang-1.0.1/tools/ail_order/reporter.py +207 -0
  229. ailang_lang-1.0.1/tools/ail_package_manager/__init__.py +3 -0
  230. ailang_lang-1.0.1/tools/ail_package_manager/__main__.py +172 -0
  231. ailang_lang-1.0.1/tools/ail_package_manager/cache.py +131 -0
  232. ailang_lang-1.0.1/tools/ail_package_manager/commands.py +350 -0
  233. ailang_lang-1.0.1/tools/ail_package_manager/init.py +111 -0
  234. ailang_lang-1.0.1/tools/ail_package_manager/installer.py +133 -0
  235. ailang_lang-1.0.1/tools/ail_package_manager/lock.py +145 -0
  236. ailang_lang-1.0.1/tools/ail_package_manager/manifest.py +178 -0
  237. ailang_lang-1.0.1/tools/ail_package_manager/models.py +67 -0
  238. ailang_lang-1.0.1/tools/ail_package_manager/registry.py +360 -0
  239. ailang_lang-1.0.1/tools/ail_package_manager/resolver.py +314 -0
  240. ailang_lang-1.0.1/tools/ail_static_analyzer/__main__.py +279 -0
  241. ailang_lang-1.0.1/tools/ail_testgen/__init__.py +30 -0
  242. ailang_lang-1.0.1/tools/ail_testgen/__main__.py +141 -0
  243. ailang_lang-1.0.1/tools/ail_testgen/analyzer.py +66 -0
  244. ailang_lang-1.0.1/tools/ail_testgen/discovery.py +41 -0
  245. ailang_lang-1.0.1/tools/ail_testgen/generator.py +117 -0
  246. ailang_lang-1.0.1/tools/ail_testgen/models.py +54 -0
  247. ailang_lang-1.0.1/tools/ail_testgen/reporter.py +99 -0
  248. ailang_lang-1.0.1/tools/ail_testgen/validator.py +45 -0
  249. ailang_lang-1.0.1/tools/common/__init__.py +28 -0
  250. ailang_lang-1.0.1/tools/common/cli.py +49 -0
  251. ailang_lang-1.0.1/tools/common/filesystem.py +44 -0
  252. ailang_lang-1.0.1/tools/common/hashing.py +11 -0
  253. ailang_lang-1.0.1/tools/common/process.py +66 -0
  254. ailang_lang-1.0.1/tools/common/reporting.py +31 -0
  255. ailang_lang-1.0.1/tools/install_inventory.py +426 -0
  256. ailang_lang-1.0.1/tools/perf_profiler.py +448 -0
  257. ailang_lang-1.0.1/tools/python_profiler.py +446 -0
@@ -0,0 +1,10 @@
1
+ # AILang Authors
2
+
3
+ ## Maintainer
4
+
5
+ - Alec Khan
6
+
7
+ ## Contributors
8
+
9
+ See the full list of contributors at:
10
+ https://github.com/anomalyco/ailang/contributors
@@ -0,0 +1,443 @@
1
+ # Changelog
2
+
3
+ ## v1.0.0-M57
4
+
5
+ ### M57 — VS Code Extension Hardening
6
+
7
+ - **Extension version sync**: Bumped `package.json` to v0.2.0; fixed trailing comma; added icon reference
8
+ - **Code action edits**: Rewrote `compiler/lsp/features/code_actions.py` — quick fixes now generate actual `TextEdit` operations for "import stdlib module" and "remove unused variable" actions
9
+ - **`for` keyword support**: Added to TextMate grammar (`keyword.control.loop.ailang`) and LSP completions (`completion.py`)
10
+ - **Documentation**: `docs/vscode/INSTALLATION.md` (installation guide), `docs/vscode/FEATURES.md` (feature reference), `docs/releases/M57_VSCODE_EXTENSION_REPORT.md`
11
+ - **Extension CHANGELOG**: Updated `extensions/vscode-ailang/CHANGELOG.md` with v0.2.0 entry
12
+ - **Test results**: 103/103 LSP tests passing, zero regressions
13
+
14
+ ## v1.0.0-M56
15
+
16
+ ### M56 — External Adoption Closure (Package Naming + Package Manager Commands)
17
+
18
+ - **Snake-case package naming**: Resolved naming deadlock — `manifest.py` now accepts `^[a-z][a-z0-9_]*$` (snake_case). Kebab-case accepted with deprecation warning for backward compatibility
19
+ - **Resolver normalization**: `compiler/compilation/resolution.py` tries both kebab-to-underscore and underscore-to-kebab variants when resolving package directories in `lib/`
20
+ - **`ail new` generates `ail.toml`**: Previously only created `main.ail` + README; now creates `ail.toml` and `ail.lock` with snake_case-normalized package name
21
+ - **`ail add`**: Implemented in `tools/ail_package_manager/commands.py` — parses `name@version`, `--path`, `--git`/`--tag`/`--branch`; edits `ail.toml` [dependencies] section
22
+ - **`ail remove`**: Removes dependency lines from `ail.toml` by matching `"<name>"` prefix
23
+ - **`ail update`**: Delegates to `tools.ail_package_manager.installer.install()` for re-resolution
24
+ - **`ail list`**: Reads `ail.toml` dependencies and `lib/` directory to show install status
25
+ - **CLI wiring**: All four commands added to `compiler/cli/main.py` dispatch table, help text, and `tools/ail_package_manager/__main__.py` argparse
26
+ - **Documentation**: `docs/PACKAGE_NAMING_POLICY.md`, `docs/QUICKSTART.md`, `docs/PACKAGES.md`, `docs/research/M56_EXTERNAL_ADOPTION_CLOSURE.md`
27
+ - **Test results**: 32 new tests (19 naming + 13 commands), all passing. Total: 176/176 tests across LSP + naming + commands + CLI
28
+
29
+ ## 0.10.0
30
+
31
+ ### DX-015 — Repository Rename Tool (`ail rename`)
32
+
33
+ - **`ail rename old_name new_name`**: Repository-wide identifier rename with semantic awareness
34
+ - **Symbol graph scanning**: Parses all `.ail` files via the compiler pipeline to find function declarations, function calls, variable declarations, variable references, parameters, and import path segments matching the old name
35
+ - **`--dry-run`**: Preview changes without modifying files
36
+ - **`--diff`**: Show unified diff of all changes
37
+ - **`--strings`**: Also rename matching string literal values (e.g., map keys)
38
+ - **`--no-verify`**: Skip compiler verification after rename
39
+ - **Atomic file rewriting**: Changes applied from end to start to preserve offsets; temporary `.rename.tmp` file used per file
40
+ - **Rollback bundle**: Every rename creates `.ail/rename/<timestamp>/` with a `manifest.json` and `.orig` backups of every modified file; on failure, all files are automatically restored
41
+ - **Compiler verification**: After successful rename, `ail build` runs on the entry point to detect any compilation errors
42
+ - **Safe identifier validation**: `new_name` must pass `str.isidentifier()` to prevent invalid identifiers
43
+ - **Implementation**: `compiler/rename.py` — ~260 LOC, no modifications to compiler pipeline, parser, or runtime
44
+
45
+ ### DX-016 — Watch Mode (`ail watch`)
46
+
47
+ - **`ail watch [<entry>]`**: Automatic incremental recompilation on file changes
48
+ - **Filesystem watcher**: Uses `watchdog` library for cross-platform file monitoring (Windows `ReadDirectoryChangesW`, macOS `FSEvents`, Linux `inotify`)
49
+ - **`--poll`**: Polling-mode fallback for network filesystems, Docker, WSL
50
+ - **`--json`**: Machine-readable JSON output for AI tooling integration
51
+ - **`--no-initial`**: Skip the initial full build on startup
52
+ - **Incremental compilation**: `CompilationSession.incremental_recompile()` — on file change, only the changed module and its transitive dependents are re-parsed, re-analyzed, and recompiled. Unchanged modules use their existing ASTs
53
+ - **Dependency invalidation**: `get_transitive_dependents()` computes the full affected set via BFS on the import graph
54
+ - **Cross-module semantic reanalysis**: Only affected modules are deep-analyzed; cross-module export registration for all modules is fast (top-level names only)
55
+ - **SHA-256 change detection**: `FileCache` stores per-file hashes; events that don't change content (editor atomic-save artifacts) are filtered out
56
+ - **Debounce (200ms)**: Threading.Timer-based debounce prevents redundant compiles during AI burst edits
57
+ - **Polling fallback**: Configurable `--poll-interval` (default 500ms), runs in background thread
58
+ - **Implementation**: `compiler/watch.py` — ~370 LOC; `CompilationSession` extended with 6 incremental methods
59
+
60
+ ### Test Results
61
+
62
+ - **251 total tests** (220 existing + 31 new), all passing
63
+ - DX-015 (ail rename): 19 tests — scan, change computation, apply, rollback, dry-run, diff, string scanning, import scanning, verification
64
+ - DX-016 (ail watch): 12 tests — file hash, cache, incremental compiler initial build, incremental recompile after change, cache update
65
+ - Zero regressions: all existing CLI, session, lexer, parser, AST, IR, semantic, runtime, type-checker tests pass
66
+
67
+ ## 0.8.0
68
+
69
+ ### DX-006 — AILang Dependency Ordering Assistant (`ail order`)
70
+
71
+ - **Tool implementation**: `tools/ail_order/` — analyzes .ail files for dependency ordering issues
72
+ - **Function discovery**: `discovery.py` extracts function names, calls, and line numbers from source files
73
+ - **Graph analysis**: `graph.py` computes topological levels and detects forward references/cycles
74
+ - **Automatic fix mode**: `fixer.py` reorders functions while preserving comments and formatting
75
+ - **Report generation**: `reporter.py` produces Markdown and JSON reports for CI/LSP integration
76
+ - **CLI integration**: `ail order` command added to compiler CLI with `--json`, `--fix`, `--quiet`, `--stdout` flags
77
+ - **Detection capabilities**:
78
+ - Forward reference violations (function called before definition)
79
+ - Circular function dependencies
80
+ - Unreachable functions (not reachable from main)
81
+ - Duplicate function declarations
82
+ - **Project analysis**: Full directory analysis with cross-file insights and report generation
83
+ - **12 acceptance tests**, 8 regression tests, 8 AI validation tests — all passing
84
+
85
+ ## 0.4.0
86
+
87
+ ### DX-007 — AILang Language Server
88
+
89
+ - **Architecture document**: `docs/architecture/LSP_ARCHITECTURE.md` — JSON-RPC, workspace model, document lifecycle, diagnostics pipeline, feature modules, performance goals, testing strategy
90
+ - **Shared AST utilities**: New `compiler/lsp/utils.py` consolidating 5× duplicated helpers (`walk_ast`, `find_node_at_offset`, `position_to_offset`, `node_range`, `find_references`, `find_enclosing_call`, `callee_name`, `member_access_name`, `find_definition_target`) into a single source of truth
91
+ - **Code duplication eliminated**: `definition.py`, `hover.py`, `references.py`, `rename.py`, `signature_help.py` all refactored to import from `utils.py` — 300+ lines of duplicated code removed
92
+ - **Workspace Symbol Search**: `workspace/symbol` implemented — cross-file symbol search with case-insensitive query matching across functions, variables, and imports
93
+ - **Code Actions foundation**: `textDocument/codeAction` — quick fix scaffolding for import errors, undefined stdlib references, and unused variable warnings
94
+ - **Server capabilities extended**: `workspaceSymbolProvider: true` and `codeActionProvider: true` added to initialize response
95
+ - **103 tests**, all passing (up from 99) — 4 new tests for workspace symbols and code actions
96
+
97
+ ## 0.5.0
98
+
99
+ ### DX-008 — AILang Formatter
100
+
101
+ - **Architecture document**: `docs/architecture/FORMATTER_ARCHITECTURE.md` — canonical style, CLI flags, token-based formatting, comment handling, idempotency requirement, acceptance criteria
102
+ - **`ail fmt` CLI**: `--diff` (show changes), `--quiet` (errors only), directory-wide formatting, single-file formatting, stdin mode
103
+ - **Token-based formatting**: All 17 token types handled with canonical style rules (4-space indent, space around operators/`:`, newline after `{`, same-line `} else {`)
104
+ - **String-aware comment handling**: Inline comments inside string literals preserved (not misidentified as comments)
105
+ - **Lexer compatibility**: Reuses existing lexer with zero modifications
106
+ - **Repo-wide idempotency**: `--check` mode verifies formatting on all `.ail` files; verified idempotent across the entire repository
107
+ - **82 tests**: 71 formatter tests + 11 CLI tests, all passing
108
+ - **Zero semantic changes**: no modifications to compiler, runtime, or language specification
109
+
110
+ ### M19 — Documentation Canonicalization
111
+
112
+ - **Consolidated PROJECT_VISION.md + PROJECT_PHILOSOPHY.md** into `VISION_AND_DIFFERENTIATION.md`
113
+ - **Expanded PROJECT_CONSTITUTION.md** with Documentation Rule (§3) and Canonical First Rule (§4)
114
+ - **Created `PRODUCT_ROADMAP.md`** at repository root as the single canonical roadmap
115
+ - **Moved benchmark methodology** from whitepaper section into `ENGINEERING_BENCHMARK_PLAN.md`
116
+ - **Eliminated 7 obsolete/archive files** — ROADMAP.md, PRODUCT_ROADMAP.md (old), etc.
117
+ - **Canonical First Rule** added to AGENTS.md workflow and Constitution
118
+ - **Cross-references updated** across all affected documents
119
+
120
+ ### Quality Gates
121
+
122
+ - **854 tests**, all passing (772 existing + 82 new formatter)
123
+ - DX-008 (ail fmt): PASS — 82 tests
124
+ - Documentation canonicalization: PASS — no broken links
125
+
126
+ ## 0.7.0
127
+
128
+ ### Engineering Optimization Program (Evidence-Driven Stdlib Evolution)
129
+
130
+ - **Evidence Analysis**: Reviewed B2–B7 benchmark data. Identified stdlib gaps as #1 friction source (42% of B2 errors).
131
+ - **`file.listdir(path)`**: New stdlib API returning sorted directory entries. Python `os.listdir()` backend. Available via `import file; file.listdir(path)`.
132
+ - **`list.sum(values)`**: New stdlib API returning sum of numeric list items. 3+ independent app pattern threshold met (STDLIB_GAP_ANALYSIS.md).
133
+ - **`list.find_by_key(values, key, value)`**: New stdlib API for finding first map in list with matching property. 3+ app threshold met.
134
+ - **`convert.to_number(value)`**: Fixed — was a no-op identity function. Now correctly converts string/int to integer (same semantics as `to_int`).
135
+ - **`docs/HYPOTHESIS_STATUS.md`**: Created — tracks all 7 engineering hypotheses with evidence status (3 Supported, 1 Partially Supported, 2 Inconclusive, 1 Not Yet Tested).
136
+ - **AGENTS.md updated**: Removed `convert.to_number` no-op pitfall. Updated missing stdlib list to reflect available APIs.
137
+ - **STDLIB_REFERENCE.md updated**: Added documentation for all 4 new/changed APIs. Updated "Known Missing Operations" section.
138
+
139
+ ### Measured Improvement
140
+
141
+ | Metric | Before (v0.6.x) | After (v0.7.0) | Improvement |
142
+ |--------|:-:|:-:|:-:|
143
+ | B2 L2 (CSV pipeline) | 3 iterations | 1 iteration | **67%** |
144
+ | B2 total | 7 iterations | 5 iterations | **29%** |
145
+ | B2–B6 total | 18 iterations | 16 iterations | **11%** |
146
+ | AILang vs Python ratio | 1.38× | 1.23× | **11% closer** |
147
+
148
+ ### Quality Gates
149
+
150
+ - All new APIs verified: `file.listdir`, `list.sum`, `list.find_by_key`, `convert.to_number` — build+run confirmed
151
+ - Existing test suite: 18 stdlib tests pass, zero regressions
152
+ - ENGINEERING_EVIDENCE_REPORT.md: updated with before/after comparison
153
+ - HYPOTHESIS_STATUS.md: created with evidence references
154
+ - All P0 APIs implemented (no scope changes)
155
+
156
+ ## 0.6.2
157
+
158
+ ### B2–B7 — Engineering Benchmark Execution
159
+
160
+ - **B2 Feature Implementation**: 3 levels (sum_even, CSV pipeline, file diff) in AILang + Python — AILang 2.3× more iterations, all compile-time errors
161
+ - **B3 Bug Fix**: 5 bugs (off-by-one, undefined-id, map guard, comparison, infinite recursion) — AILang 1.2× more iterations, 80% first-fix compile rate
162
+ - **B4 Refactoring**: Rename + extract function — parity (1.0×), zero regressions in both languages
163
+ - **B5 Upgrade**: Signature change + CLI conversion — parity (1.0×), zero regressions
164
+ - **B6 Maintenance**: Multi-step feature addition with edge-case handling — parity (1.0×)
165
+ - **B7 AI Context**: Structured guide (AGENTS.md + Playbook) saves 3× iterations (1 vs 3 compile-fix cycles)
166
+ - **15 benchmark artifacts** created: 5 bug-fix files, naive-without-guide comparison, 2 task specs, 10 code modifications
167
+ - **Key stdlib gaps identified**: no `!=` operator, no `listdir`, `convert.to_number` is no-op
168
+ - **Evidence published**: `ENGINEERING_EVIDENCE_REPORT.md` with method, datasets, raw results, summary table, and cost model
169
+
170
+ ### Quality Gates
171
+
172
+ - **ENGINEERING_EVIDENCE_REPORT.md**: PASS — all 6 benchmarks documented with measurements
173
+ - B2–B7 artifacts: PASS — all build+run verified
174
+
175
+ ## 0.6.1
176
+
177
+ ### B1.1 — AI Provider Integration & Calibration
178
+
179
+ - **Provider abstraction**: `benchmarks/providers/base.py` — `AIProvider` abstract base class with `complete(prompt)`, `count_tokens(text)`, and `ProviderResult` data model capturing all measurements (request, prompt, response, timing, interaction, cost)
180
+ - **4 provider implementations**:
181
+ - `OpenAIProvider` — GPT-4o, GPT-4, GPT-3.5 (requires `openai` + `tiktoken`)
182
+ - `AnthropicProvider` — Claude 3, Claude 3.5 (requires `anthropic`)
183
+ - `GoogleProvider` — Gemini 1.5, Gemini 2.0 (requires `google-generativeai`)
184
+ - `LocalProvider` — Ollama, vLLM, llama.cpp via OpenAI-compatible API (requires `openai`)
185
+ - **Provider factory**: `create_provider(name, model, ...)` with registry and auto-detection from environment variables
186
+ - **Calibration module**: `benchmarks/calibration/` — runs identical prompts (short_response, code_understanding, token_counting) across all configured providers to validate measurement infrastructure. Generates immutable calibration reports.
187
+ - **B1 extended**: Three priority modes for token measurement — (1) AIProvider for accurate tokenizer + comprehension prompt, (2) manual `ai_results` dict, (3) approximate 4-char heuristic. B1 version bumped to 0.2.0.
188
+ - **CLI**: `python -m benchmarks calibrate` and `python -m benchmarks list-providers`
189
+ - **Optional dependencies**: Added `[openai]`, `[anthropic]`, `[google]`, `[local]`, `[all]` extras to pyproject.toml
190
+ - **37 new tests**: ProviderResult serialization, interface contract, factory, mocked provider implementations (all 4), token estimation, cost estimation, B1 provider integration, calibration execution, schema stability
191
+ - **81 tests total** in benchmarks/tests/ (44 existing + 37 new)
192
+
193
+ ### Quality Gates
194
+
195
+ - **935 tests**, all passing (898 existing + 37 new provider/calibration)
196
+ - Provider interface: PASS — all ABC methods implemented, serialization roundtrip verified
197
+ - Calibration: PASS — runs against mock providers, reports errors correctly, serializable output
198
+
199
+ ## 0.6.0
200
+
201
+ ### B1 — Engineering Benchmark Framework
202
+
203
+ - **Generic measurement framework**: `benchmarks/framework/` — runner, metrics, environ, reporting, dataset modules — reusable by B2-B7
204
+ - **3 canonical datasets**: small (compiler only), medium (stdlib + docs), current_repo (full repository)
205
+ - **Dataset scanning**: Deterministic metadata generation with SHA-256 content hash and repeatability hash
206
+ - **Repository metrics**: Full structural analysis (files, LOC, function count, variable count, import count, dependency depth, symbol density, comment ratio, nesting depth, cyclomatic complexity)
207
+ - **AI comprehension metrics**: Token estimate, context window utilization, comprehension accuracy (placeholder for future AI integration)
208
+ - **Immutable historical results**: Each run stored in `benchmarks/results/<benchmark>/run_<timestamp>/` with measurements, environment snapshot, and human-readable report
209
+ - **Summary aggregation**: `benchmarks/results/summary.json` with all runs across all datasets
210
+ - **CLI**: `python -m benchmarks {setup,b1,list,test}`
211
+ - **44 tests**: 4 runner, 8 dataset, 13 metrics, 9 reporting, 10 B1 integration — all passing
212
+ - **Run IDs**: Timestamp-based, sortable, unique
213
+ - **.gitignore**: `benchmarks/results/` excluded (runtime artifacts); datasets remain version-controlled
214
+
215
+ ### Quality Gates
216
+
217
+ - **898 tests**, all passing (854 existing + 44 new B1 framework)
218
+ - B1 smoke test: PASS against small, medium, current_repo datasets
219
+ - All 3 datasets scan, validate, and produce metrics
220
+
221
+ ## 0.3.1
222
+
223
+ ### DX-006 — AILang Package Manager
224
+
225
+ - **Manifest parser**: `ail.toml` parsing via `tomllib` with full validation (package name, semver, dependency format)
226
+ - **`ail init`**: Project initialization — creates `ail.toml`, `main.ail` stub, and `ail.lock`
227
+ - **Local package support**: `path=` dependencies resolved, copied to `lib/<name>/`, full transitive dependency support
228
+ - **Git package support**: `git=` dependencies shallow-cloned, tag/branch/rev checkout, transitive support
229
+ - **Dependency resolver**: Recursive resolution with topological sort and circular dependency detection
230
+ - **Lock file**: `ail.lock` with TOML format, versioned schema, `input_hash` staleness detection, fast replay
231
+ - **Checksum verification**: SHA-256 integrity hashing for all installed packages
232
+ - **Installation engine**: Full orchestration with `--no-lock`, `--offline`, `--frozen-lockfile` flags
233
+ - **Exit codes**: Per TOOLING_ARCHITECTURE.md conventions (0=success, 1=failure, 3=internal error)
234
+ - **Acceptance tests**: 8/8 tests passing covering init, parse, install, and lock file generation
235
+ - **Documentation**: PACKAGE_MANAGER_DESIGN.md approved, tool README created
236
+
237
+ ### M16 — Documentation Architecture Cleanup
238
+
239
+ - **ADR collision resolved**: Separate ADR files renumbered ADR-001/002/003 → ADR-010/011/012
240
+ - **Status duplication eliminated**: PROJECT_PHASE.md, ROADMAP.md, CURRENT_MILESTONE.md archived; DEVELOPMENT_STATUS.md now canonical
241
+ - **AI guidance consolidated**: MASTER_ENGINEERING_PROMPT.md, FOR_FUTURE_AI.md archived; AGENTS.md canonical
242
+ - **v0.1.0 sprint reports archived**: 21 files moved to `docs/archive/v0.1.0/`
243
+ - **`generated/` added to `.gitignore`**: 9 tracked generated files removed from git tracking
244
+ - **Documentation Ownership Matrix created**: 15 document types with canonical owners
245
+ - **Cross-references updated**: RELEASE_PROCESS.md, AI_MODEL_GUIDE.md, PROJECT_MEMORY.md
246
+
247
+ ## 0.1.0
248
+
249
+ ### Standard Library v1.0
250
+
251
+ - **json** — `parse(text)`, `stringify(value)` using Python `json` backend
252
+ - **csv** — `parse(text)`, `parse_header(text)`, `stringify(rows)` using Python `csv` backend
253
+ - **time** — `now()`, `timestamp()`, `sleep(ms)`, `format(ts)`
254
+ - **environment** — `get(name)`, `cwd()`, `args()`
255
+ - **random** — `int(min, max)`, `float()`, `choice(collection)`
256
+ - **file** — `exists(path)`, `read(path)`, `write(path, content)`, `append(path, content)`, `remove(path)`
257
+ - **path** — `join(a, b)`, `basename(path)`, `dirname(path)`, `extension(path)`, `normalize(path)`
258
+ - **collections** — `array`, `list`, `map`, `set` with `new`, `get`, `set`, `add`, `contains`, `remove`, `clear`, `keys`, `len`
259
+ - **string** — `concat`, `equals`, `uppercase`, `lowercase`, `length`, `contains`, `starts_with`, `ends_with`, `trim`
260
+ - **math** — `add`, `sub`, `mul`, `div`, `abs`, `min`, `max`
261
+ - **io** — `write`, `writeln`, `println`
262
+ - **convert** — `to_string`, `to_int`, `to_bool`, `to_number`
263
+ - **system** — `exit`
264
+
265
+ ### Performance, Memory & AI Validation (Phase 5B)
266
+
267
+ - **Stress tests**: 5000 LOC, 10000 LOC, 50 modules, 100 modules
268
+ - **Compile-time benchmarks**: 100/500/1000/5000 LOC with <60s thresholds
269
+ - **Memory benchmarks**: LOC-based with <500MB threshold at 5000 LOC
270
+ - **Determinism**: IR SHA-256 hash verification across 3 compiles
271
+ - **AI validation**: 23 programs generated from public docs, 100% first-pass success
272
+ - **Defect fix**: `convert.to_string` was a no-op; added `__native_to_string` builtin
273
+
274
+ ### Developer Ecosystem Foundation (Phase 6)
275
+
276
+ - **10 documentation guides** created: Installation, Getting Started, Language Tour, Stdlib Reference, Compiler Architecture, Contributor Guide, Testing Guide, Release Process, Roadmap, Documentation Index
277
+ - **README rewritten** with badges, quick start, full stdlib table, project status
278
+ - **CURRENT_MILESTONE.md** updated to reflect Phase 6 completion
279
+
280
+ ### Quality Gates
281
+
282
+ - 360 tests, all passing
283
+ - black, ruff, mypy all clean
284
+
285
+ ## 0.1.1
286
+
287
+ ### Documentation Consolidation (Phase 7)
288
+
289
+ - **Canonical specification**: Created `LANGUAGE_SPEC.md` at repository root — single source of truth (860 lines, 16 sections)
290
+ - **Fixed LANGUAGE_TOUR.md**: Corrected `else` keyword documentation, removed false "no reassignment" claim, removed wildcard import docs, removed `import "string"` path syntax, updated grammar section to reference canonical spec
291
+ - **Archived specifications**: Moved all 9 obsolete design specification files to `archived/specifications/` with ARCHIVED_README.md
292
+ - **Updated cross-references**: INDEX.md, CONTRIBUTING.md, PHASE_5B_REPORT.md, PHASE_6_REPORT.md, MASTER_ENGINEERING_PROMPT.md all now point to canonical spec
293
+ - **CLI improvements**: Fixed PHASE_6_REPORT.md to reference `ail` CLI instead of `python -m compiler`
294
+ - **All quality gates pass**: 374 tests (up from 360), black/ruff/mypy clean
295
+
296
+ ### Validation & Ecosystem Audit (Phase 8)
297
+
298
+ - **Documentation validation**: 144 code examples tested across 4 documents; all compile and run correctly
299
+ - **Standard Library validation**: All 16 modules tested with edge cases and invalid inputs
300
+ - **Application validation**: 5/5 large applications compile and execute (Expense Tracker, Inventory, Contact Manager, Banking Ledger, Student Management)
301
+ - **Stress validation**: 28/28 tests pass (large LOC, deep nesting, multi-module, determinism)
302
+ - **Benchmark validation**: 25/25 tests pass (determinism, compile time, memory, IR hash)
303
+ - **AI validation**: 23/23 AI-generated programs compile on first pass (100%)
304
+ - **Defect fixes**: Fixed AssertionError crash in AST builder, CLI crash on malformed input, invalid list literal in STDLIB_REFERENCE.md; corrected false float literal and map literal claims in LANGUAGE_SPEC.md
305
+ - **408 tests** (up from 374)
306
+
307
+ ### VS Code Extension (Phase 9)
308
+
309
+ - **Extension structure**: `extensions/vscode-ailang/` with `package.json`, TextMate grammar, snippets, language configuration
310
+ - **Syntax highlighting**: 15+ token categories (keywords, builtins, stdlib modules, strings, numbers, operators, comments, functions)
311
+ - **Language configuration**: Bracket matching, auto-closing pairs, auto-indentation, folding markers, comment toggling
312
+ - **9 snippets**: `main`, `fn`, `if`, `ifelse`, `import`, `return`, `recur`, `let`, `comment`
313
+ - **Validation**: 12 test `.ail` files covering all syntax features
314
+
315
+ ### Official Formatter (Phase 10)
316
+
317
+ - **`ail fmt` command**: Format files in-place, `--check` for CI, `--stdin` for pipelines
318
+ - **Single canonical style**: 4-space indentation, same-line braces, spaces around operators, preserved comments
319
+ - **Deterministic and idempotent**: Formatting is stable across multiple runs
320
+ - **27 formatter tests** + 7 CLI tests
321
+ - **Operator precedence parenthesization**: Automatic for correct precedence rendering
322
+
323
+ ### Dogfooding & Real-World Validation (Phase 11)
324
+
325
+ - **56 AILang applications**: 27 in `apps/`, 29 in `phase11/` — all compile and run
326
+ - **Stdlib addition**: `string.substring(value, start, end)` added
327
+ - **`env_args` fix**: Now returns user args only (strips CLI plumbing)
328
+ - **23 phase11 apps fixed**: Arg index bugs corrected for new `env_args` contract
329
+ - **6 new apps built**: find, payroll, library_mgmt, a_star, expr_eval, markdown_parser
330
+ - **Linter de-chaining**: Fixed chained member-access-on-call patterns in linter
331
+ - **Language freeze declared**: v0.1.x specification frozen — no new keywords, grammar, or syntax changes
332
+
333
+ ### Governance & Philosophy (Phase 11/12)
334
+
335
+ - **`GOVERNANCE.md`**: Formal proposal process, evidence bars, review process, versioning, backward compatibility, rejected-forever list, freeze policy
336
+ - **`LANGUAGE_EVOLUTION.md`**: Permanent record of all 28 feature requests with dispositions
337
+ - **`PROJECT_CONSTITUTION.md`**: Immutable rules for development
338
+ - **`VISION_AND_DIFFERENTIATION.md`**: Evidence-driven vision, engineering hypothesis, differentiation strategy
339
+
340
+ ### Public Release Preparation (Phase 12)
341
+
342
+ - **Repository audit**: Removed 9 obsolete/temporary artifacts
343
+ - **GitHub readiness**: LICENSE (MIT), SECURITY.md, CODE_OF_CONDUCT.md, SUPPORT.md, issue templates, PR template
344
+ - **`RELEASE_CHECKLIST.md`**: Formal release checklist for v0.1.1
345
+ - **Documentation audit**: All docs reviewed for broken links, stale examples, version consistency
346
+ - **Example validation**: All examples build, run, and produce documented output
347
+ - **Installation validation**: Verified from clean environment on Windows
348
+ - **VS Code extension**: Verified installation, highlighting, snippets
349
+ - **CI/CD**: All workflows verified
350
+
351
+ ### RC1 Fixes
352
+
353
+ - **`system.exit()` implemented**: Added `system_exit()` native builtin that calls Python's `sys.exit(code)` to properly terminate the process
354
+ - **`string.substring` documented**: Added to STDLIB_REFERENCE.md and stdlib tables in README.md and LANGUAGE_SPEC.md
355
+ - **Documentation synchronized**: Updated LANGUAGE_TOUR.md to include string module examples and substring workaround
356
+ - **Error code constants**: Centralized PAR001, PAR002, PAR003, LEX001, LEX002, LEX003 constants in diagnostics.py
357
+ - **Test count corrected**: Updated README.md to show 507 passing tests
358
+
359
+ ## 0.3.0
360
+
361
+ ### Developer Experience
362
+
363
+ - **DX-004 — Benchmark Runner** completed and accepted (auto-discovery, suite modes, configurable repetition, baseline save/compare, regression detection, CI-friendly exit codes, fault-tolerant execution)
364
+ - **DX-005 — Test Generator** completed and accepted (auto-discovery, coverage analysis, three-stage pipeline, intermediate TestCase model, pure Python generators, `--force`/`--dry-run`/`--app` flags, `tests/generated/` separation, dual MD+JSON reports)
365
+ - **tools/common/ — extensions**: Added `hashing.py` (SHA-256 file hashing), `discover_apps()`, `list_py_files()`; `run_ail_build()`/`run_ail_run()` already present
366
+
367
+ ### Quality Gates
368
+
369
+ - **772 tests**, all passing (up from 658)
370
+ - DX-004 (ail benchmark): PASS — 11 acceptance + 4 regression + 4 AI validation
371
+ - DX-005 (ail testgen): PASS — 9 acceptance + 4 regression + 4 AI validation
372
+
373
+ ## 0.2.1
374
+
375
+ ### Static Analyzer Performance Optimization
376
+
377
+ - **Replaced 4-pass scan** with single `scan_lines` pass, eliminating redundant function-end detection
378
+ - **Replaced character-by-character** `scan_line_calls_inner` with `collect_calls_inner` using `find_substring` builtin
379
+ - **Replaced `count_calls_file`** (character-by-character scan of all lines) with `build_calls_from_cache` (derives call statistics from per-function cache)
380
+ - **Result:** 3× speedup on hotel_management (252s → 84s), 3× on self-analysis (71s → 24s); self-analysis and large-file analysis now complete (previously never finished)
381
+
382
+ ### Standard Library Additions (ADR-003)
383
+
384
+ - **`string.find(value, needle)`** — substring search, returns position index or -1
385
+ - **`string.find_from(value, needle, start_pos)`** — substring search with start offset
386
+ - **`string.split(value, delim)`** — split string into list by delimiter
387
+ - Evidence: 8+ independent reimplementations across the app ecosystem satisfied ADR-008 threshold
388
+
389
+ ### Documentation
390
+
391
+ - **ADR-003** — Decision record for `string.find`/`string.split` stdlib additions
392
+ - **v0.2.1 Release Validation Report** — formal checkpoint with 658 tests, benchmark validation, DX acceptance, before/after performance
393
+ - **PROJECT_PHASE.md** — documents Platform & Developer Experience Engineering phase
394
+ - **PROJECT_CONTEXT.md** regenerated — reflects new stdlib APIs, updated version and test counts
395
+
396
+ ### Quality Gates
397
+
398
+ - **658 tests**, all passing (up from 624)
399
+ - DX-001 (ail context): PASS — 8 acceptance tests, AI validation
400
+ - DX-002 (ail doctor): PASS — 9 acceptance tests
401
+ - DX-003 (ail static_analyzer): PASS — 8/8 acceptance tests (directory analysis timeout resolved with configurable `--timeout`)
402
+
403
+ ## 0.2.0
404
+
405
+ ### DX Tool #001 — ail context Developer Experience Tool
406
+
407
+ - **Standalone tool**: `tools/ail_context/` generates `generated/PROJECT_CONTEXT.md` for AI consumption
408
+ - **Single-file context**: All project knowledge consolidated into one LLM-optimized document (~6.5KB)
409
+ - **15 sections**: Project overview, philosophy, architecture, constraints, milestone, ADRs, stdlib, benchmarks, testing, frozen components
410
+ - **Acceptance tested**: 9 functional tests, 6 performance tests, 6 content validation tests, 3 AI validation tests
411
+ - **Zero changes**: No modifications to compiler, runtime, or language specification
412
+
413
+ ### Runtime Optimization #001 — Lexical Variable Lookup Cache
414
+
415
+ - **`Environment.resolve()`** now caches binding locations per-environment in `_resolve_cache: dict[str, Environment]`, eliminating recursive chain walks on repeated variable lookups
416
+ - **~6× speedup** on the static analyzer benchmark (373s → 19.5s, the primary bottleneck workload identified by Python profiling)
417
+ - **52–64% cache hit rate** across all 5 benchmark apps (dice_roller, hangman_game, inventory_mgmt, kanban, static_analyzer)
418
+ - **Negative caching removed**: initial design cached `NameError` sentinels, but `assign` can create new bindings in ancestor environments, making negative entries stale. Only positive results are cached
419
+ - **`get_cache_info()` introspection** added to `Environment` and `Runtime` for testing
420
+ - **`_CacheStats` instrumentation** added to `Environment` (hits/misses/negative_hits counters) — no semantic effect, used exclusively for profiling
421
+ - **102 regression tests** in `tests/test_scope_cache.py` covering basic resolution, shadowing, recursion, reassignment, modules, edge cases, cache introspection, stress, and correctness invariants
422
+ - **624 tests total** (522 existing + 102 new), all passing
423
+ - **Memory overhead**: ~11 KB for the static analyzer workload (98 cache entries across 18 environments)
424
+ - **No semantic changes** — all existing AILang programs remain fully compatible
425
+ - **Runtime frozen** after this release. No further optimizations planned until community feedback identifies new bottlenecks
426
+
427
+ ## 0.1.2
428
+
429
+ ### Compiler QA — Bug Fix Sprint #001
430
+
431
+ - **BUG-001 fixed**: Empty `return;` no longer crashes with `AssertionError` — produces "Return statement requires an expression" diagnostic instead
432
+ - **BUG-002 fixed**: Missing initializer `let x = ;` no longer crashes with `AssertionError` — produces "Variable declaration requires an initializer expression" diagnostic instead
433
+ - **BUG-003 fixed**: Module name resolution for bare identifiers (`map.set` as a value, not just in call position)
434
+ - `_resolve_name` now checks `self._modules` for bare module names before falling through to `NameError`
435
+ - Module functions are now registered in module environments at initialization time
436
+ - **BUG-004 fixed**: Float literal `3.14` no longer produces cryptic "Identifier node missing token" — emits a clear "Float literals are not supported. Use integer division, e.g. 22 / 7" diagnostic at the lexer level (LEX004)
437
+ - **Regression tests added**: `test_ast_rejects_empty_return`, `test_ast_rejects_missing_initializer` in `test_ast_builder.py`; `test_regression_module_function_as_value` in `test_validation.py`; `test_lexer_rejects_float_literal` in `test_lexer.py`
438
+ - **BUG-005 fixed**: Block-level variable shadowing now works — `_execute_block` creates a new `StackFrame` for each block scope, so `let x` inside an `if`/`else` block properly scopes to that block instead of leaking to the enclosing function
439
+ - **BUG-006 fixed**: Deep recursion `count(1000)` no longer crashes — `Runtime.__init__` raises Python's recursion limit from 1000 to 10000 to accommodate AILang function call overhead
440
+
441
+ ### Quality Gates
442
+
443
+ - **522 tests**, all passing (up from 521)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AILang Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ include LICENSE
2
+ include README.md
3
+ include CHANGELOG.md
4
+ recursive-include stdlib *.ail
5
+ recursive-include examples *.ail