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...
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.
Objavio Zoka u November 18, 2003 11:25 AMBila 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...
hmm, ne bih se uzdao u bytecode zastitu. :)
Objavio caboom u November 27, 2003 5:37 PMNaravno, 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...
Objavio Goran Rakić u November 30, 2003 2:13 PM