Đăng bởi naruse vào 25 Dec 2016
Chúng tôi rất hân hạnh được thông báo về việc phát hành Ruby phiên bản 2.4.0.
Ruby 2.4.0 là phiên bản stable đầu tiên của Ruby 2.4.0 gồm nhiều tính năng mới như:
Giới thiệu cải tiến hash table (bởi Vladimir Makarov)
Cải thiện cấu trúc bên trong của hash table (st_table) bằng việc giới thiệu open addressing và một mảng bao hàm có thứ tự. Cải thiện này đã được rất nhiều người chấp nhận, đặc biệt là Yura Sokolov.
Binding#irb: Bắt đầu một REPL session tương tự như binding.pry
Thông thường bạn có thể dùng p
để xem giá trị của các biến trong quá trình debug.
Với pry bạn có thể dùng binding.pry
để chạy REPL và
debug ở bất kỳ dòng code nào.
r56624
giới thiệu binding.irb
có tính năng tương tự trong IRB.
Hợp nhất Fixnum và Bignum vào Integer
Mặc dù chuẩn ISO/IEC 30170:2012 không mô tả chi tiết nội dung của lớp Integer, Ruby hiện đang có hai lớp Integer: Fixnum và Bignum. Ruby 2.4 gộp hai lớp này thành một lớp là Integer. Tất cả các extensions của C mà có liên quan đến lớp Fixnum hoặc Bignum thì cần được thay đổi.
Xem thêm the ticket và akr’s slides.
Class String hỗ trợ Unicode trong xử lí chữ hoa, chữ thường
Hàm String/Symbol#upcase/downcase/swapcase/capitalize(!)
bây giờ đã có thể xử lý hoa-thường cho cả Unicode (thay vì chỉ cho ASCII).
Các cải thiện về hiệu năng
Ruby 2.4 cũng bao gồm các cải thiện về hiệu năng như sau:
Array#max, Array#min
[x, y].max
và [x, y].min
đã được cải tiến để không tạo ra một mảng tạm trong một số trường hợp.
Regexp#match?
Hàm Regexp#match?
đã được thêm vào với chức năng thực hiện việc kiểm tra một
biểu thức chính quy mà không tạo ra một đối tượng cho các tham chiếu ngược lai
và thay đổi $~
nhằm giảm việc khởi tạo các đối tượng.
Những sự cải thiện về hiệu năng khác
Debugging
Thread#report_on_exception and Thread.report_on_exception
Ruby sẽ bỏ qua các exception trong các thread nếu không có một thread khác tham
gia vào tiến trình của thread có exception. Tuy nhiên với việc set report_on_exception = true
,
bạn có thể nhận biết được việc thread bị kết thúc bởi một exception chưa được xử lý.
Gửi góp ý cho chúng tôi về giá trị mặc định của report_on_exception
và report-on-GC (tính năng sẽ đưa ra báo cáo khi một thread được dọn dẹp mà không tham gia).
Khi phát hiện ra Thread Deadlock, Ruby sẽ hiển thị các threads bị lỗi với backtrace và dependency
Ruby đã có cơ chế phát hiện deadlock của các threads, tuy nhiên các thông tin được báo cáo về deadlock thường không đầy đủ cho việc debug. Từ bản 2.4 trở đi, khi phát hiện ra Deadlock, Ruby sẽ hiển thị các thread cùng với backtrace và các threads liên quan.
Thay đổi đáng chú ý so với phiên bản 2.3
- Hỗ trợ OpenSSL 1.1.0 (ngừng hỗ trợ cho 0.9.7 hoặc cũ hơn)
- ext/tk được bỏ khỏi stdlib Feature #8539
- XMLRPC được bỏ khỏi stdlib Feature #12160
Xem thêm Thông tin hoặc lịch sử commit để biết thêm chi tiết.
Với những sự thay đổi này, 2519 files changed, 288606 insertions(+), 83896 deletions(-) so với Ruby 2.3.0!
Giáng sinh vui vẻ :) đừng quên Ruby 2.4!
Download
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
SIZE: 12572424 bytes SHA1: 944d2588308391b20a89642472454d1dfe7b2360 SHA256: 440bbbdc49d08d3650f340dccb35986d9399177ad69a204def56e5d3954600cf SHA512: bef7bb53f63fb74073d071cc125fb67b273ed0779ef43c2d2969089b9ca21fff1bd012281c5b748f7a3c24dd26e71730d7248c05a01cb23ab2089eb4d02115fe
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz
SIZE: 14104044 bytes SHA1: d44a3c50a0e742341ed3033d5db79d865151a4f4 SHA256: 152fd0bd15a90b4a18213448f485d4b53e9f7662e1508190aa5b702446b29e3d SHA512: 21c9f596b42dd9cba7a53963a59fed0c2e0c1eb960a4ac7087ea3eaa991ce9252d32639e1edcb75b1d709bc07c4820a6dc336ab427d0643c6e6498e0eacdbc8b
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.xz
SIZE: 9906880 bytes SHA1: 038804bbd0e77508dd2510b729a9f3b325489b2e SHA256: 3a87fef45cba48b9322236be60c455c13fd4220184ce7287600361319bb63690 SHA512: 975a5388592adc038461e0acebb6c0efee242891b2ea8621476401458efe2bc0fdd317d3bf99beb745b0b3808410efdff33862da29c95c027f457943721e3ab6
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.zip
SIZE: 15758757 bytes SHA1: 29e1bab11551011718c35a51827edcb55bd656fc SHA256: 5c2bbfa26fd6a15a2d70961874b0f3a386206fcc5f698e240dd8b0c9f0f18c5e SHA512: 31d932372ce490eeac0a70bc8dcf842909a90435422398d069c05cf01d994936064b8f4e60879e28a8655c1296eb8e180e348cb95e001ed6ca73cda0ff77de23