Починаючи з 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 прав доступу в символьному вигляді.
Немає коментарів:
Дописати коментар