Waarom Pliro grenzen aan een programma stelt

Programmeergidsen

Een programma kan per ongeluk veel meer werk doen dan je bedoelde. Uitvoergrenzen helpen dat werk te stoppen en te melden wat er misging.

Wat wordt er geteld?

Een instructiebudget begrenst de kleine uitvoerstappen die Pliro doet. Het is niet gewoon een telling van bronregels: één regel kan meerdere stappen kosten. Een uitvoerdeel is het werk tussen coöperatieve controlepunten. Een positieve wachttijd of afgeronde invoervraag laat een andere beurt toe en begint een nieuw instructiedeel. Coöperatief annuleren betekent dat de runtime bij zijn controlepunten kijkt of Stop is gevraagd.

Aanroepdiepte telt functies die nog wachten totdat andere functieaanroepen klaar zijn. Als A B aanroept en B C, zijn die aanroepen genest. Dat verschilt van één functie vaak in een lus aanroepen nadat de vorige aanroep telkens al klaar was.

Het gebeurtenisbudget telt het afleveren van gebeurtenissen en het klaarzetten van handlers over de hele sessie. Dispatch betekent een gebeurtenis afleveren; een handleraanroep is één uitvoering van zo’n blok. Wachten vult dit budget niet aan. Een eenmalige timer wordt één keer klaar; hem activeren betekent zijn wachttijd laten beginnen. Begrensde geschiedenis betekent dat de host maar een beperkte hoeveelheid informatie over eerdere gebeurtenissen bewaart.

De runtimes begrenzen het instructiebudget per coöperatief deel, aanroepdiepte,
gebeurteniswerk, invoergrootte en door de host bewaarde gebeurtenisgeschiedenis.
Een eindeloze lus zonder positieve wacht of invoervraag eindigt met een
budgetdiagnose in plaats van de IDE of browser onbeperkt vast te zetten.

Het standaardbudget voor gebeurteniswerk is 10.000 eenheden per sessie.
Bericht-/toets-/aanwijzerafleveringen en ingeplande handlers kosten werk.
Een eenmalige timer krijgt zijn handlerkosten bij het inplannen, niet nogmaals
bij ontwaken. Positief wachten vult dit sessiebudget niet aan.
3D heeft daarnaast de wereld- en argumentlimieten uit paragraaf 14.6.

Code Betekenis
E4018 Gebeurteniswerkbudget overschreden.
E4019 Een vereist blijvend invoertype is niet beschikbaar bij de host.
E4020 Aanwijzercoördinaten opgevraagd buiten een aanwijzergebeurtenistaak.
E6001 Een gebruikte mogelijkheid wordt door het native doel niet ondersteund.

Gerelateerde lemma’s

Syntaxis en waarden · Ingebouwde functies · Programmeergidsen