Product SiteDocumentation Site

4. Modificaciones en Fedora para desarrolladores

4.1. Repaso sobre el Desarrollo

Fedora incluye un amplio rango de herramientas para el desarrollo de software en todos los lenguajes de programación populares. Esta sección resalta algunas de las características nuevas en Fedora 14.

4.1.1. Nuevo Lenguaje de Programación

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. Soporte para GNUStep

El entorno de desarrollo GNUstep llega a Fedora, permitiendo el desarrollo de aplicaciones multiplataforma sobre Fedora usando los APIs y herramientas de Cocoa (antes llamado NeXTSTEP/OpenStep). El lenguaje de desarrollo principal de GNUstep es Objective-C, pero no está limitado solamente a ese.

4.1.3. Otras mejoras

  • Actualiza los lenguajes Python, Erlang y Perl y los entornos de desarrollo Netbeans y Eclipse.
  • El depurador gdb fue extendido con nuevos comandos que facilitan rastrear y corregir uso de memoria extensivo en programas y bibliotecas, así como un índice que acelera mucho la depuración.
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. Lenguaje de Programación D

D es un lenguaje de programación de sistemas. Se concentra en combinar el poder y la alta performance de C y C++ con la productividad del programador de los lenguajes modernos como Ruby y Python. El lenguaje D es tipado estáticamente y compila directamente a código de máquina. Es multiparadigma, dando soporte a muchos estilos de programación: imperativo, orientado a objeto y metaprogramación. Es un miembro de la familia de sintaxis del C, y su apariencia es similar al C++.
  • Compilador D LLVM
    LDC es un compilador para el lenguaje de programación D. Está basado en el último frontend de DMD y usa LLVM como backend. LLVM provee un backend moderno y rápido para generación de código de alta calidad.
  • La biblioteca
    Tango es una biblioteca de software de código abierto multiplataforma, escrita en el lenguaje de programación D para programadores de D. Está estructurado como una biblioteca comprensiva y cohesiva para uso de propósito genera, y tiene soporte de un número creciente de entusiastas de D reconocidos. La disponibilidad de documentación sólida y extensiva representa un factor principal en la accesibilidad de la biblioteca, y así este proyecto es más sobre la producción de documentación como también sobre la funcionalidad de primer nivel.
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. Notas: PyCObject y los avisos
Python provee varios APIs para usar en módulos de extensión de C. Uno de estos APIs, PyCObject, se hizo obsoleto en Python 2.7, pero hay un número de módulos clave que todavía no han sido portados para su reemplazo..
Por defecto, los avisos de obsolescencia son ignorados, por lo que esto no causará problemas.
Sin embargo, si la configuración de avisos estándares son modificados, puede observar problemas con estos módulos. En particular, si los avisos se pusieron a "error", es posible hacer que el intérprete Python aborte o aún haga segfault cuando importe estos módulos.
Si necesita habilitar error-for-warnings, por favor también agrege una anulación para que PendingDeprecationWarning sea simplemente registrada en vez de lanzar una excepción:
>>> import warnings
>>> warnings.simplefilter('error')
>>> warnings.simplefilter('default', PendingDeprecationWarning)

4.3.3. python-migrate

python-migrate fue actualizada a la versión 0.6. El soporte para SQLAlchemy 0.6 y bases de datos Firebird, plantillas personalizadas y uso de registrado de python están entre las innumerables características. Esta versión nueva introduce también cambios incompatibles hacia atrás:
  • api.test() y las funciones de comparación de esquemas ahora aceptan URL como el primer parámetro y el repositorio como el segundo.
  • 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 ya no acepta current_name, sino que extrae el nombre desde la columna anterior.
Para una lista completa de los cambios, consulte el 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.
El depurador gdb fue extendido para facilitar el rastreo y corrección de uso excesivo de memoria en programas y bibliotecas. Esta funcionalidad fue creada por el contribuidor de Fedora David Malcolm, y creemos que solamente está disponible para Fedora 14.
For more informations, refer to Gdb Index, on the Fedora wiki.

4.3.6. GNUstep

Esta característica ofrece la posibilidad de crear aplicaciones GNUstep en Fedora. GNUstep es una implementación de código abierto de Nextstep. Provee un marco de trabajo base en modo gráfico del lenguaje de programación Objective-C.
El lenguaje de programación Objective-C es parte de la colección de compiladores de GNU (gcc).
Una lista de las aplicaciones basadas en GNUstep se puede encontrar en List of GNUstep applications.
Se puede encontrar una introducción detallada al proyecto GNUstep en Introducción a GNUstep.

4.3.7. perl

Los cambios notables en perl 5.12 incluyen a:
  • Perl ahora conforma mucho mejor al estándar Unicode. Adicionalmente, este lanzamiento incluye una actualización a la versión 5.2 del estándar.
  • Los APIs nuevos experimentales permiten a los desarrolladores extender Perl con las palabras clave "pluggable" y la sintaxis.
  • Perl tiene ahora un mejor sentido del tiempo y le podrá mantener correctamente fechas mayores a la barrera del año 2038 ("Y2038").
  • La nueva sintaxis permite a los desarrolladores especificar los números de versión de paquete directamente en las sentencias "package".
  • Perl ahora por defecto avisa al usuario acerca del uso de características obsoletas.
Perl 5.12.x tiene numerosas características nuevas, optimizaciones y correcciones de errores. Puede encontrar una lista completa de estos cambios en la web en:

4.3.8. rakudo

Fedora viene con Rakudo Perl, una implementación de la especificación 6 de Perl basada en la máquina virtual Parrot, que permite a los desarrolladores escribir aplicaciones nuevas o portar las existentes a Perl 6. Para instalar rakudo, use la herramienta Añadir/Quitar software o ejecute:su -c 'yum install rakudo' Para información sobre las opciones de la línea de comando ejecute: man perl6man rakudo
For more indormation, view Fedora 14 Feature: Rakudo * .

4.3.9. depurador de bash

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.