Skip to content

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
Loading
Clone this wiki locally