Product SiteDocumentation Site

4. Changes in Fedora for Developers

4.1. Development Tools

4.1.1. pkgconf as System pkg-config Implementation

In Fedora 26, the pkg-config implementation has been switched to pkgconf. This is a newer, actively-maintained implementation of pkg-config that offers more advanced support for .pc files and provides a library interface for developers to integrate pkg-config processing into their applications.
More information about pkgconf can be found at pkgconf.org.

4.1.2. Enable systemd-coredump by Default

By default, core dumps from crashing programs are now stored by systemd-coredump, rather than created in the crashing process's current working directory by ABRT. They may be extracted using the coredumpctl tool. For example, simply run 'coredumpctl gdb' to view a backtrace for the most recent crash in gdb. For more information on this change, refer to the manpages coredumpctl(1), systemd-coredump(8), and coredump.conf(5).

4.2. C

4.2.1. GNU Compiler Collection (GCC) Rebased to 7.1

The GNU Compiler Collection (GCC) has been rebased to version 7.1, a major new release that provides a number of new features as well as many improvements and bugfixes. In addition to offering the new GCC to developers, Fedora packages have been recompiled using the new version. See Changes, New Features, and Fixes in the GCC 7 Release Series.
Developers should see Porting to GCC 7 for detailed information on how to update their codebases to work with the new compilers.

4.2.2. The GNU C Library Version 2.25

The GNU C Library in Fedora 26 has been rebased to version 2.25, which brings many improvements and bug fixes over the previous version. Notable changes include:
  • Additional support for floating-point extensions for C (TS 18661-1:2014) including new functions like strfromd, strfromf, and strfroml.
  • The function explicit_bzero, from OpenBSD, has been added to libc. It is intended to be used instead of memset() to erase sensitive data after use.
  • The getentropy and getrandom functions, and the <sys/random.h> header file, have been added.
  • GDB pretty printers have been added for mutex and condition variable structures in POSIX Threads.
  • Tunables feature added to allow tweaking of the runtime for an application program.
  • New improved algorithms for condition variables and read-write locks for POSIX Threads.
  • Security fixes for CVE-2016-6323, and CVE-2015-5180.
Detailed release are available as part of the upstream release notice.

4.3. Containers

4.3.1. OverlayFS is now default for Docker

The default storage option for Docker is now OverlayFS via the Overlay2 driver, which provides better performance. Overlay2 provides performance advantages in memory sharing compared to devicemapper. Additionally, support for SELinux for the Overlay file systems have been added.

Note

Overlay is not a POSIX-compliant file system and there could be problems with running containers on Overlay. Therefore, you can easily switch back to devicemapper in these cases. For more information about switching storage options, check the documentation for the atomic storage commands.
Upgraded systems will not be affected.

4.3.2. Docker SDK for Python, version 2

A new version of Docker SDK for Python, the Python library which communicates with the Docker engine API, has been added to Fedora 26. It provides a new, high-level, user-focused API provided as docker.DockerClient. This obsoletes the existing python-docker-py package. The functionality is now provided by the python2-docker and python3-docker packages. The docker.Client class has been renamed to docker.APIClient. Note that the version 2 of Docker SDK is not backwards compatible with the versions earlier than 1.10.6 of the library.

4.4. Boost

4.4.1. Boost 1.63

Boost has been upgraded to version 1.63. Apart from a number of bugfixes and improvements to existing libraries, this brings six new libraries compared to Fedora 25: Boost.Compute, Boost.DLL, Boost.Hana, Boost.Metaparse, Boost.Fiber and Boost.QVM.
For more information, see the Boost 1.63 Release Notes.

4.5. D

4.5.1. LLVM-based D Compiler (LDC) v1.1.0

The LDC D compiler has been updated to version 1.1.0. More information about this release is contained in the LDC 1.1.0 release note.

4.6. Go

4.6.1. Golang 1.8

The latest Go release, version 1.8, brings changes to the implementation of the toolchain, runtime, and libraries. There are also two minor changes to the language specification. This release maintains the Go v1 promise of compatibility and so the Go Project expects almost all Go programs to continue to compile and run as before.
More detail can be found in the Go 1.8 Release Notes.

4.6.2. Golang Buildmode PIE

Fedora 26 changes the default build mode for golang in Fedora packaging macros to buildmode=pie, which results in the production of Position Independent Executables. Also, the Fedora hardned linker flags are passed to the external linker, reducing the vulnerability of the generated binaries.

4.7. Haskell

4.7.1. Glasgow Haskell Complier v8.0

The Glasgow Haskell Compiler (GHC) has been upgraded from version 7.10 to version 8.0.2, all Haskell packages in Fedora have been rebuilt and many have been updated. This GHC release brings much improved support for aarch64, ppc64, and ppc64le as well as many new features, fixes, and improvements.
More information about the new features in GHC version 8 can be found in the release notes for versions 8.0.1 and 8.0.2.

4.8. Python

4.8.1. Python 3.6

Python 3.6 will be the default Python 3 stack in Fedora 26. This is an upgrade from 3.5 which was included in Fedora 25. All packages which depend on Python 3 must be rebuilt. User-written Python 3 scripts and applications may require a small amount of porting; however, Python 3.5 is forward compatible with Python 3.6 for the most part.
Notable new features include:
  • Formatted string literals (f-strings): f"This will be evaluated to foo's value: {foo}"
  • The order of elements in **kwargs: keyword arguments now preserve their order
  • The new secrets module provides handy helpers for secure token generation in various formats
  • Underscores in numeric literals let you break up magic constants to make them easier to read: 1_000_000
  • File system path protocol: Many more standard library APIs, including the builtin open(), now support pathlib.Path and pathlib.PurePath objects
  • A range of performance improvements.
For more detailed information see the Fedora Magazine announcement article or the upstream release notes. Note the Porting to Python 3.6 section, which lists important information for developers who need to port their Python 3.5 applications.

4.8.2. Python Classroom Lab

Fedora 26 brings in a new Python Classroom Lab. A variant of Fedora targeted at teachers and students of the Python programming langugae. A ready to use environment with Python, PyPy 3, virtualenv, tox, git, Jupyter Notebook and more. It's ready in three variants: as a GNOME powered desktop or headless for Vagrant and Docker.
Find out more about the Python Classroom Lab on the Fedora Labs website.

4.8.3. Python 3 C.UTF-8 locale

An ongoing challenge within the Python 3 series has been determining a sensible default strategy for handling the “7-bit ASCII” text encoding assumption currently implied by the use of the default C locale.
Starting with Fedora 26, the Fedora system Python includes a backport of Python 3.7's upcoming locale coercion feature, which means the Python 3 stack will automatically coerce the C locale to C.UTF-8 by setting the LC_CTYPE environment variable (if neither it nor LC_ALL are already set) before configuring the process locale. Automatically setting LC_CTYPE this way means that both the core interpreter and locale-aware C extensions (such as readline) will assume the use of UTF-8 as the default text encoding, rather than ASCII.
Full details of this new Python feature are contained in PEP 538 -- Coercing the legacy C locale to a UTF-8 based local.

4.9. Ruby

4.9.1. Ruby 2.4

Ruby 2.4 is the latest stable version of Ruby. Many new features and improvements are included, for example:
  • hash table improvements
  • unify Fixnum and Bignum into Integer
  • String supports Unicode case mappings
  • performance and debugging improvements
Ruby 2.4 includes updates to soname and so Ruby packages that use binary extensions should be rebuilt. Nevertheless, since the Ruby community paid great attention to source compatibility, no changes to your code are needed.
More information about Ruby 2.4 can be found in the Ruby community's Ruby 2.4.0 Release Notes.

4.10. Web Development

4.10.1. PHP 7.1

The popular web development language PHP has been upgraded from 7.0 to 7.1 for Fedora 26. Pacakges providing extensions to PHP have been rebuilt to use the new release; developers using extensions from non-packaged sources should update them. While most common PHP applications should be able to use the new release without issue, impacted developers should review the links below for information provided by upstream PHP about the upgrade.
http://php.net/manual/en/migration71.php
https://raw.githubusercontent.com/php/php-src/PHP-7.1/UPGRADING
https://raw.githubusercontent.com/php/php-src/PHP-7.1/UPGRADING.INTERNALS

4.10.2. Zend Framework 3.0

Fedora 26 offers the latest version 3 of the popular PHP framework, Zend. Zend 3 offers increased performance, support for PHP 7, improved project documentation, and more. For detailed information, refer to the upstream release announcement at https://framework.zend.com/blog/2016-06-28-zend-framework-3.html or their migration guides.