mar
28

GNU Compiler Collection 4.6

 

Gli sviluppatori del team GCC hanno rilasciato Gnu Compiler Collection 4.6.0 come nuova versione stabile dopo circa un anno di sviluppo.

Dal punto di vista dei processori supportati ora si aggiungono alla lista ARM Cortex-M4, Cortex-A15 a cui seguono vari ottimizzazioni e migliorie generali per tutti gli ARM. Chi vuole ottenere il massimo delle prestazioni su Intel Core 2 potrà utilizzare il parametro “core2” per le opzioni mtune e march, mentre per la prima generazione di Intel Core i3, i5 e i7 si potrà passare il parametro corei7. Non neanche manca il supporto per i processori Intel Sandy Bridge comprese le estensioni AVX (Advanced Vector eXtensions) e per BMI (Bit Manipulation) di AMD.

Passando ora a guardare il lato dei linguaggio supportati il nuovo gcc ora ha un supporto rudimentale per C1x, il nuovo standard per il C, Ada2012 e per Google Go che però è disabilitato nell’impostazione predefinita. Interessante anche l’aggiunta del supporto per Bionic, la libreria C scritta da Google per Android. Questo consentirà di sviluppare applicazioni utilizzando il gcc anche se solo per i device dotati di processori ARM.

Per chi ha bisogno della massima velocità ora è disponibile il nuovo parametro -Ofast che combina tutte le ottimizzazioni di -O3 con alcuni parametri che saltano alcuni vincoli degli standard come -ffast-math. Il Gcc 4.6 sarà parte di Fedora 15 che uscirà in Maggio, ma non sarà il compilatore predefinito di Ubuntu 11.04 che arriverà entro circa 30 giorni.

Via | Gcc

GNU Compiler Collection 4.6 é stato pubblicato su ossblog alle 13:59 di lunedì 28 marzo 2011.

Popularity: unranked [?]



Puoi visualizzare il post originale qui.

nov
10

Gnu D Compiler nel futuro Gcc 4.7?

 

Attraverso un messaggio di Walter Bright di Digital Mars sulla mailing list di sviluppo di GCC scopriamo che l’azienda vorrebbe includere un frontend per il linguaggio D.

Al momento GCC è sprovvisto di un compilatore per questo linguaggio derivato e chi è interessato ad utilizzarlo è costretto a ricorrere a LLVM. Walter è l’inventore stesso del linguaggio che negli ultimi tempi sta vedendo crescere il numero dei suoi utilizzatori.

Con questa mossa si vuole probabilmente cercare di creare una più ampia comunità di sviluppatori D. L’inclusione nel prossimo Gcc 4.6 è ormai sfumata perché fuori tempo, ma si spera che il futuro gcd possa fare il suo debutto in GCC 4.7.

Via | Phoronix

Gnu D Compiler nel futuro Gcc 4.7? é stato pubblicato su ossblog alle 10:00 di mercoledì 10 novembre 2010.

Popularity: unranked [?]



Puoi visualizzare il post originale qui.

giu
26

Gcc 4.5, Performance Regression

 

Il team di sviluppo di Mozilla ha notato un calo delle prestazioni nei benchmark automatizzati dopo il passaggio da gcc 4.3 a gcc 4.5.

Il problema è presente in quasi tutti i test ed è misurabile in un peggioramento fra il 4% ed il 19% sulla piattaforma Linux a 32bit e 64bit. Una regressione delle prestazioni dei binari prodotti dal compilatore piuttosto importante che è già stata segnalata sulla mailing list di GCC e che è stata scoperta prontamente grazie all’infrastruttura automatica di compilazione e benchmark.

Al momento nel team Mozilla si sta riconsiderando il passaggio a gcc 4.5 che era stato scelto per il supporto ai plugin e la possibilità di compilazione con PGO (Profile-Guided Optimizations).

Via | Phoronix

Gcc 4.5, Performance Regression é stato pubblicato su ossblog alle 18:00 di sabato 26 giugno 2010.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

giu
08

Guida alla configurazione e alla gestione di Portage

 

Gentoo e Portage

Questo articolo deve essere un piccolo how-to che spiegherà in breve come possiamo utilizzare e configurare Portage. Portage è il gestore di pacchetti tipico della distribuzione Linux Gentoo che differisce dagli altri gestori di pacchetti tradizionali come APT di Debian, Pacman di Arch Linux o Rpm di Red Hat perché installa i programmi compilandoli da codice sorgente. In tal modo abbiamo dei punti a favore come l’estrema personalizzazione del nostro sistema o come l’ottimizzazione finale degli eseguibili ottenuti, ma anche un inconveniente: ci vuole molto più tempo a compilare un programma da sorgente che installarsi un pacchetto precompilato. Questo problema per fortuna non è più molto rilevante se utilizziamo hardware recente, ma potrebbe essere uno scoglio non indifferente per chi utilizza macchine datate.

Ovviamente Gentoo si può installare su qualsiasi computer (ed è anche compatibile con una grande quantità di processori, come x86, amd64, arm, alpha, ia64, powerPC, hppa, sh, sparc e s390), ma se usiamo computer vecchi ci vorrà un bel po’ di tempo per ottenere un sistema completo. Ci sono comunque delle tecniche per rendere più veloce l’installazione dei programmi su hardware datato (come il cross-compiling che permette di compilare da un altra macchina il programma). Per installare il sistema abbiamo sostanzialmente due possibilità:

1. Utilizzare il Gentoo DVD (ora è disponibile alla versione 10.1, rilasciato ufficialmente nell’ottobre del 2009) che contiene programmi già compilati e pronti. Questo DVD è disponibile solo per piattaforme x86 e amd64.

2. Fare un’installazione Stage3 scaricando il CD minimale e chrootando (scelta consigliata). In questa modalità si personalizza al meglio il sistema e si compilano i programmi scelti.

Potete trovare una lista aggiornata dei mirror contenenti CD e DVD. Se siete in Italia vi consiglio il server svizzero

Per installare il sistema esiste già un ottimo how-to ufficiale.

Io parlerò in modo particolare di come possiamo personalizzare il sistema e di qualche piccolo trucco per utilizzare al meglio Portage.

Per configurare le opzioni di compilazione dobbiamo editare il file /etc/make.conf. Apriamo il file con il nostro editor di testo preferito.

Vediamo insieme com’è strutturato: abbiamo delle variabili (come use, cflag) che corrispondono a dei valori. Noi possiamo modificare questi valori per ottenere l’effetto desiderato. Iniziamo:


Variabili cflags e cxxflags

Queste variabili sono molto importanti perché dicono al compilatore (gcc) che switch usare per compilare rispettivamente i sorgenti in C e C++. Modificando queste variabili possiamo aumentare o diminuire l’output dei messaggi del debug, ottimizzare più o meno il futuro eseguibile od anche ottenere ulteriori informazioni nel caso si verifichi un errore di compilazione. Ci sono dei valori più sicuri e meno ottimizzanti (sia per i processori Intel e per processori AMD) e anche valori molto ottimizzanti ma molto rischiosi… Vi consiglio di usare con cautela valori molto ottimizzanti e pericolosi se non siete esperti e soprattutto di non compilarci programmi indispensabili (come il kernel Linux).


March

Iniziamo ad impostare il valore -march, che dice al compilatore per quale architettura dovrà essere prodotto l’eseguibile.

Nota: se avete un gcc recente potete impostare il valore -march=native ed il compilatore identificherà il vostro processore ed utilizzerà delle opzioni di compilazione adeguate.


Pipe


-pipe è un’opzione sicuramente utile e inoffensiva. Fa utilizzare le pipe al compilatore al posto dei files temporanei. (Le pipe sono comandi in bash che fanno cose come trasferire l’output di un programma nell’input di un altro comando).


O

Ora impostiamo -O che controlla il livello generale dell’ottimizzazione del sorgente: ha sostanzialemente cinque livelli:

-O0: il sorgente non viene ottimizzato

-O1: il sorgente viene leggermente ottimizzato e non fa perdere tempo nel processo di compilazione
-O2: livello che viene impostato di default, abbiamo una via di mezzo tra ottimizzazione e tempo di compilazione
-O3: livello molto ottimizzante e molto rischioso, non compilarci tutto il sistema.
-O4: sì, non sono impazzito! -O4 esiste ma ma non è documentata! Otimizza poco più di -O3. Non compilateci kernel o tutto il sistema però!
-O9: un altro parametro non documentato… no comment!

-fomit-frame-pointer: non estremamente rischiosa, elimina delle info di debug ma ottimizza leggermente.
-funroll-loops, -funroll-all-loops: flags aggressive: attenzione, queste flag sono molto aggressive e pericolose. Possono ottimizzare molto il sistema ma renderlo anche instabile e, se usate male, possono addirittura peggiorare le prestazioni oltre a creare un codice più grosso e lento.
-fast-math: flag molto ottimizzante ed estremamente instabile. Non usarla per compilare roba che influisce sulla (in)stabilità del sistema.
-m3dnow: va bene per compilare programmi come driver della scheda video


USE flag

Una della caratteristica più importante di Portage sono le USE flag che ci consentono di scegliere che supporti installare o non installare dei software che compileremo. Se per esempio io sono un fanatico di KDE e non voglio installare il supporto per Gnome in tutti i programmi che compilerò basta che inserisco nel make.conf

USE=”kde qt4 -gnome”

Possiamo vedere quali variabili use possono essere utilizzate per ogni programma con

emerge -pv programma


Vediamo in rosso i valori che abbiamo compilato, in blu (e soprattutto preceduti da un trattino) le use non utilizzate. Se vogliamo abilitare un supporto in più basta inserire nel make.conf il nome del supporto come valore della variabile.
E se io volessi utilizzare una variabile USE solo per un determinato pacchetto? Nulla di più semplice. Creiamo un file in /etc/portage/package.use e ci scriviamo il percorso completo del pacchetto seguito dal supporto che vogliamo abilitare: per esempio

media-libs/xine-lib aac

in questo modo è attivo solo per xine-lib il supporto aac. Se invece non vogliamo installare un determinato supporto basta inserire come valore il nome del supporto preceduto da un trattino.


Variabile LINGUAS

È semplicemente la lingua preferita che verrà installata. Per mettere l’italiano basta impostare

LINGUAS=”it”

Variabile ACCEPT_KEYWORDS

Questa variabile fa in modo che venga isntallato software Testing o Instable.

Per ottenere un sistema Testing settiamo

ACCEPT_KEYWORDS=”~x86″

Per un sistema Instable settiamo

ACCEPT_KEYWORDS="-x86"

Variabile VIDEO_CARDS

Identifca la scheda video. Per esempio:

VIDEO_CARDS="intel"

Variabile AUDIO_CARDS

Identifica la scheda audio Per esempio:

AUDIO_CARDS=”hda-intel”

Se si ha una scheda audio intel, se non sapete quale avete basta utilizzare questo comando:

Variabile ACCEPT_LICENSE

Recentemente è possibile inserire la possibilità di accetare le licenze di un determinato software.

Ad esempio, se volete installare Doom 3 vi troverete davanti a qualche cosa del genere:

!!! All ebuilds that could satisfy “games-fps/doom3″ have been masked.
!!! One of the following masked packages is required to complete your request:
- games-fps/doom3-1.3.1304 (masked by: package.mask, DOOM3 license(s))
/usr/portage/profiles/package.mask:
Chris Gianelloni (3 Mar 2008)
Masking due to security bug #194607 and security bug #204067
A copy of the DOOM3 license is located at /usr/portage/licenses/DOOM3 .

Per ovviare questo problema basta digitare questi comandi:

echo "games-fps/doom3 DOOM3" >> /etc/portage/package.license

Trovate tutte le licenze in /usr/portage/licenses/ e mi raccomando, leggetele! ;)
Se invece volete accettare indiscriminatamente tutte licenze basterà aggiungere al vostro /etc/make.conf tale stringa:

ACCEPT_LICENSE=”*”

FEATURES

Sono opzioni in più che si possono attivare. Io vi consiglio per esempio FEATURES=”parallel-fetch” che consente di scaricare i sorgenti mentre si compila un altro programma.

Aggiornare e tenere pulito il sistema

Per aggiornare l’elenco di Portage basta un

emerge –sync

Per aggiornare i programmi serve

emerge -u world

(world è l’elenco di tutti i programmi installati), per aggiornare anche il cuore del vostro sistema date

emerge -u –deep world

Se avete cambiato una use flag e volete ricompilare tutto con la nuova compilazione date un

emerge –update –deep –newuse world

Per ripuliure il sistema

emerge –depclean

Se invece qualcosa non funziona o ci sono degli errori in portage installate gentoolkit (emerge gentoolkit) e date un

revdep-rebuild

Altro

Per cercare un pacchetto in portage date

emerge –search pacchetto

Per cercare nelle descrizioni

emerge –searchdes pacchetto

Potete anche installare eix che è un ottimo strumento per la ricerca dei programmi in Portage.

Vi consiglio anche di provare genlop, ha tante funzioni interessanti come per esempio vedere in quanto tempo è stato compilato un determinato programma.

Links

Gentoo: http://www.gentoo.org

GentooPortage: http://gentoo-portage.com/

GCC: http://gcc.gnu.org/

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

giu
01

Gcc potrà includere codice C++

 

Mark Mitchell ha annunciato che il GCC Steering Committee e la FSF hanno autorizzato l’utilizzo di codice C++ all’interno di GCC.

Questo non significa che ci sarà una riscrittura dei sorgenti, ma semplicemente che quando avrà un senso si potranno usare alcune delle caratteristiche del linguaggio C++. Soprattutto all’inizio l’adozione sarà limitata per non spaventare o mettere da parte chi non ha famigliarità con il C++.

Al momento viene consigliato di limitarsi a quanto previsto dallo standard C++98 e di evitare l’uso di ereditarietà multipla, template (al di fuori della STL) o le eccezioni. Cosa ne pensate di questa decisione?

Via | Gnu

Gcc potrà includere codice C++ é stato pubblicato su ossblog alle 16:00 di martedì 01 giugno 2010.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

mag
12

Corso di programmazione: “Ciao Mondo!”, il nostro primo programma

 

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

apr
26

Perché non partecipate allo sviluppo di software open-source?

 

Sulla mailing list di Gcc Manuel López-Ibáñez ha chiesto cosa impediva alle persone di partecipare allo sviluppo del compilatore.

Per quanto riguarda questo progetto in particolare una prima barriera è rappresentata dal dover assegnare il copyright del proprio codice alla FSF e se si lavora nel settore è necessario chiarire la cosa con il reparto legale. Il team che sviluppa Gcc accetta solo codice di qualità molto alta e scritto in stile Gnu e chi è alle prima armi fa un po’ più di fatica.

Allargando la domanda a qualsiasi genere di progetto tra le principali cause c’è la mancanza di commenti, documentazione e codice scritto male. Qual è il motivo principale che vi impedisce di partecipare allo sviluppo di un software open source?

Via | Phoronix

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

feb
14

DragonEgg, LLVM come backend per GCC

 

DragonEgg è un plugin che consente di usare LLVM come backend per Gcc.

In pratica vengono rimpiazzati l’ottimizzatore ed il generatore di codice con quelli del progetto LLVM grazie all’architettura a plugin di Gcc 4.5 (non ancora rilasciato ufficialmente) ed è una riscrittura del vecchio llvm-gcc che consisteva in una versione “patchata” di gcc.

Per provarlo sarà sufficiente aggiungere alla linea di comando -fplugin=path/dragonegg.so. Al momento il codice non è ancora pronto per un utilizzo professionale, ma chi ha voglia di provare e/o contribuire al progetto può già iniziare a lavorarci sopra.

Le attuali condizioni di DragonEgg:

  • In C funziona tutto bene e si può compilare persino un gcc funzionante
  • In C++ funziona abbastanza bene e si può compilare un LLVM funzionante. Ci sono ancora problemi con il codice presente in clang e boost
  • Molto codice scritto in Fortran funziona, ma non è ancora stato controllato che sia effettivamente corretto
  • Compila molto di Ada, ma il codice può comportarsi in maniera erronea
  • Può compilare una piccola parte di Obj-C e Obj-C++
  • Non può compilare java
  • La gestione delle eccezioni non funziona
  • Informazioni di debug limitate
  • Richiede, ancora, una patch al gcc
  • Supporta solo x86-32 e x86-64 su linux e darwin

Via | DragonEgg

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

gen
28

Gcc supporterà Google Go

 

David Edelsohn ha annunciato che il GCC Steering Committee ha accettato di includere Google Go fra i linguaggi supportati dal compilatore.

È stato aggiunto il frontend gccgo e tutto il codice specifico per questo liguaggio. Il maintainer destinato a curare Google Go è Ian Taylor, ma sarà compito dei GCC
Release Manager decidere quando e se verrà il momento di integrare il linguaggio nella prossima versione stabile.

Ian ha anche annunciato che chi usa Go gode automaticamente del privilegio di utilizzare i brevetti di Google che potrebbero riguardare questo linguaggio. Non ce ne dovrebbero essere, ma si tratta di una clausola per eliminare i possibili problemi legali avanzati dai reparti legali di alcune aziende.

Sembra che questo linguaggio stia guadagnando parecchio seguito, voi cosa ne pensate?

Via | Gmane

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

giu
11

Rilasciata Fedora 11

 

Dopo un paio di rinvii è stato annunciato ufficialmente il rilascio di Fedora 11 da parte del team di Red Hat Inc., principale sponsor della distribuzione comunitaria orientata al desktop.
Molte le novità in questo undicesimo rilascio di Fedora Leonidas, il team di sviluppo ha lavorato veramente a 360° per cercare di coprire tutte le richieste della comunità ed arrivare agli obiettivi prefissati.

Queste le principali novità di Fedora 11:

  • tempo di boot abbassato a 20 secondi, dal momento in cui si accende il computer fino alla schermata di login;
  • EXT4 nell’iinstallazione di default;
  • supporto sperimentale al Btrfs ;
  • nuovi artwork che abbelliscono il tema di Fedora dal boot fino al desktop;
  • integrazione di , il gestore di bootsplash animati di prossima generazione;
  • KDE 4.2.2, la penultima versione del K Desktop Environment
  • GNOME 2.26.1, l’ambiente basato sulle GTK che in questa versione gode dell’introduzione di  Brasero come programma di masterizzazione CD/DVD di default, di qualche miglioria grafica, del filesharing migliorato e infine del suporto migliorato di Microsoft Outlook in Evolution;
  • Xfce 4.6, l’ultima versione del desktop environment leggero ed alternativo;
  • Installer automatico di Fonts e Mime, permette  ai programmi di terze parti di installare automaticamente i font, i codec e le clipart necessarie;
  • lettura dell’impronta digitale con la configurazione facilitata grazie all’utiltiy Authentication Configuration;
  • ABRT, l’Automatic Bug Reporting Tool è il nuovo metodo facile e veloce per inviare segnalazioni di bug;
  • Nouveau – the open source Nvidia driver is now enabled by default;
  • Presto, velocizza l’aggiornamento del sistema grazie anche al plugin per yum che agigunge il supporto a deltarpms, in modo da assicurare il download dei soli componenti che hanno subito cambiamenti e non dell’intero pacchetto;
  • Mozilla Firefox 3.5 Beta,  entra nella versione di testing il browser più popolare in ambiente FLOSS;
  • Thunderbird 3 Beta, anche il client email di casa Mozilla viene fornito nella sua versione di testing;
  • Xserver 1.6 – il server di X.org nela nuova versione più stabile e migliorata;
  • MiniGW, per il supporto al cross-compiling per ;
  • TigerVNC diventa il client VNC predefinito;
  • GCC 4.4, NetBeans 6.5, Python 2.6 e Git 1.6.2 come strumenti di sviluppo;
  • OpenChange, per l’acesso out-of-the-box a Microsoft Exchange;
  • Controllo del volume migliorato, con la gestione per applicazione ed il controllodi diversi altoparlanti in simultanea;
  • Kernel Linux 2.6.29.

Infine, in concomitanza al rilascio di Fedora 11 è stato presentat il nuovo Fedora Community, un progetto in beta per la realizzazione di un nuovo portale dedicato alla distribuzine di casa Red Hat.

Link

Post del blog: PettiNix
—–
PettiNix ti consiglia anche di leggere The Brain Machine

Rilasciata Fedora 11

Post correlati

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

giu
02

Come programmare le socket in ambienti GNU/Linux

 

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

apr
16

Intel vuole collaborare allo sviluppo di GCC ed affini

 

Recentemente Melanie Blower, per conto di Intel, ha richiesto i moduli da firmare per aiutare a portare avanti lo sviluppo di gcc ed altri progetti satelliti come binutils, gdb e glibc.

Con lei, Intel assegnerà altri 2 programmatori a questo compito. Una svolta per l’azienda che fino ad ora aveva collaborato in altri progetti, come Xorg e moblin, ma aveva puntato soprattutto sul suo compilatore ICC, Intel Compiler Collection.

Non è la prima volta che alcuni giganti del settore mettono a disposizione alcuni dei suoi programmatori per lavorare full time su progetti open source che possono essere strategici per l’azienda.

Via | Heise

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

gen
17

Compilatori: cosa sono e quali installare

 

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

lug
08

Una intelligenza artificiale per GCC

 

GNU Compiler CollectionIl Wall Street Journal ha segnalato un interessante progetto europeo il cui scopo è quello di integrare una AI (Artificial Intelligence) all’interno del noto compilatore GCC. IBM, l’Università di Edinburgo, l’Istituto di ricerca francese INRIA ed altre aziende/istituti che partecipano allo sviluppo di Milepost (MachIne Learning for Embedded PrOgramS opTimization) hanno annunciato i risultati preliminari della loro sperimentazione durante il GCC Summit 2008: in un solo mese di lavoro sono riusciti ad incrementare le performance di GCC del 10%!

La nascita di questo progetto va legata con molta probabilità alla complessità delle architetture cui vanno incontro gli sviluppatori di sistemi embedded: ad ogni nuova generazione, i tempi di sviluppo dei compilatori aumentano ed ottimizzare diventa sempre più complesso.

L’utilizzo di una AI dovrebbe quindi porre rimedio ai limiti dettati dal design dei compilatori (che non possono supportare “staticamente” così tanti tipi differenti di nuovi architetture/processori).

via | Slashdot

Popularity: 4% [?]



Puoi visualizzare il post originale qui.

mag
25

GCC si aggiorna alla versione 4.2.4

 

Nonostante poco più di due mesi fa abbia deciso di inaugurare il nuovo ramo di sviluppo 4.3, la Free Software Foundation ha in questi giorni rilasciato la versione 4.2.4 della famosa suite di compilatori.

Si tratta di un importante bugfix release e l’aggiornamento è ovviamente altamente consigliato. I cambiamenti rispetto alla precedente 4.2.3 sono veramente tanti e per questo ci è impossibile segnalarli tutti; nel caso comunque vogliate saperne di più, il changelog ufficiale è disponibile a questo indirizzo.

Via | Kerneltrap

Popularity: 3% [?]



Puoi visualizzare il post originale qui.

top