Product SiteDocumentation Site

4. Cambiamenti in Fedora per Sviluppatori

4.1. Panoramica generale

Fedora viene distribuita con i più comuni linguaggi di programmazione per lo sviluppo di software. Qesta sezione illustra alcune novità presenti in Fedora 14.

4.1.1. Nuovi Linguaggi

Fedora 14 sostiene lo sviluppo di D, un linguaggio di programmazione per sistemi che combina la potenza e le alte prestazioni di C e C++, con la produttività dei moderni linguaggi come Ruby e Python.
Per maggiori dettagli, fare riferimento alla pagina,D Programming Language, sul sito del progetto.

4.1.2. Supporto a GNUStep

L'ambiente di sviluppo GNUstep fa il suo ingresso in Fedora, con l'obiettivo di agevolare lo sviluppo di applicazioni tra piattaforme diverse, attraverso le API e gli strumenti di Cocoa (che ha sostituto il precedente NeXTSTEP/OpenStep). Il principale linguaggio di sviluppo di GNUstep è Objective-C, ma è aperta la possibiità di integrare anche altri linguaggi.

4.1.3. Ulteriori sviluppi

  • Aggiornamenti ai linguaggi Python, Erlang e Perl ed agli ambienti Netbeans ed Eclipse.
  • Il debugger gdb è stato arricchito di nuovi comandi per semplificare l'individuazione e la risoluzione del sovraccarico in memoria di programmi e librerie, e di un index per accelerare le operazioni di debug.
Fedora include una gran quantità di strumenti di sviluppo, espandendo le possibilità di sviluppatori ed appassionati di programmazione. Consultare Fedora 14 Technical Notes, su http://docs.fedoraproject.org, per la lista completa di tutti gli aggiornamenti introdotti ai componenti di sviluppo.

4.2. Runtime

4.2.1. boost

Le librerie C++ di boost, sono state aggiornate alla versione 4.4, con molti cambiamenti. Per i dettagli, vedere le note di rilascio:
Tra le principali novità si segnalano nuove librerie per FSM UML2, Polygon, Factory e Forward, ed una libreria UUID. Anche le librerie esistenti sono state aggiornate e migliorate.

4.2.2. libjpeg-turbo

libjpeg-turbo ha sostituito la precedente libreria libjpeg, che pur presentando la stessa API/ABI risulta più veloce, su tutte le architetture principali e su quelle secondarie, rispettivamente, di circa il 100% e il 25%.

4.3. Strumenti di sviluppo

4.3.1. Linguaggio di programmazione D

D è un linguaggio di programmazione per sistemi. La sua forza sta nel combinare la potenza e le alte prestazioni del C e C++ con la produttività di linguaggi come Ruby e Python. Il D è un linguaggio statically typed che compila direttamente in binario. Supporta molti stili di programmazione (multi-paradigm): procedurale, ad oggetti, ed astratta. La sua sintassi rientra nella famiglia del C, ed il suo aspetto assomiglia al C++.
  • Compilatore D LLVM
    LDC è un compilatore del linguaggio D, basandosi sul frontend DMD ed usando LLVM come backend. LLVM offre un veloce e moderno backend per realizzare codice di alta qualità.
  • La libreria
    Tango è una libreria cross-platform open-source, scritta in D per programmatori in linguaggio D. Si tratta di una libreria di utilizzo generale (general purpose), supportata da un crescente numero di entusiasti del D. Allo stato attuale, si propone anche di fornire una adeguata documentazione di base.
Per maggiori informazioni:

4.3.2. python

Il sistema python 2 è stato aggiornato alla versione 2.7. Per una lista dei cambiamenti, vedere Whats new in 2.7.
4.3.2.1. Avviso: PyCObject e i suoi warning
Python provvede varie API usando estensioni di moduli C. Una di queste API, PyCObject è sconsigliata in Python 2.7, tuttavia, allo stato attuale (vedere Bug #620842: depends on 14 open bugs), i moduli necessari alla sua sostituzione non stati ancora completati.
Per impostazione, i deprecati warning vengono ignorati, e ciò non dvrebbe causare problemi.
Diversamente, modificando le impostazioni standard sui warning, questi moduli causeranno dei problemi. In particolare, se i warning sono impostati su error è possibile che l'interprete Python aborti o che vada in crash durante l'importazione di questi moduli.
Se occorre impostare su error i warning, sovrascrivere le impostazioni in modo tale che un PendingDeprecationWarning sia semplicemente deviato nei log, senza sollevare una eccezione:
>>> import warnings
>>> warnings.simplefilter('error')
>>> warnings.simplefilter('default', PendingDeprecationWarning)

4.3.3. python-migrate

python-migrate è stato aggiornato alla versione 0.6. Tra le novità si annovera supporto per SQLAlchemy 0.6 ed il database Firebird, custom template e l'utilizzo dei log di python. La nuova versione introduce alcune incompatibilità rispetto alle precedenti:
  • api.test() e le funzioni di confronto (schema comparison function) ora accettano un URL come primo parametro, ed un repository come secondo.
  • gli script di upgrade/downgrade non importano automaticamente migrate_engine, ma accettano engine solo come parametro di funzione (p.e. def upgrade(migrate_engine):)
  • Column.alter non accetta più current_name, ma estrae il nome dalla vecchia colonna.
Per un elenco completo dei cambiamenti, vedere il changelog.

4.3.4. Erlang

La nuova versione di Erlang/OTP è disponibile anche in Fedora 14, vedere Erlang R14, sulla wiki di Fedora.

4.3.5. gdb

Il debugger gdb è stato ulteriormente sviluppato: sono stati rimossi inutili indici nei file di .debug, e sostituiti con una indicizzazione che aumenta la velocità di esecuzione digdb.
Inoltre gdb è stato esteso con nuovi comandi che semplificano la localizzazione e la risoluzione, in programmi e librerie, dei problemi di sovraccarico di memoria, grazie al contributo in Fedora di David Malcolm, che riteniamo abbia introdotto una esclusiva di Fedora 14.
Per ulteriori approfondimenti, vedere Gdb Index, sulla wiki di Fedora.

4.3.6. GNUstep

Questa caratteristica consente di sviluppare applicazioni GUNstep in Fedora. GNUstep è un re-implementazione open-source di Nextstep volta ad offrire una piattaforma di base del linguaggio Objective-C.
Il linguaggio di programmazione Objective-C fa parte della collezione dei compilatori GNU (gcc).
Per un elenco di applicazioni basate su GNUstep, consultare la pagina List of GNUstep applications.
Una introduzione al progetto GNUstep, si trova alla pagina, GNUstep Introduction, il sito del progetto.

4.3.7. perl

La versione 5.12 di perl, include le seguenti principali novità:
  • Perl presenta una maggiore conformità allo standard Unicode e questa versione, presenta un adeguamento allo standard 5.2.
  • Nuove API sperimentali consentono agli sviluppatori di estendere Perl con la sintassi e con parole chiavi pluggable (ad inserimento).
  • Perl ha un maggior senso del tempo ed è capace di tenere con accuratezza anche le date al di là del fatidico anno 2038 (Unix Millennium Bug, Y2K38 o Y2.038K).
  • Una nuova sintassi per specificare la versione di un pacchetto direttamente nella istruzione package.
  • Perl, ora per impostazione, avvisa sull'uso di proprietà deprecate.
Le versioni Perl 5.12.x presentano molte novità, ottimizzazioni e risoluzioni varie. Per un elenco completo dei cambiamenti, visitare il web:

4.3.8. rakudo

Fedora propone Rakudo Perl, una implementazione delle specifiche Perl 6 basate sulla virtual machine Parrot, che consente di realizzare nuove applicazioni o di migrare le esistenti verso Perl 6. Per installare rakudo, usare la GUI Aggiungi/Rimuovi Software o, via terminale, eseguire il comando su -c 'yum install rakudo'. Per informazioni sulle opzioni disponibili, come sempre, vedere le pagine di manuale (man perl6man rakudo).
Per maggiori informazioni, visitare anche Fedora 14 Feature: Rakudo * .

4.3.9. bash debugger

In Fedora 14 sono stati inclusi, i sorgenti Lisp del debugger bash in emacs, emacs-bashdb-el, aggiornato alla versione 4.1_0.4.

4.3.10. Pyjamas

Nuovo in Fedora è pyjamas, una piattaforma di sviluppo RIA (Rich Internet Application), per applicazioni web e desktop. Per conoscere tutte le sue potenzialità, visitare pyjs.org, il sito del progetto.

4.4. GCC

4.4.1. gcc

Fedora distribuisce la versione 4.5 del compilatore gcc e dei compilatori collegati. I dettagli completi si trovano nei Change Logs, quì si propongono solo i cambiamenti principali.
4.4.1.1. Messa in obsolescenza e sviluppi
Di seguito si riportano i sistemi su particolari architetture non più supportate:
  • versioni IRIX precedenti alla 6.5 (mips-sgi-irix5*, mips-sgi-irix6.[0-4])
  • Solaris 7 (*-*-solaris2.7)
  • versioni Tru64 UNIX precedenti alla V5.1 (alpha*-dec-osf4*, alpha-dec-osf5.0*)
  • i dettagli riguardanti la messa in obsolescenza dei sistemi IRIX, Solaris 7, e Tru64 UNIX si trovano nell'annuncio.
  • la classica architettura POWER implementata negli originali processori RIOS e RIOS2 dei primi IBM RS/6000 è stata messa in obsolescenza dal progetto rs6000. Prosegue il supporto alle architetture Power e PowerPC di nuova generazione.
Supporto è stato già interrotto per un certo numero di sistemi già nella versione 4.4.

Degrado di prestazioni con C99

Su architetture x86, il codice contenente elaborazioni in virgola mobile, se compilati con GCC 4.5 in stretta conformità alla standard C99, potrebbe comportare dei tempi di esecuzione maggiori, rispetto a precedenti versioni di GCC. Ciò a causa di una conformità, da parte del compilatore, più rigorosa allo standard ma che può essere evitata usando l'opzione -fexcess-precision=fast.

4.4.2. Sviluppi di ottimizzazione

  • L'opzione -save-temps ora accetta un argomento opzionale. Le opzioni -save-temps e -save-temps=cwd, scrivono i file temporanei nella directory di lavoro corrente dei file sorgente originali. L'opzione -save-temps=obj scriverà i file nella directory specificata con l'opzione -o, ed i file-name intermedi saranno basati sulla stessa opzione.
  • I dump di debug, ora vengono realizzati nella stessa directory dei file oggetto, e non più nelle directory di lavoro corrente.
  • E' stato aggiunto un nuovo LTO (Link Time Optimization), -flto. Usando questa opzione, GCC genera una rappresentazione in bytecode di ciascun file d'ingresso e lo trascrive in ciascun file oggetto, nelle speciali sezioni ELF.
  • Il passo della parallelizzazione automatica è stato ulteriormente sviluppato per supportare la parallelizzazione dei loop esterni.
  • GCC ora ottimizza il codice che gestisce le eccezioni.
Fare riferimento alla pagina dei change log, indicata prima, per maggiori dettagli su queste ed altre ottimizzazioni.

4.4.3. Sviluppi riguardanti linguaggi specifici

Nuove caratteristiche riguardano anche Ada, C, C++, Fortran e Java.

4.4.4. Nuovi target per le CPU

Nell'ambito delle famiglie di processori AIX, ARM, AVR, IA32, M68K, MeP, MIPS, RS/6000 ed RX, esistono nuovi target per i processori.

4.4.5. Modifiche apportate all'installazione

L'adozione degli Autotools ha introdotto alcune modifiche come per esempio la loro locazione. Per dettagli, come in precedenza, fare riferimento ai change logs.

4.5. Java

4.5.1. NetBeans

NetBeans IDE 6.9 aggiunge importanti aggiornamenti alla NetBeans IDE 6.8.
NetBeans IDE 6.9 introduce l'interoperabilità OSGi tra le applicazioni della piattaforma NetBeans e supporto per sviluppare gruppi OSGI con Maven; supporto a JavaFX SDK 1.3 con il nuovo JavaFX Composer, uno strumento grafico per costruire visualmente GUI in JavaFX, simile all'interfaccia Swing usata per realizzare applicazioni Java SE; inoltre supporto alla piattaforma Zend, in PHP e Ruby on Rails 3.0; senza tralasciare i miglioramenti all'Editor Java, al Debugger Java, e altro ancora.

4.5.2. yydebug

yydebug, un debugger per codice generato con jay è una novità in Fedora. Per i dettagli visitare la pagina, yyDebug su cs.rit.edu.

4.6. Haskell

GHC è stato aggiornato alla versione 6.12.3, e la piattaforma-haskell alla release stabile 2010.2.0.0.
Alcuni ulteriori miglioramenti sono stati introdotti nei pacchetti ghc-rpm-macros e cabal2spec, incluso il merging dei sotto-pacchetti -doc in -devel.
Il modo più semplice per installare il supporto Haskell in Fedora e di installare il gruppo Haskell via GUI o via terminale:
 yum install @haskell

4.7. Eclipse

eclipse è stato aggiornato alla versione Helios. Tra le novità si segnalano miglior supporto a C/C++, un gestore di applicazioni, supporto a git, una piattaforma di sviluppo web, ulteriore sviluppo su JavaScript, e molto altro.
Per maggiori informazioni:

4.8. Kernel

Fedora 14 viene distribuita con la versione 2.6.35 del kernel di Linux.