# Pelles C

Pelles C è un programma leggero di sviluppo software per Windows creato e mantenuto dallo svedese Pelle Orinius. Si tratta di un software gratuito che si finanzia tramite le donazioni degli utenti.
È un ambiente completo di compilatore C ottimizzante, un macro assemblatore, un linker, un compilatore di risorse, un compilatore di messaggi, uno strumento make ed uno di costruzione di file di installazione (setup).
Un ambiente di sviluppo integrato (IDE) assiste l'utente nella gestione dei progetti, scrittura del codice sorgente e debugging. L'editor di risorse integrato permette di definire i menù, le tabelle di stringhe, i tasti di scelta rapida, le immagini bitmap, le icone, i cursori, delle animazioni AVI senza audio, le finestre di dialogo, e gestione delle versioni.
L'intero sistema è scritto in C e la principale particolarità è che può essere esteso dall'utente. Le estensioni, denominate add-in, sono scritte in C e compilate in una libreria dinamica DLL che viene automaticamente caricata all'avvio dell'ambiente di sviluppo e numerosi add-in già pronti sono disponibili sul forum ufficiale.
Per facilitare l'accesso alle funzionalità l'utente può aggiungere anche voci di menù all'IDE, incluso il menù contestuale. La personalizzazione dell'IDE si spinge fino alla possibilità di usare traduzioni effettuate dall'utente seguendo le istruzioni del file di aiuto, grazie a ciò, e al contributo degli utenti, l'ambiente di sviluppo è multilingue e allo stato attuale, oltre all'inglese, sono disponibili le traduzioni in svedese, tedesco, greco e francese.

## Storia

Tutto cominciò tra il 1987-88 quando l'autore lavorava presso una società di consulenze in Svezia che vendeva anche software scritto in BASIC per microcomputer. Quando cominciarono a prendere piede i PC IBM risultò più facile convertire il software precedente che scriverlo da zero. Dopo vari tentativi infruttuosi decise di scrivere un assemblatore a livello amatoriale, poi lo presentò al suo capo che lo trovò valido. A quel punto il progetto evolse in un compilatore per DOS, un compilatore a 16 bit per Windows ed infine un sistema completo a 32 bit. Dopo anni di lavoro con tale sistema si decise nel 1999 di passare a strumenti di sviluppo più tradizionali.
Però Orinius pensò che fosse un peccato gettar via un buon linker, gestore delle librerie etc, e decise di aggiungervi un compilatore per il linguaggio C invece di partire da zero decise di usare il codice di LCC sviluppato a Princeton: mancavano molte delle cose a cui era abituato sul compilatore della Microsoft, come ad esempio l'assembly in linea e la gestione strutturata delle eccezioni, ma era ben scritto e il codice non troppo lungo.
Quindi iniziò ad aggiungere le funzionalità mancanti e nel frattempo apprendeva di più su LCC, questo richiese diversi anni così come l'apprendimento dello standard C99 e della programmazione dei Pocket PC. Quando ottenne qualcosa di definitivo pensò che potesse essere utile anche ad altri e decise di pubblicarlo sul web. La versione attualmente più scaricata dal sito mirror è la 7.00, che ha raggiunto 150 000 download totali.

## Rapporti con altro software

Tenta di mantenere una certa compatibilità con Microsoft Visual Studio, in quest'ottica prevede il supporto per l'importazione dei progetti Visual Studio 2010/2012/2013. Il suo ambiente di sviluppo integrato viene definito "eccellente" per quanto riguarda l'apprendimento del linguaggio C su Windows.
Il compilatore si basa su LCC (Little C Compiler), un compilatore multi-target sviluppato da Chris Fraser e David Hanson, e il costruttore di installazione per Windows si basa su NSIS. Grazie alla licenza permissiva di LCC questo è stato a poco a poco integrato di modifiche che hanno portato alla versione attuale in uso in Pelles C.
Il compilatore, pur essendo aderente agli standard ISO C99/C11 accetta anche le estensioni Microsoft al linguaggio C e ne usa anche di proprie. Proprio l'aderenza allo standard ISO aggiornato per il linguaggio C lo distingue rispetto a Visual Studio di Microsoft, propensione mostrata nei continui aggiornamenti allo standard e dal file di aiuto che chiarisce i punti salienti di cambiamento tra una versione e l'altra dello standard ISO.

## Sintesi delle principali funzionalità

Le principali funzioni implementate sono:
* Il supporto per lo standard C99/C11.
* Supporto per Windows a 32 bit (x86), Windows 64 bit (x64).
* Editor integrato delle risorse.
* Debugger simbolico integrato.
* Gestore di progetti.
* Supporto per le istruzioni intrinseche SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AES, AVX, e solo per l'architettura a 64 bit le istruzioni AVX2.
* Editor di codice sorgente integrato con suggerimenti e la navigazione per simbolo.
* Assemblatore in linea per x86.
* Editor esadecimale integrato.
* Supporto per i controlli personalizzati nell'editor di dialogo.
* Supporto per procedure assistite personalizzate.
Nel passaggio dalla versione 7.00 alla 8.00 è stato rimosso il supporto all'architettura ARM e a Windows Mobile.