Sono interessato a continuations, in particolare nella C-API di Python. Da quello che ho capito, la natura delle continuazioni richiede convenzioni di chiamata a basso livello non astratte per manipolare lo stack di chiamate secondo necessità. Ho avuto la fortuna di incontrare alcuni esempi di questi sparsi here e there. Nei pochi esempi in cui mi sono imbattuto, questa non astrazione viene eseguita utilizzando l'intelligente C (con supposizioni sull'ambiente) o l'assemblaggio personalizzato.Il passaggio a PyFrameObjects in entrata e in uscita può essere una buona implementazione delle continuazioni?
Tuttavia, ciò che è interessante di Python è che ha un proprio stack di interpreti costituito da PyFrameObject
s. Supponendo che le applicazioni a thread singolo per ora, , non dovrebbero essere sufficienti per passare in-e-out PyFrameObjects
s per implementare le continuazioni in Python C-API? Perché questi autori si preoccupano anche delle cose di basso livello?
Non posso davvero rispondere a questo, ma mi viene in mente l'ottimizzazione. Buona domanda! – ThinkChaos
Scambiare oggetti frame è fondamentalmente come funzionano le funzioni del generatore. Quando si preme 'yield', l'oggetto frame corrente viene salvato sul generatore e estratto dalla pila. Quando è necessario il valore successivo, l'oggetto frame viene reinserito nello stack e l'esecuzione continua dal punto in cui era stata interrotta. –