Релиз языка программирования 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.
|