Product SiteDocumentation Site

4. Changes in Fedora for Developers

4.1. Development Overview

Fedora includes a wide range of tools for software development in all popular languages. This section highlights some of the new features in Fedora 14.

4.1.1. New Programming Language

Fedora 14 introduces support for D, a systems programming language combining the power and high performance of C and C++ with the programmer productivity of modern languages such as Ruby and Python.
For more details, refer to D Programming Language.

4.1.2. Support for GNUStep

The GNUstep development environment arrives on Fedora, allowing easy development of cross-platform applications on Fedora using the Cocoa (formerly NeXTSTEP/OpenStep) APIs and tools. GNUstep's main development language is Objective-C, but GNUstep is not limited to that.

4.1.3. Other improvements

  • Updates to the Python, Erlang and Perl languages and the Netbeans and Eclipse development environments.
  • The gdb debugger has been extended with new commands that make it easier to track down and fix excessive memory usage within programs and libraries, as well as an index that greatly speeds up debugging.
These features complete a rich set of development tools that further extends the possibilities for developers. For a complete list of the hundreds of updated development components see the Fedora 14 Technical Notes at http://docs.fedoraproject.org.

4.2. Runtime

4.2.1. boost

The boost C++ libraries have been upgraded to 4.4. which includes numerous changes. For details, see the release notes:
Some key features include new libraries for UML2 FSMs, Polygons, Factory and Forward adapters, and a UUID library. Existing libraries have been updated with many new features as well as performance improvements.

4.2.2. libjpeg-turbo

The libjpeg library has been replaced by libjpeg-turbo library which has same API/ABI but is at least twice faster on all primary architectures and about 25% faster on secondary architectures. For more details view libjpeg-turbo, on the Fedora wiki.

4.3. Development Tools

4.3.1. D Programming Language

D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. The D language is statically typed and compiles directly to machine code. It's multiparadigm, supporting many programming styles: imperative, object oriented, and metaprogramming. It's a member of the C syntax family, and its appearance is very similar to that of C++.
  • LLVM D Compiler
    LDC is a compiler for the D programming Language. It is based on the latest DMD frontend and uses LLVM as backend. LLVM provides a fast and modern backend for high quality code generation.
  • The library
    Tango is a cross-platform open-source software library, written in the D programming language for D programmers. It is structured as a cohesive and comprehensive library for general purpose usage, and is supported by a growing number of recognized D enthusiasts. Availability of solid and extensive documentation represents a prime factor in library accessibility, and thus this project is as much about documentation production as it is about top-notch functionality.
For more informations:

4.3.2. python

The system python 2 stack has been upgraded to 2.7. For a list of changes see Whats new in 2.7.
4.3.2.1. Caveat: PyCObject and warnings
Python provides various APIs for use by C extension modules. One of these APIs, PyCObject, was deprecated in Python 2.7, but there are a number of key modules that have not yet been ported to its replacement.
By default, deprecation warnings are ignored, so this will not cause problems.
However, if the standard warnings settings are overridden, you may see problems with these modules. In particular, if warnings have been set to "error", it is possible to make the Python interpreter abort or even segfault when importing these modules.
If you need to enable errors-for-warnings, please also add an override so that a PendingDeprecationWarning is merely logged rather than raising an exception:
>>> import warnings
>>> warnings.simplefilter('error')
>>> warnings.simplefilter('default', PendingDeprecationWarning)

4.3.3. python-migrate

python-migrate was updated to version 0.6. Support for SQLAlchemy 0.6 and Firebird database, custom templates and use of python logging are among many new features. New version also introduces some backwards incompatible changes:
  • api.test() and schema comparison functions now all accept url as first parameter and repository as second.
  • python upgrade/downgrade scripts do not import migrate_engine magically, but receive engine as the only parameter to function (eg. def upgrade(migrate_engine):)
  • Column.alter does not accept current_name anymore, it extracts name from the old column.
For complete list of changes refer to the changelog

4.3.4. Erlang

New version of Erlang/OTP is available in Fedora 14. For details, view Erlang R14, on the Fedora wiki.

4.3.5. gdb

gdb has been enhanced to remove the unncecessary indices from the .debug files, and will replace them with an index that greatly speeds up gdb.
The gdb debugger has been extended with new commands that make it easier to track down and fix excessive memory usage within programs and libraries. This functionality was created by Fedora contributor David Malcolm, and we believe it is unique to Fedora 14.
For more informations, refer to Gdb Index, on the Fedora wiki.

4.3.6. GNUstep

This Feature offers the possibility to create GNUstep applications on Fedora. GNUstep is an open source reimplementation of Nextstep. It's provide an GUI framework base of the Objective-C programming language.
The Objective-C programming language is part of the GNU compiler collection (gcc).
A list of applications based on GNUstep you may find at List of GNUstep applications.
Detailed introduction to the GNUstep project you may find at GNUstep Introduction.

4.3.7. perl

Notable changes in perl 5.12 include:
  • Perl now conforms much more closely to the Unicode standard. Additionally, this release includes an upgrade to version 5.2 of the standard.
  • New experimental APIs allow developers to extend Perl with "pluggable" keywords and syntax.
  • Perl now has a better sense of time and will be able to keep accurate time well past the "Y2038" barrier.
  • New syntax allows developers to specify package version numbers directly in "package" statements
  • Perl now warns the user about the use of deprecated features by default.
Perl 5.12.x features numerous new features, optimizations and bugfixes. You can find a complete list of these changes on the web at:

4.3.8. rakudo

Fedora comes with Rakudo Perl, an implementation of the Perl 6 specification based on the Parrot virtual machine, which enables developers to write new applications or port existing ones to Perl 6. To install rakudo, use the Add/Remove Software tool or run:su -c 'yum install rakudo'For information of command line options run: man perl6man rakudo
For more indormation, view Fedora 14 Feature: Rakudo * .

4.3.9. bash debugger

The Lisp sources for the emacs bash debugger, emacs-bashdb-el are now included in Fedora. The debugger has been upgraded to version 4.1_0.4.

4.3.10. Pyjamas

New to Fedora 14 is pyjamas, a Rich Internet Application (RIA) Development Platform for both Web and Desktop. Read all about this new capability at pyjs.org website.

4.4. GCC

4.4.1. gcc

Fedora 14 includes version 4.5 of gcc and the various compilers which depend on gcc. The full details of the changes my be found in the Change Logs, but some main points follow.
4.4.1.1. Obsoleted support and features
The following ports for individual systems on particular architectures have been obsoleted:
  • IRIX releases before 6.5 (mips-sgi-irix5*, mips-sgi-irix6.[0-4])
  • Solaris 7 (*-*-solaris2.7)
  • Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*, alpha-dec-osf5.0*)
  • Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions can be found in the announcement.
  • Support for the classic POWER architecture implemented in the original RIOS and RIOS2 processors of the old IBM RS/6000 product line has been obsoleted in the rs6000 port. This does not affect the new generation Power and PowerPC architectures.
Support has also been removed for a number of features obsoleted in 4.4.

Reduced performance with C99 conformance

On x86 targets, code containing floating-point calculations may run significantly slower when compiled with GCC 4.5 in strict C99 conformance mode than they did with earlier GCC versions. This is due to stricter standard conformance of the compiler and can be avoided by using the option -fexcess-precision=fast.

4.4.2. Optimizer improvements

  • The -save-temps now takes an optional argument. The -save-temps and -save-temps=cwd switches write the temporary files in the current working directory based on the original source file. The -save-temps=obj switch will write files into the directory specified with the -o option, and the intermediate filenames are based on the output file.
  • Debugging dumps are now created in the same directory as the object file rather than in the current working directory.
  • A new link-time optimizer has been added (-flto). When this option is used, GCC generates a bytecode representation of each input file and writes it to special ELF sections in each object file.
  • The automatic parallelization pass was enhanced to support parallelization of outer loops.
  • GCC now optimize exception handling code.
Reference the changes page above for more details on these and other optimizations.

4.4.3. Language-specific improvements

There are new language-specific features for Ada, C, C++, Fortran and Java.

4.4.4. New targets

There are new target processors within the AIX, ARM, AVR, IA32, M68K, MeP, MIPS, RS/6000 and RX processor families.

4.4.5. Installation Changes

The move to autotools has resulted in some artifacts changing the directories where they are found. For details, as in all of the above details, refer to the changes page.

4.5. Java

4.5.1. NetBeans

NetBeans IDE 6.9 is a significant update of NetBeans IDE 6.8.
NetBeans IDE 6.9 introduces OSGi interoperability for NetBeans Platform applications and support for developing OSGi bundles with Maven; support for JavaFX SDK 1.3 with new JavaFX Composer, a visual layout tool for visually building JavaFX GUI applications, similar to the Swing GUI builder for Java SE applications, also support for PHP Zend framework, and Ruby on Rails 3.0; as well as improvements to the Java Editor, Java Debugger, issue tracking, and more.

4.5.2. yydebug

yydebug, a debugger for parser code generated by jay is new to Fedora. For full details review yyDebug from cs.rit.edu.

4.6. Haskell

GHC has been updated to 6.12.3, and haskell-platform to 2010.2.0.0 stable release.
Some further improvements have been made to ghc-rpm-macros and cabal2spec, including merging the -doc subpackages into -devel.
The easiest way to install Haskell support in Fedora is to install the Haskell yum group from Anaconda or YUM.
 yum install @haskell

4.7. Eclipse

eclipse has been upgraded to the Helios release. New features include better support for C/C++, an app store, support for git, a web tools platform, improved support for JavaScript, and much more.
For more informations:

4.8. Kernel

Fedora 14 features version 2.6.35 of the Linux kernel.