четвер, 26 грудня 2013 р.

Реліз мови програмування 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 прав доступу в символьному вигляді.

Немає коментарів:

Дописати коментар