Papagaji protiv Zenda
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…
4 komentara
4 nov 2004 Zoka
Lijep text.
Ovo sto kazes "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 pisati da isporučujemo i kod PHP sistema, a ne samo byte-code za Parrot mašinu u našim ponudama ;)."
Nisam bas siguran da sam dobro razumio.
4 nov 2004 Goran Rakić
Bila je greška u rečenici, ispravio sam. Treba da piše:
"Možda će doći vreme kada ćemo prestati da isporučujemo kod PHP sistema, već samo byte-code za Parrot mašinu u našim ponudama ;)."
Naime, poznato je da mnogi žele da zaštite svoj PHP kod. Upotrebom Pharrot-a, mi možemo da napravimo byte-code i da to distribuiramo, pošto je on portabilan za bilo koji sistem. Potrebe za nekim kodom kao objašnjenje ne postoje, pošto ćemo kroz ekstenzije Parrot-a moći napisati "debug simbole" u proširenom smislu i slične podatke. Naravno, sve je apstraktno. Kako za sada stoji, PHP zajednica nije baš oduševljena idejom da koristi perl6 mašinu, naravno neki fork će verovatno postojati. Videćemo...
4 nov 2004 caboom
hmm, ne bih se uzdao u bytecode zastitu. :)
4 nov 2004 Goran Rakić
Naravno, byte-code možeš vratiti u originalan oblik ali se gubi dobar deo informacija, nema objašnjenja, komentara i ostalog što bi olakšalo razumevanje koda, a čega inače ima kada daješ PHP kod.
Ko ne želi, može da koristi Zend Encoder ili nešto alternativno, e sad kako će poslodavac da na to reaguje to je pitanje...