Pull to refresh
  • by relevance
  • by date
  • by rating

Вышел Rubinius 1.0.0-rc4

Ruby *

Основные изменения по сравнению с rc3



* Ускорение компиляции в байткод на 30%
* На rubinius проходят все тесты Rails3
* Улучшена поддержка CAPI
* Поиск подстроки в строке ускорен в 10 раз. (теперь она выполняется в 2 раза быстрее, чем на 1.8.7)
* Исправлено десятки багов.

Более полный список изменений.

Читать дальше →
Total votes 35: ↑30 and ↓5 +25
Views 616
Comments 11

Конференция Ruby Shift в Киеве 21 Мая

Self Promo


21 Мая в Киеве пройдет конференция Ruby Shift

Возможности, открываемые Ruby Shift


  • Поддержка Украинского Ruby Community
  • Новые знакомства в IT
  • Обмен опытом
  • Новые идеи, неформальное общение с коллегами

В числе докладчиков



Подробности — под катом!
Читать дальше →
Total votes 32: ↑23 and ↓9 +14
Views 442
Comments 13

Забег реализаций ruby '2012

Ruby *
Translation
Использовался набор бенчмарков из ruby-1.9.3-p125. Все тесты запускались на:

ОС: OSX Lion 10.7.3
Процессор: 2.3ГГц i5
Память: 8Гб 1333 MHz DDR3
SSD: OCZ Vertex 3 Max IOPS SATA III 2.5" 120Гб

Реализации:
— ruby 1.8.7p249 (системный ruby)
— ruby 1.9.3p125
— ruby 2.0.0dev (2012-02-25 trunk 34796)
— MacRuby 0.12 (ruby 1.9.2) (Nightly build)
— maglev 1.0.0 (ruby 1.8.7)
— rubinius 1.2.4 (1.8.7 release 2011-07-05 JI)
— rubinius 2.0.0dev (1.9.3 e22ed173 JI)
— jruby 1.7.0.dev (ruby-1.9.3-p28) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_04-ea)
— jruby 1.6.7 (ruby-1.8.7-p357) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_04-ea)
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Views 1.9K
Comments 19

Ruby NoName Podcast S04E07

Ruby *

Подкаст


http://ruby.rpod.ru/273046.html

Новости




Специальный гость


Леонид Никаноров



Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 570
Comments 5

Ruby NoName Podcast S04E15

Ruby *

Подкаст


http://ruby.rpod.ru/281312.html

Новости



Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Views 1.1K
Comments 5

Ruby NoName Podcast S04E18

Ruby *

Подкаст

http://ruby.rpod.ru/284727.html

Новости


Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Views 2.1K
Comments 7

Используем потоки в Ruby

Ruby *
Tutorial
Многие Руби-разработчики игнорируют потоки (threads), хотя это очень полезный инструмент. В данной статье мы рассмотрим создание IO потоков в Руби и покажем как Руби справляется с потоками в которых происходит много вычислительных операций. Попробуем применить альтернативные имплементации Руби, а так же узнаем, каких результатов можно добиться при помощи модуля DRb. В конце статьи посмотрим, как эти принципы используются в различных серверах для приложений на Ruby on Rails.

IO потоки в Руби


Рассмотрим небольшой пример:

def call_remote(host)
  sleep 3 # симулируем долгий запрос к серверу
end

Если нам надо обратитьcя к двум серверам, например, чтобы очистить кэш, и мы дважды последовательно вызовем эту функцию:

call_remote 'host1/clear_caches'
call_remote 'host2/clear_caches'

то наша программа будет работать 6 секунд.

Мы можем ускорить исполнение программы, если будем использовать потоки, например, так:

threads = []

['host1', 'host2'].each do |host|
  threads << Thread.new do
    call_remote "#{host}/clear_caches"
  end
end

threads.each(&:join)

Мы создали два потока, в каждом потоке обратились к своему серверу и командами #join сказали, что главной программе (главному потоку) надо подождать их завершения. Теперь наша программа успешно выполняется в два раза быстрее, за 3 секунды.
Читать дальше →
Total votes 35: ↑33 and ↓2 +31
Views 25K
Comments 18

Как работает GIL в Ruby. Часть 1

Ruby *Programming *Concurrent computing *
Translation
Пять из четырех разработчиков признают, что многопоточное программирование понять непросто.

Большую часть времени, что я провел в Ruby-сообществе, печально известная GIL оставалась для меня темной лошадкой. В этой статье я расскажу о том, как наконец познакомился с GIL поближе.

Первое, что я услышал о GIL, никак не было связано с тем, как она работает или для чего нужна. Все, что я услышал — что GIL — это плохо, поскольку ограничивает параллелизм, или то, что это хорошо, потому что делает код потокобезопасным. Пришло время, я приноровился к многопоточному программированию и понял, что на самом деле все сложнее.

Я хотел знать, как работает GIL с технической точки зрения. На GIL нет ни спецификации, ни документации. По сути, это особенность MRI (Matz's Ruby Implementation). Команда разработчиков MRI ничего не говорит по поводу того, как GIL работает и что гарантирует.

Впрочем, я забегаю вперед.
Читать дальше →
Total votes 43: ↑42 and ↓1 +41
Views 20K
Comments 38

Как работает GIL в Ruby. Часть 2

Ruby *Programming *Concurrent computing *
Translation
В прошлый раз я предложил заглянуть в код MRI, чтобы разобраться с реализацией GIL и ответить на оставшиеся вопросы. Что мы сегодня и сделаем.

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

В предыдущей серии


После первой части остались два вопроса:

  1. Делает ли GIL array << nil атомарной операцией?
  2. Делает ли GIL код на Ruby потокобезопасным?

На первый вопрос можно ответив, взглянув на реализацию, поэтому начнем с него.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 9.7K
Comments 3

Релиз Rubinius 2.0

Ruby *Ruby on Rails *
Sandbox
image

Сегодня на официальном сайте проекта Rubinius появилась отличная новость о выходе версии 2.0 и о планах проекта на будущее. Rubinius — это альтернативная реализация исполняемой среды для языка Ruby, наряду с официальной MRI, JRuby и другими, менее известными разработками.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views 8K
Comments 6