Product SiteDocumentation Site

5. Changes in Fedora for Developers

5.1. Development

5.1.1. Perl 5.2.0

Perl has been updated to version 5.20 in Fedora 22. This new release brings several new features, changes to existing behavior, and removes a few features; notable changes are described below.
New features:
  • Subroutine prototype attribute allows to declare subroutine prototype in postfix manner.
  • The new %hash{...} and %array{...} syntax returns a list of key/value and index/value pairs, respectively.
  • Added support for Unicode 6.3 tables.
  • More internal counters support 64-bit values (arrays with more than 2^32 elements, regular expression matching strings with more than 2^32 characters).
  • Copy-on-write mechanism is used when assigning scalars.
  • Speed improvements (lazy evaluation of logical conjunction and disjunction in void context, constant hash look-ups, return at the end of a subroutine).
  • New modules have been added into the core (experimental, IO::Socket::IP).
Changes in existing behavior:
  • use locale in an UTF-8 locale environment enables Unicode character type processing.
  • Perl initializes locale according to all locale environment variables (such as LANG).
  • The -F Perl option implies the -a option, and the -a option implies the -n option.
  • Character after a \c sequence in a double-quoted string or regular expression must be a printable character and may not be a {.
  • In use locale scope, regular expression matching which depends on locale properties (like character case) taints values.
  • The regular expression pattern element \p{All} previously matched only Unicode code points. Now it matches all code points, making it equivalent to qr/./s. Therefore, \p{All} is no longer synonymous with \p{Any}, which continues to match only Unicode code points.
  • The output format for Data::Dumper has changed.
  • Locale decimal point in Perl code is subject to locale only in scope of use locale.
Removed features:
  • do subroutine(LIST) is no longer supported and results in a syntax error.
  • The PerlIO_vsprintf() and PerlIO_sprintf() functions have been removed.
For more information, see the Perl 5.20 perldelta, Perl 5.20.1 perldelta, and Perl 5.20.2 perldelta.

5.1.2. Unicode 7.0 Support in Glibc

Glibc now supports Unicode specification 7.0. See Section 4.3.2, “Unicode 7.0 Support in Glibc” for information.

5.1.3. Ruby 2.2

Fedora 22 provides Ruby 2.2, the latest stable version of Ruby. This update brings many updates necessary for the increasingly diverse and expanding demands of this language such as incremental and symbol garbage collection and many others.
This update also brings a soname bump. All Ruby packages which use binary extensions should be rebuilt. Ruby 2.2 preserves backward compatibility with Ruby 2.1 (introduced in Fedora 21); therefore no changes to source code are necessary.
You can find a full list of changes in Ruby 2.2 in the changelog. Full documentation is available at the Ruby Documentation website.

5.1.4. python-dateutil 2.4

The python-dateutil module, which provides extensions to the standard datetime module available in Python, has been updated to version 2.4 in Fedora 22.
Previous releases of Fedora provided version 1.5 of this module. Upstream releases immediately following this version only supported Python 3, which meant the Fedora package could not be updated without breaking compatibility. The current version will work with both Python 2 and 3.
Separate subpackages are provided for Python 2 and 3: The python-dateutil package should be used for Python 2 applications, and the python3-dateutil package provides support for Python 3.
See the upstream python-dateutil release notes for detailed information about this release. Also see the README file for general module information and usage examples.

5.1.5. wxPython 3

Fedora 22 includes version 3 of wxPython - Python bindings for the wxWidgets GUI library.
This toolkit allows you to create programs with a robust, highly functional graphical user interface simply and easily. It is implemented as a Python extension module (native code) which wraps the popular wxWidgets cross-platform GUI library, which is written in C++.
For more information about changes in this version, see the Recent Changes in wxPython page. Also see Debian Project's wxpy30-update script README for information about migrating to version 3.0.

5.2. Development Tools

5.2.1. Gradle 2.2

Fedora 22 brings Gradle 2, the popular build automation tool written in Java. Gradle can automate building, testing, publishing, deployment etc. of software packages or other types of projects, such as automatically generated documentation or websites.
This change also implements integration with software used for Java packaging in Fedora (XMvn and Javapackages), which makes it possible to use standard Fedora packaging techniques to build RPM packages with Gradle with all features such as automatic artifact installation or auto-requires/provides.
For more information about the project, see the current version documentation at the official Gradle website.

5.2.2. Git 2.4.1

Fedora 22 has includes Git 2.4.1. Git is a very popular version control and collaboration tool. The previous version of Git was 2.1.0 in Fedora 21.
New Features:
git push --atomic
New to Git in 2.4 and for Fedora is the atomic option. The --atomic option does an all - or - nothing push update. This can be useful for automated tools. An example would be adding --atomic to the end of a simple git push: git push origin --atomic For more information on how to do an atomic push please visit https://github.com/blog/1994-git-2-4-atomic-pushes-push-to-deploy-and-more.
Push to Deploy
Introduced in Git 2.3.0 and new to Fedora is the ability to push to deploy. This feature will allow someone to push a branch to a git server even if the branch is checked out on that server.
Inverted Grep
Inverted grep, or --inverted grep will let you search for items that do not match the pattern you have entered. Inverted grep will give the ability to do "everything else but" searching. For example, if you wanted to search the git log for everything the user grundblom did that was not grammer edits You could use the command: git log --all --author=grundblom --invert-grep --grep=grammer
Other enhancements and updates have been made in the following areas:
  • Ports
  • UI, Workflows, and Features
  • Performance
  • Internal Implementation
  • Development Support
For more information about Git 2.4.1, please visit the release notes at: https://raw.github.com/git/git/master/Documentation/RelNotes/2.4.1.txt.

5.3. GCC Tools

5.3.1. GCC 5

The GNU Compiler Collection (GCC) has been upgraded to version 5, and Fedora packages with dependencies on specific versions of GCC have been rebuilt with this new version.
This update provides a large number of bug fixes and enhancements. The notable newly supported features and changes are:
  • Improved C++11 support and added C++14 support.
  • The default mode for C is now -std=gnu11 instead of -std=gnu89.
  • OpenMP 4.0 offloading support.
  • OpenACC 2.0 support.
  • Improved vectorization support.
See the GCC 5 Release Notes for a full list of changes. For help with porting packages previously built with an earlier version of GCC, see the Porting to GCC5 document.

5.3.2. Boost 1.57

The set of widely used C++ libraries, Boost, has been updated to version 1.57 in Fedora 22. This update brings a number of bug fixes, performance improvements and enhancements.
Boost 1.57 brings a soname bump. Fedora packages have been rebuilt using the updated libraries where necessary. Any other client packages must be rebuilt as well; this update does not preserve full ABI compatibility with previous releases.
See the Boost 1.57 Release Notes for detailed information about changes in the new version.

5.4. Haskell

5.4.1. GHC 7.8

The GHC Haskell compiler has been updated to version 7.8 in Fedora 22.
Fedora packages have been updated and rebuilt with the new GHC version. User packages will require a rebuild as well, and may need code changes before they build with the new version.
For full release notes, describing all bug fixes and enhancements, see the GHC System User's Guide. This document contains information about GHC 7.8.1 as well as several subsequent bug fix updates, which are also included in Fedora 22.

5.5. Web Development

5.5.1. Django 1.8

The latest release of the versatile, extensible web framework Django is available for Fedora 22. The Python-based framework's 1.8 release has been designated as the Django project's second 'long term support release, and will receive security updates for at least three years from release date.
Fedora packages that depend on Django have been updated for the latest release. Those working with Django can review the project's thorough documentation to learn about new, deprecated, and removed features.

5.5.2. Ruby on Rails 4.2

Fedora 22 includes Ruby on Rails 4.2, the latest version of the well-known web application framework written in Ruby. Highlights in this release include Active Job, asynchronous mails, Adequate Record, Web Console and foreign key support. The upstream release notes are at http://guides.rubyonrails.org/4_2_release_notes.html
Information for developers upgrading existing applications to Ruby on Rails 4.2 can be found in the Upgrading Ruby on Rails guide at http://guides.rubyonrails.org/upgrading_ruby_on_rails.html