The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск языка программирования Ruby 2.3.0

25.12.2015 15:26

Представлен релиз Ruby 2.3, динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.3 является третьим значительным выпуском, подготовленным в рамках нового планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков. В скором времени ожидается выпуск фреймворка Rails 5.0, первая бета-версия которого вышла неделю назад.

Основные улучшения:

  • Реализована новая экспериментальная прагма frozen-string-literal, а также связанная с ней опций "--enable/--disable=frozen-string-literal", позволяющие заморозить состояние строковых литералов в исходных текстах. Также добавлен новый отладочный режим "--debug=frozen-string-literal" при котором будет показано где именно изменение объекта приводит к выводу ошибки "can't modify frozen String";
  • Добавлен новый оператор "&." для упрощение обработки значений nil при обращении к объектам, реализованный по мотивам операторов безопасной навигации C#, Groovy и Swift. При использовании синтаксиса вызова методов obj&.foo, метод #foo будет вызван только если object не является nil. Оператор ведёт себя как выражение "try!" (obj.try! {}) из ActiveSupport, но обрабатывает только значения nil. Для массивов, хэшей и структур добавлены операторы Array#dig, Hash#dig и Struct#dig;
  • Для упрощения отладки в базовый состав добавлен gem "did_you_mean", предлагающий правки для типичных опечаток при выводе ошибок NameError и NoMethodError;
    
          "Yuki".starts_with?("Y")
          # => NoMethodError: undefined method `starts_with?' for "Yuki":String
          #    Did you mean?  start_with?
    
  • Добавлены экспериментальные возможности для обработки предкомпилированного байткода в формате ISeq. Для сериализации кода реализован объект RubyVM::InstructionSequence#to_binary_format, а для десериализации и загрузки байткода - RubyVM::InstructionSequence.load_from_binary(binary);
  • В String.new добавлена поддержка указания параметра "encoding" для определения кодировки;
  • Проведена серия оптимизаций производительности. В том числе реализован новый метод хранения табличных структур, оптимизирована работа Proc#call, на уровне машинного кода проведён тюнинг размещения объектов и вызова методов, добавлена возможность использования ключевых слов "exception:" для организации неблокирующего ввода/вывода;
  • Прекращена поддержка платформ OS/2, BeOS и Borland-C. Уровень поддержки платформы Haiku доведён до стабильного.


  1. Главная ссылка к новости (https://www.ruby-lang.org/en/n...)
  2. OpenNews: Прекращена поддержка ветки Ruby 1.9.3
  3. OpenNews: Выпуск языка программирования Ruby 2.2.0
  4. OpenNews: Релиз web-фреймворка Ruby on Rails 4.2
  5. OpenNews: Релиз Ruby 2.1.1. Языку Ruby исполнился 21 год
  6. OpenNews: Выпуск языка программирования Ruby 2.1
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43588-ruby
Ключевые слова: ruby
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, anonimous (?), 15:44, 25/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    > Прекращена поддержка платформ OS/2, BeOS и Borland-C.

    Сами себе роют яму.

     
     
  • 2.4, Andrey Mitrofanov (?), 16:16, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >> Прекращена поддержка платформ OS/2, BeOS и Borland-C.
    > Сами себе роют яму.

    Браво! Вы нашли что-то общее меду этими Эплатформами".

     
  • 2.12, Нимано (?), 17:10, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Ползователю OS/2 приносятся извинения, а 2-ух с половиной пользователей БеОси просят обратить внимание на:
    > Drop support for BeOS now that Haiku is stable.
     
     
  • 3.16, GrammarNarziss (?), 17:53, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    "двух", позорище
     
     
  • 4.17, A.Stahl (ok), 18:15, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но там не просто пользователи. Там ух какие пользователи!
     
     
  • 5.20, Аноним (-), 18:45, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Но там не просто пользователи. Там ух какие пользователи!

    Не, второй пользователь - это просто мама первого в сапера все время играет на его компе.

     
     
  • 6.31, Аноним (-), 22:53, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    По массе тянет на полтора пользователя.
     
  • 4.41, beos (ok), 08:29, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Один гайкоюзер точно имеется на просторах Рунета http://www.banki.ru/profile/?UID=709780
     
     
  • 5.64, Аноним (-), 22:12, 29/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    инновационный интерфейс, по меркам 1995 года.
     

  • 1.2, Аноним (-), 15:54, 25/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    #    Did you mean?  all your base
     
  • 1.22, Вареник (?), 19:09, 25/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А что написано на Ruby, кроме Redmine?
     
     
  • 2.23, Аноним (-), 19:28, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Навскидку: Github, Gitlab (хоть это и Rails, но всё равно).
    Из другого: Vagrant, Homebrew, Discourse, Puppet/Chef (части на golang).

    И не говорите, что это "не нужно".

     
     
  • 3.25, Аноним (-), 19:42, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Chef (части на golang)

    Это какие части на golang? Помню что там Erlang был.

     
     
  • 4.33, й (?), 01:48, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Puppet/Chef (части на golang).
    >Chef (части на golang)

    ну и избирательно вы цитируете

     
     
  • 5.34, Аноним (-), 02:23, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    по делу ответа я полагаю не ждать?
     
     
  • 6.46, й (?), 13:29, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    ответ по делу: в современном puppet части на clojure (таки не golang)

    а в chef erlang, да

     
     
  • 7.47, й (?), 13:32, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а что до golang -- тот же gitlab стремительно переписывается с его использованием
     
  • 2.24, Michael Shigorin (ok), 19:31, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А что написано на Ruby, кроме Redmine?

    Куча всего вплоть до ~/bin, а что?

    PS: <beep>, и до меня лишние запятые добрались :-/ (убрал)

     

  • 1.26, myhand (ok), 19:54, 25/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    $ irb
    irb(main):001:0> 1/2
    => 0

    Вы все еще топаете по граблям питона?

     
     
  • 2.27, Led (ok), 20:07, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > $ irb
    > irb(main):001:0> 1/2
    > => 0
    > Вы все еще топаете по граблям питона?

    И что здесь "не так"?

    $ irb
    irb(main):001:0> 1.0/2
    => 0.5

     
     
  • 3.28, myhand (ok), 20:13, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> $ irb
    >> irb(main):001:0> 1/2
    >> => 0
    >> Вы все еще топаете по граблям питона?
    > И что здесь "не так"?

    Да ничего, расслабьтесь )  Лишь вангую, что однажды обнаружите как
    $ python3
    Python 3.4.2 (default, Oct  8 2014, 10:45:20)
    [GCC 4.9.1] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1/2

    0.5

    Надеюсь, тут объяснять "что не так" - не надо?

     
     
  • 4.29, Нимано (?), 20:20, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Надеюсь, тут объяснять "что не так" - не надо?
    >>> 1//2

    0

    оно?

     
  • 4.30, Andrey Mitrofanov (?), 21:49, 25/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >>> $ irb
    >>> irb(main):001:0> 1/2
    >>> => 0
    > $ python3
    >>>> 1/2
    > 0.5
    > Надеюсь, тут объяснять "что не так" - не надо?

    А можно, можно и я "тоже"?!  :)

    scheme@(guile-user)> (/ 1 2)
    $1 = 1/2
    scheme@(guile-user)> (/ 1 7)
    $2 = 1/7
    scheme@(guile-user)> (+ (/ 5 6) (/ 1 15))
    $3 = 9/10
    scheme@(guile-user)> (sqrt 3)
    $4 = 1.73205080756888
    scheme@(guile-user)> (expt 2 333)
    $5 = 17498005798264095394980017816940970922 8253554471456994914061648512796239935     95007385788105416184430592    ///я добавил 2 пробела, чтоб форум не окривел
    scheme@(guile-user)> (expt 2. 333)
    $6 = 1.74980057982641e100
    scheme@(guile-user)> _

     
     
  • 5.32, myhand (ok), 01:35, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, дети, нада как вот этот дядинька делает!

    Собственно, у Ruby лечится require 'mathn'.  Но по-умолчанию - / означает целочисленное
    деление (как // в Python 3), короче все те же грабли что и у Python 2.

     
  • 5.51, Аноним (-), 16:51, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    fn main() {

    struct Rust {
        x: i32,
        y: i32
    }

    impl Rust {
        fn divide(&self) -> i32 {
            self.x / self.y
        }
    }

    println!("Result is: {}", Rust {x: 1, y: 2}.divide() )

    }

    и

    println!("Result is: {}", 1.0/2.0 )  //Result is: 0.5

     
     
  • 6.54, Аноним (-), 17:32, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >  x: i32,
    > println!("Result is: {}", 1.0/2.0 )  //Result is: 0.5

    А теперь повторите хотя бы "фокус" с 2^333. И заодно посчитайте "9/7 - 20/21".

     
     
  • 7.55, Andrey Mitrofanov (?), 18:49, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >>  x: i32,
    >> println!("Result is: {}", 1.0/2.0 )  //Result is: 0.5
    > А теперь повторите хотя бы "фокус" с 2^333. И заодно посчитайте "9/7
    > - 20/21".

    Зато он 2.0^333 и sqrt(3) повторит. Хорошо, если поймёт, почему -фокус- в кавычках. Речь-то не об том. И #28 совсем не про возможности арифметики в конкретном языке, конкретной реализации. Но да, могло показаться, что я писал об этом. Но я ж тлодил, беда. YallHBT, а те, кто не "all" понимают, что _предмета_ обсуждения нет. Примерно с того же #28...

     
  • 5.53, Аноним (-), 17:17, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А можно, можно и я "тоже"?!  :)

    *достает свою пип^W консоль*



    Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3
    ...
    ?- X is 5 rdiv 6 + 1 rdiv 15.
    X = 9 rdiv 10.

    ?- X is 2 ** 333.
    X = 174980057982640953949800178169409709[...]0592.

    ?- X is 2.0 **333.
    X = 1.7498005798264095e+100.


    ?- {9/10 = 5/6 + X}.
    X = 1 rdiv 15.

    ?- {1/3 = 9/7 - X}.
    X = 20 rdiv 21.

    ?- {1337 = exp(2,Y)}.
    Y = 64835473751161472 rdiv 6243314768165359.



     
     
  • 6.56, Andrey Mitrofanov (?), 18:52, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> А можно, можно и я "тоже"?!  :)
    > *достает свою пип^W консоль*
    >


    > Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3
    > ...
    >

    "Мерялся пипками с вендузятниками на отупнете. Много думал. День как день. "

     
     
  • 7.57, Аноним (-), 19:11, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>

    >> Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3 >> ...>>


    > "Мерялся пипками с вендузятниками на отупнете. Много думал. День как день. "

    Что, уже везде форточки мерещатся? Надеюсь, это не заразно оО

     
     
  • 8.59, Andrey Mitrofanov (?), 10:26, 28/12/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Видимо, только их пипирки Беда, согласен Пора принять Таблетки С другой ст... текст свёрнут, показать
     
     
  • 9.60, й (?), 18:23, 28/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    о том, что это 64-bit бинарик с поддержкой тредов на линуксе, макинтоше, другом... текст свёрнут, показать
     

  • 1.35, Vitold S (ok), 04:04, 26/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > -  Проведена серия оптимизаций производительности. В том числе реализован новый

    Подскажите, а как дела с потками? Как дела с интеграцией с C/C++ можно ли из потоков писать в переменные Ruby?

    Сохранился ли GIL и рубит ли он производительность потоков свояд все до выполнения в один поток?

    Как часто происходит переключение между опкодами, сылшал что в Python каждыые 100 операций, а тут как дела?

     
     
  • 2.36, Аноним (-), 04:29, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Сохранился ли GIL и рубит ли он производительность потоков свояд все до выполнения в один поток?

    В MRI GIL присутствует, Почитайте статью на вики и хабре про GIL все вопросы отпадут.http://habrahabr.ru/post/189320/
    > Как часто происходит переключение между опкодами, сылшал что в Python каждыые 100 операций, а тут как дела?

    Тут даже не скажу, некогда не задавался таким вопросом.
    > Как дела с интеграцией с C/C++ можно ли из потоков писать в переменные Ruby?

    Не обязательно использовать MRI как встроенный язык, можно посмотреть на mruby как медленную альтернативу lua. В сам интерпретатор параллельно писать не получиться.

     
     
  • 3.38, Аноним (-), 04:43, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > В MRI GIL присутствует

    GIL для идиотов, в C++11 присутствует атомарность для предотвращения гонки потоков.

     
     
  • 4.40, Аноним (-), 07:04, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Очень тонко, если вы понимаете о чем я ))
     
  • 4.50, Vitold S (ok), 14:36, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> В MRI GIL присутствует
    > GIL для идиотов, в C++11 присутствует атомарность для предотвращения гонки потоков.

    Ссылку на документацию Вас не затруднит скинуть или раскройте мысль полностью, а то непонятно как и что Вы сравнили один поток интер-тора VM и компилятор?

     
  • 3.49, Vitold S (ok), 14:32, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >>Сохранился ли GIL и рубит ли он производительность потоков свояд все до выполнения в один поток?
    > В MRI GIL присутствует, Почитайте статью на вики и хабре про GIL
    > все вопросы отпадут.http://habrahabr.ru/post/189320/
    >> Как часто происходит переключение между опкодами, сылшал что в Python каждыые 100 операций, а тут как дела?
    > Тут даже не скажу, некогда не задавался таким вопросом.
    >> Как дела с интеграцией с C/C++ можно ли из потоков писать в переменные Ruby?
    > Не обязательно использовать MRI как встроенный язык, можно посмотреть на mruby как
    > медленную альтернативу lua. В сам интерпретатор параллельно писать не получиться.

    Да, эту статью я уже читал. Просто новая версия и соответственно в ожидании решения концептуальных проблем, а не решения всяких мелких пакостей с которыми и так все живут.

     
     
  • 4.52, Аноним (-), 17:12, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати вы можете ruby собрать с jemalloc теперь.
     
  • 4.58, Аноним (-), 00:33, 27/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    это в Ruby 3 обещали GIL убрать.
     
  • 2.37, Аноним (-), 04:31, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >Сохранился ли GIL и рубит ли он производительность потоков свояд все до выполнения в один поток?

    VM работает в одном потоке всегда это и есть GIL. Ввод/вывод может быть параллельным.

     
     
  • 3.39, Аноним (-), 04:44, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >>Сохранился ли GIL и рубит ли он производительность потоков свояд все до выполнения в один поток?
    > VM работает в одном потоке всегда это и есть GIL. Ввод/вывод может
    > быть параллельным.
    > Ввод/вывод может быть параллельным.

    Тонко пошутил?

    В один момент времени поток может все залучить!!!

     

  • 1.42, Anton (??), 09:09, 26/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >> Прекращена поддержка платформ OS/2, BeOS и Borland-C.

    Borland-C разве платформа?
    это же компилятор, ЕМНИП

     
  • 1.43, Аноним (43), 13:18, 26/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на офф сайте написано, что это не релиз а пмвъю
    ...
    Мы рады сообщить о выходе Ruby 2.3.0-preview1.
    Опубликовал naruse 2015-11-11
    ...
    может я не доглядел?
     
     
  • 2.45, Michael Shigorin (ok), 13:25, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > может я не доглядел?

    Сейчас так:

    Ruby 2.3.0 Released
    We are pleased to announce the release of Ruby 2.3.0.
    Continue Reading...
    Posted by naruse on 25 Dec 2015

    http://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/

     

  • 1.44, Аноним (43), 13:21, 26/12/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    по ходу они новости на главную не спешат выводить
     
     
  • 2.48, Аноним (-), 14:05, 26/12/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А что тут выводить? все рубисты в курсе про дату выхода. Уже какой год новые версии выходят 25 декабря.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру