пʼятниця, 27 грудня 2013 р.

Реліз мови програмування Ruby 2.1

Після десяти місяців розробки представлено реліз мови програмування Ruby 2.1. Ruby — потужна й динамічно об'єктно-орієнтована мова програмування, що відрізняється високою ефективністю розробки програм і увібрала в себе кращі риси Perl, Java, Python, Smalltalk, Eiffel, Ada і Lisp. Код проекту розповсюджується під ліцензіями BSD («2-clause BSDL») і «Ruby», яка посилається на останній варіант ліцензії GPL і повністю сумісна з GPLv3. Ruby 2.1 продовжує розвиток гілки 2.0 при збереженні зворотної сумісності.

Додатково повідомляється про затвердження нової схеми нумерації версій Ruby, яка буде застосована в наступних випусках. Номер версії буде визначатися в форматі MAJOR.MINOR.TEENY.PATCH, де значення MAJOR буде збільшуватися при значних порушеннях зворотної сумісності. Нові MINOR-випуски планується формувати раз на рік, при цьому в даних випусках допускається порушення зворотної сумісності API. У TEENY-випусках, які виходитимуть раз на 2-3 місяці, будуть усуватися помилки та вразливості при повному збереженні сумісності API. Значення PATCH відображатиме число комітів з моменту минулого мінорного випуску.

Основні зміни в Ruby 2.1:

  • Підтримка локального кешування методів у VM, замість використання глобального кешу;
  • Новий збирач сміття RGenGC;
  • Розширення та стабілізація можливостей конструкції «Refinements» (Module#refine) для підвищення безпеки внесення змін в код на льоту;
  • Підтримка нового синтаксису числових і комплексних літералів («42r» для Rational (42, 1), 3.14r» для 3.14.rationalize, «42i» для Complex (0, 42), «42ri» для Complex (0, 42r));
  • Значення за замовчуванням для аргументів ключових слів тепер можуть бути пропущені (наприклад, замість «def foo (a:10)» можна вказати «def foo (a:)»);
  • Змінено значення, що повертається за замовчуванням для конструкцій «def» (замість nil повертає ім'я методу, наприклад, «def foo() end» поверне «:foo»);
  • Для прискорення обчислень з даними типу Bignum задіяна бібліотека GMP;
  • Нові методи String#scrub і String#scrub! для перевірки та виправлення некоректної строкової послідовності;
  • Новий метод Socket.getifaddrs, асоційований з функцією getifaddrs() стандартної системної бібліотеки;
  • Оновлення RDoc 4.1.0 і RubyGems 2.2.0;
  • Оптимізація рядків «літерал». Freeze на рівні VM (наприклад, вказівка ​​рядка як «bar»f дозволяє заморозити дане значення і працювати з нею без створення нової копії рядка при виконанні кожної опреаціі);
  • У класи Array і Enumerable додані нові методи Array#to_h і Enumerable#to_h для перетворення масиву/списку з пар ключів і значень в хеш;
  • Підтримка методу Exception#cause, що дозволяє звернутися до попереднього виключення при обробці нового винятку;
  • Оновлення бібліотек BigDecimal, JSON, NKF, Rake, RubyGems і RDoc;
  • Видалення curses зі стандартного набору бібліотек (бібліотеку curses винесено в окремий gem curses).

Реліз web-фреймворка Ruby on Rails 4.0

Представлено реліз MVC (Model-View-Controller) web-фреймворка Ruby on Rails 4.0. У новій гілці припинена підтримка Ruby 1.8.7 і забезпечена можливість роботи тільки при наявності Ruby 1.9.3. При цьому рекомендованою версією є Ruby 2.0.

Ключові поліпшення, у випуску Ruby on Rails 4.0:

  • У новій версії Rails основну увагу приділено розвитку засобів, що дозволяють створювати сучасні web-додатки без ручного створення клієнтських JSON-обробників на JavaScript. При цьому класична підтримка JSON-сервера збережена і може бути використана для розробки клієнтів за допомогою бібліотек Ember.js, Backbone.js і Angular.js;
  • Представлена ​​система кешування «Російська матрьошка», яка дозволяє кешувати дані з урахуванням часу життя ключів і автоматичним управлінням залежностей для вкладених шаблонів;
  • Прискорення javascript-коду, що виконується на стороні клієнта, за рахунок застосування технології Turbolinks, що припускає компоновку клієнтської частини web-додатку у вигляді однієї сторінки, в якій пов'язаних з посиланнями контент завантажується і відображається динамічно через використання JavaScript-обробника, на льоту замінює вміст тіла сторінки, без перезавантаження самої сторінки з сервера;
  • Підтримка декларативних ETags дозволяє спростити контроль за актуальністю завантажених по HTTP даних;
  • Реалізація модуля ActionController::Live з підтримкою live-режиму для постійної потокової передачі даних через задані інтервали часу в рамках постійно відкритих з'єднань;
  • Забезпечення з коробки роботи c серверами, що працюють в багатопотоковому режимі, без необхідності налаштування config.threadsafe;
  • Численні поліпшення класу Active Record. Зокрема поліпшені засоби для зазначення діапазонів і забезпечена більш цілісна структура запитів;
  • Ускладнено налаштування безпеки, що використовуються за замовчуванням. Включено екранування HTML-теґів за замовчуванням. Вжито патчі для посилення безпеки, надані компанією Google. Звужене охоплення значень, що підпадають під дію Match;
Наступні компоненти винесені з базової поставки і тепер поширюються у вигляді окремих gem-модулів:
  • Динамічні методи пошуку на основі хешів (Github);
  • Масове призначення захищених властивостей для моделей Active Record (Github);
  • ActiveRecord::SessionStore (Github);
  • Active Record Observers (Github);
  • Active Resource (Github);
  • Action Caching (Github);
  • Page Caching (Github);
  • Sprockets (Github);
  • Тести продуктивності (Github);

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

Реліз Phusion Passenger 4.0

Після двох з половиною років розробки представлена ​​нова гілка проекту Phusion Passenger 4.0 (проект спочатку розвивався під іменами mod_rails і mod_rack), сервера для швидкого розгортання web-додатків на мові Ruby, які використовують інтерфейс Rack (наприклад, Ruby on Rails), а також WSGI-додатків на мові Python.


Сервер оформлений у вигляді модулів для http-серверів Apache та Nginx, і дозволяє легко запустити в рамках одного http-сервера кілька незалежних web-платформ на базі WSGI або Rack, достатньо просто скопіювати файли web-додатку в спеціальну директорію, без необхідності окремого конфігурування. Проект позиціонується як стабільний і готовий для промислового використання. Зокрема, Phusion Passenger вже застосовується на сайтах New York Times, Symantec і Pixar. Код проекту поширюється під ліцензією MIT.

Серед доданих в гілці 4.0 нововведень відзначається підтримка Python WSGI; можливість використання для проектів різних версій Ruby; підтримка багато-поточності; переклад ядра пакету на нову систему обробки подій, подібну до Nginx і Node.js; поліпшені засобів діагностики помилок; підтримка Ruby 2.0, JRuby і Rubinius; підтримка API захоплення сокетів в Rack; система запуску фонових завдань, які тривало виконуються, та працюють поза циклу обробки запитів клієнта (наприклад, таким способом можна виконувати збирачі сміття). У наступному випуску очікується реалізація засобів для розгортання додатків для Node.js.

Реліз мови програмування Ruby 2.0

Рівно через 20 років з моменту заснування проекту представлено перший реліз нової гілки мови програмування Ruby 2.0. Ruby — потужна і динамічна об'єктно-орієнтована мова програмування, яка відрізняється високою ефективністю розробки програм, що увібрала в себе кращі риси Perl, Java, Python, Smalltalk, Eiffel, Ada і Lisp. Код проекту розповсюджується під ліцензіями BSD («2-clause BSDL») і «Ruby», яка посилається на останній варіант ліцензії GPL і повністю сумісна з GPLv3.


Ruby 2.0 продовжує розвиток гілки 1.9.x, не містить революційних змін і, незважаючи на ряд істотних нововведень, зберігає сумісність з Ruby 1.9.3. За словами розробників, завдяки уважному відношенню до забезпечення сумісності з існуючими додатками, міграція з гілки 1.9 на 2.0 повинна пройти помітно легше, ніж з 1.8 на 1.9. Також наголошується, що на відміну від 1.9.0 випуск 2.0.0 є повністю стабільним і готовим для впровадження.

Перший випуск Topaz, високопродуктивної реалізації Ruby, написаної мовою Python

Анонсовано перший випуск проекту Topaz, в рамках якого створено нову реалізацію мови Ruby. Написана мовою RPython (підмножина мови Python зі статичною типізацією) та використовує напрацювання проекту PyPy. Код Topaz поширюється під ліцензією BSD. Ключовими цілями проекту є забезпечення високої продуктивності і простота реалізації. Готові бінарні збірки створені для Mac OS X, Linux і Windows.

Topaz базується на ідеї використання JIT-компілятора, на льоту транслює деякі елементи в машинний код, в поєднанні з ефективним складальником сміття. Зазначені елементи дозволили добитися значного приросту продуктивності та помітно обігнати за швидкістю традиційний інтерпретатор Ruby. Topaz націлений на забезпечення сумісності з Ruby 1.9.3, але поки реалізація не є повною і проект позиціонується як експериментальна розробка, ще не готова для використання в реальних проектах.

Відзначається відсутність багатьох модулів стандартної бібліотеки і вбудованих методів, немає підтримки приватних методів, FFI і багато-поточності. Проте вже доступні майже всі базові можливості мови, включаючи класи, блоки, різні вбудовані типи, методи і багато іншого. Наступні кілька місяців планується присвятити забезпеченню роботи стандартних модулів і класів, а також домогтися сумісності з модулями, написаними на мові Сі, що дозволить довести Topaz до придатності та виконання користувальницьких Ruby-додатків.

Реліз JRuby 1.7.0

Після півтора року розробки представлено реліз JRuby 1.7.0, реалізації мови Ruby, написаної цілком на Java і призначеної для виконання у віртуальній машині JVM. Завдяки використанню JIT-компілятора, продуктивність JRuby не поступається, а в деяких ситуаціях навіть випереджає, стандартний інтерпретатор Ruby, написаний на мові Сі. JRuby дозволяє розробникам на мові Java звертатися до Ruby-бібліотек (наприклад, Ruby on Rails) і вбудовувати Ruby-код в Java-програми. Розробники на мові Ruby, в свою чергу, можуть отримати доступ до всіх бібліотек класів Java.

Ключовим нововведенням JRuby 1.7.0 є надання за замовчуванням режиму сумісності з гілкою Ruby 1.9, з урахуванням особливостей випуску мови Ruby 1.9.3. Підтримка режиму сумісності з Ruby 1.8.7 залишена в якості опції. В даний час ще спостерігаються поодинокі можливості Ruby 1.9, які поки не підтримуються в JRuby, але їх планується реалізувати в найближчих коригувальних випусках JRuby 1.7.x. В цілому режим сумісності з Ruby 1.9 оцінений як стабільний і придатний для повсякденного застосування.

Серед інших поліпшень JRuby 1.7.0:

  • Задіяна, але поки не включена за замовчуванням, інструкція InvokeDynamic, що з'явилася в Java 7, та дозволяє досягти для динамічних мов, що працюють під управлінням JVM, рівня продуктивності мови Java;
  • Набір стандартних бібліотек Ruby синхронізований з версій 1.9.3p286;
  • Вирішено безліч проблем сумісності з гілкою 1.9.x;
  • Збільшена продуктивність і покращено виконання паралельних операцій;
  • Припинена підтримка Java 5;
  • Покращена підтримка Solaris, а також Linux на платформі ARM;
  • Зроблено оновлення Rubygems 1.8.24 і Rake 0.9.2.2.

Puma — новий високопродуктивний http-сервер для додатків мовою Ruby

Компанія Engine Yard, найбільший хостер web-проектів на мові Ruby, який виконує роботу по супроводу старих гілок Ruby, представила новий відкритий проект Puma, в рамках якого розвивається повністю перероблений форк проекту Mongrel, що відрізняється орієнтацією на забезпечення максимальної продуктивності і підтримки обслуговування великої кількості паралельних запитів. Незважаючи на те, що Puma створений на базі Mongrel, на даний час, крім коду HTTP-парсеру, стара кодова база повністю переписана. Безпосередньо розбором протоколу займається написаний мовою Сі компонент Ragel, всі оброблювані запити поміщаються в відособлений пул потоків, що забезпечує повноцінне розпаралелювання і задіяння всіх доступних в системі процесорних ядер. Код проекту поширюється під ліцензією BSD.

Puma може використовуватися в ролі платформи для розгортання додатків на базі Ruby on Rails і окремих додатків, що використовують інтерфейс Rack. Puma близький за можливостями до Mongrel і Webrick, і може виступати в якості їх прозорої заміни. Підтримується робота з різними реалізаціями Ruby, такими як Rubinius, JRuby і MRI. Для класичної реалізації MRI, нездатної виконувати одночасно кілька потоків через наявність глобального блокування, реалізована підтримка розпаралелювання на рівні введення/виводу. Для Rubinius і JRuby можливе повноцінне розпаралелювання на рівні ниток.


На графіку представлено відношення кількості оброблених у секунду запитів до кількості одночасних запитів (більше-краще); позначка KA позначає тести, в яких клієнти використовували keepalive запити.

Реліз web-фреймворка Ruby on Rails 3.2

Побачив світ реліз MVC (Model-View-Controller) web-фреймворка Ruby on Rails 3.2. Це останній випуск, в якому забезпечена підтримка Ruby 1.8.7. Наступним стане реліз Rails 4.0, який зможе працювати тільки за наявності Ruby 1.9.3 або новіших випусків.

Ключові поліпшення у Ruby on Rails 3.2:

  • Значне прискорення режиму розробки, пов'язане з тим, що Active Reload тепер перезавантажує з файлів тільки класи, які дійсно були змінені. Подібна поведінка дозволила досягти значного прискорення в процесі налагодження і розробки великих програм. Крім того, внесені оптимізації в код визначення маршруту обробки запиту (Route), здійснено перехід на двигун Journey і прискорено виконання операцій оцінки посилань (найбільш помітне прискорення для проектів у яких спостерігається більш ста посилань на одну сторінку);
  • Реалізована можливість швидкого і простого вивчення ходу виконання SQL-запитів, що генеруються ARel, і виявлення повільних запитів. Наприклад, в консолі можна запустити «Person.active.limit(5).Explain» і отримати результуючий запит, виконаний із застосуванням SQL-директиви EXPLAIN, що дозволяє оцінити поведінку оптимізатора і використовувані індекси. Підтримується також автоматичне виконання EXPLAIN для запитів, що виконувались довше зазначеного часу;
  • Можливість прив'язати теги до виведеним повідомленнями в лог (підтримуються в тому числі вкладені теги). Наприклад, в багатокористувацькому оточенні тепер легко можна відфільтрувати з єдиного логу дані, прив'язані до різних користувачів і додатків;
  • Нове сховище ActiveRecord для зберігання даних в форматі ключ/значення, що працюють поверх традиційних реляційних СУБД. Сховище створюється як поле класу Active Record;
  • Підтримка збереження налаштувань за замовчуванням у файлі ~/.railsrc.

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

Автор мови Ruby повідомив, що працює над діалектом мови для мобільних пристроїв

Юкіхіро Мацумото (Yukihiro Matsumoto), автор мови програмування Ruby, в інтерв'ю виданню InfoWorld розповів про те, що він в даний час займається розробкою альтернативної підмножини або діалекту мови Ruby, спеціально адаптованої для створення програм для портативних пристроїв.


Перший публічний випуск мобільного Ruby планується представити на початку наступного року. Крім того, в інтерв'ю згадується те, що після випуску релізу Ruby 1.9.3 (зараз знаходиться на етапі тестування), який більшою мірою буде коригувальним випуском, розробники переключаться на підготовку версії Ruby 2.0.

Реліз web-фреймворка Ruby on Rails 3.1

Майже після року розробки побачив світ реліз MVC (Model-View-Controller) web-фреймворка Ruby on Rails 3.1. Фреймворк може працювати під управлінням Ruby 1.8.7 і Ruby 1.9.2, підтримка більш ранніх версій припинена.

Серед ключових поліпшень зазначається:


  • «HTTP Streaming» — дозволяє браузеру завантажувати файли CSS і JavaScript у той час, поки сервер генерує відповідь на основний запит;
  • «Assets Pipeline» — фреймворк для керування, зв'язування і упаковки CSS і JavaScript ресурсів, включаючи облік залежностей, формування пакетів і підтримку генерації CSS і JavaScript компонентів з використанням додатків і мов, таких як CoffeeScript, SCSS і ERB.
  • За замовчуванням замість Prototype задіяна JavaScript-бібліотека jQuery. Можливість використання бібліотеки Prototype залишена, але для її активації слід виконати «rails new myapp -j prototype»;
  • Оборотні міграції (Reversible Migrations), що дозволяють в рамках обробки одного запиту швидко повторно повернути минуле стан об'єктів.

Код Ruby 1.9.3 пере-ліцензований для забезпечення сумісності з GPLv3 і BSD

Представлено перший тестовий випуск інтерпретатора Ruby 1.9.3, важливою зміною в якому стала зміна ліцензії на код. Раніше Ruby поширювався під двома ліцензіями — «GPLv2» і «Ruby», починаючи з версії Ruby 1.9.3 код буде поширюватися під ліцензіями BSD («2-clause BSDL») і «Ruby». В якості причини зміни ліцензії називається бажання забезпечити сумісність коду, одночасно з ліцензіями GPLv3 і BSD.

Ліцензія «Ruby» посилається на останній варіант GPL і повністю сумісна з GPLv3, але вказівка ​​GPLv2 в якості другої ліцензії обмежувало максимальну версію GPL і робило код несумісним з GPLv3. Другою проблемою було те, що код минулих версій Ruby не сумісний з ліцензією BSD і не дозволяв обмінюватися напрацюваннями з BSD-проектами. Починаючи з випуску Ruby 1.9.3 ці недоліки будуть усунені.

З інших змін в Ruby 1.9.3 зазначено:

  • До складу стандартних бібліотек включений модуль io/console, що дозволяє керувати введенням/виведенням через консоль;
  • Поліпшено роботу модуля openssl, що пов'язано з появою у даної ruby-бібіліотеки активного мейнтейнера;
  • Реалізовано режим паралельного юніт-тестування в модулі test/unit;
  • Змінено стратегію виконання внутрішніх блокувань;
  • З метою збільшення продуктивності переписані на мові Сі бібліотеки «pathname» і «date» (швидкість роботи з датами збільшилася в 5 разів);
  • Внесено зміни, які дозволили скоротити час завантаження rails-додатків.

Реліз JRuby 1.6.0

Після дев'яти місяців розробки представлений реліз JRuby 1.6.0, реалізації мови Ruby, написаної цілком на Java і призначеної для виконання у віртуальній машині JVM. Завдяки використанню JIT-компілятора, продуктивність JRuby не поступається, а в деяких ситуаціях навіть випереджає, стандартний інтерпретатор Ruby, написаний на мові Сі.


JRuby дозволяє розробникам на мові Java звертатися до Ruby-бібліотек (наприклад, Ruby on Rails) і вбудовувати Ruby-код в Java-програми. Розробники на мові Ruby, в свою чергу, можуть отримати доступ до всіх бібліотек класів Java.

Відзначається, що JRuby 1.6.0 є найзначнішим релізом за останній час, в порівнянні з минулим випуском додано близько 2 тис комитів і виправлено 270 помилок. Ключовим нововведенням JRuby 1.6.0 є забезпечення повної сумісності з API Ruby 1.9.2 (за винятком підтримки Encoding::Converter і ripper).

У новій версії також додана експериментальна підтримка розширень на мові Сі, що використовують Ruby C API, збільшена продуктивність, добавлена ​​вбудована система профілювання коду, забезпечена попередня підтримка RubyGems Maven, збільшена сумісність з платформою Windows.

середа, 25 грудня 2013 р.

Побачив світ web-фреймворк Ruby on Rails 3.0

Після двох років розробки представлено реліз MVC (Model-View-Controller) web-фреймворка Ruby on Rails 3.0, у підготовці якого взяли участь більш ніж 1600 розробників. Фреймворк зазнав значної реструктуризації в результаті злиття з проектом Merb. Раніше Merb виступав у ролі конкуруючого проекту, народженого з метою втілення ідеї створення легкого MVC-двигуна, заснованого на тих же принципах і розширюваного через додатки. В результаті, увібравши кращі якості обох проектів, Ruby on Rails 3 став більш легким, швидким і зручним для розуміння. Фреймворк може працювати під управлінням Ruby 1.8.7, Ruby 1.9.2 і JRuby 1.5.2.

Основні поліпшення Ruby on Rails 3.0:

  • Перероблений модуль для розбору URL (Router) акцентований на використанні REST (Representational State Transfer) декларацій і підтримує інтерфейс для швидкого підключення зовнішніх додатків;
  • Мова запитів в Active Record, побудована на ідеях реляційної алгебри і новому двигуну Arel Query Engine.
  • Ненав'язливе використання JavaScript обробників, що базуються на фреймворках, подібних Prototype і jQuery;
  • Підвищення продуктивності компонентів Rails на основі досвіду Merb;
  • Новий Action Mailer API для відправки поштових повідомлень (особливо спрощено процес відправки листів з вкладеннями), поставлений рівнем вище Action Controller;
  • Перероблений і включений за замовчуванням вбудований механізм для захисту від XSS-атак (міжсайтовий скриптинг);
  • Точне керування залежностями за допомогою Bundler.

Ruboto — система для написання додатків для платформи Android на мові Ruby

Представлено перший публічний випуск проекту Ruboto націленого на забезпечення можливості написання додатків мовою Ruby для платформи Android.


Для виконання програм використовується JRuby, що дозволяє виконати Ruby-код поверх віртуальної машини Dalvik.

На даний момент проект знаходиться на початковій стадії розвитку і дозволяє створювати найпростіші скрипти, що виконують функції Activities, BroadcastReceivers і Services. Кінцева мета проекту — забезпечення написання повноцінних додатків, в яких можуть бути задіяні всі можливості платформи Android.

Реліз мови програмування Ruby 1.9.2

Після двадцяти місяців розробки представлено реліз мови програмування Ruby 1.9.2. Ruby — відносно молода, потужна і динамічно об'єктно-орієнтована мова програмування, що відрізняється високою ефективністю розробки програм і увібрала в себе кращі риси Perl, Java, Python, Smalltalk, Eiffel, Ada і Lisp. За заявою розробників, Ruby 1.9.2 проходить більше 99% тестів з набору RubySpec, що оцінює зворотну сумісність з минулою версією мови.

У новій версії Ruby 1.9.2 представлені наступні основні зміни:

  • Додано більше шістдесяти нових методів для класів Array, Complex, Dir, Encoding, Enumerable, Enumerator, Float, File, Hash, IO, Kernel, Integer, Thread, Time і т. д.
  • Представлено новий API для роботи з мережевими сокетами, що підтримує IPv6;
  • Додано нові кодування, серед яких: Big5, SJIS-*, UTF8-DoCoMo, UTF8-KDDI і UTF8-SoftBank;
  • Реалізовано новий клас «Random», що підтримує різноманітні генератори випадкових чисел;
  • Переписаний код класу «Time», який тепер не залежить від типу time_t і не схильний до проблеми 2038;
  • Розширена підтримка регулярних виразів. У властивостях «\p{}» тепер ігноруються підкреслення, прогалини і регістр символів, тобто вирази «\p{ol chiki}» і «\p{Ol_Chiki}» відтепер ідентичні. У регулярних виразах тепер забезпечена підтримка Unicode 5.2, але для Unicode слід використовувати POSIX -класи символів і семантику «\p{}», під маски «\d», «\s» і «\w» по колишньому підпадають тільки ASCII -символи; 
  • Збережене у змінній «$:» значення більш не включає поточну директорію;
  • Система динамічного зв'язування DL, що дозволяє організувати виконання функцій, написаних на інших мовах, переписана і тепер працює поверх бібліотеки libffi (Foreign Function Interface).
  • Додана нова бібліотека Рsych, яка виступає інтерфейсом до libyaml і може бути використана замість Syck для генерації та парсингу даних у форматі YAML 1.1.