Lisäasetukset
Sisäisiä tietoja. Jos upotat Phasis-ratkaisun, voit ohittaa tämän osion. Jos muokkaat moottoria, jokainen tämän osion sivu on olennainen.
Sivut
- Arkkitehtuuri — miten lähdekoodista syntyy suoritus: leksikaalinen analyysi → jäsennin → AST → tavukoodin käännös → tavukoodi-VM ja varalla toimiva puun läpikäyjä. Moduulilataaja, realm-ympäristöt ja kohteen
Phasis\Enginerooli realm-rajana. - Tavukoodi-VM — käskyjoukko, suorituslooppi, sisäiset välimuistit, JsToPhp-lähdekoodin transpiloiva nopea polku, funktiomuodon canSkipEnvAlloc-heuristiikka sekä se, milloin kutsut käyttävät tavukoodipolkua ja milloin puun läpikäyjää.
- Vertailutestit — nykyiset
bench/-tulokset, niiden tulkinta, miksi noin 100× V8 on puun läpikäyjien tasaisen suorituskyvyn yläraja ja mikä voisi kuroa eroa umpeen. - Testaus — vertailumalli. Jokainen muutos varmennetaan kolmea toisistaan riippumatonta vertailukohtaa vasten: Node.js (V8-määrityksen totuudenlähde), test262 ja suositun kirjaston tavutasavertaisuuden testisarja.
Osallistumiskäytännöt
- Älä koske moottorin ytimeen ilman painavaa syytä. Kohteissa
src/Runtime/,src/Bytecode/,src/Lexer/,src/Parser/jasrc/Regex/oleva koodi on test262:n kriittisellä polulla. Niiden muokkaaminen ilman vastaavaa test262-varmennusta johtaa helposti regressioihin. Sisäänrakennetut toiminnot (src/BuiltIn/) ovat turvallisempia, koska niiden test262-alitestisarjat havaitsevat rikkoutumiset paikallisesti. - Käytä järjestelyyn traitteja, älä luokkia. Kun tiedosto ylittää noin 2K riviä, jaa se trait-tiedostoihin sisarhakemistossa (
src/BuiltIn/Temporal/,src/Runtime/Parts/jne.) uusien luokkien muodostamisen sijaan — näinself::-haut toimivat ja yksityisten metodien API-pinta säilyy. - Suorita
bin/verify-allpaikallisesti ennen työntämistä. Se suorittaa PHPStan, PHPCS, jokaisen PHPUnit-testisarjan (yksikkö-, vertailu-, popular- ja wpt-testit) sekä vertailuregression. CI suorittaa WPT- ja popular-testisarjat, kun kohdettasrc/muutetaan; koko test262-matriisi käynnistetään käsin, joten testaa paikallisesti muutokseen liittyviä test262-luokkia. - Lisää jokaista Web API -toimintoa varten WPT-testitiedosto. Siirrä
.any.jskohteestatests/Wpt/upstream/<area>/kohteeseentests/Wpt/fixtures/<category>/, niin suorittaja poimii sen mukaan.
Katso myös
- Yhteensopivuus — miten vertailutulokset mitataan.
- CLI-viite —
bin/phasis,bin/test262,bin/wpt.