python-cc 0.1.1__tar.gz → 0.1.2__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 (570) hide show
  1. {python_cc-0.1.1 → python_cc-0.1.2}/.gitignore +1 -0
  2. python_cc-0.1.2/PKG-INFO +448 -0
  3. python_cc-0.1.2/README.md +436 -0
  4. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/cli_bootstrap.py +3 -3
  5. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/cli_core.py +15 -0
  6. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/llvm_capi/ir.py +10 -20
  7. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/py_lex.py +163 -67
  8. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/py_lift.py +40 -2
  9. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/py_parse.py +16 -7
  10. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/codegen/class_gen.py +5 -0
  11. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/codegen/layer1.py +908 -243
  12. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/codegen/marshal.py +22 -6
  13. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/codegen/runtime_abi.py +4 -0
  14. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/export_meta.py +4 -1
  15. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/pipeline.py +8 -1
  16. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/type_infer.py +116 -28
  17. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/types.py +3 -0
  18. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/include/py_runtime.h +4 -0
  19. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_obj_ops_compare.py +17 -0
  20. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_set.py +24 -0
  21. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_str_accessors.py +66 -5
  22. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_obj_ops_compare.c +12 -0
  23. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_set.c +12 -0
  24. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_str_accessors.c +56 -8
  25. {python_cc-0.1.1 → python_cc-0.1.2}/pyproject.toml +6 -1
  26. python_cc-0.1.1/PKG-INFO +0 -985
  27. python_cc-0.1.1/README.md +0 -973
  28. {python_cc-0.1.1 → python_cc-0.1.2}/.github/workflows/workflow.yml +0 -0
  29. {python_cc-0.1.1 → python_cc-0.1.2}/AGENTS.md +0 -0
  30. {python_cc-0.1.1 → python_cc-0.1.2}/LICENSE +0 -0
  31. {python_cc-0.1.1 → python_cc-0.1.2}/bench/bench.py +0 -0
  32. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/ackermann.c +0 -0
  33. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/binary_trees.c +0 -0
  34. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/bitcount.c +0 -0
  35. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/coremark_list.c +0 -0
  36. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/crc32.c +0 -0
  37. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/dhrystone.c +0 -0
  38. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/edit_distance.c +0 -0
  39. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/fannkuch_redux.c +0 -0
  40. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/fasta.c +0 -0
  41. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/fft.c +0 -0
  42. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/fib35.c +0 -0
  43. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/floyd_warshall.c +0 -0
  44. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/hash_table.c +0 -0
  45. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/heapsort.c +0 -0
  46. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/huffman.c +0 -0
  47. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/jacobi.c +0 -0
  48. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/knapsack.c +0 -0
  49. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/knucleotide.c +0 -0
  50. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/life.c +0 -0
  51. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/linked_list.c +0 -0
  52. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/livermore.c +0 -0
  53. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/lu_decompose.c +0 -0
  54. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/lzw_compress.c +0 -0
  55. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/mandelbrot.c +0 -0
  56. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/matmul.c +0 -0
  57. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/matrix_chain.c +0 -0
  58. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/nbody.c +0 -0
  59. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/nbody_shootout.c +0 -0
  60. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/parens_match.c +0 -0
  61. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/pi_digits.c +0 -0
  62. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/primes_segmented.c +0 -0
  63. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/quantify_passes.py +0 -0
  64. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/queens.c +0 -0
  65. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/quicksort.c +0 -0
  66. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/rc4.c +0 -0
  67. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/red_black_tree.c +0 -0
  68. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/regex_match.c +0 -0
  69. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/richards.c +0 -0
  70. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/run_benchmarks.py +0 -0
  71. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/sha256.c +0 -0
  72. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/sieve_large.c +0 -0
  73. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/spectral_norm.c +0 -0
  74. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/spectral_norm2.c +0 -0
  75. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/state_machine.c +0 -0
  76. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/stringsearch.c +0 -0
  77. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/tak.c +0 -0
  78. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/tower_of_hanoi.c +0 -0
  79. {python_cc-0.1.1 → python_cc-0.1.2}/benchmarks/whetstone.c +0 -0
  80. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/.gitignore +0 -0
  81. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/README.md +0 -0
  82. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/and.c +0 -0
  83. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/cast.c +0 -0
  84. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/if.c +0 -0
  85. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/malloc.c +0 -0
  86. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/simple_func.c +0 -0
  87. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/simple_int.c +0 -0
  88. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/simple_pointer.c +0 -0
  89. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/simple_printf.c +0 -0
  90. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/simple_recurse.c +0 -0
  91. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/struct.c +0 -0
  92. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/test_arrary.c +0 -0
  93. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/test_double_array.c +0 -0
  94. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/test_if_else.c +0 -0
  95. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/test_int.c +0 -0
  96. {python_cc-0.1.1 → python_cc-0.1.2}/clang_study/test_puts.c +0 -0
  97. {python_cc-0.1.1 → python_cc-0.1.2}/conftest.py +0 -0
  98. {python_cc-0.1.1 → python_cc-0.1.2}/docker/self-backend-linux-x86_64.Dockerfile +0 -0
  99. {python_cc-0.1.1 → python_cc-0.1.2}/docs/changelog.md +0 -0
  100. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/llvm-capi-vs-llvmlite-oracle-debugging.md +0 -0
  101. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/lua-sort-random-pivot-signedness.md +0 -0
  102. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/make-derived-cpp-flags-vs-explicit-project-config.md +0 -0
  103. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/nbody-shootout-fp-contract-and-vectorization.md +0 -0
  104. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/pcre-op-lengths-incomplete-array-binding.md +0 -0
  105. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/python-self-host-no-libpython-runtime-holes.md +0 -0
  106. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/sqlite-forward-declared-bitfield-struct-tags.md +0 -0
  107. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/sqlite-integration-vfs-init-and-mcjit-lifecycle.md +0 -0
  108. {python_cc-0.1.1 → python_cc-0.1.2}/docs/investigations/zlib-integration-static-local-arrays-and-layout.md +0 -0
  109. {python_cc-0.1.1 → python_cc-0.1.2}/docs/issues/gc-semantics-gap.md +0 -0
  110. {python_cc-0.1.1 → python_cc-0.1.2}/docs/issues/open-bootstrap-issues.md +0 -0
  111. {python_cc-0.1.1 → python_cc-0.1.2}/docs/issues/python-data-model-gaps.md +0 -0
  112. {python_cc-0.1.1 → python_cc-0.1.2}/docs/issues/python-semantics-preservation.md +0 -0
  113. {python_cc-0.1.1 → python_cc-0.1.2}/docs/issues/self-host-ergonomics.md +0 -0
  114. {python_cc-0.1.1 → python_cc-0.1.2}/docs/issues/self-host-oracle-test-layer.md +0 -0
  115. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/all-pass-llvm-ir-1to1-master-plan.md +0 -0
  116. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/all-python-llvm-pass-translation-plan.md +0 -0
  117. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/closed-world-spike-import-experiment.md +0 -0
  118. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/deply-spike-report.md +0 -0
  119. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/dual-llvm-backend-compat-plan.md +0 -0
  120. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/llvmcapi-beta4-backlog.md +0 -0
  121. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/llvmcapi-wire-spike-report.md +0 -0
  122. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/llvmlite-api-surface-beta5.json +0 -0
  123. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/llvmlite-api-surface-beta5.md +0 -0
  124. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/llvmlite-api-surface.json +0 -0
  125. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/llvmlite-api-surface.md +0 -0
  126. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/multi-file-compile-spike.md +0 -0
  127. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/p6c6-bootstrap-spike-report.md +0 -0
  128. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/python-frontend-interfaces.md +0 -0
  129. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/python-frontend-plan.md +0 -0
  130. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/python-native-execution-model.md +0 -0
  131. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/python-native-stdlib-plan.md +0 -0
  132. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/python-runtime-no-c-plan.md +0 -0
  133. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/self-backend-bootstrap-default-plan.md +0 -0
  134. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/self-backend-translation-plan.md +0 -0
  135. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/self-backend-x86_64-linux-plan.md +0 -0
  136. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/ssa-midtier-backend-parity-plan.md +0 -0
  137. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/stage1-closure-fallback-categories.md +0 -0
  138. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/stage1-closure-probe-max.md +0 -0
  139. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/stage1-closure-probe.md +0 -0
  140. {python_cc-0.1.1 → python_cc-0.1.2}/docs/plans/top-level-python-api-plan.md +0 -0
  141. {python_cc-0.1.1 → python_cc-0.1.2}/docs/python-howto.md +0 -0
  142. {python_cc-0.1.1 → python_cc-0.1.2}/docs/python-limitations.md +0 -0
  143. {python_cc-0.1.1 → python_cc-0.1.2}/docs/python-scorecard.md +0 -0
  144. {python_cc-0.1.1 → python_cc-0.1.2}/docs/python-tutorial.md +0 -0
  145. {python_cc-0.1.1 → python_cc-0.1.2}/docs/system-architecture.md +0 -0
  146. {python_cc-0.1.1 → python_cc-0.1.2}/fred.txt +0 -0
  147. {python_cc-0.1.1 → python_cc-0.1.2}/hatch_build.py +0 -0
  148. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/__init__.py +0 -0
  149. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/__main__.py +0 -0
  150. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/api.py +0 -0
  151. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ast/__init__.py +0 -0
  152. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ast/ast.py +0 -0
  153. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ast/ast_transforms.py +0 -0
  154. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ast/c_ast.py +0 -0
  155. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/__init__.py +0 -0
  156. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend.py +0 -0
  157. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin.py +0 -0
  158. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_abi.py +0 -0
  159. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_addr.py +0 -0
  160. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_calls.py +0 -0
  161. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_compute.py +0 -0
  162. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_data.py +0 -0
  163. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_flow.py +0 -0
  164. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_materialize.py +0 -0
  165. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_mem.py +0 -0
  166. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_memory.py +0 -0
  167. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_ops.py +0 -0
  168. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_prologue.py +0 -0
  169. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_regs.py +0 -0
  170. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_returns.py +0 -0
  171. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_slots.py +0 -0
  172. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_symbols.py +0 -0
  173. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_aarch64_darwin_terminators.py +0 -0
  174. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_analysis.py +0 -0
  175. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_dispatch.py +0 -0
  176. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_emit.py +0 -0
  177. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_instruction_dispatch.py +0 -0
  178. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_ir.py +0 -0
  179. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_module_symbols.py +0 -0
  180. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_parse.py +0 -0
  181. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_prepare.py +0 -0
  182. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_stackprep.py +0 -0
  183. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_target_match.py +0 -0
  184. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_targets.py +0 -0
  185. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_terminator_dispatch.py +0 -0
  186. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_x86_64_linux.py +0 -0
  187. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/backend/self_backend_x86_64_linux_data.py +0 -0
  188. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/codegen/__init__.py +0 -0
  189. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/codegen/c_codegen.py +0 -0
  190. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/evaluater/__init__.py +0 -0
  191. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/evaluater/c_evaluator.py +0 -0
  192. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/extern/__init__.py +0 -0
  193. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/generator/__init__.py +0 -0
  194. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/generator/c_generator.py +0 -0
  195. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/__init__.py +0 -0
  196. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/adce.py +0 -0
  197. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/alias_analysis.py +0 -0
  198. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/alignment_from_assumptions.py +0 -0
  199. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/arg_opt.py +0 -0
  200. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/argpromotion.py +0 -0
  201. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/bdce.py +0 -0
  202. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/called_value_prop.py +0 -0
  203. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/callsite_splitting.py +0 -0
  204. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/constant_lattice.py +0 -0
  205. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/constraint_elimination.py +0 -0
  206. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/correlated_propagation.py +0 -0
  207. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/dce.py +0 -0
  208. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/dominator_tree.py +0 -0
  209. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/dse.py +0 -0
  210. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/early_cse.py +0 -0
  211. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/elim_avail_extern.py +0 -0
  212. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/float2int.py +0 -0
  213. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/function_attrs.py +0 -0
  214. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/globalopt.py +0 -0
  215. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/gvn.py +0 -0
  216. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/indvars.py +0 -0
  217. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/infer_alignment.py +0 -0
  218. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/inline.py +0 -0
  219. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/instcombine.py +0 -0
  220. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/instsimplify.py +0 -0
  221. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/ipo_passes.py +0 -0
  222. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/ipsccp.py +0 -0
  223. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/ir_mutator.py +0 -0
  224. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/jump_threading.py +0 -0
  225. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/late_scalar.py +0 -0
  226. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/libcalls_shrinkwrap.py +0 -0
  227. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/licm.py +0 -0
  228. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_deletion.py +0 -0
  229. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_distribute.py +0 -0
  230. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_info.py +0 -0
  231. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_instsimplify.py +0 -0
  232. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_load_elim.py +0 -0
  233. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_passes.py +0 -0
  234. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_rotate.py +0 -0
  235. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_simplify.py +0 -0
  236. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_simplifycfg.py +0 -0
  237. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_sink.py +0 -0
  238. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_unroll.py +0 -0
  239. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/loop_vectorize.py +0 -0
  240. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/lower_constant_intrinsics.py +0 -0
  241. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/lower_expect.py +0 -0
  242. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/manager.py +0 -0
  243. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/mem2reg.py +0 -0
  244. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/memcpyopt.py +0 -0
  245. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/memory_ssa.py +0 -0
  246. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/meta_passes.py +0 -0
  247. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/mldst_motion.py +0 -0
  248. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/newgvn.py +0 -0
  249. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/parity.py +0 -0
  250. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/reassociate.py +0 -0
  251. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/sccp.py +0 -0
  252. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/simple_loop_unswitch.py +0 -0
  253. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/simplifycfg.py +0 -0
  254. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/slp_vectorizer.py +0 -0
  255. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/speculative_execution.py +0 -0
  256. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/sroa.py +0 -0
  257. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/ssa_utils.py +0 -0
  258. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/tailcallelim.py +0 -0
  259. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/trivial_simplify.py +0 -0
  260. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/vector_combine.py +0 -0
  261. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ir_passes/vectorize_passes.py +0 -0
  262. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/lex/__init__.py +0 -0
  263. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/lex/c_lexer.py +0 -0
  264. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/lex/lexer.py +0 -0
  265. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/lex/token.py +0 -0
  266. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/llvm_capi/__init__.py +0 -0
  267. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/llvm_capi/binding.py +0 -0
  268. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/llvm_capi/compat.py +0 -0
  269. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/__init__.py +0 -0
  270. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/ast_normalize.py +0 -0
  271. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/c_lex.py +0 -0
  272. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/c_parse_driver.py +0 -0
  273. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/c_parser.py +0 -0
  274. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/c_parser_actions.py +0 -0
  275. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/c_parsetab.py +0 -0
  276. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/file_parser.py +0 -0
  277. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/parser.py +0 -0
  278. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/parse/plyparser.py +0 -0
  279. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/__init__.py +0 -0
  280. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/alloc_decision.py +0 -0
  281. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ast_utils.py +0 -0
  282. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/base.py +0 -0
  283. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/canonicalize.py +0 -0
  284. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/chez_transforms.py +0 -0
  285. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/clang_compat.py +0 -0
  286. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/context.py +0 -0
  287. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/control_flow.py +0 -0
  288. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/dce.py +0 -0
  289. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/escape_analysis.py +0 -0
  290. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/global_dce.py +0 -0
  291. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/groups.py +0 -0
  292. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/inline_opt.py +0 -0
  293. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ipo_boundary.py +0 -0
  294. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ir_metadata.py +0 -0
  295. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/llvm_builtin_registry.py +0 -0
  296. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/llvm_explicit.py +0 -0
  297. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/llvm_loop_explicit.py +0 -0
  298. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/llvm_python_registry.ll +0 -0
  299. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/llvm_python_registry.py +0 -0
  300. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/llvm_text_pipeline.py +0 -0
  301. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/loop_opt.py +0 -0
  302. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/lower_expect.py +0 -0
  303. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/memory_opt.py +0 -0
  304. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/nsw_inference.py +0 -0
  305. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/propagation.py +0 -0
  306. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_adce.py +0 -0
  307. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_bootstrap.py +0 -0
  308. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_branch_prune.py +0 -0
  309. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_dse.py +0 -0
  310. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_gvn.py +0 -0
  311. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_gvn_rewrite.py +0 -0
  312. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_loop_phi.py +0 -0
  313. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_sccp.py +0 -0
  314. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/ssa_sccp_rewrite.py +0 -0
  315. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/tbaa.py +0 -0
  316. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/whole_program.py +0 -0
  317. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/passes/whole_program_pass.py +0 -0
  318. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/pcc.py +0 -0
  319. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ply/__init__.py +0 -0
  320. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ply/cpp.py +0 -0
  321. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ply/ctokens.py +0 -0
  322. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ply/lex.py +0 -0
  323. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ply/yacc.py +0 -0
  324. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ply/ygen.py +0 -0
  325. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/preprocessor.py +0 -0
  326. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/project.py +0 -0
  327. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/__init__.py +0 -0
  328. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/codegen/__init__.py +0 -0
  329. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/parser.py +0 -0
  330. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_frontend/py_ast.py +0 -0
  331. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/Makefile +0 -0
  332. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_class.py +0 -0
  333. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_dict.py +0 -0
  334. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_exc_match.py +0 -0
  335. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_exc_objects.py +0 -0
  336. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_exc_table.py +0 -0
  337. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_exc_tls.py +0 -0
  338. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_exc_traceback.py +0 -0
  339. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int.py +0 -0
  340. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_addsub.py +0 -0
  341. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_bigint_convert.py +0 -0
  342. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_bigint_pow.py +0 -0
  343. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_bitwise.py +0 -0
  344. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_convert.py +0 -0
  345. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_core.py +0 -0
  346. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_decimal.py +0 -0
  347. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_mul.py +0 -0
  348. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_ops.py +0 -0
  349. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_parse.py +0 -0
  350. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_int_shift.py +0 -0
  351. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_list.py +0 -0
  352. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_obj.py +0 -0
  353. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_obj_dealloc.py +0 -0
  354. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_obj_gc.py +0 -0
  355. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_obj_ops_dispatch.py +0 -0
  356. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_obj_stubs.py +0 -0
  357. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_os_env.py +0 -0
  358. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_os_path.py +0 -0
  359. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_print_fmt.py +0 -0
  360. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_print_sys.py +0 -0
  361. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_process.py +0 -0
  362. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_str.py +0 -0
  363. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_substrate.py +0 -0
  364. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_tuple.py +0 -0
  365. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/py/py_tuple_spike.py +0 -0
  366. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_class.c +0 -0
  367. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_dict.c +0 -0
  368. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_dunder.c +0 -0
  369. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_exc_match.c +0 -0
  370. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_exc_objects.c +0 -0
  371. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_exc_table.c +0 -0
  372. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_exc_tls.c +0 -0
  373. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_exc_traceback.c +0 -0
  374. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_file.c +0 -0
  375. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int.c +0 -0
  376. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_addsub.c +0 -0
  377. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_bigint_convert.c +0 -0
  378. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_bigint_pow.c +0 -0
  379. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_bitwise.c +0 -0
  380. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_convert.c +0 -0
  381. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_core.c +0 -0
  382. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_decimal.c +0 -0
  383. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_mul.c +0 -0
  384. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_ops.c +0 -0
  385. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_parse.c +0 -0
  386. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_int_shift.c +0 -0
  387. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_internal.h +0 -0
  388. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_libpython.c +0 -0
  389. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_list.c +0 -0
  390. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_obj.c +0 -0
  391. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_obj_dealloc.c +0 -0
  392. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_obj_gc.c +0 -0
  393. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_obj_ops_dispatch.c +0 -0
  394. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_obj_stubs.c +0 -0
  395. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_os_env.c +0 -0
  396. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_os_path.c +0 -0
  397. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_os_substrate.c +0 -0
  398. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_print_fmt.c +0 -0
  399. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_print_sys.c +0 -0
  400. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_process.c +0 -0
  401. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_process_substrate.c +0 -0
  402. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_str.c +0 -0
  403. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_substrate.c +0 -0
  404. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_runtime/src/py_tuple.c +0 -0
  405. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/README.md +0 -0
  406. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/__init__.py +0 -0
  407. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/abc.py +0 -0
  408. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/collections.py +0 -0
  409. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/concurrent.py +0 -0
  410. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/contextlib.py +0 -0
  411. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/copy.py +0 -0
  412. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/ctypes.py +0 -0
  413. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/dataclasses.py +0 -0
  414. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/enum.py +0 -0
  415. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/fcntl.py +0 -0
  416. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/functools.py +0 -0
  417. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/io.py +0 -0
  418. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/itertools.py +0 -0
  419. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/json.py +0 -0
  420. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/logging.py +0 -0
  421. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/math.py +0 -0
  422. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/multiprocessing.py +0 -0
  423. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/operator.py +0 -0
  424. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/os.py +0 -0
  425. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/pathlib.py +0 -0
  426. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/platform.py +0 -0
  427. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/re.py +0 -0
  428. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/shlex.py +0 -0
  429. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/shutil.py +0 -0
  430. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/string.py +0 -0
  431. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/struct.py +0 -0
  432. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/subprocess.py +0 -0
  433. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/sys.py +0 -0
  434. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/tempfile.py +0 -0
  435. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/time.py +0 -0
  436. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/traceback.py +0 -0
  437. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/typing.py +0 -0
  438. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/py_stdlib/warnings.py +0 -0
  439. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/__init__.py +0 -0
  440. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/adce.py +0 -0
  441. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/builder.py +0 -0
  442. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/gvn.py +0 -0
  443. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/ir.py +0 -0
  444. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/loop_phi.py +0 -0
  445. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/ssa/sccp.py +0 -0
  446. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/stdlib/__init__.py +0 -0
  447. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/stdlib/_float_bits.py +0 -0
  448. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/stdlib/struct.py +0 -0
  449. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/unsafe/__init__.py +0 -0
  450. {python_cc-0.1.1 → python_cc-0.1.2}/pcc/util.py +0 -0
  451. {python_cc-0.1.1 → python_cc-0.1.2}/platform.info +0 -0
  452. {python_cc-0.1.1 → python_cc-0.1.2}/run.py +0 -0
  453. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/audit_selfhost.py +0 -0
  454. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/bootstrap.sh +0 -0
  455. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/build_c_oracle.py +0 -0
  456. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/extract_c_parser_actions.py +0 -0
  457. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/freeze_c_parser_tables.py +0 -0
  458. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/parity_csmith_parser.py +0 -0
  459. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/parity_real_projects.py +0 -0
  460. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/pcc_multi.py +0 -0
  461. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/probe_fallback_categories.py +0 -0
  462. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/probe_stage1_closure.py +0 -0
  463. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/probe_stage1_closure_on_mode.py +0 -0
  464. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/run_self_backend_bootstrap_gate.py +0 -0
  465. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/run_self_backend_linux_x86_64_c_testsuite.py +0 -0
  466. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/run_self_backend_linux_x86_64_docker.sh +0 -0
  467. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/run_self_backend_promotion_gate.py +0 -0
  468. {python_cc-0.1.1 → python_cc-0.1.2}/scripts/trace_llvmlite_api.py +0 -0
  469. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/TargetConditionals.h +0 -0
  470. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/_ansi.h +0 -0
  471. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/_fake_defines.h +0 -0
  472. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/_fake_typedefs.h +0 -0
  473. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/_syslist.h +0 -0
  474. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/alloca.h +0 -0
  475. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/ar.h +0 -0
  476. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/argz.h +0 -0
  477. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/arpa/inet.h +0 -0
  478. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/assert.h +0 -0
  479. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/complex.h +0 -0
  480. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/ctype.h +0 -0
  481. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/dirent.h +0 -0
  482. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/dlfcn.h +0 -0
  483. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/endian.h +0 -0
  484. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/envz.h +0 -0
  485. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/errno.h +0 -0
  486. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/fastmath.h +0 -0
  487. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/fcntl.h +0 -0
  488. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/features.h +0 -0
  489. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/fenv.h +0 -0
  490. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/float.h +0 -0
  491. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/getopt.h +0 -0
  492. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/grp.h +0 -0
  493. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/iconv.h +0 -0
  494. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/ieeefp.h +0 -0
  495. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/inttypes.h +0 -0
  496. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/iso646.h +0 -0
  497. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/langinfo.h +0 -0
  498. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/libgen.h +0 -0
  499. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/libintl.h +0 -0
  500. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/limits.h +0 -0
  501. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/linux/version.h +0 -0
  502. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/locale.h +0 -0
  503. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/malloc.h +0 -0
  504. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/math.h +0 -0
  505. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/netdb.h +0 -0
  506. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/netinet/in.h +0 -0
  507. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/netinet/tcp.h +0 -0
  508. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/newlib.h +0 -0
  509. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/openssl/err.h +0 -0
  510. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/openssl/evp.h +0 -0
  511. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/openssl/hmac.h +0 -0
  512. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/openssl/ssl.h +0 -0
  513. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/openssl/x509v3.h +0 -0
  514. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/paths.h +0 -0
  515. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/poll.h +0 -0
  516. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/process.h +0 -0
  517. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/pthread.h +0 -0
  518. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/pwd.h +0 -0
  519. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/reent.h +0 -0
  520. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/regdef.h +0 -0
  521. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/regex.h +0 -0
  522. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sched.h +0 -0
  523. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/search.h +0 -0
  524. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/semaphore.h +0 -0
  525. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/setjmp.h +0 -0
  526. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/signal.h +0 -0
  527. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/stdarg.h +0 -0
  528. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/stdbool.h +0 -0
  529. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/stddef.h +0 -0
  530. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/stdint.h +0 -0
  531. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/stdio.h +0 -0
  532. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/stdlib.h +0 -0
  533. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/string.h +0 -0
  534. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/strings.h +0 -0
  535. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/ioctl.h +0 -0
  536. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/mman.h +0 -0
  537. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/poll.h +0 -0
  538. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/resource.h +0 -0
  539. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/select.h +0 -0
  540. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/socket.h +0 -0
  541. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/stat.h +0 -0
  542. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/sysctl.h +0 -0
  543. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/time.h +0 -0
  544. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/types.h +0 -0
  545. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/uio.h +0 -0
  546. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/un.h +0 -0
  547. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/utsname.h +0 -0
  548. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/sys/wait.h +0 -0
  549. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/syslog.h +0 -0
  550. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/tar.h +0 -0
  551. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/termios.h +0 -0
  552. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/tgmath.h +0 -0
  553. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/time.h +0 -0
  554. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/unctrl.h +0 -0
  555. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/unistd.h +0 -0
  556. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/utime.h +0 -0
  557. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/utmp.h +0 -0
  558. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/wchar.h +0 -0
  559. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/wctype.h +0 -0
  560. {python_cc-0.1.1 → python_cc-0.1.2}/utils/fake_libc_include/zlib.h +0 -0
  561. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/constptr.c +0 -0
  562. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/example_c_file.c +0 -0
  563. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/fake_includes.py +0 -0
  564. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/make_fake_typedefs.py +0 -0
  565. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/memprofiling.py +0 -0
  566. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/refresh_c_testsuite_manifest.py +0 -0
  567. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/refresh_clang_c_manifest.py +0 -0
  568. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/refresh_gcc_torture_manifest.py +0 -0
  569. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/zc.c +0 -0
  570. {python_cc-0.1.1 → python_cc-0.1.2}/utils/internal/zz_parse.py +0 -0
@@ -154,6 +154,7 @@ pcc/py_runtime/build_libpython/
154
154
  pcc/py_runtime/libpy_runtime_libpython.a
155
155
  $exe
156
156
  .tmp_00031_dbg2.c
157
+ tmp_probe_*.py
157
158
  pcc/py_runtime/libpy_runtime_pcc.a
158
159
  pcc/py_runtime/libpy_runtime_pcc_py.a
159
160
  pcc/py_runtime/build_pcc/
@@ -0,0 +1,448 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-cc
3
+ Version: 0.1.2
4
+ Summary: Pcc is a c compiler built on python and llvm.
5
+ Project-URL: Homepage, https://github.com/jiamo/pcc
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Keywords: c,compiler,llvm,ply
9
+ Requires-Python: >=3.13
10
+ Requires-Dist: llvmlite==0.46.0
11
+ Description-Content-Type: text/markdown
12
+
13
+ # pcc
14
+
15
+ [![PyPI](https://img.shields.io/pypi/v/python-cc)](https://pypi.org/project/python-cc/)
16
+ [![Python](https://img.shields.io/pypi/pyversions/python-cc)](https://pypi.org/project/python-cc/)
17
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
18
+
19
+ `pcc` is a Python-authored compiler toolchain. Its most mature path is a C
20
+ frontend that lowers C to LLVM IR and runs real third-party projects. The
21
+ repository also contains an experimental typed-Python frontend, a Python runtime
22
+ being re-authored in pcc-Python, and an in-tree experimental backend that emits
23
+ native code without LLVM for selected targets.
24
+
25
+ This is a research compiler with practical integration tests, not a drop-in
26
+ replacement for Clang or CPython.
27
+
28
+ ## Status
29
+
30
+ | Area | Current state |
31
+ |---|---|
32
+ | C frontend | Mature relative to the rest of the repo; validated through C tests, GCC/Clang-derived suites, and real projects such as Lua, SQLite, PostgreSQL `libpq`, zlib, lz4, zstd, PCRE, OpenSSL, readline, and nginx. |
33
+ | Python frontend | Experimental. Typed code can lower to native IR; unsupported Python idioms may route through a CPython bridge unless `--python-libpython=off` forbids it. |
34
+ | Runtime | Active migration from C runtime sources to pcc-Python modules under `pcc/py_runtime/py/`, using `pcc.unsafe` and `pcc.extern` for low-level operations. |
35
+ | Self backend | Experimental LLVM-free emission path for AArch64 Darwin and x86_64 Linux subsets. It is used by bootstrap/build gates, but the default public backend remains LLVM unless explicitly selected. |
36
+ | Bootstrap | macOS arm64 three-stage bootstrap completes as `pcc1 -> pcc2 -> pcc3` in both the default path and the strict self-backend path (`--backend self --python-libpython=off --ir-scaffold=on`). In the strict path, the emitted IR for `pcc2` and `pcc3` is byte-identical with 0 `py_cpy_*` calls; linked binaries have no `libpython` dependency and are byte-identical after Mach-O signature normalization. |
37
+ | Tests | Broad unit, corpus, self-backend, and integration coverage. The Python corpus currently contains 177 end-to-end programs. |
38
+
39
+ Historical bootstrap gap notes live in
40
+ [docs/issues/open-bootstrap-issues.md](docs/issues/open-bootstrap-issues.md).
41
+ This README records the current verified bootstrap status.
42
+
43
+ ## Install
44
+
45
+ ```bash
46
+ pip install python-cc
47
+ ```
48
+
49
+ For repository development:
50
+
51
+ ```bash
52
+ git clone https://github.com/jiamo/pcc
53
+ cd pcc
54
+ uv sync
55
+ ```
56
+
57
+ The package requires Python 3.13+. Source builds may build the Python runtime
58
+ archive at wheel time through `hatch_build.py`. That hook prefers the self
59
+ backend and falls back to LLVM if needed; a missing prebuilt archive can also be
60
+ rebuilt lazily on first use.
61
+
62
+ ## Quick Start
63
+
64
+ ### Compile C
65
+
66
+ ```bash
67
+ pcc hello.c
68
+ pcc hello.c -o hello
69
+ pcc hello.c -- arg1 arg2
70
+ ```
71
+
72
+ Common C project modes:
73
+
74
+ ```bash
75
+ pcc myproject/
76
+ pcc --separate-tus myproject/
77
+ pcc --sources-from-make lua projects/lua-5.5.0
78
+ pcc --system-link --link-arg=-lm mathprog.c
79
+ pcc --emit-llvm out.ll hello.c
80
+ pcc --emit-obj out.o --target x86_64-unknown-linux-gnu hello.c
81
+ ```
82
+
83
+ ### Compile Python
84
+
85
+ ```bash
86
+ pcc hello.py
87
+ pcc hello.py -o hello
88
+ pcc hello.py --emit-llvm
89
+ pcc hello.py --python-libpython=off
90
+ pcc-static hello.py
91
+ pcc hello.py --backend self
92
+ ```
93
+
94
+ `pcc hello.py` compiles the file to a native executable and runs it. Passing
95
+ `-o` writes the executable without running it. Passing `--emit-llvm` stops after
96
+ IR generation. `pcc-static hello.py` is the strict no-libpython entrypoint: it
97
+ uses the same compiler as `pcc`, but defaults to
98
+ `--python-libpython=off --ir-scaffold=on`. Explicit CLI flags and existing
99
+ `PCC_PYTHON_LIBPYTHON` / `PCC_IR_SCAFFOLD` environment variables still take
100
+ precedence.
101
+
102
+ The strict command is available from the normal package install:
103
+
104
+ ```bash
105
+ pip install python-cc
106
+ pcc-static hello.py
107
+ ```
108
+
109
+ There is no separate `python-cc[no-libpython]` extra; it would install the same
110
+ files without changing runtime behavior. Use `pcc-static` or pass
111
+ `--python-libpython=off --ir-scaffold=on` explicitly.
112
+
113
+ For Python inputs, the most important controls are:
114
+
115
+ | Option | Meaning |
116
+ |---|---|
117
+ | `--python-libpython=auto` | Default. Link `libpython` only if codegen needed a CPython fallback. |
118
+ | `--python-libpython=on` | Always allow/link the CPython fallback surface. |
119
+ | `--python-libpython=off` | Hard error if the program would need a CPython fallback. |
120
+ | `--ir-scaffold=on` | Experimental closed-world lowering used by the strict self-host work. |
121
+ | `pcc-static` | Console-script shortcut for `--python-libpython=off --ir-scaffold=on`. |
122
+ | `--backend {llvm,llvm_capi,self}` | Select the backend. `llvm` is the public default; `self` is experimental. |
123
+
124
+ ### Use pcc From Python
125
+
126
+ The public Python API is for C compilation.
127
+
128
+ ```python
129
+ from pcc.evaluater.c_evaluator import CEvaluator
130
+
131
+ ev = CEvaluator()
132
+ print(ev.evaluate(
133
+ "int add(int a, int b) { return a + b; }",
134
+ entry="add",
135
+ args=[3, 7],
136
+ ))
137
+ ```
138
+
139
+ ```python
140
+ from pcc import build, module
141
+
142
+ artifact = build(["src/main.c", "src/util.c"], include_dirs=["include"])
143
+ print(artifact.output_path)
144
+
145
+ m = module("arith.c")
146
+ print(m.add(3, 4))
147
+ print(m.__pcc_artifact__.exports)
148
+ ```
149
+
150
+ ## Architecture
151
+
152
+ ```text
153
+ CLI / Python API
154
+ -> project collection
155
+ -> C frontend or Python frontend
156
+ -> optimization / lowering passes
157
+ -> LLVM, LLVM-C compatibility, or self backend
158
+ -> MCJIT, object emission, system link, or native executable
159
+ ```
160
+
161
+ | Layer | Main paths | Role |
162
+ |---|---|---|
163
+ | CLI | `pcc/cli_core.py`, `pcc/pcc.py`, `pcc/cli_bootstrap.py` | User command line, bootstrap CLI, option routing. |
164
+ | Public API | `pcc/api.py`, `pcc/evaluater/c_evaluator.py` | Embeddable C build/evaluate/module APIs. |
165
+ | Project collection | `pcc/project.py` | Directory scanning, make-derived source sets, dependency projects, translation-unit setup. |
166
+ | C frontend | `pcc/lex/`, `pcc/parse/`, `pcc/codegen/`, `pcc/evaluater/` | C preprocessing, parsing, semantic lowering, execution/emission. |
167
+ | Python frontend | `pcc/py_frontend/`, `pcc/parse/py_*` | Python parse/lift, type inference, native lowering, CPython fallback decisions. |
168
+ | Runtime | `pcc/py_runtime/`, `pcc/extern/`, `pcc/unsafe/` | Runtime objects, extern-C bridge, compiler-recognized low-level intrinsics. |
169
+ | Backends | `pcc/llvm_capi/`, `pcc/backend/` | LLVM compatibility layer and experimental self backend. |
170
+ | Tests/integrations | `tests/`, `projects/`, `bench/`, `benchmarks/` | Regression, corpus, real-project, and performance coverage. |
171
+
172
+ See [docs/system-architecture.md](docs/system-architecture.md) for the fuller
173
+ architecture guide.
174
+
175
+ ## Capabilities
176
+
177
+ ### C Frontend
178
+
179
+ The C pipeline is the production-quality part of the repository. It supports:
180
+
181
+ - C99-oriented source parsing and semantic lowering.
182
+ - Scalars, pointers, arrays, structs, unions, enums, typedefs, function
183
+ pointers, control flow, casts, arithmetic, bitwise operations, shifts, and
184
+ variadic functions.
185
+ - Preprocessing with macro expansion and conditional compilation.
186
+ - Merged-directory builds, separate translation units, make-derived source
187
+ selection, dependency projects, compile caching, and host-system linking.
188
+ - LLVM IR, object, assembly, MCJIT, and executable workflows.
189
+ - Explicit signedness tracking on top of LLVM integer types, including
190
+ compile-time constant evaluation and runtime lowering as separate semantic
191
+ paths.
192
+
193
+ Representative C integration commands:
194
+
195
+ ```bash
196
+ uv run pcc \
197
+ --cpp-arg=-DLUA_USE_JUMPTABLE=0 \
198
+ --cpp-arg=-DLUA_NOBUILTIN \
199
+ projects/lua-5.5.0/onelua.c -- projects/lua-5.5.0/testes/math.lua
200
+ ```
201
+
202
+ ```bash
203
+ uv run pcc \
204
+ --cpp-arg=-DHAVE_CONFIG_H \
205
+ --depends-on projects/pcre-8.45=libpcre.la \
206
+ projects/test_pcre_main.c
207
+ ```
208
+
209
+ ### Python Frontend
210
+
211
+ The Python frontend is intentionally described as experimental. It is useful for
212
+ typed-native programs, runtime-authoring work, and the self-host track, but it
213
+ does not implement the full Python data model.
214
+
215
+ Supported or actively exercised areas include:
216
+
217
+ - Typed functions and local variables lowered to native LLVM IR.
218
+ - Native `int`, `bool`, `float`, `str`, `list`, `tuple`, `dict`, `set`, class,
219
+ exception, dunder, and selected stdlib/runtime paths in the corpus.
220
+ - Direct C interop through `pcc.extern`.
221
+ - Low-level runtime authoring through `pcc.unsafe`.
222
+ - CPython fallback for imports and dynamic idioms that are not yet in the
223
+ native subset.
224
+ - Multi-file/bootstrap compilation through `scripts/pcc_multi.py` and
225
+ `pcc/cli_bootstrap.py`.
226
+
227
+ The core limitation is not parsing; it is preserving Python semantics without
228
+ falling back to CPython. The strict gate is:
229
+
230
+ ```bash
231
+ pcc program.py --python-libpython=off --ir-scaffold=on
232
+ ```
233
+
234
+ That mode still fails on programs that need an unsupported CPython bridge. The
235
+ bootstrap and fallback ratchets live in
236
+ [tests/fallback_baseline.json](tests/fallback_baseline.json) and
237
+ [tests/bootstrap_gate_baseline.json](tests/bootstrap_gate_baseline.json).
238
+
239
+ ### Self Backend
240
+
241
+ The self backend is the in-tree LLVM-free emitter. It currently targets selected
242
+ AArch64 Darwin and x86_64 Linux IR shapes and is validated against LLVM-backed
243
+ output through dedicated tests. Use it explicitly:
244
+
245
+ ```bash
246
+ pcc --backend self hello.c
247
+ pcc --backend self --target x86_64-unknown-linux-gnu --emit-obj out.o hello.c
248
+ pcc hello.py --backend self
249
+ ```
250
+
251
+ The self backend is not yet the universal default. It is the default in the
252
+ macOS arm64 bootstrap script and in the runtime wheel-build hook where supported.
253
+
254
+ Implementation note: the self backend and pass framework were developed with
255
+ AI assistance from LLVM's published behavior and IR semantics. They are tested
256
+ against the LLVM-backed path; they are not a source-code port of LLVM.
257
+
258
+ ## Bootstrap
259
+
260
+ The supported macOS arm64 bootstrap flow is:
261
+
262
+ ```text
263
+ CPython runs pcc -> pcc1
264
+ pcc1 compiles pcc -> pcc2
265
+ pcc2 compiles pcc -> pcc3
266
+ compare pcc2 and pcc3 after Mach-O signature normalization
267
+ ```
268
+
269
+ Run it with:
270
+
271
+ ```bash
272
+ scripts/bootstrap.sh
273
+ scripts/bootstrap.sh --backend llvm
274
+ scripts/bootstrap.sh --backend self
275
+ scripts/bootstrap.sh --stage 1
276
+ ```
277
+
278
+ The strict no-libpython macOS arm64 path has also been verified to complete:
279
+
280
+ ```bash
281
+ pcc --ir-scaffold=on --python-libpython=off --backend self pcc/__main__.py -o pcc1
282
+ ./pcc1 --ir-scaffold=on --python-libpython=off --backend self pcc/__main__.py -o pcc2
283
+ ./pcc2 --ir-scaffold=on --python-libpython=off --backend self pcc/__main__.py -o pcc3
284
+ ```
285
+
286
+ As of 2026-04-29, this strict path verifies with 0 `py_cpy_*` calls in the
287
+ `pcc2`/`pcc3` emitted IR, no `libpython` entry in `otool -L`, byte-identical
288
+ `pcc2`/`pcc3` emitted IR, and byte-identical `pcc2`/`pcc3` binaries after
289
+ Mach-O signature removal. The public default CLI still uses the LLVM backend
290
+ and `--python-libpython=auto` unless strict flags or `pcc-static` are selected.
291
+
292
+ ## Testing
293
+
294
+ Use `uv run ...` for repository commands.
295
+
296
+ ```bash
297
+ uv run pytest -q
298
+ uv run pytest -m integration
299
+ uv run pytest tests/test_lua.py -q -n0
300
+ uv run pytest tests/test_sqlite.py -q -n0
301
+ uv run pytest tests/test_postgres.py -q -n0
302
+ ```
303
+
304
+ Focused gates:
305
+
306
+ ```bash
307
+ uv run pytest tests/test_c_testsuite.py tests/test_clang_c.py -q -n0
308
+ uv run pytest tests/test_gcc_torture_execute.py -q -n0
309
+ uv run pytest tests/test_py_multi_file_compile.py tests/test_py_multi_file_bootstrap_shim.py -q -n0
310
+ uv run pytest tests/test_self_backend.py tests/test_self_backend_bootstrap_gate.py -q -n0
311
+ ```
312
+
313
+ Codex users should unset `LC_ALL` before `uv run ...` commands in this repo:
314
+
315
+ ```bash
316
+ env -u LC_ALL uv run pytest -q
317
+ env -u LC_ALL uv run pcc hello.c
318
+ ```
319
+
320
+ ## Documentation
321
+
322
+ | Topic | Path |
323
+ |---|---|
324
+ | Architecture | [docs/system-architecture.md](docs/system-architecture.md) |
325
+ | Python tutorial | [docs/python-tutorial.md](docs/python-tutorial.md) |
326
+ | Python how-to | [docs/python-howto.md](docs/python-howto.md) |
327
+ | Python limitations | [docs/python-limitations.md](docs/python-limitations.md) |
328
+ | Python scorecard | [docs/python-scorecard.md](docs/python-scorecard.md) |
329
+ | Bootstrap issue history | [docs/issues/open-bootstrap-issues.md](docs/issues/open-bootstrap-issues.md) |
330
+ | Python data-model gaps | [docs/issues/python-data-model-gaps.md](docs/issues/python-data-model-gaps.md) |
331
+ | Python semantics discussion | [docs/issues/python-semantics-preservation.md](docs/issues/python-semantics-preservation.md) |
332
+ | GC semantics gap | [docs/issues/gc-semantics-gap.md](docs/issues/gc-semantics-gap.md) |
333
+ | Investigation reports | [docs/investigations/](docs/investigations/) |
334
+ | Plans | [docs/plans/](docs/plans/) |
335
+ | Contributor/agent notes | [AGENTS.md](AGENTS.md) |
336
+
337
+ Recommended investigation reports:
338
+
339
+ - [docs/investigations/lua-sort-random-pivot-signedness.md](docs/investigations/lua-sort-random-pivot-signedness.md)
340
+ - [docs/investigations/pcre-op-lengths-incomplete-array-binding.md](docs/investigations/pcre-op-lengths-incomplete-array-binding.md)
341
+ - [docs/investigations/zlib-integration-static-local-arrays-and-layout.md](docs/investigations/zlib-integration-static-local-arrays-and-layout.md)
342
+ - [docs/investigations/sqlite-integration-vfs-init-and-mcjit-lifecycle.md](docs/investigations/sqlite-integration-vfs-init-and-mcjit-lifecycle.md)
343
+ - [docs/investigations/sqlite-forward-declared-bitfield-struct-tags.md](docs/investigations/sqlite-forward-declared-bitfield-struct-tags.md)
344
+ - [docs/investigations/nbody-shootout-fp-contract-and-vectorization.md](docs/investigations/nbody-shootout-fp-contract-and-vectorization.md)
345
+
346
+ ## Repository Map
347
+
348
+ | Path | Role |
349
+ |---|---|
350
+ | `pcc/cli_core.py` | Installed `pcc` CLI entrypoint. |
351
+ | `pcc/pcc.py` | Compatibility CLI wrapper. |
352
+ | `pcc/api.py` | `build(...)` and `module(...)` APIs for C. |
353
+ | `pcc/project.py` | Source collection and build orchestration. |
354
+ | `pcc/evaluater/c_evaluator.py` | C compile/evaluate/link coordinator. |
355
+ | `pcc/codegen/c_codegen.py` | Main C semantic lowering implementation. |
356
+ | `pcc/py_frontend/` | Python type inference and native lowering. |
357
+ | `pcc/py_runtime/` | Python runtime archive sources and pcc-Python ports. |
358
+ | `pcc/backend/` | Experimental self backend. |
359
+ | `pcc/llvm_capi/` | In-repo LLVM-C compatibility path. |
360
+ | `pcc/extern/` | Python-to-C extern declarations. |
361
+ | `pcc/unsafe/` | Compiler-recognized low-level Python intrinsics. |
362
+ | `utils/fake_libc_include/` | Fake libc headers used by the C frontend. |
363
+ | `tests/` | Unit, corpus, bootstrap, and integration tests. |
364
+ | `projects/` | Third-party projects used as stress targets. |
365
+ | `bench/`, `benchmarks/` | Performance tooling. |
366
+
367
+ ## Development
368
+
369
+ Requires Python 3.13+ and [uv](https://docs.astral.sh/uv/).
370
+
371
+ ```bash
372
+ uv sync
373
+ uv run pytest -q
374
+ ```
375
+
376
+ ### Environment Controls
377
+
378
+ Command-line flags are preferred when an option has both CLI and environment
379
+ forms. The variables below are the supported development/debug controls used by
380
+ the compiler, bootstrap, runtime build, and local gates.
381
+
382
+ General compiler controls:
383
+
384
+ | Variable | Values | Effect |
385
+ |---|---|---|
386
+ | `PCC_BACKEND` | `llvm`, `llvm_capi`, `self` | Default backend when `--backend` is not passed. |
387
+ | `PCC_PYTHON_LIBPYTHON` | `auto`, `on`, `off` | Default Python fallback/linkage policy when `--python-libpython` is not passed. |
388
+ | `PCC_IR_SCAFFOLD` | `off`, `on`, `auto` | Default for the experimental closed-world Python IR scaffold. |
389
+ | `PCC_COMPILE_CACHE_DIR` | path | Override the translation-unit compile cache directory. |
390
+ | `PCC_DISABLE_COMPILE_CACHE` | `1`, `true`, `yes`, `on` | Disable the translation-unit compile cache. |
391
+ | `PCC_USE_PLY_C_PARSER` | `1` | Use the legacy PLY C parser instead of the native C parser. |
392
+ | `PCC_PLY_CACHE_DIR` | path | Override the legacy PLY parser table cache directory. |
393
+ | `PCC_BINARY` | path/command | Runtime build helper: choose the `pcc` command used when rebuilding runtime archives. |
394
+
395
+ LLVM, IR-builder, and pass controls:
396
+
397
+ | Variable | Values | Effect |
398
+ |---|---|---|
399
+ | `PCC_USE_LLVMLITE` | `1` | Force all LLVM compatibility shims back to `llvmlite`. |
400
+ | `PCC_USE_LLVMLITE_C` | `1` | Force only the C codegen path back to `llvmlite`. |
401
+ | `PCC_USE_LLVMLITE_PY` | `1` | Force only the Python codegen path back to `llvmlite`. |
402
+ | `PCC_USE_LLVMLITE_PASSES` | `1` | Force only the pass layer back to `llvmlite`. |
403
+ | `PCC_LIBLLVM_PATH` | path | Point the native LLVM-C binding at a specific `libLLVM-C`. |
404
+ | `PCC_DISABLE_PASSES` | comma-separated pass names | Disable managed passes by name or alias. |
405
+ | `PCC_LLVM_DISABLE_PASSES` | comma-separated LLVM pass names | Disable concrete LLVM passes in the text pipeline. |
406
+ | `PCC_CHEAP_LLVM_PIPELINE` | `1` / pass list / false value | Enable or customize the cheap LLVM pass bundle for low-opt paths. |
407
+ | `PCC_LLVM_PIPELINE` | `1`, `default`, or pipeline spec | Run an external LLVM text pipeline. |
408
+ | `PCC_LLVM_OPT_BIN` | path | LLVM `opt` binary used by external LLVM pipeline selection. |
409
+
410
+ Python runtime, linking, packaging, and bootstrap controls:
411
+
412
+ | Variable | Values | Effect |
413
+ |---|---|---|
414
+ | `PCC_RUNTIME_CC` | `pcc`, `cc` | Select whether Python runtime archives are built with pcc or the host C compiler. |
415
+ | `PCC_RUNTIME_HIGH` | `py`, `c` | Select pcc-Python or C implementations for high-level runtime modules. |
416
+ | `PCC_HOST_PYTHON` | command | Host Python used for subprocess boundaries such as self-backend emission. |
417
+ | `PCC_PYTHON_LDFLAGS` | linker flags | Override `python-config --ldflags --embed` for libpython fallback linking. |
418
+ | `PCC_PYTHON_CONFIG` | command/path | Override the `python*-config` command used for libpython flags. |
419
+ | `PCC_WITH_LIBPYTHON` | `1` | Runtime Makefile toggle for building libpython-compatible runtime archives. |
420
+ | `PCC_BUILD_SKIP` | `1` | Wheel build hook: skip runtime archive prebuild. |
421
+ | `PCC_BUILD_BACKEND` | `self`, `llvm` | Wheel build hook: backend used for runtime archive prebuild. |
422
+ | `PCC_BUILD_TARGET` | make target | Wheel build hook: runtime Makefile target to build. |
423
+ | `PCC_BOOTSTRAP_OUT_DIR` | path | `scripts/bootstrap.sh` output directory. |
424
+ | `PCC_BOOTSTRAP_RUNTIME_CC` | `pcc`, `cc` | Bootstrap wrapper default for `PCC_RUNTIME_CC`. |
425
+ | `PCC_BOOTSTRAP_RUNTIME_HIGH` | `py`, `c` | Bootstrap wrapper default for `PCC_RUNTIME_HIGH`. |
426
+ | `PCC_BOOTSTRAP_PYTHON_LIBPYTHON` | `auto`, `on`, `off` | Bootstrap wrapper default for `--python-libpython`. |
427
+
428
+ Diagnostics and local gates:
429
+
430
+ | Variable | Values | Effect |
431
+ |---|---|---|
432
+ | `PCC_DUMP_BAD_IR` | directory | Dump invalid or unparsable LLVM IR snapshots on LLVM parse failures. |
433
+ | `PCC_DEBUG_PHI_TYPES` | file path | Append SSA phi type-mismatch diagnostics to a log file. |
434
+ | `PCC_DEBUG_SSA_LOWER_FAIL` | `1` | Print tracebacks when SSA lowering fails and falls back. |
435
+ | `PCC_PROBE_CLOSURE` | probe mode | Select the stage-1 closure probe mode. |
436
+ | `PCC_PROBE_VERBOSE` | truthy value | Print verbose probe output for closure-probe scripts. |
437
+ | `PCC_CSMITH_SEEDS` | integer | Number of Csmith seeds used by the Csmith pytest harness. |
438
+ | `PCC_SELF_BACKEND_LINUX_X86_64_IMAGE` | Docker image tag | Override the Linux x86_64 self-backend Docker image tag. |
439
+ | `PCC_SELF_BACKEND_DOCKER_REBUILD` | `1` | Force rebuild of the Linux x86_64 self-backend Docker image. |
440
+
441
+ Compiler changes should include a minimized regression test and, when relevant,
442
+ a real-project confirmation. Read [AGENTS.md](AGENTS.md) before making semantic
443
+ frontend or codegen changes; it documents the repository's debugging workflow
444
+ and testing policy.
445
+
446
+ ## License
447
+
448
+ MIT. See [LICENSE](LICENSE).