-
Notifications
You must be signed in to change notification settings - Fork 50
Workflow for 3.12 cycle
Michael Droettboom edited this page Aug 2, 2022
·
17 revisions
graph TB
%% High level goals
CompactObject[["Compact objects"]]
ReducedRefcount[["Reduced reference counting overhead"]]
SpecDone[["Finish specialization"]]
Traces[["Projected (short) trace opimitized interpreter"]]
%% Tasks
Compiler("Bytecode compiler enhancements -- <b>Irit</b>")
StaticRefcntReduction("Use static analysis to reduce reference count operations")
SpecSeq("Specialize FOR_ITER for sequences -- <b>Dennis</b>")
SpecGen("Specialize FOR_ITER for generator")
SpecClass("Specialize CALL for Python classes")
CtoPy("Identify main sources of calls to PyEval_EvalFrame")
ShimFrame("Shim frames on entry to PyEval_EvalDefault")
SpecSend("Specialize SEND")
SatRefcnt("Saturating refcounts")
380("Move PEP 380 logic into compiler -- <b>Brandt</b> ")
EncapsulateGIL("Encapasulate GIL code and move it out of ceval.c")
OpcodesOwnFile("Move opcode definitions to their own file and generate PyEval_EvalDefault")
CycleGC("Improve cycle GC -- Task needs breaking up")
MiniOps("Breakup instruction definitions into 'mini-ops'")
SmallGCHead("One word GC header")
MergeDictValuePointers("Merge managed dict and values pointer into one word")
TrackRefsInC("Identify flow of references in C")
OptRefsInC("Optimize flow of references in C, transferring ownership when needed")
GuardOpt("Optimize traces: Guard stengthening and elimination")
AllocSinking("Optimize traces: Allocation elimination")
AllBranchesForward("Only unconditional jumps should go backwards")
HotSpotDetection("Detect hotspots in code")
TraceProjection("Trace projection: Create traces from hotspots")
TraceEval("Trace interpreter")
OptAPI("Implement optimizer API")
Deferred("Deferred reference counts")
StaticRefcntReduction("Static reduction in refcount operations")
WebAssemblyFriendlyInterpreter("Generate version of the interpreter better suited to emscripten and web assembly")
%% Dependencies
AllBranchesForward --> HotSpotDetection
HotSpotDetection --> TraceProjection
Compiler --> StaticRefcntReduction
Deferred --> StaticRefcntReduction
Deferred --> ReducedRefcount
StaticRefcntReduction --> ReducedRefcount
ShimFrame --> SpecGen
SpecGen --> SpecSend
SatRefcnt --> SmallGCHead
CtoPy --> ShimFrame
SpecSeq --> SpecGen
OpcodesOwnFile --> MiniOps
380 --> OpcodesOwnFile
EncapsulateGIL --> OpcodesOwnFile
OpcodesOwnFile --> WebAssemblyFriendlyInterpreter
380 --> SpecSend
MergeDictValuePointers --> CompactObject
SmallGCHead --> CompactObject
TrackRefsInC --> OptRefsInC
OptRefsInC --> ReducedRefcount
SpecSend --> SpecDone
SpecClass --> SpecDone
OptAPI --> TraceProjection
MiniOps --> TraceProjection
TraceProjection --> TraceEval
MiniOps --> TraceEval
TraceEval --> GuardOpt
TraceEval --> AllocSinking
GuardOpt --> Traces
AllocSinking --> Traces