2dfeb784d5
Ruby 2.5.0 is the first stable release of the Ruby 2.5 series. It introduces many new features and performance improvements. The notable changes are as follows: o New Features * rescue/else/ensure are now allowed to be used directly with do/end blocks. [Feature #12906] * Add yield_self to yield given block in its context. Unlike tap, it returns the result of the block. [Feature #6721] * Support branch coverage and method coverage measurement. The branch coverage indicates which branches are executed and which are not. The method coverage indicates which methods are invoked and which are not. By running a test suite with these new features, you will know which branches and methods are executed, and evaluate total coverage of the test suite more strictly. [Feature #13901] * Hash#slice [Feature #8499] and Hash#transform_keys [Feature #13583] * Struct.new can create classes that accept keyword arguments. [Feature #11925] * Enumerable#any?, all?, none?, and one? accept a pattern argument. [Feature #11286] * Top-level constant look-up is no longer available. [Feature #11547] * One of our most loved libraries, pp.rb, is now automatically loaded. You no longer have to write require "pp". [Feature #14123] * Print backtrace and error message in reverse order (oldest call first, most recent call last). When a long backtrace appears on your terminal (TTY), you can easily find the cause line at the bottom of the backtrace. Note that the order is reversed only when the backtrace is printed out to the terminal directly. [Feature #8661] [experimental] o Performance improvements * About 5-10% performance improvement by removing all trace instructions from overall bytecode (instruction sequences). The trace instruction was added to support the TracePoint. However, in most cases, TracePoint is not used and trace instructions are pure overhead. Instead, now we use a dynamic instrumentation technique. See [Feature #14104] for more details. * Block passing by a block parameter (e.g. def foo(&b); bar(&b); end) is about 3 times faster than Ruby 2.4 by “Lazy Proc allocation” technique. [Feature #14045] * Mutex is rewritten to be smaller and faster. [Feature #13517] * ERB now generates code from a template twice as fast as Ruby 2.4. * Improve performance of some built-in methods including Array#concat, Enumerable#sort_by, String#concat, String#index, Time#+, and more. * IO.copy_stream uses copy_file_range(2) to copy offload. [Feature #13867] o Other notable changes since 2.4 * SecureRandom now prefers OS-provided sources over OpenSSL. [Bug #9569] * Promote cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm, stringio, strscan, webrick, zlib from standard libraries to default gems. * Update to Onigmo 6.1.3. - It adds the absence operator. - Note that Ruby 2.4.1 also includes this change. * Update to Psych 3.0.2. * Update to RubyGems 2.7.3. * Update to RDoc 6.0.1. - Switch the lexer from IRB based one to Ripper. This dramatically improves the performance of document generation. - Fix a significant amount of bugs that existed over ten years. - Add support for new Ruby syntax from the latest versions. * Update supported Unicode version to 10.0.0. * Thread.report_on_exception is now set to true by default. This change helps debugging of multi-threaded programs. [Feature #14143] * IO#write now receives multiple arguments. [Feature #9323] See NEWS or commit logs for details.
19 lines
725 B
Text
19 lines
725 B
Text
Ruby is the interpreted scripting language for quick and
|
|
easy object-oriented programming. It has many features to
|
|
process text files and to do system management tasks (as in
|
|
Perl). It is simple, straight-forward, and extensible.
|
|
|
|
Features of Ruby are shown below.
|
|
|
|
+ Simple Syntax
|
|
+ *Normal* Object-Oriented features (ex. class, method calls)
|
|
+ *Advanced* Object-Oriented features (ex. Mix-in, Singleton-method)
|
|
+ Operator Overloading
|
|
+ Exception Handling
|
|
+ Iterators and Closures
|
|
+ Garbage Collection
|
|
+ Dynamic Loading of Object files (on some architecture)
|
|
+ Highly Portable (works on many UNIX machines, and on DOS,
|
|
Windows, Mac, BeOS etc.)
|
|
|
|
This package is Ruby 2.5 release minimum base package.
|