ブックマーク / www.ruby-lang.org (12)

  • Ruby 3.1.0 リリース

    Posted by naruse on 25 Dec 2021 Ruby 3.1系初のリリースである、Ruby 3.1.0 が公開されました。Ruby 3.1は3.0と高い互換性を保ちながら、多くの機能を追加しています。 YJIT: New experimental in-process JIT compiler Ruby 3.1では、Shopifyが開発した新しいプロセス内JITコンパイラであるYJITをマージしました。 2018年のRuby 2.6でMJITをマージして以来、そのパフォーマンスは年々改善され、去年にはRuby3x3を無事達成しました。比較的大規模なOptcarrotベンチマークでは輝かしい高速化を達成したMJITですが、一方で現実の業務アプリケーションの性能はこれまで改善出来ていませんでした。 近年Shopifyは彼らのRailsアプリケーションを高速化するため、Rub

    abcang
    abcang 2021/12/26
  • Ruby 3.0.0 リリース

    Posted by naruse on 25 Dec 2020 Ruby 3.0系初のリリースである、Ruby 3.0.0 が公開されました。 これまで、Ruby3に向けてパフォーマンスの改善、並行処理、静的解析という3つの目標を掲げて、活発に開発が行われてきました。特にパフォーマンスの改善については、Ruby 3x3 として「Ruby3はRuby2の3倍速くする」ことを目指してきました。 Ruby 3.0では開発の指標の一つとしてきたOptcarrotベンチマークで3倍を達成するとともに、以下のような取り組みが行われています。 benchmark-driver.github.io/hardware.html に書かれている環境で計測されました。 8c510e4095 が Ruby 3.0 として使われています。環境やベンチマークによっては3倍にならないかもしれません。 Ruby 3 では

    abcang
    abcang 2020/12/25
  • Ruby 2.7.0 リリース

    Posted by naruse on 25 Dec 2019 Ruby 2.7シリーズ最初の安定版である、Ruby 2.7.0がリリースされました。 Ruby 2.7には、多くの新しい機能やパフォーマンスの改善が含まれます。 その一部を以下に紹介します。 Pattern Matching [Experimental] 関数型言語で広く使われているパターンマッチという機能が実験的に導入されました。 渡されたオブジェクトの構造がパターンと一致するかどうかを調べ、一致した場合にその値を変数に代入するといったことができるようになります。 [Feature #14912] require "json" json = <<END { "name": "Alice", "age": 30, "children": [{ "name": "Bob", "age": 2 }] } END case JSO

    abcang
    abcang 2019/12/25
  • Ruby 2.7.0-rc1 リリース

    Posted by naruse on 17 Dec 2019 Ruby 2.7シリーズのリリース候補版である、Ruby 2.7.0-rc1がリリースされました。 プレビュー版は、年末の正式リリースに向け、新たな機能を試し、フィードバックを集めるために提供されています。 Ruby 2.7には、多くの新しい機能やパフォーマンスの改善が含まれます。 その一部を以下に紹介します。 Compaction GC 断片化したメモリをデフラグするCompaction GCが導入されました。 一部のマルチスレッドなRubyプログラムを長期間動かし、マーク&スイープ型GCを何度も実行していると、メモリが断片化してメモリ使用量の増大や性能の劣化を招くことが知られています。 Ruby 2.7ではGC.compact というメソッドを導入し、ヒープをコンパクションすることが出来るようになります。ヒープ内の生存して

    abcang
    abcang 2019/12/18
  • Ruby 2.6.1 リリース

    Posted by naruse on 30 Jan 2019 Ruby 2.6.1 がリリースされました。 大きな多バイト文字列を送ると Net::Protocol::BufferedIO#write で NoMethodError が発生する問題 が修正されました。 その他いくつかの不具合修正も含まれます。詳細は commit log を参照してください。 ダウンロード https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz SIZE: 16742207 bytes SHA1: 416842bb5b4ca655610df1f0389b6e21d25154f8 SHA256: 17024fb7bb203d9cf7a5a42c78ff6ce77140f9d083676044a7db67f1e5191cb8 SHA512: 89e

    abcang
    abcang 2019/01/31
  • Ruby 2.6.0 Released

    Posted by naruse on 25 Dec 2018 Ruby 2.6シリーズの最初の安定版である、Ruby 2.6.0がリリースされました。 Ruby 2.6.0には、多くの新しい機能やパフォーマンスの改善が含まれています。 その一部を以下に紹介します。 JIT [Experimental] Ruby 2.6ではJIT (Just-in-time) コンパイラが導入されました。 JITコンパイラはあらゆるRubyプログラムの実行を高速化することを目的としています。 他言語の一般的なJITコンパイラと異なり、RubyのJITコンパイラはC言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラを用いてネイティブコードに変換することでJITコンパイルを行うという手法を用いています。(参考: MJIT organization by Vladimir Makarov) J

    abcang
    abcang 2018/12/25
  • Ruby 2.6.0-preview1 リリース

    Posted by naruse on 24 Feb 2018 Ruby 2.6.0に向けた最初のプレビューである、Ruby 2.6.0-preview1がリリースされました。 Ruby 2.6.0-preview1は、重要な新機能であるJITを含むため、例年よりも早期にリリースすることにしました。 その一部を以下に紹介します。 JIT Ruby 2.6ではJIT (Just-in-time) コンパイラが導入されました。 JITコンパイラはあらゆるRubyプログラムの実行を高速化することを目的としています。 他言語の一般的なJITコンパイラと異なり、RubyのJITコンパイラはC言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラを用いてネイティブコードに変換することでJITコンパイルを行うという手法を用いています。(参考: Vladimir MakarovのMJIT o

    abcang
    abcang 2018/02/24
  • Ruby 2.5.0 リリース

    Posted by naruse on 25 Dec 2017 Ruby 2.5シリーズの最初の安定版である、Ruby 2.5.0がリリースされました。 Ruby 2.5.0には、多くの新しい機能やパフォーマンスの改善が含まれています。 その一部を以下に紹介します。 新機能 rescue/else/ensure が do/end ブロック内にも直接書けるようになりました。 [Feature #12906] yield_self が追加されました。与えられたブロックをそのコンテキストでyieldします。tapと異なり、yield_self はブロックの値を返します。[Feature #6721] 分岐カバレッジとメソッドカバレッジの計測がサポートされました。分岐カバレッジは分岐が実行されたかどうかを表します。またメソッドカバレッジはメソッドが呼び出されたかどうかを測定します。テストスイートを

    abcang
    abcang 2017/12/26
  • Ruby 2.4.0 リリース

    Posted by naruse on 25 Dec 2016 Ruby 2.4シリーズの最初の安定版である、Ruby 2.4.0がリリースされました。 Ruby 2.4.0 には以下に示すようなたくさんの新機能が含まれています: Introduce hash table improvement (by Vladimir Makarov) 従来Rubyのハッシュテーブルの内部実装 (st_table) ではに双方向連結リストとチェイン法を用いた実装が使われていましたが、挿入順の配列にオープンアドレス法を用いることによる高速化が行われました。 この改善に際しては多くの方による議論が行われ、とりわけ Yura Sokolov 氏によって多大な貢献がありました。 Binding#irb: Start a REPL session similar to binding.pry pry を用いると

    abcang
    abcang 2016/12/25
  • Ruby 2.4.0 Released

    Posted by naruse on 25 Dec 2016 We are pleased to announce the release of Ruby 2.4.0. Ruby 2.4.0 is the first stable release of the Ruby 2.4 series. It introduces many new features, for example: Introduce hash table improvement (by Vladimir Makarov) Improve the internal structure of hash table (st_table) by introducing open addressing and an inclusion order array. This improvement has been discuss

    abcang
    abcang 2016/12/25
  • Ruby 2.3.3 リリース

    Posted by nagachika on 21 Nov 2016 Ruby 2.3.3 がリリースされました。 このリリースには Refinements と Module#prepend に関する不具合の修正が含まれています。 同じ Class に対して Module#refine と Module#prepend を併用すると意図しない NoMethodError が発生することがありました。 これは先日の Ruby 2.3.2 のリリースで入り込んだ不具合です。 詳しくは Bug #12920 を参照してください。 他にもいくつかの不具合修正がありました。 その他詳細は ChangeLog を参照してください。 ダウンロード https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.bz2 SIZE: 14433673 byte

    abcang
    abcang 2016/11/21
  • Ruby 2.4.0-preview2 Released

    Posted by naruse on 8 Sep 2016 We are pleased to announce the release of Ruby 2.4.0-preview2. Ruby 2.4.0-preview2 is the second preview of Ruby 2.4.0. This preview2 is released to get feedback from the community. Feel free to send feedback since you can still influence the features. Unify Fixnum and Bignum into Integer Though ISO/IEC 30170:2012 doesn’t specify details of the Integer class, Ruby ha

    abcang
    abcang 2016/09/10
  • 1