Skip to content

Releases: jiamo/pcc

pcc 0.1.2

Choose a tag to compare

@jiamo jiamo released this 29 Apr 06:28

Highlights since v0.1.1

  • Nested-def hoisting — capture-name management, sibling resolution, free-variable filtering for renamed/discard captures
  • Chained comparisonsa < b < c lowers with proper Python and-semantics
  • Lexer self-host — int-based code-point predicates in py_lex.py (no str.is* calls, lexer compiles natively under self backend)
  • Native builtins:
    • int(x) on tagged int / DynType — no detour through str
    • float("inf" | "-inf" | "nan")
    • DynType-backed double IR marshals to pcc float objects
  • enumerate fixes — index pinned to i64, boxed via py_int_from_i64 when storage slot is a pointer
  • Slice fixestuple[lo:hi:step] now goes through py_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

  • .gitignore adds tmp_probe_*.py; 7 stale probes untracked

Install

pip install python-cc==0.1.2

pcc 0.1.1

Choose a tag to compare

@jiamo jiamo released this 28 Apr 21:48

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 dispatchos.environ.get, os.getcwd, os.access, os.path.{dirname,isfile,isdir,getmtime,abspath,join}, sys.platform, and print(*args, file=stderr|stdout, flush=...) — no longer route through CPython
  • Python frontend — numeric method fallback (int.to_bytes etc.), for...else, top-level try / with / del, dynamic isinstance, 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.a no 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.1

pcc 0.1.0

Choose a tag to compare

@jiamo jiamo released this 21 Apr 18:26

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 APIpcc.module() / pcc.build() one-line compile-to-callable
  • Benchmarks & differential testing — csmith fuzz harness, 80-case microbenchmark suite, pcc -O2 at parity with clang -O2 runtime
  • 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.0

Full commit log is the squashed v0.1.0 commit (1453dcfd).

v0.0.8

Choose a tag to compare

@jiamo jiamo released this 02 Apr 13:05

Add nginx and more tests

v0.0.7

Choose a tag to compare

@jiamo jiamo released this 27 Mar 21:27

Add pcre, zlib, lz4, zstd, openssl, readline, sqlite, postgresql support. 2000+ tests passing.

v0.0.6

Choose a tag to compare

@jiamo jiamo released this 22 Mar 17:58

entry param, separate-tus, parallel compilation, AGENTS.md, README updates

v0.0.5

Choose a tag to compare

@jiamo jiamo released this 22 Mar 14:26

rename to python-cc, MIT license, fix packaging, update README

v0.0.1

Choose a tag to compare

@jiamo jiamo released this 22 Mar 14:02

Release 0.0.1