Fork PHP

Školení, která pořádám

Jak jsem nedávno poznamenal, tak jsem trochu zneklidněn tím, jak se tříští vývoj MySQL. Na totéž poukazuje i autor článku PHP Hacking, ovšem používá to jako argument pro uvedení vlastní verze PHP.

Této verzi PHP nedávám moc šancí na větší rozšíření ze dvou důvodů:

  1. Nestojí za ní žádná velká společnost, která by ji masivně používala na svých serverech.
  2. Změny byly provedeny dost nešťastným způsobem – místo forku a následných commitů s jednotlivými úpravami byl použit snapshot PHP a jeden monstrózní patch se všemi změnami najednou.

Některé změny mi ale i tak přijdou zajímavé:

Část nových funkcí by se dala snadno implementovat přímo v PHP, ale mít je k dispozici všude může být užitečné. Některé věci se mi ale zdají zbytečné nebo dokonce škodlivé:

V souvislosti s těmito úpravami stojí za to také prostudovat seznam navrhovaných, přijmutých a odmítnutých změn v oficiálním PHP. Mezi přijatými změnami je např. možnost rovnou pracovat s prvky pole vráceného funkcí: f()[0].

Jakub Vrána, Seznámení s oblastí, 17.6.2011, diskuse: 11 (nové: 0)

Diskuse

kukulich:

Většina zastaralých direktiv už byla pro 5.4 zrušena a zkrácený zápis polí pravděpodobně také bude. Aktuální hlasování vypadá dost nadějně https://wiki.php.net/rfc/shortsyntaxforarrays/vote. Alpha 5.4  by měla vyjít v pondělí.

optik:

alfu posunuli na 28.6. (zatím)

marty:

Robert Eisele (autor forku) psal v komentarich, ze mu ani o masivni vyuziti nejde, ale ze jde o proof of concept, ktery mu ma umoznit upozornit na featury, protoze v php bugtrackeru na nej kaslou.

"...I modified PHP as proof of concept in order to get these changes into one of the next releases. That's also why I published it as PHP5.3.6, because it's originated from PHP5.3.6."

Martin Hruška:

Tohle je jen důsledek toho, že PHP není jen jazyk, ale ještě k tomu ohromný balík méně nebo více rozumných funkcí.

Dělá snad někdo fork Javy, Pythonu nebo Ruby, aby mohl mít novou funkci str_random?

Mě to přijde naprosto šílené, ujeté a pokud tohle nedonutí lidi se trošku zamyslet, jestli nedat od PHP ruce pryč, tak už asi nic.

ikona Jakub Vrána OpenID:

Žádný zásadní rozdíl nevidím. PHP má celkem malé jádro (které fork upravuje např. kvůli výkonnosti) a knihovnu standardních funkcí (které jsou ale např. na rozdíl od Pythonu napsané v C a ne v „sobě“). Názor na to, co má být v této standardní knihovně a co už ne, se různí.

optik:

A to je právě na prd, kdyby mělo PHP pěknou rychlo VM a základní knihovnu přímo v PHP, rychlost vývoje a hlavně řešení bugů v core PHP bude mnohem větší, takhle je všechno v C hlavně kvůli rychlosti a všechno strašně trvá. Z toho také plyne že PHP je hlavně lepidlo různých C/C++ knihoven, kdežto
Java, Ruby, Python jdou spíše vlastní cestou, což mi přijde lepší. I z toho důvodu je samotné PHP proti nim z mého pohledu mnohem větší moloch.

Je určitě dobře, že do toho někdo pěkně zašťoural, protože to, jak se se vleče vývoj PHP je dost hrůza, třeba se to trochu pohne.

Sidik:

PHP není balík funkcí. Má spoustu rozšíření ale jádro samo o sobě nijak veliké není. Naprostá tragédie je jen syntaxe, hlavně názvy funkcí.

Tady navíc nejde o forkování a vývoj samostatného nového PHP, pouze o ukázku, že navrhované změny opravdu mají smysl a nemělo by se na ně kašlat.

Mezi námi, rychlost aplikací psaných v PHP je i přes ten "ohromný balík méně nebo více rozumných funkcí" pořád mnohem vyšší, než u aplikací psaných v Javě nebo Ruby. Hlavně v případě různých slepenin. A zprovoznit PHP aplikaci je daleko snazší než rozhýbat něco v Javě nebo nedejbože v Ruby. Moc tomu nepomáhá ani téměř nulová podpora jiných jazyků u hosterů (a když už tam něco je, tak to většinou moc používat nejde).

ikona v6ak:

K té rychlosti: mohu se zeptat na zdroj?

Jinak je samozřejmě možné napsat benchmark tak, aby to Java v rychlosti prohrála, myslím, že i vím jak. Ale s vhodným použitím bude rychlejší spíše Java.

ikona Ondřej Mirtes:

Java už z principu musí být rychlejší než PHP (kompilace, statické typování).

ikona v6ak:

Myslím, že důvody jsou poněkud jiné než přidání nějaké funkce. Tu lze, samozřejmě, přidat běžným způsobem, podobně jako v Javě, Pythonu, Ruby etc.

Na druhou stranu, třeba Java má HotSpot (OracleoSun JRE), jeho fork OpenJDK (až na některé outsourcované části shodné s HotSpotem) a jeho fork IcedTea (vyvíjený Red Hatem, odtud se asi přebírají patche zpět do OpenJDK). Pak tu je/byl JRockit (má být AFAIK spojen s OpenJDK a HotSpotem). Čtyři implementace tu budou časem spojeny do jedné. Pak je tu například IBM JDK a nějakou dobu tu bylo GCJ, dnes asi zaříznuté.

A Python? Tam nejsem až tak orientován, ale určitě tu vedle CPythonu je PyPy a Stackless a to ještě nepočítám RPython, Jython a Boo/BooJay, což už jsou možná spíše jiné jazyky.

Nebo Ruby? Vedle Ruby MRI tu je Rubinius a JRuby, mezi Ruby-like jazyky patří třeba Mirah.

V případě Ruby a Pythonu jsem toho napsal poněkud méně než u Javy, ale spíše jde o to, že tam mám větší přehled.

jirik:

ad podpora utf: v gentoo portage se u php predcasem objevily patche, ktere doplnuji nativni podporu pro utf8 do standartnich fci..

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.