Skip to main content

Status

gopy is in active development. The target is behavioural parity with CPython 3.14. The tables below describe the current state as of v0.12.x.

Subsystem readiness​

SubsystemStateNotes
TokenizerCompleteIndentation stack, f-strings, soft keywords, t-strings (PEP 750).
PEG parserCompleteFull grammar including match.
ASTCompleteGenerated from Python.asdl.
Symbol tableCompleteTwo-pass resolver including __class__ cells, PEP 695.
CodegenCompleteEvery statement and expression form.
Flow graphPartialJump threading, constant folding, dead-code removal, stack depth, exception tables.
AssemblerCompletePEP 657 location tables, exception tables, const pools.
.pyc marshalPartialWire format implemented; uses gopy magic number (not CPython-interoperable yet).
VM dispatchCompleteEvery Tier-1 opcode wired.
SpecializerCompleteAll PEP 659 families.
Tier-2 tracePartialProjector and executor lifecycle in place; per-uop bodies being ported.
sys.monitoringCompleteAll PEP 669 events.
Legacy tracingCompletesys.settrace bridge.
GILCompleteAcquire / release, eval breaker.
Memory modelCompleteRefcount + generational cycle collector.
Generators / asyncCompleteRESUME, YIELD_VALUE, RETURN_GENERATOR, SEND.
Import systemCompleteBootstrap, path finder, inittab. Frozen modules via stdlibinit.
Exception machineryCompletePEP 654 groups, except*, PEP 657 tracebacks.
int / floatCompleteBig-int via objects/long.go.
strCompleteUCS-1 / UCS-2 / UCS-4 kinded storage (PEP 393).
dictCompleteCombined / split layout, version tag.
Other containersCompletelist, tuple, set, frozenset, bytes, bytearray.

Modules​

53 built-in module slots registered in stdlibinit. See Modules for the full catalogue with per-module state.

Standard-library coverage​

CategoryAvailable
Built-ins and corebuiltins, sys, _io, io, errno, signal, gc
Numericmath
Functional_functools, functools, _operator
Containerscollections, _heapq (partial), _bisect (partial)
Textre, _sre, _codecs, difflib, fnmatch, _string (partial)
Data_json, _csv, _hashlib
OS / I/Oos, socket, _socket, _stat (partial)
Concurrency_thread (partial), contextvars
Compression / encodingzlib
Date / time_time (partial), _datetime (partial)
Introspectiontraceback, types, warnings, _warnings
Weakrefs_weakref, weakref
Class machinery_abc (partial), dataclasses, contextlib
Toolingargparse, _tokenize, _opcode (partial)

What is not here yet (and commonly missed): asyncio, multiprocessing, ssl, subprocess, threading (the full module), urllib, http, email, pathlib, sqlite3. Open an issue if your use-case needs one of these and we will prioritise.

Version map​

gopyCPython baselineHeadline change
v0.103.14First end-to-end Python program runs.
v0.113.14PEP 659 adaptive specializer.
v0.123.14Tier-2 trace projector and uop executor.
v0.12.13.14CPython test vendor; spec 1700 gate.
v0.12.33.14re, fnmatch ports.
v0.12.43.14Lexer/tokenizer parity sweep.

Full release notes live in the changelog.

Active work​

  • Tier-2 uop coverage. ~14 of ~285 uops ported. The optimisation pipeline is in place; the bottleneck is the per-uop body translation.
  • Tokenizer parity. v0.12.4 is closing the last gaps surfaced by the CPython test_tokenize suite.
  • Standard-library port queue. re and fnmatch shipped in v0.12.3; next up are the parts of os and pathlib needed for stdlib tests to compile.
  • .pyc interoperability. The marshal format works but uses gopy's own magic number. CPython-interoperable .pyc is on the roadmap.

Non-goals​

  • No alternative semantics. Anywhere gopy diverges from CPython, the divergence is a bug.
  • No CPython C extension ABI. .so and .pyd modules are out of scope. Native modules are reimplemented in Go on demand.
  • No Python 2.
  • No bytecode stability across gopy versions until v1.0.

How to help​

  • File issues on the tracker for parity bugs. Minimal repro plus expected behaviour is the most useful shape.
  • Pick a module from the partial list and translate one function at a time; see the contributor guide in CONTRIBUTING.md.
  • Run the benchmark suite and report regressions.