Il progetto TrapC sviluppa un linguaggio simile a C che lavora in modo sicuro con la memoria.

La startup Trasec sta sviluppando un linguaggio di programmazione chiamato TrapC, un dialetto del linguaggio C che garantisce un uso sicuro della memoria. Per prevenire errori di gestione della memoria, come l'uscita dai confini di un buffer allocato e l'accesso a memoria già liberata, TrapC utilizza un approccio fondamentalmente diverso nella gestione dei puntatori e un meccanismo speciale di intercettazione degli errori basato su gestori di eccezioni (trap). Il codice sorgente del compilatore per TrapC è previsto per essere rilasciato nel 2025.

È stato dichiarato che le peculiarità della gestione dei puntatori non altereranno il consueto modo di operare e saranno attuate tramite il compilatore. Secondo le intenzioni degli autori, il compilatore garantirà che i puntatori facciano riferimento solo alle aree di memoria a essi associate, oltre a controllare tutti i limiti dei buffer. Il compilatore memorizza i tipi e non consente conversioni di tipo non sicure. Tutte le variabili e i buffer creati vengono esplicitamente inizializzati o riempiti con zeri dal compilatore.

Al posto di malloc, TrapC utilizza un costruttore new simile a quello di C++. Le chiamate a free e delete non sono presenti e la liberazione della memoria è gestita dal compilatore, il che previene errori che potrebbero portare a perdite di memoria. Nella heap viene applicata una gestione automatica della memoria incrementale, ma senza garbage collector. A livello di ABI, TrapC sarà compatibile con C, consentendo di combinare in un'unica applicazione codice scritto in TrapC e puro C, ma non sarà garantita la sicurezza nella gestione della memoria per il codice in C.

Il progetto è sviluppato da Robin Rowe, ex professore di informatica che ha partecipato a comitati per lo sviluppo degli standard C e C++, e che in passato ha creato l'editor grafico Cinepaint, utilizzato nella realizzazione di alcuni film di Hollywood, oltre alla libreria POSIX libunistd per Windows. Cofondatrice della compagnia Trasec è Gabrielle Pantera, che ha ricoperto ruoli dirigenziali presso Disney.

Non vengono forniti dettagli sul progetto, sono mostrati solo alcuni esempi di codice, in cui, ad esempio, si afferma che TrapC non permetterà di sovrascrivere il buffer buff durante l'esecuzione di "strcpy(buff,argv[1]);" o non permetterà di aumentare il puntatore o l'indice dell'array a un valore che lo spinge oltre il buffer allocato o la fine dell'array. Non viene spiegato come venga raggiunta tale protezione. \/\/ darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; \/\/ TrapC azzera implicitamente, nessuna memoria sporca int success = 0;\/\/ In C, sovrascrivere il buffer corrompe success strcpy(buff,argv[1]); \/\/ TrapC non può sovrascrivere, strcpy è sicuro if(!strcmp(buff,"s3cr8tpw")) { success = 1; } if(success) \/\/ TrapC ha bloccato la sovrascrittura di strcpy, success è buono { printf("Welcome!\n"); } return !success; } \/\/ trapc_ptr.c int main() { const char* ptr = "Hello World"; \/\/ 12 caratteri while(ptr) \/\/ Nessuna sovrascrittura del buffer con TrapC { printf("%c",*ptr); \/\/ stampa un carattere alla volta ptr++; \/\/ Passi oltre la fine: TrapC azzera ptr! } \/\/ NON provare questo in C, causerà segfault! assert(ptr == 0); return 0; } \/\/ trapc_array.c int score[10]; printf("%i",score[-1]); \/\/ TrapC non permetterà l'accesso for(int i = 0;i

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster