codecin 5.9.0__tar.gz → 6.0.0__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 (220) hide show
  1. {codecin-5.9.0 → codecin-6.0.0}/CHANGELOG.md +50 -0
  2. {codecin-5.9.0/codecin.egg-info → codecin-6.0.0}/PKG-INFO +106 -22
  3. {codecin-5.9.0 → codecin-6.0.0}/README.md +105 -21
  4. {codecin-5.9.0 → codecin-6.0.0}/codecin/__init__.py +1 -1
  5. codecin-6.0.0/codecin/aot.py +1026 -0
  6. {codecin-5.9.0 → codecin-6.0.0}/codecin/assembler.py +75 -4
  7. {codecin-5.9.0 → codecin-6.0.0}/codecin/cin.py +128 -25
  8. {codecin-5.9.0 → codecin-6.0.0}/codecin/cli.py +135 -8
  9. {codecin-5.9.0 → codecin-6.0.0}/codecin/config.py +2 -0
  10. {codecin-5.9.0 → codecin-6.0.0}/codecin/cpu.py +20 -1
  11. codecin-6.0.0/codecin/native/engine/native.go +634 -0
  12. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/version_gen.go +1 -1
  13. codecin-6.0.0/codecin/native_codegen.py +986 -0
  14. codecin-6.0.0/codecin/object.py +539 -0
  15. codecin-6.0.0/codecin/optimizer.py +236 -0
  16. {codecin-5.9.0 → codecin-6.0.0/codecin.egg-info}/PKG-INFO +106 -22
  17. {codecin-5.9.0 → codecin-6.0.0}/codecin.egg-info/SOURCES.txt +6 -0
  18. {codecin-5.9.0 → codecin-6.0.0}/tests/test_aot.py +109 -0
  19. codecin-6.0.0/tests/test_cli.py +221 -0
  20. codecin-6.0.0/tests/test_native_codegen.py +206 -0
  21. codecin-6.0.0/tests/test_object_link.py +322 -0
  22. {codecin-5.9.0 → codecin-6.0.0}/tests/test_version.py +5 -2
  23. codecin-5.9.0/codecin/aot.py +0 -499
  24. codecin-5.9.0/tests/test_cli.py +0 -82
  25. {codecin-5.9.0 → codecin-6.0.0}/LICENSE +0 -0
  26. {codecin-5.9.0 → codecin-6.0.0}/MANIFEST.in +0 -0
  27. {codecin-5.9.0 → codecin-6.0.0}/codecin/console.py +0 -0
  28. {codecin-5.9.0 → codecin-6.0.0}/codecin/crom.py +0 -0
  29. {codecin-5.9.0 → codecin-6.0.0}/codecin/disasm.py +0 -0
  30. {codecin-5.9.0 → codecin-6.0.0}/codecin/environment.py +0 -0
  31. {codecin-5.9.0 → codecin-6.0.0}/codecin/errors.py +0 -0
  32. {codecin-5.9.0 → codecin-6.0.0}/codecin/isa.py +0 -0
  33. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/array.cin +0 -0
  34. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/bigint.cin +0 -0
  35. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/bits.cin +0 -0
  36. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/bitset.cin +0 -0
  37. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/codec.cin +0 -0
  38. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/combin.cin +0 -0
  39. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/conv.cin +0 -0
  40. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/cppstd.cin +0 -0
  41. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/cstd.cin +0 -0
  42. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/csv.cin +0 -0
  43. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/dp.cin +0 -0
  44. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/ffi.cin +0 -0
  45. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/fmt.cin +0 -0
  46. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/frac.cin +0 -0
  47. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/gostd.cin +0 -0
  48. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/graph.cin +0 -0
  49. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/gui.cin +0 -0
  50. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/hash.cin +0 -0
  51. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/heap.cin +0 -0
  52. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/io.cin +0 -0
  53. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/json.cin +0 -0
  54. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/key.cin +0 -0
  55. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/math.cin +0 -0
  56. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/matrix.cin +0 -0
  57. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/net.cin +0 -0
  58. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/path.cin +0 -0
  59. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/queue.cin +0 -0
  60. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/rand.cin +0 -0
  61. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/set.cin +0 -0
  62. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/sort.cin +0 -0
  63. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/stat.cin +0 -0
  64. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/str.cin +0 -0
  65. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/termux.cin +0 -0
  66. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/test.cin +0 -0
  67. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/text.cin +0 -0
  68. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/time.cin +0 -0
  69. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/token.cin +0 -0
  70. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/tree.cin +0 -0
  71. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/unionfind.cin +0 -0
  72. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/validate.cin +0 -0
  73. {codecin-5.9.0 → codecin-6.0.0}/codecin/lib/vec.cin +0 -0
  74. {codecin-5.9.0 → codecin-6.0.0}/codecin/logger.py +0 -0
  75. {codecin-5.9.0 → codecin-6.0.0}/codecin/memory.py +0 -0
  76. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/aot/aot.go +0 -0
  77. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/aot/stub_main.go.txt +0 -0
  78. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/build.ps1 +0 -0
  79. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/build.sh +0 -0
  80. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/compiler/codegen.go +0 -0
  81. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/compiler/compile_test.go +0 -0
  82. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/compiler/parser.go +0 -0
  83. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/compiler/syscalls.go +0 -0
  84. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/compiler/tokenizer.go +0 -0
  85. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/compiler/types.go +0 -0
  86. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/args.go +0 -0
  87. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/audio.go +0 -0
  88. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/audio_other.go +0 -0
  89. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/audio_test.go +0 -0
  90. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/audio_windows.go +0 -0
  91. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/canvas.go +0 -0
  92. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/console_other.go +0 -0
  93. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/console_windows.go +0 -0
  94. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/crom.go +0 -0
  95. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/encode.go +0 -0
  96. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/engine_test.go +0 -0
  97. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/ffi_nocgo.go +0 -0
  98. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/ffi_registry.go +0 -0
  99. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/ffi_unix.go +0 -0
  100. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/ffi_windows.go +0 -0
  101. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/gui.go +0 -0
  102. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/gui_stub.go +0 -0
  103. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/gui_test.go +0 -0
  104. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/gui_windows.go +0 -0
  105. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/gui_x11.go +0 -0
  106. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/host_test.go +0 -0
  107. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/hostcrypto.go +0 -0
  108. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/hostdesktop.go +0 -0
  109. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/hostnet.go +0 -0
  110. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/isa_gen.go +0 -0
  111. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard.go +0 -0
  112. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_other.go +0 -0
  113. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_stub.go +0 -0
  114. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_termios_darwin.go +0 -0
  115. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_termios_linux.go +0 -0
  116. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_test.go +0 -0
  117. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_windows.go +0 -0
  118. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/keyboard_windows_test.go +0 -0
  119. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/mem_other.go +0 -0
  120. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/mem_windows.go +0 -0
  121. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/netsock.go +0 -0
  122. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/ops_ext.go +0 -0
  123. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/stdin.go +0 -0
  124. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/stdin_other.go +0 -0
  125. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/stdin_windows.go +0 -0
  126. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/system.go +0 -0
  127. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/termux.go +0 -0
  128. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/engine/vm.go +0 -0
  129. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/go.mod +0 -0
  130. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/ir/ir.go +0 -0
  131. {codecin-5.9.0 → codecin-6.0.0}/codecin/native/main.go +0 -0
  132. {codecin-5.9.0 → codecin-6.0.0}/codecin/native.py +0 -0
  133. {codecin-5.9.0 → codecin-6.0.0}/codecin/registers.py +0 -0
  134. {codecin-5.9.0 → codecin-6.0.0}/codecin/stats.py +0 -0
  135. {codecin-5.9.0 → codecin-6.0.0}/codecin/stdlib.py +0 -0
  136. {codecin-5.9.0 → codecin-6.0.0}/codecin/version.py +0 -0
  137. {codecin-5.9.0 → codecin-6.0.0}/codecin.egg-info/dependency_links.txt +0 -0
  138. {codecin-5.9.0 → codecin-6.0.0}/codecin.egg-info/entry_points.txt +0 -0
  139. {codecin-5.9.0 → codecin-6.0.0}/codecin.egg-info/requires.txt +0 -0
  140. {codecin-5.9.0 → codecin-6.0.0}/codecin.egg-info/top_level.txt +0 -0
  141. {codecin-5.9.0 → codecin-6.0.0}/examples/args_demo.cin +0 -0
  142. {codecin-5.9.0 → codecin-6.0.0}/examples/asm_constants.asm +0 -0
  143. {codecin-5.9.0 → codecin-6.0.0}/examples/bitwise_builtins.cin +0 -0
  144. {codecin-5.9.0 → codecin-6.0.0}/examples/control_flow.cin +0 -0
  145. {codecin-5.9.0 → codecin-6.0.0}/examples/enum_range_for.cin +0 -0
  146. {codecin-5.9.0 → codecin-6.0.0}/examples/gui_demo.cin +0 -0
  147. {codecin-5.9.0 → codecin-6.0.0}/examples/literals_types.cin +0 -0
  148. {codecin-5.9.0 → codecin-6.0.0}/examples/local_audio.cin +0 -0
  149. {codecin-5.9.0 → codecin-6.0.0}/examples/modules_demo.cin +0 -0
  150. {codecin-5.9.0 → codecin-6.0.0}/examples/stdlib_demo.cin +0 -0
  151. {codecin-5.9.0 → codecin-6.0.0}/examples/system_interaction.cin +0 -0
  152. {codecin-5.9.0 → codecin-6.0.0}/misc/vim/ftdetect/codecin.vim +0 -0
  153. {codecin-5.9.0 → codecin-6.0.0}/misc/vim/syntax/cin.vim +0 -0
  154. {codecin-5.9.0 → codecin-6.0.0}/misc/vim/syntax/codecinasm.vim +0 -0
  155. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/.vscodeignore +0 -0
  156. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/README.md +0 -0
  157. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/build.bat +0 -0
  158. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/language-configuration.json +0 -0
  159. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/package.json +0 -0
  160. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/snippets/cin.json +0 -0
  161. {codecin-5.9.0 → codecin-6.0.0}/misc/vscode-cin/syntaxes/cin.tmLanguage.json +0 -0
  162. {codecin-5.9.0 → codecin-6.0.0}/pyproject.toml +0 -0
  163. {codecin-5.9.0 → codecin-6.0.0}/script/bump_version.py +0 -0
  164. {codecin-5.9.0 → codecin-6.0.0}/script/check_paths.py +0 -0
  165. {codecin-5.9.0 → codecin-6.0.0}/script/gen_isa_docs.py +0 -0
  166. {codecin-5.9.0 → codecin-6.0.0}/script/gen_native_isa.py +0 -0
  167. {codecin-5.9.0 → codecin-6.0.0}/setup.cfg +0 -0
  168. {codecin-5.9.0 → codecin-6.0.0}/setup.py +0 -0
  169. {codecin-5.9.0 → codecin-6.0.0}/tests/test_aggregate_and_const.py +0 -0
  170. {codecin-5.9.0 → codecin-6.0.0}/tests/test_all_libs_together.py +0 -0
  171. {codecin-5.9.0 → codecin-6.0.0}/tests/test_assembler_ext.py +0 -0
  172. {codecin-5.9.0 → codecin-6.0.0}/tests/test_cin_host.py +0 -0
  173. {codecin-5.9.0 → codecin-6.0.0}/tests/test_cin_host_ext.py +0 -0
  174. {codecin-5.9.0 → codecin-6.0.0}/tests/test_cin_new_features.py +0 -0
  175. {codecin-5.9.0 → codecin-6.0.0}/tests/test_cin_syntax.py +0 -0
  176. {codecin-5.9.0 → codecin-6.0.0}/tests/test_cin_syntax_ext.py +0 -0
  177. {codecin-5.9.0 → codecin-6.0.0}/tests/test_cin_system.py +0 -0
  178. {codecin-5.9.0 → codecin-6.0.0}/tests/test_compiler_errors.py +0 -0
  179. {codecin-5.9.0 → codecin-6.0.0}/tests/test_environment.py +0 -0
  180. {codecin-5.9.0 → codecin-6.0.0}/tests/test_examples.py +0 -0
  181. {codecin-5.9.0 → codecin-6.0.0}/tests/test_features_ab.py +0 -0
  182. {codecin-5.9.0 → codecin-6.0.0}/tests/test_features_import.py +0 -0
  183. {codecin-5.9.0 → codecin-6.0.0}/tests/test_features_importloc.py +0 -0
  184. {codecin-5.9.0 → codecin-6.0.0}/tests/test_ffi_net.py +0 -0
  185. {codecin-5.9.0 → codecin-6.0.0}/tests/test_gui.py +0 -0
  186. {codecin-5.9.0 → codecin-6.0.0}/tests/test_index_subscript_type.py +0 -0
  187. {codecin-5.9.0 → codecin-6.0.0}/tests/test_isa_single_source.py +0 -0
  188. {codecin-5.9.0 → codecin-6.0.0}/tests/test_issue_regress.py +0 -0
  189. {codecin-5.9.0 → codecin-6.0.0}/tests/test_keyboard.py +0 -0
  190. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_bigint.py +0 -0
  191. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_bitset.py +0 -0
  192. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_codec.py +0 -0
  193. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_combin.py +0 -0
  194. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_compat.py +0 -0
  195. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_csv.py +0 -0
  196. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_dp.py +0 -0
  197. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_fmt.py +0 -0
  198. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_frac.py +0 -0
  199. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_graph.py +0 -0
  200. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_heap.py +0 -0
  201. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_path.py +0 -0
  202. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_set.py +0 -0
  203. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_text.py +0 -0
  204. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_token.py +0 -0
  205. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_tree.py +0 -0
  206. {codecin-5.9.0 → codecin-6.0.0}/tests/test_lib_unionfind.py +0 -0
  207. {codecin-5.9.0 → codecin-6.0.0}/tests/test_libs.py +0 -0
  208. {codecin-5.9.0 → codecin-6.0.0}/tests/test_libs_ext.py +0 -0
  209. {codecin-5.9.0 → codecin-6.0.0}/tests/test_literals_and_bom.py +0 -0
  210. {codecin-5.9.0 → codecin-6.0.0}/tests/test_native_hardening.py +0 -0
  211. {codecin-5.9.0 → codecin-6.0.0}/tests/test_native_lib_lookup.py +0 -0
  212. {codecin-5.9.0 → codecin-6.0.0}/tests/test_nested_subscript_codegen.py +0 -0
  213. {codecin-5.9.0 → codecin-6.0.0}/tests/test_no_go_cli.py +0 -0
  214. {codecin-5.9.0 → codecin-6.0.0}/tests/test_p0_fixes.py +0 -0
  215. {codecin-5.9.0 → codecin-6.0.0}/tests/test_packaging.py +0 -0
  216. {codecin-5.9.0 → codecin-6.0.0}/tests/test_paths_consistency.py +0 -0
  217. {codecin-5.9.0 → codecin-6.0.0}/tests/test_sparse_memory.py +0 -0
  218. {codecin-5.9.0 → codecin-6.0.0}/tests/test_struct_value_semantics.py +0 -0
  219. {codecin-5.9.0 → codecin-6.0.0}/tests/test_switch_semantics.py +0 -0
  220. {codecin-5.9.0 → codecin-6.0.0}/tests/test_workflows.py +0 -0
@@ -5,6 +5,56 @@
5
5
 
6
6
  ---
7
7
 
8
+ ## [6.0.0] - 2026-10-17
9
+
10
+ ### 新增 (Added)
11
+
12
+ - **恢复 `--debug` 调试模式**(native-only 架构下的等价能力):强制 `DEBUG`
13
+ 日志(优先于 `--log-level`)、执行结束输出寄存器/向量现场与执行统计表、
14
+ 未预期异常打印 rich 完整堆栈;`Config.debug_mode` 配置项同步回归。
15
+ - **native AOT 后端(第一阶段)**:新增 `--build-backend auto|native|vm`,默认
16
+ `auto` 在指令数 ≤ 20000 时走 `native`,把指令流直接展开为 Go 语句,核心
17
+ 整数/控制流/内存/SYS 指令不再经过 UCBC 解码与 opcode dispatch,由 Go 编译器
18
+ 产出 x86-64/ARM64 机器码;大程序自动回退 VM,避免大量指令让 `go build`
19
+ 极慢。ARM64/RISC-V 扩展整数、FP 与 Vector 指令也已直接降级;仅动态控制流/
20
+ 无法静态求值的操作数保留受控单指令回退。
21
+ - **大程序 native 基本块拆分**:超过 800 条指令自动按跳转目标/返回点切分
22
+ 为多个 Go 函数,避免单个函数过大导致 `go build` 极慢;`basic.cin`
23
+ (约 4500 条指令)现在可直接走 native 并产出与 VM 一致的输出。
24
+ - **AOT 支持 ASM/PL/BIN 输入**:`--build-exe` 不再只接受 `.cin`;汇编器/
25
+ `crom.load_bin` 装载的指令流同样可走 native 或 VM 后端并生成静态可执行文件。
26
+ - **AOT 增量构建缓存**:按源文件/import 闭包、目标平台、后端、优化级别、
27
+ 内存/步数以及 Python/Go 工具链指纹缓存产物;命中时跳过 `go build`,
28
+ `--no-build-cache` 可禁用,`CODECIN_AOT_CACHE` 可指定缓存目录。
29
+ 对象/归档链接同样按输入对象内容与链接选项缓存。
30
+ - **AOT 调试构建**:`--build-debug` 跳过 `-s -w`,保留 Go 符号表/DWARF,
31
+ 产物仍为独立静态可执行文件。
32
+ - **独立编译/链接 (CIN/ASM/PL)**:`--emit-object` 生成可重定位 `.co` 对象
33
+ (保留未解析标签、代码/数据符号、内存段),`--link` 合并多个对象、
34
+ 分配代码/数据基址并解析跨对象符号;链接结果可直接走 native/VM AOT,
35
+ 并支持链接期 `--optimize 0-3`。重定位覆盖 `NAME±N` 与
36
+ `DW/DD/DQ label` 数据指针。CIN 新增 `extern function` / `extern` 全局
37
+ 声明:无 `main` 的 CIN 文件可作为函数库对象参与链接,库内字符串/标量
38
+ 全局/struct 指针槽会按对象数据基址重定位。
39
+ - **`.colib` 静态库归档**:`--emit-archive` 把多个对象打包,`--link`
40
+ 按未定义符号只拉取需要的归档成员 (C 风格静态库语义)。
41
+ - **源文件直接链接**:`--link` 可直接接受 `.cin/.asm/.pl`,即时编译为
42
+ 对象后链接,省去显式 `--emit-object` 步骤。
43
+ - **链接期代码段 GC**:`--gc-sections` 从入口做保守控制流可达性分析,
44
+ 删除未调用的函数/桩;遇到动态 CALL/JMP 或代码指针时自动放弃以避免误删。
45
+ - **真实可用的 `--optimize 0-3`**:新增 IR 优化器(窥孔、常量折叠、不可达
46
+ 代码删除),同时作用于 VM 执行路径、`--compile` 与 native AOT;
47
+ 标签/入口在删除指令后自动重映射。
48
+ - 新增 `NativeRuntime`(Go 引擎侧)与 `native_codegen`/`optimizer`(Python
49
+ 侧),并补充 native AOT、优化器、交叉编译测试。
50
+
51
+ ### 修复 (Fixed)
52
+
53
+ - native 后端 `ASR rd, rn, shift` 三操作数形式被误当成两操作数 Base 形式,
54
+ 导致算术右移与复合赋值结果错误。
55
+
56
+ ---
57
+
8
58
  ## [5.9.0] - 2026-10-05
9
59
 
10
60
  一次「单引擎 + 大内存 + 系统能力」的架构发布:**纯 Python 解释器与 JIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codecin
3
- Version: 5.9.0
3
+ Version: 6.0.0
4
4
  Summary: Code CIN - 高级语言与运行时 (CIN/PL/ASM 工具链 + Go 原生 VM + ARM64/RISC-V/FP/Vector 指令集)
5
5
  Author: ByUsi Studio, 北啊呢
6
6
  License-Expression: MIT
@@ -32,7 +32,7 @@ Code CIN 是一门简洁的类 C 高级语言及其跨平台运行时(VM)。
32
32
 
33
33
  **已完成 Go 优先(v5.9.0)**:Go 是语言实现的核心(`codecin/native/` 下的 CIN 编译器、字节码 VM、CROM),**Go 侧不提供任何 CLI 入口**;Python 只作为唯一 CLI 外壳。支持 CIN/PL/ASM 三语言、ARM64 与 RISC-V 指令集扩展、默认 1 GiB 稀疏分页内存、FFI 与完整网络系统调用、性能分析。
34
34
 
35
- 模块化包结构(`codecin/`,Go 侧 `codecin/native/`),全线日志与错误输出基于 **rich**(彩色表格、面板、traceback),`--log-level DEBUG` 提供超详细追踪。
35
+ 模块化包结构(`codecin/`,Go 侧 `codecin/native/`),全线日志与错误输出基于 **rich**(彩色表格、面板、traceback),`--debug` / `--log-level DEBUG` 提供超详细诊断。
36
36
 
37
37
  ## 文档
38
38
 
@@ -137,10 +137,10 @@ graph LR
137
137
  | Go原生库 | c-shared (必需) | 整程序 VM 加速, 缺失时报 CPUSimulatorError 提示重建 |
138
138
  | FFI | SYS 140-144 | ffi_load/ffi_find/ffi_call/ffi_callf/lib_close, 标准 `lib/ffi.cin` |
139
139
  | 网络 | SYS 145-157 | HTTP/TCP/UDP/DNS, 标准 `lib/net.cin` |
140
- | 日志系统 | rich | 彩色日志/表格/面板/traceback, --log-level DEBUG 超详细追踪 |
140
+ | 日志系统 | rich | 彩色日志/表格/面板/traceback, --debug / --log-level DEBUG 超详细诊断 |
141
141
  | 性能分析 | 指令级 | CPI + 内存统计 + 热指令 |
142
142
  | CROM压缩 | zlib | 段式格式 (v4), 只保存已分配页 (Go/Python双实现) |
143
- | AOT 静态编译 | 独立可执行 | 编译为 Windows/Linux/macOS 静态可执行文件, 不需 Python/Go/动态库 |
143
+ | AOT 静态编译 | 独立可执行 | native 后端直接生成机器码 (VM 后端兼容), Windows/Linux/macOS 静态可执行 |
144
144
 
145
145
  ---
146
146
 
@@ -455,18 +455,79 @@ v5.9.0 起**只有一条执行路径**: Python 完成 CIN/PL/ASM 编译后, 通
455
455
 
456
456
  ### 编译成独立可执行文件 (AOT)
457
457
 
458
- 把 CIN 程序编译成**静态链接的独立可执行文件** —— 产物内嵌字节码与初始内存镜像,
459
- 由内置 Go VM 执行, 运行时**不需要 Python、Go 工具链、libc 或任何动态库**。
460
- 构建时会解析 `import` 闭包做依赖完整性检查, 并把**全部依赖库在编译期展开嵌入产物**
461
- (产物不读取任何 `.cin` 文件):
458
+ 把 CIN/ASM/PL/BIN/CO 程序编译成**静态链接的独立可执行文件** —— 运行时**不需要
459
+ Python、Go 工具链、libc 或任何动态库**。CIN 构建时会解析 `import` 闭包做依赖
460
+ 完整性检查, 并把**全部依赖库在编译期展开嵌入产物** (产物不读取任何 `.cin` 文件)。
461
+
462
+ 默认使用 **auto 后端**: 指令数不超过 20000 时走 **native** (把编译后的指令流
463
+ 直接生成 Go 源码, 核心整数/控制流/内存/SYS 指令不再经过 UCBC 解码与 opcode
464
+ dispatch, 由 Go 编译器产出目标平台机器码); 超过阈值自动回退 **VM** (内嵌 UCBC
465
+ 字节码), 避免大量指令展开导致 `go build` 极慢。`--build-backend auto|native|vm`
466
+ 可强制指定。超过 800 条指令的 native 程序会自动按基本块拆分成多个 Go
467
+ 函数,进一步控制编译时间。
462
468
 
463
469
  ```bash
464
- # 本机平台
470
+ # 本机平台 (auto: 小程序 native, 大程序 VM)
465
471
  codecin program.cin --build-exe program # Windows 自动补 .exe
466
472
 
467
- # 交叉编译 (只需要安装 Go 工具链)
473
+ # 交叉编译 (只需要安装 Go 工具链; native/vm 后端都支持)
468
474
  codecin program.cin --build-exe app-linux --build-target linux/amd64
469
475
  codecin program.cin --build-exe app-mac --build-target darwin/arm64
476
+
477
+ # 强制某个后端 + 优化级别
478
+ codecin program.cin --build-exe app-native --build-backend native --optimize 2
479
+ codecin program.cin --build-exe app-vm --build-backend vm --optimize 2
480
+
481
+ # 独立编译 + 链接 (ASM/PL): 每个对象单独汇编, 再由链接器合并
482
+ codecin --emit-object main.asm -o main.co
483
+ codecin --emit-object lib.asm -o lib.co
484
+ codecin --link main.co --link lib.co -o app --optimize 3
485
+
486
+ # 也可以直接把源文件交给链接器 (即时编译为对象)
487
+ codecin --link main.cin --link lib.cin -o app
488
+
489
+ # CIN 库对象: 无 main 的文件作为函数库, 主文件用 extern 声明跨对象函数
490
+ codecin --emit-object lib.cin -o lib.co
491
+ codecin --emit-object main.cin -o main.co
492
+ codecin --link main.co --link lib.co -o app
493
+ ```
494
+
495
+ 静态库归档:
496
+
497
+ ```bash
498
+ codecin --emit-archive --link lib.co --link lib2.co -o lib.colib
499
+ codecin --link main.co --link lib.colib -o app
500
+ codecin --link main.co --link lib.colib -o app-gc --gc-sections
501
+ ```
502
+
503
+ 链接器按 C 风格静态库语义,只拉取能解决当前未定义符号的成员。
504
+
505
+ CIN 示例:
506
+
507
+ ```cin
508
+ // lib.cin
509
+ function helper() -> int {
510
+ return 7
511
+ }
512
+
513
+ // main.cin
514
+ extern function helper() -> int
515
+
516
+ function main() -> int {
517
+ println(int_to_str(helper()))
518
+ return 0
519
+ }
520
+ ```
521
+
522
+ 跨对象全局变量同样用 `extern` 声明:
523
+
524
+ ```cin
525
+ // lib.cin
526
+ int counter = 5
527
+
528
+ // main.cin
529
+ extern int counter
530
+ extern function bump()
470
531
  ```
471
532
 
472
533
  | 目标 | 说明 |
@@ -475,10 +536,15 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
475
536
  | `linux/amd64` `linux/arm64` | ELF, **无 PT_INTERP**, 不依赖 glibc |
476
537
  | `darwin/amd64` `darwin/arm64` | Mach-O, 静态 |
477
538
 
478
- 常见选项: `--build-target OS/ARCH`、`--build-keep-temp` (保留 `go build` 临时目录排错)。
539
+ 常见选项: `--build-target OS/ARCH`、`--build-backend auto|native|vm`、
540
+ `--optimize 0-3`、`--no-build-cache`、`--build-debug`、`--build-keep-temp`
541
+ (保留 `go build` 临时目录排错)。AOT 默认启用增量缓存 (源/依赖/工具链指纹命中时
542
+ 直接复用产物), 缓存目录可用 `CODECIN_AOT_CACHE` 覆盖。
543
+ `--optimize` 作用于 CIN IR (窥孔/常量折叠/不可达代码删除); native 后端最终
544
+ 机器码仍由 Go 编译器生成, 其自身优化由 Go 工具链决定。
479
545
  `import "math.cin"`(裸名字 = codecin 内置标准库 `codecin/lib/`)在**编译期**展开, 因此产物自带用到的标准库, 运行时不需要任何 `.cin` 文件。
480
546
  正常结束退出码 0, 运行期错误打印 stderr 并以 1 退出。
481
- 详见 [开发者编译文档 · AOT](docs/BUILDING.md#aot-编译独立可执行文件)。
547
+ 详见 [开发者编译文档 · AOT](docs/BUILDING.md)。
482
548
 
483
549
  ### 命令行选项
484
550
 
@@ -494,6 +560,7 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
494
560
  - `--libs` - 列出内置标准库并标注执行路径要求
495
561
 
496
562
  **日志与运行时行为**
563
+ - `--debug` - 调试模式 (强制 DEBUG 日志, 执行结束输出 CPU 状态与统计, 异常完整堆栈)
497
564
  - `--log-level DEBUG|INFO|WARNING|ERROR|CRITICAL` - 日志级别 (默认 INFO)
498
565
  - `--log-file <file>` - 日志输出到文件
499
566
  - `--sandbox` - 沙箱模式 (在 Go 引擎侧拦截全部宿主能力系统调用)
@@ -504,11 +571,22 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
504
571
 
505
572
  **编译选项**
506
573
  - `--compile` / `--compile-only` - 编译为 .bin 字节码
507
- - `--optimize 0-3` - 优化级别 (默认 0)
574
+ - `--optimize 0-3` - IR 优化级别 (0 关闭; 1 窥孔; 2 常量折叠; 3 不可达代码删除)
508
575
  - `--disasm` - 反汇编 .bin 字节码为文本清单后退出
509
576
  - `-o, --output <file>` - 输出文件名 (.crom/.bin)
510
577
  - `--strict` - 严格汇编模式
511
578
 
579
+ **AOT 选项 (`--build-exe`)**
580
+ - `--build-target OS/ARCH` - 交叉编译目标
581
+ - `--build-backend auto|native|vm` - auto 按指令数选 native/VM (默认) / 强制 native / 强制 VM
582
+ - `--no-build-cache` - 禁用 AOT 增量构建缓存 (含对象/归档链接缓存)
583
+ - `--build-debug` - 保留符号表/DWARF (不传 `-s -w`),便于调试
584
+ - `--build-keep-temp` - 保留 Go 构建临时目录
585
+ - `--emit-object` - 把 CIN/ASM/PL 编译为可重定位 `.co` 对象
586
+ - `--link INPUT` - 链接 `.cin/.asm/.pl/.co/.colib` 为可执行文件 (可重复)
587
+ - `--emit-archive` - 把 `--link` 输入打包为 `.colib` 静态库归档
588
+ - `--gc-sections` - 链接时删除从入口不可达的函数/代码段
589
+
512
590
  **CROM选项**
513
591
  - `--save` - 执行后保存 .crom 内存镜像 (v4 段式)
514
592
  - `--no-compress` - 禁用压缩
@@ -527,19 +605,25 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
527
605
  | `ERROR` | 仅错误面板 |
528
606
  | `WARNING` | + 警告与兼容降级提示 |
529
607
  | `INFO` (默认) | + 编译汇总、执行起止、统计表 |
530
- | `DEBUG` | **超详细**: 全部埋点 + 逐指令追踪 |
608
+ | `DEBUG` | **超详细**: 全部埋点 (CPU 初始化、编译标签、原生执行结果) |
609
+
610
+ ### 调试模式 (`--debug`)
611
+
612
+ `--debug` 是比 `--log-level DEBUG` 更高层的开关 (与旧版一致, 始终强制 DEBUG):
613
+
614
+ - **强制 DEBUG 日志**: 即使同时给出 `--log-level ERROR` 也按 DEBUG 输出
615
+ - **收尾现场**: 执行结束打印寄存器/向量状态与执行统计表
616
+ - **完整堆栈**: 未预期异常输出 rich 彩色完整 traceback
617
+
618
+ v5.9.0 起程序由 Go 原生引擎一次性执行, 不再有 Python 解释器级逐指令追踪;
619
+ 逐指令/内存/SYS 级调试需在 Go 引擎侧扩展。
531
620
 
532
621
  ### 超详细输出 (`--log-level DEBUG`)
533
622
 
534
623
  - **CPU 初始化 dump**: 内存大小、SP 初值、堆基址
535
- - **逐指令追踪**: 每条指令输出 PC、全局序号、操作数值、SP 与执行后 NZCV 标志
536
- ```
537
- PC=0x0004 #00000002 ADD X1=0x0(0) X2=0x1(1) SP=0xfff8
538
- => pc=0x0005 N=0 Z=0 C=0 V=0
539
- ```
540
- - **内存读写追踪**: `MEM WR @0x000c w=1 value=0x0`, 覆盖全部加载/存储指令
541
- - **SYS 系统调用** (功能号+参数, 含 FFI/网络调用)
542
- - **编译埋点**: CIN tokenize/parse 统计、原生库调用参数
624
+ - **编译/装载**: 指令数与汇编标签表
625
+ - **原生执行结果**: 状态、步数、PC、耗时、错误
626
+ - **错误处理**: 加载/汇编/编译/运行错误统一 rich 面板, 未预期异常输出完整 traceback
543
627
 
544
628
  ### 错误处理
545
629
 
@@ -14,7 +14,7 @@ Code CIN 是一门简洁的类 C 高级语言及其跨平台运行时(VM)。
14
14
 
15
15
  **已完成 Go 优先(v5.9.0)**:Go 是语言实现的核心(`codecin/native/` 下的 CIN 编译器、字节码 VM、CROM),**Go 侧不提供任何 CLI 入口**;Python 只作为唯一 CLI 外壳。支持 CIN/PL/ASM 三语言、ARM64 与 RISC-V 指令集扩展、默认 1 GiB 稀疏分页内存、FFI 与完整网络系统调用、性能分析。
16
16
 
17
- 模块化包结构(`codecin/`,Go 侧 `codecin/native/`),全线日志与错误输出基于 **rich**(彩色表格、面板、traceback),`--log-level DEBUG` 提供超详细追踪。
17
+ 模块化包结构(`codecin/`,Go 侧 `codecin/native/`),全线日志与错误输出基于 **rich**(彩色表格、面板、traceback),`--debug` / `--log-level DEBUG` 提供超详细诊断。
18
18
 
19
19
  ## 文档
20
20
 
@@ -119,10 +119,10 @@ graph LR
119
119
  | Go原生库 | c-shared (必需) | 整程序 VM 加速, 缺失时报 CPUSimulatorError 提示重建 |
120
120
  | FFI | SYS 140-144 | ffi_load/ffi_find/ffi_call/ffi_callf/lib_close, 标准 `lib/ffi.cin` |
121
121
  | 网络 | SYS 145-157 | HTTP/TCP/UDP/DNS, 标准 `lib/net.cin` |
122
- | 日志系统 | rich | 彩色日志/表格/面板/traceback, --log-level DEBUG 超详细追踪 |
122
+ | 日志系统 | rich | 彩色日志/表格/面板/traceback, --debug / --log-level DEBUG 超详细诊断 |
123
123
  | 性能分析 | 指令级 | CPI + 内存统计 + 热指令 |
124
124
  | CROM压缩 | zlib | 段式格式 (v4), 只保存已分配页 (Go/Python双实现) |
125
- | AOT 静态编译 | 独立可执行 | 编译为 Windows/Linux/macOS 静态可执行文件, 不需 Python/Go/动态库 |
125
+ | AOT 静态编译 | 独立可执行 | native 后端直接生成机器码 (VM 后端兼容), Windows/Linux/macOS 静态可执行 |
126
126
 
127
127
  ---
128
128
 
@@ -437,18 +437,79 @@ v5.9.0 起**只有一条执行路径**: Python 完成 CIN/PL/ASM 编译后, 通
437
437
 
438
438
  ### 编译成独立可执行文件 (AOT)
439
439
 
440
- 把 CIN 程序编译成**静态链接的独立可执行文件** —— 产物内嵌字节码与初始内存镜像,
441
- 由内置 Go VM 执行, 运行时**不需要 Python、Go 工具链、libc 或任何动态库**。
442
- 构建时会解析 `import` 闭包做依赖完整性检查, 并把**全部依赖库在编译期展开嵌入产物**
443
- (产物不读取任何 `.cin` 文件):
440
+ 把 CIN/ASM/PL/BIN/CO 程序编译成**静态链接的独立可执行文件** —— 运行时**不需要
441
+ Python、Go 工具链、libc 或任何动态库**。CIN 构建时会解析 `import` 闭包做依赖
442
+ 完整性检查, 并把**全部依赖库在编译期展开嵌入产物** (产物不读取任何 `.cin` 文件)。
443
+
444
+ 默认使用 **auto 后端**: 指令数不超过 20000 时走 **native** (把编译后的指令流
445
+ 直接生成 Go 源码, 核心整数/控制流/内存/SYS 指令不再经过 UCBC 解码与 opcode
446
+ dispatch, 由 Go 编译器产出目标平台机器码); 超过阈值自动回退 **VM** (内嵌 UCBC
447
+ 字节码), 避免大量指令展开导致 `go build` 极慢。`--build-backend auto|native|vm`
448
+ 可强制指定。超过 800 条指令的 native 程序会自动按基本块拆分成多个 Go
449
+ 函数,进一步控制编译时间。
444
450
 
445
451
  ```bash
446
- # 本机平台
452
+ # 本机平台 (auto: 小程序 native, 大程序 VM)
447
453
  codecin program.cin --build-exe program # Windows 自动补 .exe
448
454
 
449
- # 交叉编译 (只需要安装 Go 工具链)
455
+ # 交叉编译 (只需要安装 Go 工具链; native/vm 后端都支持)
450
456
  codecin program.cin --build-exe app-linux --build-target linux/amd64
451
457
  codecin program.cin --build-exe app-mac --build-target darwin/arm64
458
+
459
+ # 强制某个后端 + 优化级别
460
+ codecin program.cin --build-exe app-native --build-backend native --optimize 2
461
+ codecin program.cin --build-exe app-vm --build-backend vm --optimize 2
462
+
463
+ # 独立编译 + 链接 (ASM/PL): 每个对象单独汇编, 再由链接器合并
464
+ codecin --emit-object main.asm -o main.co
465
+ codecin --emit-object lib.asm -o lib.co
466
+ codecin --link main.co --link lib.co -o app --optimize 3
467
+
468
+ # 也可以直接把源文件交给链接器 (即时编译为对象)
469
+ codecin --link main.cin --link lib.cin -o app
470
+
471
+ # CIN 库对象: 无 main 的文件作为函数库, 主文件用 extern 声明跨对象函数
472
+ codecin --emit-object lib.cin -o lib.co
473
+ codecin --emit-object main.cin -o main.co
474
+ codecin --link main.co --link lib.co -o app
475
+ ```
476
+
477
+ 静态库归档:
478
+
479
+ ```bash
480
+ codecin --emit-archive --link lib.co --link lib2.co -o lib.colib
481
+ codecin --link main.co --link lib.colib -o app
482
+ codecin --link main.co --link lib.colib -o app-gc --gc-sections
483
+ ```
484
+
485
+ 链接器按 C 风格静态库语义,只拉取能解决当前未定义符号的成员。
486
+
487
+ CIN 示例:
488
+
489
+ ```cin
490
+ // lib.cin
491
+ function helper() -> int {
492
+ return 7
493
+ }
494
+
495
+ // main.cin
496
+ extern function helper() -> int
497
+
498
+ function main() -> int {
499
+ println(int_to_str(helper()))
500
+ return 0
501
+ }
502
+ ```
503
+
504
+ 跨对象全局变量同样用 `extern` 声明:
505
+
506
+ ```cin
507
+ // lib.cin
508
+ int counter = 5
509
+
510
+ // main.cin
511
+ extern int counter
512
+ extern function bump()
452
513
  ```
453
514
 
454
515
  | 目标 | 说明 |
@@ -457,10 +518,15 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
457
518
  | `linux/amd64` `linux/arm64` | ELF, **无 PT_INTERP**, 不依赖 glibc |
458
519
  | `darwin/amd64` `darwin/arm64` | Mach-O, 静态 |
459
520
 
460
- 常见选项: `--build-target OS/ARCH`、`--build-keep-temp` (保留 `go build` 临时目录排错)。
521
+ 常见选项: `--build-target OS/ARCH`、`--build-backend auto|native|vm`、
522
+ `--optimize 0-3`、`--no-build-cache`、`--build-debug`、`--build-keep-temp`
523
+ (保留 `go build` 临时目录排错)。AOT 默认启用增量缓存 (源/依赖/工具链指纹命中时
524
+ 直接复用产物), 缓存目录可用 `CODECIN_AOT_CACHE` 覆盖。
525
+ `--optimize` 作用于 CIN IR (窥孔/常量折叠/不可达代码删除); native 后端最终
526
+ 机器码仍由 Go 编译器生成, 其自身优化由 Go 工具链决定。
461
527
  `import "math.cin"`(裸名字 = codecin 内置标准库 `codecin/lib/`)在**编译期**展开, 因此产物自带用到的标准库, 运行时不需要任何 `.cin` 文件。
462
528
  正常结束退出码 0, 运行期错误打印 stderr 并以 1 退出。
463
- 详见 [开发者编译文档 · AOT](docs/BUILDING.md#aot-编译独立可执行文件)。
529
+ 详见 [开发者编译文档 · AOT](docs/BUILDING.md)。
464
530
 
465
531
  ### 命令行选项
466
532
 
@@ -476,6 +542,7 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
476
542
  - `--libs` - 列出内置标准库并标注执行路径要求
477
543
 
478
544
  **日志与运行时行为**
545
+ - `--debug` - 调试模式 (强制 DEBUG 日志, 执行结束输出 CPU 状态与统计, 异常完整堆栈)
479
546
  - `--log-level DEBUG|INFO|WARNING|ERROR|CRITICAL` - 日志级别 (默认 INFO)
480
547
  - `--log-file <file>` - 日志输出到文件
481
548
  - `--sandbox` - 沙箱模式 (在 Go 引擎侧拦截全部宿主能力系统调用)
@@ -486,11 +553,22 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
486
553
 
487
554
  **编译选项**
488
555
  - `--compile` / `--compile-only` - 编译为 .bin 字节码
489
- - `--optimize 0-3` - 优化级别 (默认 0)
556
+ - `--optimize 0-3` - IR 优化级别 (0 关闭; 1 窥孔; 2 常量折叠; 3 不可达代码删除)
490
557
  - `--disasm` - 反汇编 .bin 字节码为文本清单后退出
491
558
  - `-o, --output <file>` - 输出文件名 (.crom/.bin)
492
559
  - `--strict` - 严格汇编模式
493
560
 
561
+ **AOT 选项 (`--build-exe`)**
562
+ - `--build-target OS/ARCH` - 交叉编译目标
563
+ - `--build-backend auto|native|vm` - auto 按指令数选 native/VM (默认) / 强制 native / 强制 VM
564
+ - `--no-build-cache` - 禁用 AOT 增量构建缓存 (含对象/归档链接缓存)
565
+ - `--build-debug` - 保留符号表/DWARF (不传 `-s -w`),便于调试
566
+ - `--build-keep-temp` - 保留 Go 构建临时目录
567
+ - `--emit-object` - 把 CIN/ASM/PL 编译为可重定位 `.co` 对象
568
+ - `--link INPUT` - 链接 `.cin/.asm/.pl/.co/.colib` 为可执行文件 (可重复)
569
+ - `--emit-archive` - 把 `--link` 输入打包为 `.colib` 静态库归档
570
+ - `--gc-sections` - 链接时删除从入口不可达的函数/代码段
571
+
494
572
  **CROM选项**
495
573
  - `--save` - 执行后保存 .crom 内存镜像 (v4 段式)
496
574
  - `--no-compress` - 禁用压缩
@@ -509,19 +587,25 @@ codecin program.cin --build-exe app-mac --build-target darwin/arm64
509
587
  | `ERROR` | 仅错误面板 |
510
588
  | `WARNING` | + 警告与兼容降级提示 |
511
589
  | `INFO` (默认) | + 编译汇总、执行起止、统计表 |
512
- | `DEBUG` | **超详细**: 全部埋点 + 逐指令追踪 |
590
+ | `DEBUG` | **超详细**: 全部埋点 (CPU 初始化、编译标签、原生执行结果) |
591
+
592
+ ### 调试模式 (`--debug`)
593
+
594
+ `--debug` 是比 `--log-level DEBUG` 更高层的开关 (与旧版一致, 始终强制 DEBUG):
595
+
596
+ - **强制 DEBUG 日志**: 即使同时给出 `--log-level ERROR` 也按 DEBUG 输出
597
+ - **收尾现场**: 执行结束打印寄存器/向量状态与执行统计表
598
+ - **完整堆栈**: 未预期异常输出 rich 彩色完整 traceback
599
+
600
+ v5.9.0 起程序由 Go 原生引擎一次性执行, 不再有 Python 解释器级逐指令追踪;
601
+ 逐指令/内存/SYS 级调试需在 Go 引擎侧扩展。
513
602
 
514
603
  ### 超详细输出 (`--log-level DEBUG`)
515
604
 
516
605
  - **CPU 初始化 dump**: 内存大小、SP 初值、堆基址
517
- - **逐指令追踪**: 每条指令输出 PC、全局序号、操作数值、SP 与执行后 NZCV 标志
518
- ```
519
- PC=0x0004 #00000002 ADD X1=0x0(0) X2=0x1(1) SP=0xfff8
520
- => pc=0x0005 N=0 Z=0 C=0 V=0
521
- ```
522
- - **内存读写追踪**: `MEM WR @0x000c w=1 value=0x0`, 覆盖全部加载/存储指令
523
- - **SYS 系统调用** (功能号+参数, 含 FFI/网络调用)
524
- - **编译埋点**: CIN tokenize/parse 统计、原生库调用参数
606
+ - **编译/装载**: 指令数与汇编标签表
607
+ - **原生执行结果**: 状态、步数、PC、耗时、错误
608
+ - **错误处理**: 加载/汇编/编译/运行错误统一 rich 面板, 未预期异常输出完整 traceback
525
609
 
526
610
  ### 错误处理
527
611
 
@@ -1,4 +1,4 @@
1
- __version__ = "5.9.0"
1
+ __version__ = "6.0.0"
2
2
  __author__ = "ByUsi Studio"
3
3
 
4
4
  from .config import Config