Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Релиз Rubinius 2.0

Anna | 20.06.2014 | нет комментариев
Сегодня на официальном сайте плана Rubinius возникла чудесная новость о выходе версии 2.0 и о планах плана на грядущее. Rubinius — это альтернативная реализация исполняемой среды для языка Ruby, наравне с официальной MRI, JRuby и другими, менее вестимыми разработками.

Релиз 2.0 считается совместимым с еще не вышедшей спецификацией Ruby 2.1, и будет в последующем видоизменяться новыми версиями по мере закрепления новой функциональности в MRI. Ruby движется вперед, и все его пользователи обязаны следовать за ним. Именно к этому призывает основной человек в мире Ruby — Matz. Если вы все еще на 1.9 — как дозволено скорее переходите на 2.0, разработчики Ruby дюже усердствовали сделать переход на нее минимально трудоемким и болезненным. Цель плана Rubinius также состоит в технологическом улучшении интерпретатора что дозволило бы создавать больше стремительные, стабильные и результативно использующие компьютерные мощности приложения и сервисы. Ранее план был знаменит скрупулезностью в отношении реализации всех аспектов языка Ruby, но теперь такой подход к разработке несовместим с новой доктриной становления. Начиная с версии 2.0 команда Rubinius сконцентрируется на параллельных и распределенных вычислениях. Из-за этого не каждый присутствующий код будет трудиться на Rubinius, тот, что пытается сделать из Ruby соперника Go, Erlang, Clojure, Scala и Node.Также, начиная с версии 2.0 изменяется цикл и нумерация релизов плана. Ожидается, что новые версии будет выходить раз в неделю либо около того. Как и ранее, ветка «мастер» будет содержать максимально стабильный код. Если при этом новейший релиз окажется минорным, корректирующим ошибки, то номер его версии увеличится на единицу в третьей позиции (X.Y.Z -> X.Y.Z 1), а если метаморфоза связано с новой функциональностью — то во 2-й (X.Y.Z -> X.Y 1.0). Это связано с тем, что как такового финального релиза все равно не будет, это не тот продукт. Неизменно будут появляться баги, что-то добавляться в библиотеки либо ядро, и работы у команды неизменно будет достаточно много. К версии 3.0 план планирует перейти насемантическую нумерацию, а пока в течение 2-ой ветки будет делаться все для обеспечения безболезненности перехода.

Помимо того теперь запущен подсайт http://releases.rubini.us, тот, что будет беречь тарболлы с релизами и предоставлять к ним доступ через API. В течение нескольких дней все инсталяторы Ruby (RVM, rbenv и другие) обязаны перейти на работу именно с этим API.

Компоненты Rubinius

Многие слышали, что Rubinius — это еще одна реализация языка программирования Ruby. Впрочем это определение скрывает в себе уйма деталей. Теперь мы коротко разглядим используемые в Rubinius спецтехнологии и планах по их улучшению.

Зодчество Rubinius стандартна среди современных исполняемых сред для разных языков программирования.

Виртуальная машина исполняет байт-код, генерируемый компилятором Ruby. Стоит подметить, что всякий способ в Ruby имеет собственного интерпретатора. Это разрешает реализовать многие пригодные вещи, скажем, встроенный отладчик. Только один из способов Ruby с определенными точками останова использует интерпретатор «debug».

Обобщенный сборщик мусора — достаточно стремительный, обыкновенно для при сборке он останавливает исполнение менее, чем не 15 мс. Приложения, запускаемые в Rubinius обыкновенно работают с еще больше короткими и редкими задержками, так как всю кучу нужно очищать достаточно редко. Также Rubinius использует Отчасти параллельный метод отметки удаляемых объектов, что в последующем и уменьшает временные задержки при полной чистке.

Rubinius работает с настоящими системными потоками и не имеет всеобщей блокировки интерпретатора (global interpreter lock, GIL). На многопроцессорных и многоядерных машинах код Ruby исполняется параллельно.

Динамический (JIT) компилятор Rubinius преобразует байткод Ruby в машинные коды. Поток, в котором работает JIT-компилятор, существует фактически не зависимо от других потоков Ruby, следственно его работа не воздействует не эффективность приложения. JIT компилятор в настоящем времени отслеживает особенно Зачастую вызываемые способы и используемые типы объектов и применяя эту информацию он может совмещать способы приложения и стандартной библиотеки, генерируя отлично оптимизированный машинный код, выполняемый в разы стремительней, чем это делает интерпретатор Ruby-байткода.

Типовые библиотеки Rubinius (скажем, Array, Hash, Range …), а также все вспомогательные инструменты (компилятор байткода и т.д.), написаны на Ruby, и Rubinius расценивает их как код стороннего Ruby-приложения. Такой подход приметно облегчает осознавание и обзор каждой системы инструментов Rubinius.

Планы на грядущее

Наши планы — дюже больная тема, чай прогнозирование грядущего остается неточной наукой. Но на основе цели по концентрации усилий вокруг параллельных и распределенных вычислений дозволено выделить следующие приоритетные направления работы:

1. В Rubinius нет всеобщей блокировки интерпретатора, но нам еще есть куда улучшать управление параллельными потоками в системе. Во течение определенных фаз сборки мусора, определенных JIT-операций, fork/exec нам все равно доводится останавливать все потоки. Тут еще необходимо поработать и упростить имеющиеся задачи.
2. Взамен GIL в Rubinius происходят локальные блокировки в разных местах. Их также стоит уменьшить, повысить результативность работы на многоядерных процессорах, скажем, путем применения современных неблокирующих параллельных конструкций данных.
3. Сборщик мусора справляется достаточно стремительно и редко останавливает процесс, впрочем и над ним нам предстоит потрудиться.
4. JIT-компилятор теснее ускоряет код Ruby в 2-4 раза по сопоставлению с исполнением байктода, но мы знаем, что можем отменнее, постараемся усовершенствовать осознавание семантики языка с целью избежать необязательные выделения памяти и контроль объектов, что отрицательно сказывается на продуктивности. Сам JIT-инструментарий будет видоизменен для возрастания скорости разработки и тестирования новых идей по оптимизации Ruby.

Gem-ы в качестве компонентов

Вероятность создания системы из компонентов обозначает управление довольной трудной конструкцией. Но в Ruby мы привыкли пакетировать и распространять компоненты в виде gem-пакетов.

Rubinius хочет привнести в разработку Ruby превосходства применения постоянной интеграции, и в этом мы хотим обширно применять инфраструктуру gem-пакетов. Их применение крепко упростило сам Rubinius — все его основные компоненты стали самостоятельными gem-пакетами. Их стало легко и стремительно обновлять по одиночке. Помимо этого, каждая стандартная библиотека Rubinius также была преобразована в gem-пакеты. Это была тяжелая работа, чай стандартная библиотека была самым ветхим кодом в Ruby.

Выходит, распределенность и параллельность — это не грядущее, а реальное. Они весьма главны для триумфа вашего обслуживания. Из-за этого многие молодые и гениальные разработчики оставили Ruby и ушли в Erlang, Go, Clojure либо Node. Но Ruby — красивый язык, и Rubinius сделан для предоставления разработчикам высококлассных инструментов и спецтехнологий, разрешающих Ruby быть мощным соперником иным языкам. Если вам нравится писать на Ruby, то вам сейчас не необходимо искать больше продуктивную альтернативу из-за каких-то технических ограничений. Давайте строить грядущее совместно!

 

Источник: programmingmaster.ru

 

Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB