<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_1_subsect_2_thread_41381"  />
<title>rulinux.net - Новости - Linux General - Релиз интерпретатора языка программирования Perl 5.20 </title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Новости - Linux General - Релиз интерпретатора языка программирования Perl 5.20 </title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re:Релиз интерпретатора языка программирования Perl 5.20 </title>
<link>https://rulinux.net/message.php?newsid=41381&amp;page=1#200059</link>
<guid>https://rulinux.net/message.php?newsid=41381&amp;page=1#200059</guid>
<pubDate>Fri, 20 Jun 2014 09:30:03 +0400</pubDate>
<description><![CDATA[<p>ну ну</p>]]></description>
</item>
<item>
<title>Re:Релиз интерпретатора языка программирования Perl 5.20 </title>
<link>https://rulinux.net/message.php?newsid=41381&amp;page=1#198634</link>
<guid>https://rulinux.net/message.php?newsid=41381&amp;page=1#198634</guid>
<pubDate>Wed, 28 May 2014 18:07:54 +0400</pubDate>
<description><![CDATA[<p>Хм, комментариев нет, пойду смотреть новости про автоктастрофы...</p>]]></description>
</item>
<item>
<title>Релиз интерпретатора языка программирования Perl 5.20 </title>
<link>https://rulinux.net/message.php?newsid=41381&amp;page=1#198632</link>
<guid>https://rulinux.net/message.php?newsid=41381&amp;page=1#198632</guid>
<pubDate>Wed, 28 May 2014 15:25:42 +0400</pubDate>
<description><![CDATA[<p>После года разработки <a href="http://www.nntp.perl.org/group/perl.perl5.porters/2014/05/msg215815.html">представлена</a> новая стабильная ветка языка программирования Perl - <a href="https://metacpan.org/release/RJBS/perl-5.20.0/">5.20</a>. При подготовке нового выпуска было изменено около 470 тыс. строк кода, изменения затронули 2900 файлов, в разработке приняли участие 124 разработчика.<br><br>Ветка 5.20 выпущена в соответствии с утверждённым четыре года назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов - раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.20.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.20.0. Одновременно с выходом Perl 5.20 прекращена поддержка ветки 5.16, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.21, на базе которой в мае 2015 года будет сформирован стабильный релиз Perl 5.22.<br><br><a href="http://search.cpan.org/~rjbs/perl-5.20.0/pod/perldelta.pod">Ключевые улучшения</a>, добавленные в Perl 5.20:<br><br>    Экспериментальная поддержка <a href="http://search.cpan.org/~rjbs/perl-5.20.0/pod/perlsub.pod#Signatures">сигнатур функций</a>, позволяющих явно определить перечень переменных, используемых в функции и автоматизировать операции проверки и присвоения значений из массива входящих параметров. Для активации поддержки сигнатур функций необходимо указать директиву &quot;use feature 'signatures'&quot;; Например, ранее используемый код:<br><br><fieldset><legend>perl</legend><div class="highlight perl"><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sub</span> foo <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/die.html"><span class="kw3">die</span></a> <span class="st0">&quot;Too many arguments for subroutine&quot;</span> <span class="kw1">unless</span> <span class="co5">@_</span> <span class="sy0">&lt;=</span> <span class="nu0">2</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/die.html"><span class="kw3">die</span></a> <span class="st0">&quot;Too few arguments for subroutine&quot;</span> <span class="kw1">unless</span> <span class="co5">@_</span> <span class="sy0">&gt;=</span> <span class="nu0">2</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">my</span><span class="br0">&#40;</span><span class="re0">$left</span><span class="sy0">,</span> <span class="re0">$right</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="co5">@_</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$left</span> <span class="sy0">+</span> <span class="re0">$right</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp;</div></fieldset>     при использовании сигнатур может быть заменён на:<br><br><fieldset><legend>perl</legend><div class="highlight perl"><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sub</span> foo <span class="br0">&#40;</span><span class="re0">$left</span><span class="sy0">,</span> <span class="re0">$right</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$left</span> <span class="sy0">+</span> <span class="re0">$right</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp;</div></fieldset>     При вызове foo с числом аргументов, отличным от двух, интерпретатор выведет ошибку. Синтаксис сигнатур также позволяет указывать необязательные аргументы и задавать значения, используемые по умолчанию в случае отсутствия аргумента. Например, указав &quot;sub foo ($left, $right = 0)&quot; второй аргумент становится необязательным и при его отсутствии передаётся значение 0. В операции присваивания можно указать произвольное выражения, в том числе с использованием других переменных из списка или глобальных переменных. Указание вместо переменной хэша или массива (например, &quot;sub foo ($left, @right)&quot;) приведёт к возможности передачи одного и более аргументов.<br><br>    В списке также поддерживается специальная переменная &quot;$&quot;, которая позволяет игнорировать часть аргументов, например, &quot;sub foo ($left, $, $right)&quot; позволит выполнить копирование в переменные только первого и третьего аргумента, при этом в функцию необходимо передать ровно три аргумента. Возможность обращения к параметрам через массив &quot;@_&quot; сохраняется, поэтому второй аргумент можно получить как значение &quot;$_[1]&quot;;<br><br>    Для определения <a href="http://search.cpan.org/~rjbs/perl-5.20.0/pod/perlsub.pod#Prototypes">прототипов функций</a>, предоставляющих средства для проверки аргументов на этапе компиляции, а не в процессе выполнения, обеспечена поддержка атрибута &quot;:prototype&quot;, например, теперь можно указать &quot;sub foo :prototype($$);&quot; вместо &quot;sub foo ($$);&quot;. &quot;$$&quot; подразумевает вызов с двумя аргументами. Для определения типа аргумента могут использоваться такие символы, как &quot;$&quot; (переменная), &quot;@&quot; (массив), &quot;+&quot; (ссылка на массив или хэш), &quot;*&quot; (файловый десктиптор). Для отделения обязательных аргументов от опциональных используется знак &quot;;&quot;. Для прототипов функций допускается указание сигнатур, например, &quot;sub foo :prototype($$) ($left, $right)&quot;;<br><br>    Функция rand() переведена на использование для всех платформ более качественного последовательного генератора псевдослучайных чисел drand48(). Ранее 48-битовый генератор псевдослучайных чисел использовался только для POSIX-систем, таких как Linux, а в Windows применялась менее безопасная 15-битная реализация;<br><br>    Новый синтаксис для операции выделения части хэшей и массивов (<a href="http://search.cpan.org/~rjbs/perl-5.20.0/pod/perldata.pod#Key/Value_Hash_Slices">slice</a>) - %hash{...} и %array[...], при использовании которого (например, &quot;%subset = %hash{'foo', 'bar'};&quot; или &quot;@list = %a[3,4,6];&quot;) возвращается список из пар ключ/значение или индекс/значение;<br><br>    Добавлена экспериментальная операция постфиксного разыменования (postderef). Например, операция &quot;$sref-&gt;$*&quot; эквивалентна &quot;${ $sref }&quot;, &quot;$aref-&gt;@*&quot; аналогична &quot;@{ $aref }&quot;, а &quot;$href-&gt;%{ ... }&quot; можно использовать вместо &quot;%$href{ ... }&quot;. Для активации поддержки необходимо указать директиву &quot;use feature 'postderef_qq'&quot;;<br><br>    Поддержка <a href="http://www.unicode.org/versions/Unicode6.3.0">Unicode 6.3</a>. Для регулярных выражений добавлена поддержка маски &quot;\p{Unicode}&quot;, которая является синонимом &quot;\p{Any}&quot; и срабатывает для кодов символов в диапазоне 0 - 0x10FFFF.<br><br>    Директива &quot;use locale&quot; теперь может применяться с локалями UTF-8 (ранее с &quot;use locale&quot; поддерживались только однобайтные локали), а также на системах без локали. Обеспечена возможность отката на локаль &quot;C&quot; в случае возникновения проблем с инициализацией выбранной локали. Добавлена опция &quot;-DL&quot; для отслеживания настроек локали в процессе запуска интерпретатора;<br><br>    Специальные переменные $a и $b включены в список исключений при выводе предупреждений, что позволяет создавать функции, оперирующие переменными $a и $b, по аналогии с функцией sort;<br><br>    Улучшена работа на 64-разрядных платформах. Внутренние функции работы с массивами переведены на использование 64-разрядных смещений, что позволяет создавать массивы, содержащие более 2^31 элементов. Движок регулярных выражений теперь может работать со строками длиннее 2^31 символов. Функции PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt и PerlIO_set_ptrcnt переведены с типа int на тип SSize_t;<br><br>    Объявлены устаревшими и скоро будут исключены из базовой поставки модули CGI и Module::Build, а также связанные с ним модули иерархии CGI::* и Module::Build::*. Данные модули нужно будет устанавливать из архива CPAN. В будущем также ожидается удаление утилит find2perl, s2p и a2p;<br><br>    <a href="http://search.cpan.org/~jdhedden/threads-1.92/lib/threads.pm">Многопоточность</a> средствами интерпретатора (&quot;use threads&quot;) переведена в разряд не рекомендованных возможностей из-за усложнённой, недостаточно быстрой и легко приводящей к ошибкам реализации. Удаление текущей реализации пока не планируется, но при появлении более оптимальных альтернатив она будет переведена в разряд устаревших;<br><br>    Активирован новый copy-on-write механизм копирования строк, при котором непосредственное копирование в новый буфер производится при попытке изменить строку, но не при назначении переменных, что заметно увеличивает эффективность работы со строками и избавляет от необходимости передачи строки в форме указателя. Добавлены дополнительные оптимизации в код сопоставления масок в движке регулярных выражений и реализацию массивов и хэшей;<br><br>    В поставку добавлен новый модуль <a href="http://search.cpan.org/~pevans/IO-Socket-IP-0.29/lib/IO/Socket/IP.pm">IO::Socket::IP</a>, предоставляющий универсальную поддержку сокетов, работа с которыми не отличается для IPv4 и IPv6. </p>]]></description>
</item>
</channel>
</rss>