Новости IT, хостинга
Новость от 01.11.2011

Адрес в интернете:
https://news.hostdb.ru/index/show/id/5036

Релиз языка программирования Ruby 1.9.3


Увидел свет релиз языка программирования Ruby 1.9.3. Ruby - относительно молодой, мощный и динамический объектно-ориентированный язык программирования, отличающийся высокой эффективностью разработки программ и вобравший в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Новый выпуск характеризуется как версия, продолжающая развитие Ruby 1.9.2 и не содержащая кардинальных функциональных изменений.

Начиная с Ruby 1.9.3, код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", в то время как прошлые версии распространялись под лицензиями "GPLv2" и "Ruby". В качестве причины смены лицензии называется желание обеспечить совместимость кода одновременно с лицензиями GPLv3 и BSD. Лицензия "Ruby" ссылается на последний вариант GPL и полностью совместима с GPLv3, но указание GPLv2 в качестве второй лицензии ограничивало максимальную версию GPL и делало код несовместимым с GPLv3. Второй проблемой было то, что код прошлых версий Ruby не был совместим с лицензией BSD и не позволял обмениваться наработками с BSD-проектами. В новой версии Ruby эти недостатки устранены.

Основные улучшения, добавленные в Ruby 1.9.3:
В состав стандартных библиотек включён модуль io/console, предназначенный для организации управления консолью;
Улучшена работа модуля openssl, что связано с появлением у данной ruby-библиотеки активного мэйнтейнера;
Реализован режим параллельного юнит-тестирования в модуле test/unit;
Изменена стратегия выполнения внутренних блокировок, что позволило повысить эффективность организации работы многопоточных программ;
С целью увеличения производительности переписаны на языке Си библиотеки "pathname" и "date" (скорость работы с датами увеличилась в 5 раз);
Внесены изменения, позволившие сократить время загрузки rails-приложений. RubyGems обновлён до версии 1.8.10;
Поддержка символов Unicode 6.0 в регулярных выражениях;
Поддержка указания диапазонов значений в Random.rand;
В класс String добавлены новые методы String#prepend и String#byteslice;
В класс ARGF добавлены новые методы: ARGF.print, ARGF.printf, ARGF.putc, ARGF.puts, ARGF.read_nonblock, ARGF.to_write_io, ARGF.write;
В классе Bignum задействован новый алгоритм умножения больших чисел (более 150 цифр);
В класс IO добавлены новые методы: IO#advise, IO.write(name, string, [offset"> ) и IO.binwrite(name, string, [offset">). В методе IO#putc реализована поддержка многобайтных символов;
Расширен API для написания модулей на языке Си: добавлена функция ruby_vm_at_exit() для перехвата события завершения работы VM, добавлена функция rb_reserved_fd_p() для закрытия всех файловых дескрипторов, реализована поддержка извлечения аргументов хэша в rb_scan_args();
В модуле net/http добавлена поддержка SNI (Server Name Indication) для HTTPS; обеспечена возможность определения времени ожидания перед отправкой тела запроса через заголовок '100-continue'; добавлен метод Net::HTTPRequest#set_form для обеспечения одновременной поддержки application/x-www-form-urlencoded и multipart/form-data;
В модуле yaml в качестве движка по умолчанию теперь используется Psych, для задействования старого движка Syck следует указать YAML::ENGINE.yamler = 'syck';
В модуле zlib добавлены новые методы Zlib.deflate и Zlib.inflate;
В модуле FileUtils добавлена возможность указания в методе FileUtils#chmod прав доступа в символьном виде.


Распечатано с HostDB.ru.