22 Ноября 2024, 03:34

Ruby

Автор turbo, 12 Августа 2008, 12:39

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

turbo

12 Августа 2008, 12:39 Последнее редактирование: 04 Августа 2011, 00:57 от Zhek@Ch
[size="3"]В интерпретаторе языка Ruby обнаружено 4 уязвимости[/size]

В интерпретаторе языка Ruby обнаружено несколько новых уязвимостей:

 * Возможность обхода ограничений уровней изоляции (safe level) через манипуляции с функцией "untrace_var()";
 * Использование некорректного регулярного выражения в WEBrick::HTTPUtils.split_header_value() может привести к отказу в обслуживании, путем полного потребления процессом ресурсов CPU, после получения специальным образом оформленного HTTP запроса;
 * Ошибка в "DL" может быть использована для обхода ограничений безопасности и вызова потенциально опасных функций;
 * Отсутствие в resolv.rb случайного выбора номера порта при отправке ответа на DNS запрос, упрощало проведение атаки Каминского.

Наличие уязвимостей подтверждено в версиях Ruby 1.8.5, 1.8.6-p286, 1.8.7-p71 и более ранних. Проблемы исправлены в Ruby 1.8.6-p287 и 1.8.7-p72.
http://secunia.com/advisories/31430/

turbo

24 Ноября 2008, 22:14 #1 Последнее редактирование: 04 Августа 2011, 07:37 от Zhek@Ch
[size="3"]Опубликован релиз web-фреймворка Ruby on Rails 2.2[/size]

Вышел релиз web-фреймворка Ruby on Rails 2.2, в котором, кроме исправления ошибок, появились следующие новшества:

 * В комплект по умолчанию включен полный набор компонент для многоязыковой поддержки (i18n).
 * Появилась поддержка проверки HTTP заголовков ETag и Last-Modified, сигнализирующих о времени последнего изменения содержимого запрошенной страницы;
 * Реализована полноценная поддержка многопотчности (thread-safe), благодаря избавлению кода от глобальных блокировок;
 * Обеспечена совместимость с интерпретаторами Ruby 1.9 (экспериментальная ветка) и JRuby. Ruby 1.9.1 в настоящее время находится на финальной стадии тестирования, в скором времени ожидается выход релиза.
 * Значительно улучшена документация по API, добавлено 14 новых руководств.
 * Поддержка миграции транзакций для СУБД PostgreSQL, в случае ошибки при работе с одним сервером, Rails может переключиться на запасной сервер, без полной отмены совершенных в рамках транзакции операций;
 * Реализован режим поддержания пула открытых соединений с СУБД, до истечения заданного таймаута.
http://guides.rubyon...ease_notes.html
http://www.opennet.r...shtml?num=19062

turbo

10 Декабря 2008, 22:06 #2 Последнее редактирование: 04 Августа 2011, 07:40 от Zhek@Ch
[size="3"]Сравнение производительности девяти реализаций языка Ruby[/size]

Опубликованы результаты сравнения производительности существующих реализаций языка Ruby - Ruby 1.8, Ruby 1.9.1 (Yarv), Ruby Enterprise Edition (REE), JRuby 1.1.6RC1, Rubinius, MagLev, MacRuby 0.3 и IronRuby. Расхождение в быстродействии получились значительные, например, в некоторых тестах экспериментальный релиз Ruby 1.9.1, использующий для интерпретации байткода новую виртуальную машину YARV (Yet another Ruby VM), оказался почти в 5 раз быстрее Ruby 1.8. Очень хорошие результаты, лишь немного отстав от Ruby 1.9.1, продемонстрировал JRuby 1.1.6, реализация Ruby на языке Java.

Суммарное время прохождение теста разными реализациями Ruby составляет:

 * Ruby 1.9.1 - 190;
 * JRuby 1.1.6 - 220;
 * REE - 410;
 * Rubinius - 600;
 * Ruby 1.8.7 (linux) - 790;
 * Ruby 1.8.6 (vista) - 880.

MagLev, MacRuby и IronRuby не удалось выполнить все тестовые задания, при этом MagLev оказался примерно в два раза быстрее Ruby 1.8, в то время как MacRuby и IronRuby показали близкую к Ruby 1.8.6 производительность.
http://www.opennet.r...shtml?num=19304

turbo

24 Декабря 2008, 20:12 #3 Последнее редактирование: 04 Августа 2011, 07:42 от Zhek@Ch
[size="3"]Слияние web-фреймворков Ruby on Rails и Merb[/size]

Команды разработчиков web-фреймворков Ruby on Rails и Merb, разрабатываемых на языке Ruby и соответствующих парадигме MVC (Model-View-Controller), приняли решение о слиянии проектов. В соответствии с новым планом, во втором квартале 2009 г. будет выпущен объединенный продукт под названием Rails 3. Разработчики Merb приступили к подготовке нового проекта уже сейчас, а разработчики Rails сконцентрируются на этом после выпуска Rails 2.3 в январе 2009 г.

Помимо прочего, работа над Rails 3 будет вестись в следующих направлениях:

 * Стабилизация API;
 * Повышение производительности компонентов Rails на основе опыта Merb;
 * "Модуляризация", реализация взаимозаменяемости (на основе стабильного API ) пригодных к использованию частей программного каркаса и их разработка с целью лучшей применимости в каждом конкретном случае;
 * ORM (Object-relational mapping): ActiveRecord останется по умолчанию, однако на выбор будут доступны как минимум DataMapper и Sequel;
 * Поддержка интерфейса Rack, позволяющего значительно увеличить производительность сервисов. Поддержка Rack присутствует в Merb дольше, чем в Rails;
 * Окружение тестирования, позволяющее оценить пригодность подключаемых компонент до их использования: помимо test/unit, можно будет использовать RSpec;
 * Для шаблонирования можно будет без лишних усилий применять Haml, а для ajax - jQuery;
 * Возможность начинать разработку с минимальным "ядром" Ruby, подключая компоненты только по мере использования.
 * Возможность задействовать программный каркас на альтернативных реализациях среды исполнения, таких как JRuby.

В свою очередь, разработчики Merb получают возможность не заниматься решением проблем, уже решённых в Ruby, таких как интернационализация и часовые пояса. Среди исторических примеров такого слияния называется успешное слияние Struts и Webwork.
http://www.opennet.r...shtml?num=19537

ping_Win

31 Января 2009, 13:34 #4 Последнее редактирование: 04 Августа 2011, 07:43 от Zhek@Ch
[size="3"]Вышел Ruby 1.9.1, первый стабильный релиз ветки 1.9.x[/size]

Спустя год после анонса экспериментальной версии Ruby 1.9.0, разработчики выпустили первый стабильный релиз - Ruby 1.9.1.

Основные новшества:

 * Значительно увеличена производительность и уменьшено потребление памяти. В некоторых тестах Ruby 1.9.1, использующий для интерпретации опкода новую виртуальную машину YARV (Yet another Ruby VM), оказался почти в 5 раз быстрее Ruby 1.8.
 * Полноценная реализация многопоточности, использующая средства операционной системы (ранее присутствовала реализация "green threads", через эмуляцию нитей (threads) интерпретатором);
 * Полная поддержка многобайтовых кодировок (Unicode);
 * Значительные изменения в синтаксисе языка. Ветка Ruby 1.9 не является 100% совместимой с более ранними версиями, в языке появилось много новых конструкций и изменений логики работы существующих элементов.

http://www.opennet.r...shtml?num=20047

turbo

17 Марта 2009, 19:32 #5 Последнее редактирование: 04 Августа 2011, 07:45 от Zhek@Ch
[size="3"]Представлен релиз Web-фреймворка Ruby On Rails 2.3[/size]

Представлен релиз web-фреймворка Ruby on Rails 2.3. Кроме исправления ошибок, в новом выпуске появились множество существенных новшеств и изменений. Самое интересное:
Шаблоны (Templates) генерации приложения, позволяющие определить каркас будущего Rails приложения. Реализованы через интеграцию генератора приложений - rg ;
Улучшена поддержка Rails Engines, позволяющих организовать совместное использование типовых частей приложений, через формирование специальных Rails приложений, способных подключаться к работе других Rails приложений;
Интеграция интерфейса Rack и перевод на него внутренней инфраструктуры Rails. Поддержка CGI осталась, но теперь работает через специальный proxy интерфейс;
Интеграция механизма Metal, являющегося враппером к интерфейсу Rack и позволяющего создавать супер быстрые обработчики, работающие в обход Action Controller. Выполнение небольших запросов в обход стандартных механизмов обработки потоков данных, позволяет значительно увеличить производительность сервисов, например, при тестировании простейших запросов, время их выполнения уменьшилось с 2.448 мс до 0.866 мc, при их реализации через Metal;
Nested forms - возможность, упрощающая создание сложных вложенных web-форм;
Поддержка HTTP Digest аутентификации;
Переименован файл с Application Controller: был application.rb, стал application_controller.rb;
Фреймворк протестирован на предмет полной совместимости с Ruby 1.9.1;

http://www.opennet.r...shtml?num=20781

turbo

23 Мая 2009, 22:44 #6 Последнее редактирование: 04 Августа 2011, 07:47 от Zhek@Ch
[size="3"]Управление веткой Ruby 1.8.6 передано компании Engineyard[/size]

Улажены последние формальности по передаче управления над веткой Ruby 1.8.6 американской хостинговой компании Engineyard, которая изъявила желание взять на себя заботу по исправлении ошибок и устранению проблем безопасности в устаревшей ветке Ruby. Работники Engineyard бэкпортировали в 1.8.6 ряд исправлений не нарушающих API, связанных с увеличением производительности, устранении утечек памяти, улучшением работы сборщика мусора. Компания заверила, что и в дальнейшем будет гарантировать неизменность API Ruby 1.8.6 - все разработанные улучшения будут продвигаться на общих основаниях через ветку Ruby 1.9.

В настоящее время компания Engineyard осуществляет хостинг около 6000 виртуальных машин с Ruby 1.8.6 и не планирует переходить на версии 1.8.7 или 1.9.1. Версия 1.8.7 имеет проблемы с совместимостью с Ruby 1.8.6, поэтому не получила должного распространения, в то время как несмотря на выход 1.9.1, версия 1.8.6 все еще остается наиболее востребованной.

http://www.opennet.r...shtml?num=21856

Zhek@Ch

04 Августа 2011, 00:59 #7 Последнее редактирование: 04 Августа 2011, 00:59 от Zhek@Ch
[size="3"]Код Ruby 1.9.3 перелицензирован для обеспечения совместимости с GPLv3 и BSD [/size]

Представлен первый тестовый выпуск интерпретатора 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-приложений.

Zhek@Ch

27 Октября 2011, 01:39 #8 Последнее редактирование: 27 Октября 2011, 01:39 от Zhek@Ch
[size="3"]Опубликован план подготовки релиза Ruby 2.0 [/size]

Yusuke Endoh, назначенный ответственным за выпуск релиза Ruby 2.0, опубликовал в списке рассылки ruby-core план подготовки новой версии. Релиз планируется выпустить 24 февраля 2013 года, приурочив его к 20-летию проекта. В августе 2012 года состоится заморозка кода от добавления значительных новшеств, в октябре 2012 состоится полная заморозка кода и начнётся интенсивная работа по стабилизации кодовой базы. Отдельно отмечается, что Ruby 2.0 стоит рассматривать как эволюцию, а не революцию, поэтому, несмотря на обсуждения в прошлом внесения кардинальных изменений, релиз Ruby 2.0 будет на 100% обратно совместим с Ruby 1.9.3. Ожидаемое прекращение поддержки устаревших возможностей, таких как оператор "flip-flop", будет рассмотрено при подготовке Ruby 3.0.

Из новшеств, которые могут появиться в Ruby 2.0 выделяются:

  • Ключевые слова в качестве аргументов: например, кроме "1.step(20, 2)" можно будет писать "1.step(by: 2, to: 20)" c определением метода как "def step(by: step, to: limit)", что значительно улучшит читаемость кода;
  • Поддержка экспорта и импорта байткода: будет предоставлена возможность сохранения предкомпилированных скриптов в форме байткода, который можно будет напрямую запустить в виртуальной машине YARV, что позволит пропустить фазу парсинга в общем процессе интерпретации;
  • Поддержка конструкции "Refinements" для повышения безопасности внесения изменений в код на лету ("monkey patching"). Например, можно применить "рафинирование" к глобальному классу в контексте только определённого модуля, при этом изменения будут применены только к указанному контексту. Так как данная возможность может отрицательно повлиять на производительность, её реализация ещё обсуждается, например, возможно будет реализован какой-то другой вариант раздельных пространств имён для модификации классов;
  • Стандартные библиотеки будут перемещены в "gems", хотя многие библиотеки по прежнему будут включены в реализацию языка, а не выступать в форме опционально загружаемых;
  • Поддержка неблокирующего ввода/вывода;
  • Чистка кода и пересмотр стандартных библиотек.

Zhek@Ch

31 Октября 2011, 03:10 #9 Последнее редактирование: 31 Октября 2011, 03:10 от Zhek@Ch
[size="3"]Ruby 1.9.3[/size]

Спустя год с выпуска предыдущей версии, анонсирован новый релиз «официального» интерпретатора языка программирования Ruby.

В целом, версия 1.9.3 является логичным эволюционным развитием интерпретатора и не несёт в себе кардинальных изменений, способных сломать совместимость с существующим кодом.

Среди значимых изменений стоит отметить:

  • вместо GPLv2 + Ruby License используется 2-clause BSD License + Ruby License;
  • в поставку включен RubyGems версии 1.8.10;
  • улучшен механизм загрузки кода, что позволяет значительно сократить время загрузки приложений;
  • библиотека работы с датами переписана на языке Си, что также положительно сказывается на производительности;
  • включена возможность параллельного выполнения test/unit.
Более подробный перечень нововведений традиционно приведён в файле NEWS.

Кстати, пользователи rvm уже имеют возможность обновиться и радоваться всеми нововведениями Ruby 1.9.3.

 >>> Анонс в ruby-core


Zhek@Ch

19 Ноября 2011, 11:44 #10 Последнее редактирование: 19 Ноября 2011, 11:44 от Zhek@Ch
[size="3"]Релиз MagLev 1.0, альтернативной реализации Ruby VM со встроенным NoSQL-хранилищем[/size]

Представлен релиз проекта MagLev 1.0, в рамках которого подготовлена альтернативная реализация окружения для выполнения программ на языке Ruby, построенного на основе использования 64-разрядной виртуальной машины VMware GemStone/S, изначальной созданной для языка Smalltalk. Код проекта распространяется под лицензией MIT, но используемая виртуальная машина GemStone/S является проприетарным продуктом. Бесплатная версия GemStone/S лимитирована возможностью использования кэша размером не более 2 Гб (на общий размер хранимых данных нет ограничений, ограничен только размер кэша).

Окружение MagLev полностью совместимо с веткой Ruby 1.8.7 и включает в себя встроенную поддержку специализированного объектно-ориентированного распределённого NoSQL-хранилища, обеспечивающего выполнение ACID-транзакций и поддерживающего оптимизацию за счет кэширования в оперативной памяти. Благодаря данному хранилищу программное окружение на базе MagLev может обеспечить прозрачную обработку значительного объема (терабайт) данных и кода, даже если они не вмещаются в оперативную память. При этом не делается отличий, какие именно типы объектов, классов, блоков данных и нитей могут быть сохранены и выполнены.

По мнению автора проекта, MagLev скорее стоит рассматривать даже не как Ruby VM с интегрированной БД, а как NoSQL БД, использующую язык Ruby для манипулирования хранимыми данными. Отличительной чертой MagLev является высокая производительность, которая достигается благодаря задействованию высокопроизводительного JIT-компилятора GemStone/S VM, на лету преобразующего псевдокод в машинные инструкции, что позволяет добиться производительности близкой к выполнению нативного кода.

Некоторые особенности MagLev:

  • Единое пространство имён для хранения объектов. Сохранение и извлечение данных производится без привязки к отдельным БД, код выполняется в контексте единой базы данных. При этом нет необходимости следить какие данные следует сохранить - все изменения объектов и их сохранение обслуживается автоматически;
  • В хранилище могут быть сохранены объекты Ruby, процессы, лямбда-функции, состояние нитей и продолжения (continuations). Например, можно остановить, скопировать, записать и перезапустить определенную нить кода, а затем выполнить копию на другой VM;
  • Метод обеспечения постоянного хранения в MagLev оперирует сохранением на диске состояния объектов в том же в формате, в каком они находятся в кэше. Т.е. не требуется прибегать к дополнительным преобразованиям и сериализации;
  • Транзакции при работе с хранилищем удовлетворяют условиям ACID (Атомарность, Согласованность, Изолированность и Долговечность), что позволяет запустить несколько виртуальных машин поверх одного хранилища. VM могут запускаться на разных компьютерах, при этом будет обеспечена целостность и актуальность состояния совместно используемых объектов и кода;
  • При запуске новой копии MagLev VM, код ранее выполняемый в других экземплярах MagLev VM с большой долей вероятности будет находится в кэше, что значительно ускоряет доступ к этому коду.