Product SiteDocumentation Site

4. Changes in Fedora for Developers

4.1. Development

4.1.1. Python Upgrade to 3.5

Python 3.5 will be the default Python 3 stack in Fedora 24. This is an upgrade from 3.4 which was included in Fedora 23. 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.4 is forward compatible with Python 3.5 for the most part.
Notable changes include:
  • Coroutines with async and await syntax.
  • A new matrix multiplication operator: a @ b.
  • New library modules: typing (Type Hints) and zipapp (Improved Python ZIP Application Support).
  • Adding % formatting to bytes and bytearray - bytes % args, bytearray % args.
  • New bytes.hex(), bytearray.hex() and memoryview.hex() methods. (Contributed by Arnon Yaari in issue 9951.)
  • memoryview now supports tuple indexing (including multi-dimensional). (Contributed by Antoine Pitrou in issue 23632.)
  • A new RecursionError exception is now raised when maximum recursion depth is reached. (Contributed by Georg Brandl in issue 19235.)
  • collections.OrderedDict is now implemented in C, which makes it 4 to 100 times faster.
  • The new os.scandir() function provides a better and significantly faster way of directory traversal.
  • SSLv3 is now disabled throughout the standard library. It can still be enabled by instantiating a ssl.SSLContext manually. This change has also been backported to CPython 3.4 and 2.7.
For more detailed information see the upstream release notes at https://docs.python.org/3.6/whatsnew/3.5.html. Note the Porting to Python 3.5 section, which lists important information for developers who need to port their Python 3.4 applications.

4.1.2. Mono 4.2

The Mono stack has been upgraded to version 4.2 in Fedora 24. Notable changes include:
For detailed information, see the upstream release notes for Mono 4.2.1 available at http://www.mono-project.com/docs/about-mono/releases/4.2.1/.

4.1.3. Ruby 2.3

Ruby 2.3 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.2 in Fedora 22 to Ruby 2.3 in Fedora 24, alongside JRuby, Fedora becomes the superior Ruby development platform.
Ruby 2.3 bumps soname, and 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.
Notable changes in this release include:
  • A Frozen String Literal Pragma is introduced. With Ruby 2.1, "str".freeze has been optimized to reduce object allocation. Ruby 2.3 introduces a new magic comment and command line option to freeze all string literals in the source files. Additionally for debugging, you can get where the object is created on can't modify frozen String error by --enable-frozen-string-literal-debug.
  • A safe navigation operator, which already exists in C#, Groovy, and Swift, is introduced to ease nil handling as obj&.foo. Array#dig and Hash#dig are also available.
  • RubyVM::InstructionSequence#to_binary and .load_from_binary are introduced as experimental features.
  • The did_you_mean gem is bundled. This gem provides suggestions on NameError and NoMethodError to ease debugging.
  • Safe levels $SAFE=2 and $SAFE=3 are now obsolete.
For further information about this release, see the upstream release announcement at https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/.

4.1.4. Go 1.6

Version 1.6 of the Go programming language is included in Fedora 24. Most of the changes from Go 1.5 are in the implementation of the language, runtime and libraries. There are no changes to the language specification.
The complete list of changes is available in the upstream change notes.

4.1.5. Erlang 18

Erlang/OTP 18.3.1 is available in Fedora 24. Erlang is a programming language used to build massively scalable, soft real-time systems that have requirements for high availability. OTP is set of Erlang libraries and design principles that provides middle-ware to develop these systems. Erlang/OTP 18.3.1 is a service release on the 18 track. It is mostly bug fixes, but it does contain a number of new features and characteristics improvements as well.
More information is available from the Erlang website.

4.1.6. QtWebEngine

Fedora 24 introduces the new QtWebEngine library. QtWebEngine is a Qt port of the Chromium web engine. Application developers are encouraged to use QtWebEngine instead of QtWebKit, which was deprecated by the Qt project in favor of QtWebEngine. More information about QtWebEngine can be found at http://doc.qt.io/qt-5/qtwebengine-index.html.

4.2. Development Tools

4.2.1. Suds Jurko Fork

The python-suds package, which provides a SOAP-based web service for Python, has been unmaintained in Fedora since 2011 and does not currently support Python 3. In Fedora 24, the no longer maintained version will be replaced with a fork currently maintained by Jurko Gospodnetić (hence the name "Jurko Fork"). The package name in Fedora will change to suds-jurko. See the project page at https://bitbucket.org/jurko/suds for details about the fork.

Important

Any packages and user-written scripts and applications which currently depend on the old package will need to be tested to ensure they still work correctly with the updated package. The new fork should maintain compatibility, however, one exception has been found: two debug-related functions, Client.last_sent() and Client.last_received() have been removed. See the relevant upstream issue for a workaround.

4.2.2. The GNU C Library (glibc) version 2.23

The GNU C Library (glibc) is upgraded to version 2.23 in Fedora 24. The upgraded version brings improved performance, a significant amount of bug fixes, improvements to POSIX compliance, additional locales, and other improvements. For full information about the new release, see the upstream NEWS at https://sourceware.org/git/?p=glibc.git;a=blob;f=NEWS;hb=HEAD.
Note that glibc-2.23 preserves compatibility with version 2.22 which was available in Fedora 23, and no changes in packaging are required. Also see https://sourceware.org/glibc/wiki/Release/2.23#Packaging_Changes.
Notable changes in Fedora's glibc distribution include:
librtkaio removed from glibc
The GNU C Library version 2.23 in Fedora will no longer provide a POSIX Realtime library that is based solely around the Linux Kernel Asynchronous IO interfaces (librtkaio). Instead, the binary compatible POSIX Realtime library (librt) will be used for all applications. Applications expecting librtkaio may experience a performance degradation and it is suggested they upgrade to libaio. A compatibility symlink is being provided for this release to ensure a smooth transition; however, this symlink may be removed in future releases.
Some additional information about the removal of this library is available at the Fedora Wiki.
glibc language subpackages
glibc provides localized strings, totalling over 100MB on disk in the locale archive at /usr/lib/locale/locale-archive. Fedora now provides glibc translations for each locale in a separate package, reducing unnecessary disk usage. Use the glibc-all-langpacks package to provide all locales, or install the glibc-langpack-language code package for a given language code.

4.2.3. BBC micro:bit

The BBC micro:bit is an ARM-based, embedded system that has been designed by the BBC for use in computer education in the UK. Every 11 year old student in the UK will be given a free micro:bit before the product goes on sale to the general public. Fedora 24 introduces two new applications that will enable users to program the micro:bit. Mu is the Python editor that will be used to write code for the micro:bit and uFlash (pronounced "micro-flash") is the utility that will flash programs onto the device.
More information about these applications can be found on the Mu and uFlash GitHub pages.

4.2.4. Boost 1.60

Boost provides free, peer-reviewed, portable C++ source libraries. In Fedora 24, Boost has been upgraded to version 1.60.0.
For more details about this update to Boost please see the Boost website.

4.3. GCC Tools

4.3.1. GCC 6

The GNU Compiler Collection, GCC, is updated to version 6 in Fedora 24. GCC 6 has many new features, including:
  • The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98.
  • Added support for the musl C library. It can be selected using the new -mmusl option.
  • Multiple optimizer improvements.
  • G++ and GCC will provide suggestions for misspelled command line options.
  • New languages and language-specific improvements in C, C++, and others.
  • New targets and target-specific improvements.
For more information about what is new in GCC 6, see the Changes page at http://gcc.gnu.org/gcc-6/changes.html.

4.4. Web Development

4.4.1. Node.js 5.10

Fedora 24 features Node.js 5.10, the latest stable version of the platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications.
This release includes API changes that may require dependency updates. Information about these changes is available from the Node.js website.
This is the first Fedora release of Node.js that has tests passing on all of the supported platforms. Requiring that all tests pass before releasing Node.js marks an important development for the project, and is essential for building a solid path moving forward.