== Summary ==
Ruby 2.6 is the latest stable version of Ruby. Many new features and
improvements are included for the increasingly diverse and expanding
demands for Ruby. With this major update from Ruby 2.5 in Fedora 29 to
Ruby 2.6 in Fedora 30, Fedora becomes the superior Ruby development
== Owner ==
* Name: [[User:vondruch| Vít Ondruch]], [[User:pvalena| Pavel Valena]]
* Email: vondruch(a)redhat.com, pvalena(a)redhat.com
== Detailed Description ==
Ruby 2.6 is upstream's new major release of Ruby. Many new features
and improvements are included.
=== JIT ===
Ruby 2.6 introduces an initial implementation of JIT (Just-in-time) compiler.
JIT compiler aims to improve performance of any Ruby program
execution. Unlike ordinary JIT compilers for other languages, Ruby’s
JIT compiler does JIT compilation in a unique way, which prints C code
to a disk and spawns common C compiler process to generate native
The main purpose of this JIT release is to provide a chance to check
if it works for your platform and to find out security risks before
the 2.6 release. JIT compiler is supported when Ruby is built by GCC,
Clang, or Microsoft VC++, which needs to be available on runtime.
Otherwise you can’t use it for now.
As of Ruby 2.6.0 preview3, we achieved 1.7x faster performance than
Ruby 2.5 on CPU-intensive non-trivial benchmark workload called
Optcarrot. The performance on memory-intensive workload like Rails
application are going to be improved as well.
=== RubyVM::AST [Experimental] ===
Ruby 2.6 introduces `RubyVM::AST` module.
This module has `parse` method which parses a given ruby code of
string and returns AST (Abstract Syntax Tree) nodes, and `parse_file`
method which parses a given ruby code file and returns AST nodes.
`RubyVM::AST::Node` class is also introduced. You can get location
information and children nodes from `Node` objects. This feature is
experimental. Compatibility of the structure of AST nodes are not
=== New Features ===
* Add a new alias `then` to `Kernel#yield_self`.
* Add `Random.bytes`.
* Add `Binding#source_location`. This method returns the source
location of binding, a 2-element array of __FILE__ and __LINE__.
* Add `:exception` option to let `Kernel.#system` raise error instead
of returning `false`.
* Add a new alias then to `Kernel#yield_self`.
* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL]
* Constant names may start with a non-ASCII capital letter.
* An endless range, (1..), is introduced. It works as it has no end.
=== Performance improvements ===
* Speedup `Proc#call` because we don’t need to care about $SAFE any
more. With `lc_fizzbuzz` benchmark it makes x1.4 speed improvement.
* Speedup `block.call` where block is passed block parameter. Ruby 2.6
improves the performance of passed block calling. There can observed
2.6x improvement with micro-benchmarks.
* Transient Heap (theap) is introduced. theap is managed heap for
short-living memory objects which are pointed by specific classes. For
example, making small and short-living Hash object is x2 faster. With
rdoc benchmark, 6-7% performance improvement is observed.
=== Other notable changes since 2.5 ===
* `$SAFE` is a process global state and we can set `0` again.
* Passing `safe_level` to `ERB.new` is deprecated. `trim_mode` and
`eoutvar` arguments are changed to keyword arguments.
* Merged RubyGems 3.0.0.beta2.
* Merge Bundler as default gem.
== Benefit to Fedora ==
With a latest release, Ruby language is supporting the newest language
features, which enables even faster and easier development of Ruby
== Scope ==
* Proposal owners:
** Finish packaging of Ruby 2.6. Current changes available in PR
** Rebuilding of Ruby packages providing native extensions (i.e.
packages which depends on libruby).
* Other developers:
** Rebuild of packages with binary extensions (i.e. packages which
depends on libruby) will be handled automatically, but some packages
might need fixes/updates to support Ruby 2.6 properly.
* Release engineering: [https://pagure.io/releng/issue/7936 #7936]
** Separate Koji tag for package rebuild will be needed.
* Policies and guidelines: N/A
* Trademark approval: N/A (not needed for this Change)
== Upgrade/compatibility impact ==
* User specific Ruby binary extensions need to be rebuild.
== How To Test ==
* No special hardware is needed.
* To test, install Ruby 2.6. The test builds are pusblished in PR or
on Ruby-SIG ML
* Try to locally rebuild your packages using Ruby 2.6.
* Use the packages with your applications previously written in Ruby.
* If something doesn't work as it should, let us know.
== User Experience ==
The Ruby programs/scripts should behave as they were used to.
== Dependencies ==
$ dnf repoquery --disablerepo=* --enablerepo=rawhide
--enablerepo=rawhide-source --arch=src --whatrequires 'ruby-devel' |
sort | uniq | wc -l
== Contingency Plan ==
* Contingency deadline: Mass Rebuild
* Blocks release? No
* Blocks product? No
== Documentation ==
* [http://www.ruby-doc.org/ Help and documentation for the Ruby
* [https://github.com/ruby/ruby/blob/v2_6_0_preview3/NEWS Ruby
== Release Notes ==
* The Ruby 2.6 bumps soname, therefore Ruby packages, which use binary
extensions, should be rebuilt. Nevertheless, since upstream paid great
attention to source compatibility, no changes to your code are needed.
Fedora Program Manager
I'm trying to focus my rather limited free time on neurofedora.
So, I'd like to pass on a number of packages that I no longer use to
maintainers who would give them the required attention.
A few of them were inactive upstream so I have orphaned them. A few of
the rest already have co-maintainers, but more are welcome. I intend to
remove myself from them at the end of the month (31st). The ones that
have no co-maintainers until then will be orphaned.
Orphaned (inactive upstreams or retired due to broken deps)
- albumart: was retired, now orphaned
- gtg: inactive upstream
- labyrinth: inactive upstream
- memaker: inactive upstream
- pyode: dead package, py3ode is available but needs packaging
- python-inlinestyler: retired, now orphaned
- scout: inactive upstream
- toothchart: inactive upstream
- xword: inactive upstream
Looking for new (co)-maintainers:
- axel: Light command line download accelerator
- bibus: The bibus rpms
- blobby: The blobby rpms
- dcm4che-test: The dcm4che-test rpms
- gitg: The gitg rpms
- gnote: A note taking application for Gnome
- gnumed: The GNUmed electronic medical record client
- gtg: Getting Things GNOME!
- hamster-time-tracker: A GTK3 time tracker
- jigdo: The jigdo rpms
- kapow: The kapow rpms
- libgexiv2 A GObject wrapper around the Exiv2 photo metadata library
- lifeograph: The lifeograph rpms
- lingot: LINGOT Is Not a Guitar-Only Tuner
- mrpt: The mrpt rpms
- nautilus-pastebin: The nautilus-pastebin rpms
- nut-nutrition: The nut-nutrition rpms
- openarena: The openarena rpms
- openmolar: The openmolar rpms
- OSGi-bundle-ant-task: The OSGi-bundle-ant-task rpms
- Panini: Visual tool for creating perspective views from panoramic and wide angle photographs
- prepaid-manager-applet: The prepaid-manager-applet rpms
- pystache: The pystache rpms
- python-baker: The python-baker rpms
- python-django-post_office: The python-django-post_office rpms
- python-uri-templates: The python-uri-templates rpms
- rssdler: RSS Broadcatcher for podcasts, videocasts, and torrent feeds
- tagtool: The tagtool rpms
- trash-cli: Command line interface to the freedesktop.org trashcan
- xmedcon: The xmedcon rpms
Ankur Sinha "FranciscoD"
Time zone: Europe/London
The bugzilla upgrade removed the "see-also" field which I found most
useful. Would anyone have any tips on reproducing its functionality in
the current version?
A bug requesting that it be brought back has been closed as WONTFIX:
I've commented there also, but I'd like to learn how others go about it
Ankur Sinha "FranciscoD"
Time zone: Europe/London
The general guidelines currently state that translations should be
found using %find_lang; this macro provides a listing of all *.mo
files but not their containing directories.
Specifying just the files makes sense when they are in the global
location (/usr/share/locale), but not so much when they are in, e.g.,
the Python site-packages directories. For example, python3-humanize
but *not* the humanize/locale or humanize/locale/* directories. So
when you uninstall python3-humanize, you are left with the
I see three ways forward:
1. Teach %find_lang to add directories if it's not in /usr/share/locale
2. Tell packagers to explicitly include the directories is not in
3. Stop recommending %find_lang if it serves no other purpose than to
just list files (I *think* multiple packages owning directories is no
longer an issue?)
I'd lean towards 1 as I think 2 is just unnecessary extra work and the
condition in 3 is not probably true.