Perl 7 sal die ontwikkeling van Perl 5 glad voortgaan sonder om terugwaartse versoenbaarheid te breek

Die Perl Projek Beheerraad het planne uiteengesit vir verdere ontwikkeling van die Perl 5-tak en die skepping van 'n Perl 7-tak. Tydens die besprekings het die Beheerraad saamgestem dat dit nie aanvaarbaar is om versoenbaarheid te verbreek met kode wat reeds vir Perl 5 geskryf is nie, tensy dit breek versoenbaarheid is nodig om kwesbaarhede reg te stel. Die Raad het ook tot die gevolgtrekking gekom dat die taal moet ontwikkel en nuwe kenmerke meer intensief bevorder moet word, terwyl opkomende innovasies makliker toeganklik is en aanvaarding aangemoedig word.

Anders as die oorspronklike bedoelings om toe te laat dat veranderinge wat terugwaartse versoenbaarheid breek by verstek in die Perl 7-tak ingesluit word, is die nuwe plan om die Perl 5-tak geleidelik na Perl 7 oor te skakel sonder om terugwaartse versoenbaarheid met bestaande kode te breek. Die Perl 7.0-vrystelling sal konseptueel nie verskil van die volgende Perl 5.xx-tak nie.

Die ontwikkeling van nuwe vrystellings van Perl 5 sal voortgaan soos voorheen - nuwe kenmerke wat by die tak gevoeg word wat nie met die ou kode versoenbaar is nie, sal net soos voorheen ingesluit word as die "gebruik weergawe" of "gebruik kenmerk kenmerk" pragma uitdruklik gespesifiseer word in die kode. Byvoorbeeld, Perl 5.010 het 'n nuwe sleutelwoord "sΓͺ" bekendgestel, maar aangesien bestaande kode funksies met die naam "sΓͺ" kan gebruik, is ondersteuning vir die nuwe sleutelwoord slegs geaktiveer deur die "gebruik funksie 'sΓͺ'" pragma uitdruklik te spesifiseer.

Nuwe sintaksis wat by die taal gevoeg word, wat, wanneer dit in vorige vrystellings verwerk is, tot 'n fout gelei het, word onmiddellik beskikbaar sonder dat dit nodig is om spesiale pragmas te spesifiseer. Byvoorbeeld, Perl 5.36 sal 'n vereenvoudigde sintaksis bekendstel vir die verwerking van veelvuldige lyswaardes gelyktydig ("foreach my ($key, $value) (%hash) {") wat onmiddellik beskikbaar sal wees, selfs in kode sonder die "gebruik v5.36” pragma.

In sy huidige vorm gebruik Perl 5.36 die "gebruik v5.36"-pragma om 13 interoperabiliteitsverbrekende kenmerke moontlik te maak ('sΓͺ', 'state', 'current_sub', 'fc', 'lexical_subs', 'handtekeninge', 'isa ', ' bareword_filehandles', 'bitwise', 'evalbytes', 'postderef_qq', 'unicode_eval' en 'unicode_strings'), aktiveer die "gebruik streng" en "gebruik waarskuwings"-modusse by verstek en deaktiveer ondersteuning vir die verouderde indirekte notasie vir roepende voorwerpe (wanneer in plaas van "- >" 'n spasie gebruik) en Perl 4-styl multidimensionele skikkings en hashes ("$hash{1, 2}").

Wanneer genoeg veranderinge opgehoop het, in plaas van die volgende weergawe van Perl 5.x, sal 'n weergawe van Perl 7.0 gegenereer word, wat 'n soort toestandsmomentopname sal word, maar ten volle agtertoe versoenbaar sal bly met Perl 5. Om veranderinge en instellings te aktiveer wat versoenbaarheid breek, sal jy die "gebruik v7"-pragma uitdruklik by die kode moet voeg. . DiΓ©. kode met die "gebruik v7" pragma kan behandel word as "moderne Perl", waarin versoenbaarheid-breek taalveranderinge beskikbaar is, en sonder - "konserwatiewe Perl", wat ten volle agteruit versoenbaar sal bly met vorige vrystellings.

Bron: opennet.ru

Voeg 'n opmerking