Releases: jiamo/pcc
Releases · jiamo/pcc
Release list
pcc 0.1.2
Highlights since v0.1.1
- Nested-def hoisting — capture-name management, sibling resolution, free-variable filtering for renamed/discard captures
- Chained comparisons —
a < b < clowers with proper Python and-semantics - Lexer self-host — int-based code-point predicates in
py_lex.py(nostr.is*calls, lexer compiles natively under self backend) - Native builtins:
int(x)on tagged int / DynType — no detour throughstrfloat("inf" | "-inf" | "nan")- DynType-backed double IR marshals to pcc float objects
- enumerate fixes — index pinned to i64, boxed via
py_int_from_i64when storage slot is a pointer - Slice fixes —
tuple[lo:hi:step]now goes throughpy_tuple_slice(was wrongly routed to list slice) - ord(s[i]) fast path for StrType subscript
- Class info schema (
ClassInfo.extern_method_defs) for pcc-native bootstrap
Repo hygiene
.gitignoreaddstmp_probe_*.py; 7 stale probes untracked
Install
pip install python-cc==0.1.2pcc 0.1.1
Highlights since v0.1.0
- Self backend — aarch64 Darwin + x86_64 Linux paths, with target-specific parsing/dispatch/emission, bootstrap + promotion gates, Docker coverage, and C-testsuite runners
- Native stdlib dispatch —
os.environ.get,os.getcwd,os.access,os.path.{dirname,isfile,isdir,getmtime,abspath,join},sys.platform, andprint(*args, file=stderr|stdout, flush=...)— no longer route through CPython - Python frontend — numeric method fallback (
int.to_bytesetc.),for...else, top-leveltry/with/del, dynamicisinstance, tuple-iteration types, typed class field access,cls(**kwargs)MRO walk in@classmethod - PCC-emitted Python runtime modules — tuple, exc_tls, traceback, dunder, obj_stubs, os_substrate;
libpy_runtime.ano longer checked in (built via pcc itself at install time) - Build / packaging — pip install runs the runtime build via pcc, defaults to
--backend self - Docs — GC semantics gap plan, data-model gaps plan, native stdlib plans, self-host ergonomics; six doc files translated from Chinese to English
Install
pip install python-cc==0.1.1pcc 0.1.0
Highlights
- Python frontend self-host bootstrap (#138.1–#138.5) — comprehensive feature coverage: comprehensions, kwargs, walrus, generator expressions, dataclass fields,
cls(...)in@classmethod, CPython fallback for imported names, and a large builtins/str-methods parity set - SSA MidTier — SCCP, GVN, ADCE + rewrite passes feeding AST, with direct SSA→LLVM lowering
- Pass framework — HighTier / MidTier / LowTier pipeline, 80/80 LLVM leaf passes mapped
- Python API —
pcc.module()/pcc.build()one-line compile-to-callable - Benchmarks & differential testing — csmith fuzz harness, 80-case microbenchmark suite,
pcc -O2at parity withclang -O2runtime - Multi-file compile spike — native cross-module imports without libpython link, shared cross-module type registry
- Linux aarch64 support
Install
pip install python-cc==0.1.0Full commit log is the squashed v0.1.0 commit (1453dcfd).