The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз интерпретатора языка программирования Perl 5.20"
Отправлено opennews, 27-Май-14 19:31 
После года разработки представлена (http://www.nntp.perl.org/group/perl.perl5.porters/2014/05/ms...) новая стабильная ветка языка программирования - Perl 5.18 (https://metacpan.org/release/RJBS/perl-5.20.0/). В рамках подготовки нового выпуска было изменено около 470 тыс. строк кода, изменения затронули 2900 файлов, в разработке приняли участие 124 разработчика.

Ветка 5.20 выпущена в соответствии с утверждённым четыре года назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов - раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.20.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.20.0. Одновременно с выходом Perl 5.20 прекращена поддержка ветки 5.16, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.21, на базе которой в мае 2015 года будет сформирован стабильный релиз Perl 5.22.

Ключевые улучшения (http://search.cpan.org/~rjbs/perl-5.20.0/pod/perldelta.pod), добавленные в Perl 5.20:

-  Экспериментальная поддержка сигнатур функций (http://search.cpan.org/~rjbs/perl-5.20.0/pod/perlsub.pod#Sig...), позволяющих явно определить перечень переменных, используемых в функции и автоматизировать операции проверки и  присвоения значений из массива входящих параметров.  Для активации поддержки сигнатур функций необходимо указать директиву "use feature 'signatures'"; Например, ранее используемый код:

<font color="#461b7e">
    sub foo {
        die "Too many arguments for subroutine" unless @_ <= 2;
        die "Too few arguments for subroutine" unless @_ >= 2;
        my($left, $right) = @_;
        return $left + $right;
    }
</font>


при использовании сигнатур может быть заменён на:

<font color="#461b7e">
    sub foo ($left, $right) {
        return $left + $right;
    }
</font>


При вызове foo с числом аргументов, отличным от двух, интерпретатор выведет ошибку. Синтаксис сигнатур также позволяет указывать необязательные аргументы и задавать значения, используемые  по умолчанию в случае отсутствия аргумента. Например, указав "sub foo ($left, $right = 0)" второй аргумент становится необязательным. В операции присваивания можно указать произвольное выражения, в том числе с использованием других переменных из списка или глобальных переменных. Указание вместо переменной хэша или массива (например, "sub foo ($left, @right)") приведёт к возможности передачи одного и более аргументов.


В списке также поддерживается специальная переменная "$", которая позволяет игнорировать часть аргументов, например, "sub foo ($left, $, $right)" позволит выполнить копирование в переменные только первого и третьего аргумента, при этом в функцию необходимо передать ровно три аргумента. Возможность обращения к параметрам через массив "@_" сохраняется, поэтому второй аргумент можно получить как значение "$_[1]";

-  Для определения прототипов функций (http://search.cpan.org/~rjbs/perl-5.20.0/pod/perlsub.pod#Pro...), предоставляющих средства для проверки аргументов на этапе компиляции, а не в процессе выполнения, обеспечена поддержка  атрибута ":prototype", например, теперь можно указать "sub foo :prototype($$);" вместо "sub foo ($$);". "$$" подразумевает вызов с двумя аргументами. Для определения типа аргумента могут использоваться такие символы, как "$" (переменная), "@" (массив), "+" (ссылка на массив или хэш), "*" (файловый десктиптор). Для отделения обязательных аргументов от опциональных используется знак ";". Для прототипов функций допускается указание сигнатур, например, "sub foo :prototype($$) ($left, $right)";

-  Функция rand() переведена на использование для всех платформ более качественного последовательного генератора псевдослучайных чисел drand48(). Ранее для 48-битовый генератор  псевдослучайных чисел использовался только для POSIX-систем, таких как Linux, а в Windows применялась менее безопасная 15-битная реализация;


-  Новый синтаксис для операции разделения хэшей и массивов (slice (http://search.cpan.org/~rjbs/perl-5.20.0/pod/perldata.pod#Ke...)) - %hash{...} и %array[...], при использовании которого возвращается список из пар ключ/значение или номер/значение;

-  Добавлена экспериментальная операция постфиксного разыменования (postderef). Например, операция "$sref->$*" эквивалентна "${ $sref }", "$aref->@*" аналогична "@{ $aref }", а "$href->%{ ... }" можно использовать вместо "%$href{ ... }". Для активации поддержки необходимо указать директиву "use feature 'postderef_qq'";
-  Поддержка Unicode 6.3 (http://www.unicode.org/versions/Unicode6.3.0). Для регулярных выражений добавлена поддержка маски "\p{Unicode}", которая является синонимом "\p{Any}" и срабатывает для кодов символов в диапазоне 0 - 0x10FFFF.-  Директива "use locale" теперь может применяться с локалями UTF-8 (ранее поддерживались только однобайтные локали). Добавлена опция "-DL" для отслеживания настроек локали в процессе запуска интерпретатора;

-  Улучшена работа на 64-разрядных платформах. Внутренние функции работы с массивами переведены на использование 64-разрядных смещений, что позволяет создавать массивы, содержащие более 2^31 элементов. Движок регулярных выражений теперь может работать со строками длиннее
2^31 символов. Функции PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt и PerlIO_set_ptrcnt переведены с типа int на тип SSize_t;

URL: http://perlnews.org/2014/05/perl-5-20-released/
Новость: http://www.opennet.ru/opennews/art.shtml?num=39865

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру