Išleistas PHP4.3.3RC2

Pasiskaičiau šiandien naujieną PHP.lt apie
PHP4.3.3RC2 išleidimą
.

Šiaip man gana keista jog tarp RC1 ir RC2 yra tiek daug pasikeitimų
– o ypač kai pradedama naudoti kitas bibliotekų versijas. Kiek
teko skaityti apie įvairių open source projektų release cycles, tai kai
projektas įeina į „Release Candidate“ statusą joks kitoks
naujas kodas nebepriimamas išskyrus bugfixus (o tai reiškia, kad
jokios naujos bibliotekos nebededamos, nebevyksta jokie
pakeitimai išskyrus tuos kai projektas neveikia taip kaip turėtų –
t.y. taip kaip aprašyta dokumentacijoje). Taip yra su Mozilla, Linux
kerneliu, Perlu…

Na aš per daug taip gal ir nemanau, bet pasaulyje rimti Javininkai,
Perlininkai, ar kiti programuotojai, dirbantys „Enterprise“
lygyje šiek tiek dėl to ir žiūri į PHP kreivai, nes jų nuomone tai
nestabilus, jaunas, gal ir perspektyvus, bet dar tikrai ne
„stable“ projektas. Iš dalies galima matyt su tuo ir
sutikti.

Tikrai nežinau kaip vyksta PHP developinimas, nes nesėdžiu jų mailing
listuose, bet atrodo skirtumas tarp Perlo ir PHP šiuo atžvilgiu yra.
Šiandien ką tik išleistas Perl 5.8.1RC3 neturi jokių naujų featurų (kai
kurie jų buvo būtent atmesti dėl to, jog jau projektas yra RC stadijoje
ir teks palaukti 5.9.0)

Dar vienas dalykas, kuris man padarė įspūdį Perlo instaliavimo metu
— testų kiekis. Padarius „make test“ Perlas padaro apie
60000 (taip, šešiasdešimt tūkstančių) testų, tuo tarpu PHP tik apie
300-350. Gal ir dėl panašių dalykų pasaulis vis dar laiko PHP unstable.

Perl 5.8.1RC3, egzegezė ir t.t.

Prieš kelias minutes išleistas Perl 5.8.1 RC3. Tai atrodo paskutinis
release cadidate prieš galutinį 5.8.1 variantą. Šiame RC3 dar
pagerinta asociatyviųjų masyvų atsitiktinumas, bei ištaisyta dar kokia
20 klaidelių (na, kai kurios jų yra tik spellingo klaidos
dokumentacijoje ;) RC3 galima parsisiųsti
CPAN
.

Taipogi vakar buvo suforkinta 5.6.2 Perlo versija. Planuojama
išleisti 5.6.2 už kokio mėnesio ar kito, nes jau yra susikaupę labai
daug lopų 5.6.1 versijai, be to kai kurie dalykai iš 5.8.0 buvo
backportinti į 5.6.x medį. Visi tie lopai jau priimti, belieka
tik testuoti.

Damian Conway užvakar išleido 6-ą egzegezę
apie Perl6
. Egzegezėse aiškinama tai ką Larry Wall yra
sumanęs Pelr6 kalbai. Būtent ši egzegezė yra apie funkcijas. Tiesa,
visos dar neperskaičiau, tačiau ypač mane sudomino naujas kintamųjų
tipas – konjunkcijos/disjunkcijos/objunkcijos. Dabar bus galima
vietoj if ($a == 1 || $a ==2 || $a == 3) rašyti
if ($a == 1|2|3) (bitinis „AR“ nedingo,
jis tiesiog bus kitaip rašomas). Be to kiek pastebėjau Damian atsisakė
operatoriaus ~> ir dabar jis rašysis
==>. O juk buvo mąstoma ir apie unikodinius
operatorius ;)

Naujienos iš mano gyvenimo

Na ką gi, vasara… Reiškia šiokias tokias atostogas, nežmoniškus
karščius ir retesnį sėdėjimą prie kompiuterio ;) Nerašiau jau porą
dienų, turbūt atostogų nuotaikų paveiktas.

Per pastarąsias keletą dienų įvyko ir daug, ir nieko. Pirkau naują
kompiuterį, kuriame dabar sėdi Debianas (hmmm, tik X-sai niekaip
nepasileidžia – LCD monitorius jiems nepatinka, bet vakar
susikompiliavau 4.3.0 versiją, ir atrodo veiks ;). Iš savo senuko
Pentiumo 100 MHz išmečiau Windows95 ir taipogi sudėjau Debianą. Dabar ta
sistema bus kaip ir routeriukas, kaip ir šiokia tokia eksperimentinė
smėlio dėžė.

Dar šiokia tokia naujiena yra ta, kad pagaliau su mr2 gavom perl.lt domeno kontrolę. Aišku kontrolės
gavimas nereiškia, jog po dviejų dienų ten iš niekur nieko atsiras
svetainė panaši į php.lt, bet mano galvoje
po truputį vystosi perl.lt koncepsija. Na, kol viskas neaptarta
su mr2 tai nesinori per daug viską viešint, tačiau pagrindiniai
principai manau bus tokie, kad perl.lt taptų lietuviška svetaine skirta
padėti vieni kitiems programuojant Perlu. Lietuviška, o ne
angliška ar rusiška (norisi išvengti php.lt patirties, kai naujienos
rašomos pusiau lietuviškai, pusiau angliškai), apie Perl, o ne
PHP, VBScript ar Java, bei skirta padėti, o ne pasiųsti RTFM.
Žiūrėsim kaip čia gausis ir ar tas idealizmas gali būti įgyvendintas
realybėje.

Perlo dokumentacijos atnaujinimai

Vakar gavau patvirtinimą iš PAUSE, jog gavau CPAN ID KUDARASP. Nieko per
daug nelaukęs šiandien pasirašiau modulį POD2::LT,
kuris atitinka pereitą savaitę perl-documentation@perl.org
susirašinėjimo sąraše pasiūlytą
sistemą
. Atrodo būsiu pirmasis, įkėlęs į CPAN
POD2::* modulį.

Pereitą savaitę tame pačiame susirašinėjimo sąraše buvo pasiūlytas ir
lopas perldoc programai, kad ji galėtų priimti
-L kalba opciją, ir rodytų dokumentaciją
reikiama kalba. Italai modulyje POD2::IT
parašė reikiamus lopus Perl 5.6.0 ir 5.6.1 versijoms. Ta proga aš
parašiau lopus ActivePerl 5.8.0.805 ir Perl 5.8.0 versijoms, kuriuos
galima rasti POD2::LT modulyje.

Pagerintas register_globals?

Žaidžiuosi dabar per atostogas šiek tiek su Perl ir PHP ;) Ypač man
Perle patinka „taint mode“, kuris tiesiog neleidžia naudoti
kintamųjų, gautų iš išorinės aplinkos – ar tai būtų per shellą
gauti kintamieji, ar GET/POST/COOKIE HTTP metodais gauti duomenys. PHP
šiuo atžvilgiu tik dabar susirūpino šiais dalykais (register_globals gi
būdavo On iki 4.2.0 versijos). O jeigu pasirašius savą
register_globals atitikmenį? Štai kas man gavosi:

<?php
    define("USE_GET", 1);
    define("USE_POST", 2);
    define("USE_COOKIE", 4);

    $USE_TYPE = array( 'integer' => '/(^\d+$)/',
               'hexstring' => '/(^[0-9A-Fa-f]+$)/',
               'raw' => '/(.*)/s');

    function use_variable($var, $regexp = 'raw', $source = 7)
    {
        if($regexp[0] !== '/') {
            global $USE_TYPE;
            $regexp = $USE_TYPE[$regexp];
        }
        if ($source & USE_GET) {
            preg_match($regexp, $_GET[$var], $o);
        } elseif ($source & USE_POST) {
            preg_match($regexp, $_POST[$var], $o);
        } elseif ($source & USE_COOKIE) {
            preg_match($regexp, $_COOKIE[$var], $o);
        }
        global $$var;
        $$var = $o[1];
    }

    use_variable('skaitmuo', 'integer');
    use_variable('skaitmuoblogas', 'integer');
    use_variable('hexas', 'hexstring');
    use_variable('hexasperpost', 'hexstring', USE_POST);
   
    print "Skaitmuo: $skaitmuo<br>";
    print "Skaitmuoblogas: $skaitmuoblogas<br>";
    print "Hexas: $hexas<br>";
    print "Hexasperpost: $hexasperpost<br>";
?>

Funkcija use_variable() „išvalo“
kintamuosius prieš padarydama juos globaliais. Tad jei kas bandys
padaryt kokią nors XSS ar SQL injection ataką, duomenys turėtų
būti geriau atsijojami. Na, bent jau teoriškai. Vat išsaugojus šį kodą
byloje test.php ir nuėjus adresu
test.php?skaitmuo=123&skaitmuoblogas=123a&hexas=123465789abCDE&hexasperpost=12346789A
turėtų spausdinti tik gerus dalykus ;)

Perlas gauna eilinį apdovanojimą, PHP portinamas į Parrot

use.perl.org
rašo, jog Linux Journal paskelbė
Perl5.8.0 geriausiu
programavimo įrankiu
. Atrodo niekam tai nesukėlė didelių
nusistebėjimų. Tarp kitų nugalėtojų yra ir OpenOffice.org, ir
PostgreSQL, Webmin, Mozilla1.4, iptables ir t.t

Tuo tarpu užtikau Sterling Hughes dienoraštyje straipsniuką apie tai,
jog jis pradėjo
portinti PHP į parrot platformą
. Parrot kada nors pakeis Zend
engine?

Projektas „Ponie“

Ne per seniausiai (liepos 16) vyko O’reilly Open Source
konferencija (OSCON), kuri yra labai populiari tarp atviro kodo
programuotojų. Jos metu tradiciškai Larry Wall (na gi tas pats Perl
autorius) perskaito pranešimą apie tai kaip sekasi Perlui. Šis
pranešimas visad vadinasi „State of the Onion“
(pašaipa iš Amerikos prezidento metinio pranešimo, kuris vadinasi
„State of the Union“). Šįmet tai jau septintasis
pranešimas (jį galima rasti čia). Kaip
ir visada, jis buvo juokingas, bet kartu atvėrė ir Larry Perlo viziją.

Šiuo pranešimu Larry paskelbė projektą PONIE (sakoma, kad prie
pavadinimo prisidėjo Londono Perlo bendruomenė, kuri yra sukūrusi modulį
ACME::Pony,
kuris paverčia Perl programas į ponio paveiksliukus ASCII formate). O
šiaip Ponie yra santrumpa, reiškianti „Perlas naujoje Vidinėje
Platformoje“ (Perl On New Internal
Engine). Ta nauja platforma yra ne kas kita kaip Parrot.

Trumpai apie Parrot. Tai nauja virtuali platforma, ant kurios veiks
perl6. Ir ne vien Perl6, o ir Perl1, Perl5, PHP, Ruby, Python, Scheme,
COBOL, Java, Befunge, TECO, REXX… Virtuali platforma tai kažkas
panašaus į .NET, tik Parrot rašoma Perl stiliumi – reiškia
apribojimų programuotojo laisvei bus maža ;) Parrot rašo būrys
programuotojų, tačiau pagrindinis yra Dan Sugalski. Beje, šios
OSCON metu Dan susilažino su Python autoriumi Guido van Rossum, kad
Python kodas sukonpiliuotas Parrot platformai veiks greičiau nei Python
kodas kompiliuotas į Python platformą. O Parrot tikrai greitas daiktas
– mano P120 laptope su FreeBSD juo sugebėjau prasukti 1-2 mln
turčių ciklo iteracijų per sekundę (kaip virtualiai platformai ta tikrai
labai geras rezultatas)

Žodžiu Ponie yra Perl5 portas į Parrot. Perl5.10 turėtų vienodai
atrodyti tiek ant C, tiek ant Parrot (kol kas paskutinė
„stable“ medžio versija yra 5.8.1RC2, o
„development“ – 5.9.0) Manoma, kad Perl5.12 bus
paskutinis Perl5 serijoje (jame turėtų būti tik riktų pataisymai iš 5.10
versijos).

Bet kam reikia Perl5 ant Parrot? Iš dalies tam, kad būtų lengviau
žmonėms migruoti nuo Perl5 prie Perl6. Bet svarbiausia ne tai. Pati
Perl6 gramatika bus aprašyta Perl6 įpraiškomis. Kol nėra Perl6 įpraiškų,
tol nėra pačio Perl6, kol nėra pačio perl6, tol nėra Perl6 įpraiškų. Čia
į pagalbą skubės Damian Conway, kuris parašys Perl5 modulį, kuris
galės konvertuoti Perl5 įpraiškas į Perl6 įpraiškas ir atvirkščiai. O
jau turint šį modulį, bus galima aprašyti Perl6 gramatiką naudojantis
tik Perl5. Tik mums reikia kad Perl5 sukompiliuotas kodas būtų
pritaikytas Parrot virtualiai platformai, todėl pradžiai reikia Perl5
nuportint į Parrot. Sudėtingoka ;)

Ponie tikimasi turėti ne vėliau kaip po 2 metų (stable versiją), tad
pirmąsias normalias Perl6 alpha versijas gal būt jau bus galima pamatyti
už metų pusantrų.

Internetas yra šūdas

Per simplebits.com radau labai įdomią svetainę, verčiančią susimąstyti ir trimituojančią frazę „internet is shit“. Pagrindinė idėja tame, jog praleidžiame internete per daug laiko, kai galėtume tą laiką praleisti darydami realius dalykus. Internetas nėra visuotinis. Jie žmogaus neranda Google tai nereiškia jog jis neegzistuoja. Internetas mus per daug užvaldė.
Labai įdomi citata:

“If I can operate Google, I can find anything… Google, combined with Wi-Fi, is a little bit like God. God is wireless, God is everywhere and God sees and knows everything. Throughout history, people connected to God without wires. Now, for many questions in the world, you ask Google, and increasingly, you can do it without wires, too.”