Portable OpenCL è una nuova implementazione di OpenCL, basata sulla toolchain di LLVM e indipendente dai produttori di hardware. È stato portato all’attenzione degli sviluppatori da Carlos De La Lama, manutentore del progetto: rispetto ad altre soluzioni Portable OpenCL intende essere più versatile e “portabile” nonché open source.
L’obiettivo di OpenCL è permettere l’esecuzione dei kernel al livello del processore centrale. Qualcosa del genere è possibile, per i processori grafici e Linux, con CUDA su nVidia (capace di rendere più veloce l’esecuzione del kernel) o Stream SDK su AMD/ATI. L’unico progetto open source prevede l’utilizzo dei driver di Gallium 3D.
La soluzione più vicina a Portable OpenCL è, invece, OpenCL SDK di Intel. La più completa delle proprietarie è AMD APP SDK, che coniuga lo Stream SDK di ATI all’esecuzione sui processori di AMD. Portable OpenCL è specifico per le CPU: tuttavia, l’orientamento generale del linguaggio è la “parallelizzazione” dei processi con le GPU.
Via | Phoronix

Tempo di rilascio per i compilatori. Dopo GCC 4.6 e Portable C Compiler 1.0 ecco arrivare la versione finale di LLVM 2.9.
Gli sviluppatori sono orgogliosi dell’incremento di velocità che sono riusciti ad ottenere e questa nuova versione offre un miglior supporto per C++0x, cioè quelle estensioni del linguaggio C++ che stanno per essere standardizzate come C++ 2011. Inoltre llvm 2.9 è ora più compatibile con il kernel Linux i cui sorgenti sono legati ad alcune funzionalità proprio del gcc.
Il plugin DragonEgg ora garantisce miglior supporto per Fortran e non va in crash quando si utilizza Java. La libc++, un’implementazione della libreria standard C++, ora viene offerta sotto doppia licenza per essere utilizzata anche in altri progetti. Il Low Level Debugger (LLDB), di cui avevamo già parlato, è molto più stabile da questo rilascio. LLVM ha anche aggiunto il supporto, seppur sperimentale, per i processori grafici di NVIDIA.
Via | HOnline
Nell’ultimo periodo l’accelerazione hardware per le GPU è un tema estremamente dibattuto. Spesso, per quanto riguarda Linux e i sistemi operativi UNIX-like, s’omette di sottolineare che per avvantaggiarsene occorre l’installazione di driver proprietari (nella maggioranza dei casi). Non è un problema legato al software in esecuzione.
Gallium 3D, la “nuova” infrastruttura open source di VMware per la realizzazione dei driver grafici di FreeDesktop, non supporta OpenCL e altre tecnologie protette da DRM. Qualcosa potrebbe cambiare con la GSoC 2011, sia per WebM/VP8, sia per H.264 con VDPAU su nVidia e VA-API su Intel. È più difficile predisporre lo stesso su ATI.
Si parla perciò di decodifica video: Emeric Grange ha risposto all’appello di FreeDesktop per applicarsi su Gallium 3D e H.264. Christian König, che ha portato XvMC su R600g, vorrebbe fare altrettanto con Theora per WebM. Bisogna attendere il prossimo 25 aprile perché sia pubblicata la lista dei progetti approvati per la GSoC 2011.
Via | Phoronix

Il 2010 per il progetto LLVM è stato un anno pieno di successi e recentemente hanno raggiunto un nuovo traguardo.
Il kernel linux 2.6.36 è stato compilato con LLVM per una debian e si è riusciti a fare correttamente il boot sia su una macchina fisica, un macbook, sia in una macchina virtuale con Qemu. Sono molti i sottosistemi che vengono correttamente compilati e si può arrivare a far partire anche X.
Al momento i problemi maggiori riguardano SELinux, Posix ACL, eCrypt, IPv6, tutto il codice che usa l’API per la crittografia e Xen. Al momento la mancanza più grossa è l’impossibilità di caricare i moduli e quindi la necessità di compilare in maniera statica il supporto per tutte le funzionalità richieste.
Bryce Lelbach, lo sviluppatore che si occupa di questo lavoro, pensa di riuscire a migliorare la situazione nei prossimi mesi.
Via | Uiuc

Chris Lattner ha annunciato l’arrivo della versione 2.8 di LLVM (Low-Level Virtual Machine).
Il lavoro degli ultimi 6 mesi si è concentrato particolarmente sul supporto per Clang C++ che ora è stato definito usabile e sull’arrivo dei due sottoprogetti libc++ e LLDB di cui vi abbiamo parlato qualche tempo fa. La prima è una libreria per supportare il futuro standard C++’0x, mentre il secondo è un nuovo debugger che sfrutta appieno le tecnologie del progetto LLVM.
Tra le altre novità un nuovo assemblatore, un disassemblatore ARM e miglioramenti nella generazione del codice per ARM.
Via | LLVM

Rubinius è un’implementazione di Ruby scritta prevalentemente proprio in Ruby.
Il bytecode generato dal compilatore è eseguito dalla bytecode virtual machine scritta in C++ e che utilizza LLVM per trasformarlo in codice macchina nativo. Secondo gli sviluppatori il loro approccio consente di ottenere prestazioni migliori rispetto all’interprete tradizionale.
Il progetto consente di chiamare la maggior parte delle funzioni C ed è compatibile con le estensioni realizzate per l’interprete Ruby standard. Il codice, che potete trovare su github, è rilasciato sotto licenza BSD.
Via | Rubinius

Il team del progetto LLVM ha recentemente annunciato un nuovo debugger: LLDB.
Si tratta di un sottoprogetto di LVM costruito in maniera modulare che sfrutta tutte le tecnologie già utilizzate nel compilatore come le API per il disassembler, il generatore di codice o il compilatore JIT.
Nonostante sia ancora agli inizi della sua vita è già utilizzabile in script ed ha un buon supporto per il debugging di programmi multithread. Secondo gli sviluppatori è già più veloce di GDB quando si lavora con programmi molto ampi ed offre un’esperienza di lavoro migliore, soprattutto per i programmatori C++. Sarà molto interessante vedere come si evolverà questo progetto.
Via | LLVM

Il team di LLVM ha annunciato un nuovo ed importante sottoprogetto: Libc++.
Si tratta di una nuova implementazione della C++ Standard Library. Particolare importanza è stata data all’aderenza agli standard, all’efficienza del codice ed al supporto al prossimo standard per il c++, C++’0x.
Al momento la libreria è completa per l’85% delle funzionalità e ha come scopo migliorare e complementare Clang++, ma sarà possibile portarla anche su altri compilatori.

Dopo sei mesi di sviluppo è finalmente uscito LLVM 2.7.
Questa nuova versione è finalmente in grado di compilarsi da sola e rappresenta un passo importante nella storia di questo compilatore, come vi avevamo già annunciato durante lo sviluppo.
Tra le altre novità di questo compilatore il supporto per le nuove architetture, un’API per diassemblare il codice nativo, informazioni di debug più efficienti, un sistema di metadati che consente ai compilatori di generare codice con ottimizzazioni specifiche per ogni linguaggio. Particolare cura ha avuto il miglioramento su ARM. Clang per Arm è ora a livello di beta.
Nel caso foste interessati potete leggere il resoconto completo di tutte le modifiche apportate a questa versione.
Via | LLVM

Un anno fa il team di FreeBSD aveva annunciato la sua intenzione di abbandonare Gcc.
Oggi, i software scritti in C e C++ del sistema di base compilano con successo usando Clang (LLVM) per architetture i386 e AMD64. Gli altri porting del compilatore stanno migliorando, ma non sono ancora alla pari. Gli sviluppatori sono interessati a collaborare con persone che hanno voglia anche solo di provare pacchetti compilati con LLVM/Clang.
Chromium, la versione open source di Chrome, sta progredendo, ma con un sistema di sviluppo diverso dal solito. Gli utenti possono accedere al programma dietro pagamento di una piccola quota. Le patch saranno software chiuso per circa un anno e dopo saranno rilasciate come open source ed inviate anche upstream.
Quest’ultima è una scelta piuttosto controtendenza e che annulla alcuni dei benefici del software libero, ma consente di avere sviluppatori pagati per portare avanti il lavoro senza un grosso nome dietro. Voi come vedete questa iniziativa?
Via | Phoronix

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.

LLVM, Low Level Virtual Machine, è una serie compilatore multilinguaggio diviso in una parte backend comune ed una parte frontend diverse per ogni linguaggio di programmazione.
Ieri è arrivata la notizia che la versione Clang (c, c++ ed objective c) è in grado finalmente di compilarsi da sola. Questo rappresenta un grosso traguardo per tutti i compilatori e significa che finalmente il progetto è diventato auto sufficiente.
I binari creati sono riusciti a passare tutti i test e sono riusciti anche a ripetere il processo di compilazione creando un compilatore anch’esso in grado di passare tutti i test. Un traguardo raggiunto con oltre mezzo milione di linee di codice e che da risalto all’ottimo lavoro svolto finora dal team di sviluppo.
Via | LLVM