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.