Na nedavno završenoj PHP konferenciji u Kaliforniji je bilo dosta zanimljivo predavanje koje mi je privuklo pažnju, barem ovako online gledajući slajdove i čitajući komentare. Hm, kada nisam u “poziciji” da tamo stvarno odem. Već duže vremena se razmišlja o ubrzanju php koda, postoje projekti koji rade prevođenje php koda u asembler kod čije izvršavanje ne traži parsiranje i obradu od strane php interpretatora. Razvojni tim perl-a, čija dugo najavljivana verzija 6 treba da donese brojne inovacije, između ostalog i prevođenje koda u aseblerski kod virtuelne mašine, označene pod imenom Parrot. Prilikom izvršavanja emulator ove virtuelne mašine će da izvršava taj kod, ali je to znatno brže nego parsiranje i obrada koda prilikom izvršavanja. Specifikacija u natuknicama Parrot virtuelne mašine postoji na dev.perl.org.

Gde je PHP u celoj priči?

Na pomenutoj PHP konferenciji su se kao završni predavači pojavili Sterling Hughes i Thies Arntzen sa predavanjem na temu pokretanja PHP interpretatora na Parrot mašini. Link ka PDF datoteci sa izlaganja je ovde. Sami učesnici konferencije su vrlo lepo prihvatili celu priču, a ujedno dali i ime projektu - “Pharrot”. Ono što je zanimljivo, osim mogućeg dobijanja u brzini jeste lako mešanje Perl i PHP koda u tom slučaju, jer će sve biti napisano u jeziku koji Parrot virtuelna mašina razume. Ukoliko se još i Python priključi ideji, dobićemo puno reči na P koje se teško izgovaraju (možda Pyrrot??) ali i lepše okruženje za rad. Što se ubrzanja tiče, mi sada ukoliko ne koristim neki sistem za keširanje PHP koda kroz ekstenziju u ZendEngine-u, odbacujemo sav generisani kod od strane interpetatora. Kroz Parrot, bi taj kod bio sastavni deo sistema, tj bio bi platformski nezavisan, uz dodatak mnogih drugih meta-informacija jer mi sami i pravimo procesor koji taj kod izvršava. Možda će doći vreme kada ćemo prestati da isporučujemo PHP kod sistema, već samo byte-code za Parrot mašinu ;).

John Coggeshall ima svoje utiske o Pharrot-u, i smatra da je Parrot mašina, neka vrsta odgovora na MS-ovu .NET tehnologiju. Koliko je opasno ovako govoriti neću da kažem, ali mislim da za sada ne treba upoređivati jednu produkcionu sa drugom wanna-be relased tehnologijom.

Šta dalje?

Iako Parrot postoji već skoro dve godine, sada se digla opšta frka po PHP sajtovima i svi pričaju o sjajnoj ideji. Sami autori predavanja su u bili izrazito oprezni, naglašavajući da se radi o projektu njih dvojce, a ne o forku php-a ili bilo šta slično tome. Parrot svakako predstavlja vrlo brzu virtuelnu mašinu što se može videti po nedokumentovanim i neobjašnjenim testovima (ali valjda su tačni), verovatno će podržavati više platformi i kroz perl6 biti široko prihvaćen. Sa ugrađenom podrškom za Unicode (eh taj php i mb_* string funkcije) i podrškom za regularne izraze bi trebao da pruži dobru platofrmu za perl6. A PHP i Zend, hm… PHP bi uvek bio drugi član porodice pod Parrot VM-om, razviti sopstvenu VM je bolje radi očuvanja kontrole binarne kompatibilnosti, lakše bi se sve to moglo povezati sa php5 i ZendEngine2… Ukoliko bi uspeli da naprave dobar PHP Parrot kompajler, sloj koji obezbeđuje kompatibilnost za php ekstenzije i ubede ostale da je to dobro, možda ovo postane nešto više od ličnog opitnog projekta kako je najavljeno u prvom slajdu. Pa ako php5 bude trajao kao i php4, možda…