python-cc 0.1.0__py3-none-any.whl → 0.1.2__py3-none-any.whl
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.
- pcc/__init__.py +26 -2
- pcc/__main__.py +5 -3
- pcc/backend/__init__.py +8 -0
- pcc/backend/self_backend.py +6 -1837
- pcc/backend/self_backend_aarch64_darwin.py +189 -0
- pcc/backend/self_backend_aarch64_darwin_abi.py +150 -0
- pcc/backend/self_backend_aarch64_darwin_addr.py +106 -0
- pcc/backend/self_backend_aarch64_darwin_calls.py +1517 -0
- pcc/backend/self_backend_aarch64_darwin_compute.py +832 -0
- pcc/backend/self_backend_aarch64_darwin_data.py +180 -0
- pcc/backend/self_backend_aarch64_darwin_flow.py +153 -0
- pcc/backend/self_backend_aarch64_darwin_materialize.py +636 -0
- pcc/backend/self_backend_aarch64_darwin_mem.py +82 -0
- pcc/backend/self_backend_aarch64_darwin_memory.py +132 -0
- pcc/backend/self_backend_aarch64_darwin_ops.py +302 -0
- pcc/backend/self_backend_aarch64_darwin_prologue.py +50 -0
- pcc/backend/self_backend_aarch64_darwin_regs.py +117 -0
- pcc/backend/self_backend_aarch64_darwin_returns.py +55 -0
- pcc/backend/self_backend_aarch64_darwin_slots.py +272 -0
- pcc/backend/self_backend_aarch64_darwin_symbols.py +26 -0
- pcc/backend/self_backend_aarch64_darwin_terminators.py +113 -0
- pcc/backend/self_backend_analysis.py +186 -0
- pcc/backend/self_backend_dispatch.py +28 -0
- pcc/backend/self_backend_emit.py +26 -0
- pcc/backend/self_backend_instruction_dispatch.py +30 -0
- pcc/backend/self_backend_ir.py +289 -0
- pcc/backend/self_backend_module_symbols.py +35 -0
- pcc/backend/self_backend_parse.py +1944 -0
- pcc/backend/self_backend_prepare.py +52 -0
- pcc/backend/self_backend_stackprep.py +188 -0
- pcc/backend/self_backend_target_match.py +20 -0
- pcc/backend/self_backend_targets.py +63 -0
- pcc/backend/self_backend_terminator_dispatch.py +48 -0
- pcc/backend/self_backend_x86_64_linux.py +1148 -0
- pcc/backend/self_backend_x86_64_linux_data.py +166 -0
- pcc/cli_bootstrap.py +312 -0
- pcc/cli_core.py +1183 -0
- pcc/codegen/c_codegen.py +430 -50
- pcc/evaluater/c_evaluator.py +134 -21
- pcc/extern/__init__.py +20 -0
- pcc/ir_passes/loop_distribute.py +11 -230
- pcc/ir_passes/loop_vectorize.py +11 -277
- pcc/ir_passes/simple_loop_unswitch.py +11 -225
- pcc/ir_passes/slp_vectorizer.py +11 -185
- pcc/lex/c_lexer.py +2 -2
- pcc/llvm_capi/compat.py +2 -2
- pcc/llvm_capi/ir.py +555 -92
- pcc/parse/py_lex.py +183 -93
- pcc/parse/py_lift.py +193 -70
- pcc/parse/py_parse.py +319 -48
- pcc/passes/llvm_python_registry.ll +4610 -0
- pcc/passes/llvm_python_registry.py +15 -15
- pcc/pcc.py +233 -509
- pcc/ply/lex.py +3 -8
- pcc/ply/yacc.py +10 -7
- pcc/py_frontend/codegen/class_gen.py +359 -148
- pcc/py_frontend/codegen/layer1.py +15978 -3703
- pcc/py_frontend/codegen/marshal.py +101 -15
- pcc/py_frontend/codegen/runtime_abi.py +124 -29
- pcc/py_frontend/export_meta.py +104 -0
- pcc/py_frontend/parser.py +16 -5
- pcc/py_frontend/pipeline.py +1694 -207
- pcc/py_frontend/py_ast.py +1 -0
- pcc/py_frontend/type_infer.py +736 -74
- pcc/py_frontend/types.py +125 -13
- pcc/py_runtime/Makefile +121 -13
- pcc/py_runtime/include/py_runtime.h +263 -30
- pcc/py_runtime/py/py_class.py +796 -0
- pcc/py_runtime/py/py_dict.py +395 -0
- pcc/py_runtime/py/py_exc_match.py +77 -0
- pcc/py_runtime/py/py_exc_objects.py +162 -0
- pcc/py_runtime/py/py_exc_table.py +84 -0
- pcc/py_runtime/py/py_exc_tls.py +165 -0
- pcc/py_runtime/py/py_exc_traceback.py +191 -0
- pcc/py_runtime/py/py_int.py +178 -0
- pcc/py_runtime/py/py_int_addsub.py +153 -0
- pcc/py_runtime/py/py_int_bigint_convert.py +52 -0
- pcc/py_runtime/py/py_int_bigint_pow.py +67 -0
- pcc/py_runtime/py/py_int_bitwise.py +142 -0
- pcc/py_runtime/py/py_int_convert.py +74 -0
- pcc/py_runtime/py/py_int_core.py +300 -0
- pcc/py_runtime/py/py_int_decimal.py +193 -0
- pcc/py_runtime/py/py_int_mul.py +83 -0
- pcc/py_runtime/py/py_int_ops.py +351 -0
- pcc/py_runtime/py/py_int_parse.py +164 -0
- pcc/py_runtime/py/py_int_shift.py +159 -0
- pcc/py_runtime/py/py_list.py +474 -0
- pcc/py_runtime/py/py_obj.py +144 -0
- pcc/py_runtime/py/py_obj_dealloc.py +95 -0
- pcc/py_runtime/py/py_obj_gc.py +43 -0
- pcc/py_runtime/py/py_obj_ops_compare.py +483 -0
- pcc/py_runtime/py/py_obj_ops_dispatch.py +378 -0
- pcc/py_runtime/py/py_obj_stubs.py +109 -0
- pcc/py_runtime/py/py_os_env.py +114 -0
- pcc/py_runtime/py/py_os_path.py +324 -0
- pcc/py_runtime/py/py_print_fmt.py +251 -0
- pcc/py_runtime/py/py_print_sys.py +73 -0
- pcc/py_runtime/py/py_process.py +68 -0
- pcc/py_runtime/py/py_set.py +260 -0
- pcc/py_runtime/py/py_str.py +45 -0
- pcc/py_runtime/py/py_str_accessors.py +1326 -0
- pcc/py_runtime/py/py_substrate.py +401 -0
- pcc/py_runtime/py/py_tuple.py +221 -0
- pcc/py_runtime/py/py_tuple_spike.py +111 -0
- pcc/py_runtime/src/py_class.c +89 -2
- pcc/py_runtime/src/py_dict.c +2 -2
- pcc/py_runtime/src/py_dunder.c +42 -0
- pcc/py_runtime/src/py_exc_match.c +41 -0
- pcc/py_runtime/src/py_exc_objects.c +105 -0
- pcc/py_runtime/src/py_exc_table.c +48 -0
- pcc/py_runtime/src/py_exc_tls.c +147 -0
- pcc/py_runtime/src/py_exc_traceback.c +92 -0
- pcc/py_runtime/src/py_file.c +127 -0
- pcc/py_runtime/src/py_int.c +24 -924
- pcc/py_runtime/src/py_int_addsub.c +109 -0
- pcc/py_runtime/src/py_int_bigint_convert.c +34 -0
- pcc/py_runtime/src/py_int_bigint_pow.c +59 -0
- pcc/py_runtime/src/py_int_bitwise.c +97 -0
- pcc/py_runtime/src/py_int_convert.c +23 -0
- pcc/py_runtime/src/py_int_core.c +155 -0
- pcc/py_runtime/src/py_int_decimal.c +156 -0
- pcc/py_runtime/src/py_int_mul.c +38 -0
- pcc/py_runtime/src/py_int_ops.c +264 -0
- pcc/py_runtime/src/py_int_parse.c +83 -0
- pcc/py_runtime/src/py_int_shift.c +137 -0
- pcc/py_runtime/src/py_internal.h +37 -12
- pcc/py_runtime/src/py_libpython.c +830 -6
- pcc/py_runtime/src/py_list.c +22 -18
- pcc/py_runtime/src/py_obj.c +19 -146
- pcc/py_runtime/src/py_obj_dealloc.c +82 -0
- pcc/py_runtime/src/py_obj_gc.c +29 -0
- pcc/py_runtime/src/py_obj_ops_compare.c +297 -0
- pcc/py_runtime/src/py_obj_ops_dispatch.c +190 -0
- pcc/py_runtime/src/py_obj_stubs.c +27 -6
- pcc/py_runtime/src/py_os_env.c +73 -0
- pcc/py_runtime/src/py_os_path.c +290 -0
- pcc/py_runtime/src/py_os_substrate.c +152 -0
- pcc/py_runtime/src/{py_print.c → py_print_fmt.c} +76 -36
- pcc/py_runtime/src/py_print_sys.c +40 -0
- pcc/py_runtime/src/py_process.c +48 -0
- pcc/py_runtime/src/py_process_substrate.c +476 -0
- pcc/py_runtime/src/py_set.c +19 -8
- pcc/py_runtime/src/py_str.c +14 -795
- pcc/py_runtime/src/py_str_accessors.c +945 -0
- pcc/py_runtime/src/py_substrate.c +327 -0
- pcc/py_runtime/src/py_tuple.c +100 -0
- pcc/py_stdlib/dataclasses.py +70 -37
- pcc/py_stdlib/itertools.py +2 -2
- pcc/py_stdlib/sys.py +16 -2
- pcc/stdlib/__init__.py +21 -0
- pcc/stdlib/_float_bits.py +127 -0
- pcc/stdlib/struct.py +154 -0
- pcc/unsafe/__init__.py +190 -0
- python_cc-0.1.2.dist-info/METADATA +448 -0
- {python_cc-0.1.0.dist-info → python_cc-0.1.2.dist-info}/RECORD +159 -57
- python_cc-0.1.2.dist-info/entry_points.txt +3 -0
- utils/fake_libc_include/stdlib.h +4 -0
- pcc/py_runtime/libpy_runtime.a +0 -0
- pcc/py_runtime/src/py_exc.c +0 -441
- pcc/py_runtime/src/py_obj_ops.c +0 -452
- pcc/py_stdlib/copy.ll +0 -847
- python_cc-0.1.0.dist-info/METADATA +0 -660
- python_cc-0.1.0.dist-info/entry_points.txt +0 -2
- {python_cc-0.1.0.dist-info → python_cc-0.1.2.dist-info}/WHEEL +0 -0
- {python_cc-0.1.0.dist-info → python_cc-0.1.2.dist-info}/licenses/LICENSE +0 -0
pcc/__init__.py
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
"""Top-level ``pcc`` package exports.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Keep package import side effects minimal so subpackages such as
|
|
4
|
+
``pcc.py_frontend`` can be imported without pulling the full C
|
|
5
|
+
evaluator / llvmlite stack into the process.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
__all__ = ["module", "build", "BuildArtifact", "Module"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def __getattr__(name: str):
|
|
13
|
+
if name in __all__:
|
|
14
|
+
from .api import BuildArtifact, Module, build, module
|
|
15
|
+
|
|
16
|
+
exports = {
|
|
17
|
+
"module": module,
|
|
18
|
+
"build": build,
|
|
19
|
+
"BuildArtifact": BuildArtifact,
|
|
20
|
+
"Module": Module,
|
|
21
|
+
}
|
|
22
|
+
return exports[name]
|
|
23
|
+
raise AttributeError(f"module 'pcc' has no attribute {name!r}")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def __dir__() -> list[str]:
|
|
27
|
+
return sorted(list(globals().keys()) + __all__)
|
pcc/__main__.py
CHANGED
pcc/backend/__init__.py
CHANGED
|
@@ -88,6 +88,14 @@ def _normalize_backend_name(value: str | None) -> str:
|
|
|
88
88
|
return candidate
|
|
89
89
|
|
|
90
90
|
|
|
91
|
+
def backend_request_allows_unimplemented(requested: str | None = None) -> bool:
|
|
92
|
+
"""Return True when a request explicitly opts into an experimental backend."""
|
|
93
|
+
raw = requested
|
|
94
|
+
if raw is None:
|
|
95
|
+
raw = os.environ.get(_ENV_BACKEND)
|
|
96
|
+
return _normalize_backend_name(raw) == "self"
|
|
97
|
+
|
|
98
|
+
|
|
91
99
|
def resolve_backend(
|
|
92
100
|
requested: str | None = None,
|
|
93
101
|
*,
|