Product SiteDocumentation Site

4. Changes in Fedora for Developers

4.1. Development

4.1.1. Scratch

Fedora 19 includes Scratch, the graphical programming environment from the Lifelong Kindergarten Group at the IT Media Lab. Scratch makes it easy to create your own interactive stories, games, animations, music, and art.
Install Scratch with
        yum install scratch
and run either from your desktop's application menu (under Programming) or by typing `scratch` in a terminal window.

4.1.2. New Ruby 2.0.0

Ruby is available in Fedora 19. The new release provides additions to the core language, new built-in libraries, improved debug support, and performance enhancements.
The Ruby project has given detailed changes and compatibility guidelines, in the release announcement available at http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/

4.1.3. JRuby 1.7

JRuby has been updated to version 1.7 and featuring improved packaging. Details on the release are available at http://jruby.org/2012/10/22/jruby-1-7-0.html

4.1.4. Erlang

The general purpose concurrent programming language and runtime Erlang has been updated to R16B. The full changelog is available at http://www.erlang.org/download/otp_src_R16A_RELEASE_CANDIDATE.readme and http://www.erlang.org/download/otp_src_R16B.readme. Documentation includes http://vimeo.com/44790646 and http://www.erlang.org/download_release/17

4.1.5. Boost Updated to 1.53

Fedora 19 includes Boost version 1.53. Compared to 1.50 shipped with Fedora 18, Boost 1.53 comes with several new libraries:
Context, for context switching
Coroutine, a coroutine library
Lockfree, lockfree data structures
Multiprecision, extended precision arithmetic types for floating point, integer and rational arithmetic
Atomic, C++11-style atomic<>
Odeint, for solving ordinary differential equations
Many other libraries were updated. The detailed release notes are available for Boost 1.51.0, 1.52.0 and 1.53.0:
Boost 1.50.0 Release Notes
Boost 1.51.0 Release Notes:
Boost 1.52.0 Release Notes:
Boost 1.53.0 Release Notes

Backwards Compatibility

Note that neither API, nor ABI compatibility with Boost 1.50 may be assumed. Third party applications built against older versions of Boost will need to be recompiled, and may need to be patched to work well with Boost 1.53.

4.1.6. GNU Guile updated to version 2.0.7

GNU Guile has been updated to version 2.0.7 . Third party applications that depend on legacy guile can use the compat-guile18 package. More information about Guile 2 can be found at http://www.gnu.org/software/guile/download.html#releases

4.1.7. Python

4.1.7.1. Pillow replaces PIL
The Python Imaging Library, or PIL, has been replaced with Pillow, an actively maintained fork, which also offers Python 3 compatible modules. Pillow is a drop-in replacement for PIL, except that importing modules now requires
          from PIL import <Module>
syntax instead of simply
          import <Module>
This change does not break backwards compatibility with the legacy PIL. Documentation is available at https://github.com/python-imaging/Pillow/
4.1.7.2. PyXML removed, use stdlib
Python programmers who use the xml module may find that a few pieces of it work differently than in the past. This is due to Fedora no longer shipping PyXML. This change allows the python stdlib xml module to be visible to programmers. PyXML had replaced the stdlib code with its own less maintained code, and dropping PyXML ensures that the stdlib functions are preferred.

4.2. Development Tools

4.2.1. Checkpoint and restore with crtools

The CRIU (Checkpoint/Restore in User-space) project offers a user-space implementation of process and process group checkpoint/restore. With the user-space tools crtools available in this release it is possible to checkpoint processes and restore them at a later time again (e.g. after a crash) or migrate the checkpointed process or process group to another system. CRIU aims to be as transparent as possible so that no instrumentation or re-compilation of the process to be checkpointed is necessary.
To dump a process, use the command:
        crtools dump -D /path/to/dump-directory -t <PID>
To restore a process, use the command:
        crtools restore -D /path/to/dump-directory -t <PID>
The CRIU project can be found at http://criu.org

4.2.2. Developer's Assistant

New developers get a quick start with Developer's Assistant, a set of tools for rapidly starting projects with a variety of languages and frameworks. The devassistant package currently supports:
C and C++
python including django and flask
java including jsf and maven

4.2.3. MEMSTOMP

Fedora 19 offers MEMSTOMP, a DSO which can be preloaded into an application to discover overlapping memory arguments to certain functions at a lower runtime cost than valgrind.

4.2.4. New Tools

recode adds the ability to convert files between character sets and usages
comdemod is a tool to assist with large scale code base refactors.
jimtcl, a lightweight Tcl implementation.
fox, a C++ based toolkit for developing graphical user interfaces easily and effectively.

4.3. GCC Tools

4.3.1. GCC 4.8.x

As of Fedora 19, GCC 4.8.x is shipped as the default GCC. In addition, all Fedora packages have been rebuilt with GCC 4.8.x (and GLIBC 2.17; see below)
Users will be able to examine compiled code improvements and use the newly added features, such as improved C++11 and C11 support, improved vectorization support, etc.
Updates to GCC include the MinGW cross-compiler. One of the most notable changes is that the default exception handling model for the win64 target was changed from SjLj to SEH. The win32 target still uses the SjLj exception handling model. This causes all binaries for the win64 target which use exception handling to depend on libgcc_s_seh-1.dll instead of libgcc_s_sjlj-1.dll.
For more information on the changes in GCC 4.8.x, please visit http://gcc.gnu.org/gcc-4.8/changes.html

4.3.2. GLIBC 2.17

As of Fedora 19, GLIBC 2.17 is shipped as the default GLIBC. All Fedora packages have been rebuilt with GLIBC 2.17 (and GCC 4.8.x; see above).
For more information on the changes in GLIBC 2.17, please refer to http://sourceware.org/ml/libc-announce/2012/msg00001.html

4.4. D

4.5. Haskell

GHC has been updated to 7.4.2, Haskell Platform to 2012.4, and many other library updates.

4.6. Java

4.6.1. Java 8 technical preview

This release of Fedora includes a technological preview of Java 8, offered through the java-1.8.0-openjdk and java-1.8.0-openjdk-devel packages.
Java 7 continues to remain the default JDK for this release. The inclusion of Java 8 and OpenJDK8 will allow developers to develop and test their applications for the next version of Java in parallel while everyone can continue using the stable Java 7 for daily use.
New features of OpenJDK8 are listed at http://openjdk.java.net/projects/jdk8/features/

4.6.2. Simplified Maven packaging

Improved and simplified way to create RPM packages out of Apache Maven projects have been introduced. Details and conversion recipes from old spec files may be found at http://mizdebsk.fedorapeople.org/xmvn/cookbook/

4.6.3. Thermostat 1.0

Fedora 19 includes Thermostat 1.0, the first API-stable release of thermostat, a monitoring, instrumentation and serviceability tool for OpenJDK.
For usage information, consult the Thermostat user guide at http://icedtea.classpath.org/wiki/Thermostat/UserGuide

4.7. Web Development

4.7.1. PHP updated to 5.5.0

The popular programming language PHP has been updated to version 5.5.0. This includes a number of significant new features, including support for Generators, the new Zend Optimizer+ Opcode cache, and a number of performance enhancements.
For complete details refer to Migrating from PHP 5.4.x to PHP 5.5.x PHP developers should read /usr/share/doc/php-common-*/NEWS to learn about the changes and consult the migration guide at http://www.php.net/manual/en/migration55.php.

4.7.2. Node.js

Fedora 19 now includes the Node.js JavaScript runtime environment for developing fast, scalable network applications using the JavaScript programming language. Also included is the npm package manager that provides access to over 20,000 libraries and applications available under free and open source licenses.
For more information about Node.js, visit http://nodejs.org or review the documentation in the nodejs-docs package.
For more information about npm, including a directory of available libraries and programs, visit http://npmjs.org/.

4.7.3. Django 1.5

Fedora 19 features version 1.5 of the popular Django web application framework. This version features improvements that make it easier to provide custom authentication functionality, improved caching support, a new template tag makes it easier to use JavaScript templates inside Django templates, and more.
For complete details, review the Django 1.5 release notes at https://docs.djangoproject.com/en/dev/releases/1.5/.