Il progetto TrapC sviluppa un linguaggio simile al C che gestisce la memoria in modo sicuro.

Startup Trasec sta sviluppando il linguaggio di programmazione TrapC, un dialetto del linguaggio C che garantisce un'operazione sicura con la 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 per la gestione dei puntatori e un meccanismo speciale di cattura degli errori basato su gestori di eccezioni (trap). Il codice sorgente del compilatore per TrapC è previsto per essere reso disponibile nel 2025.

È stato dichiarato che le funzionalità di gestione dei puntatori non disturberanno la familiarità degli sviluppatori e saranno implementate dal compilatore. Secondo la concezione degli autori del linguaggio, il compilatore garantirà che i puntatori puntino solo alle aree di memoria correlate e verificherà 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 di zeri dal compilatore.

Invece di malloc, TrapC utilizza un costruttore simile al new di C++. Le chiamate a free e delete non esistono, e la gestione della memoria è responsabilità del compilatore, proteggendo così da errori che possono causare perdite di memoria. In heap viene utilizzata una gestione automatica della memoria incrementale, ma senza garbage collector. A livello di ABI, TrapC sarà compatibile con C, permettendo di combinare codice TrapC e codice C puro in un'unica applicazione, ma per il codice C non sarà fornita sicurezza nella gestione della memoria.

Il progetto è sviluppato da Robin Rowe, ex professore di informatica, che ha partecipato ai comitati per lo sviluppo degli standard C e C++. In passato ha creato l'editor grafico Cinepaint, utilizzato nella realizzazione di alcuni film di Hollywood, e la libreria POSIX libunistd per Windows. Co-fondatore della società Trasec è Gabrielle Pantera, che ha ricoperto un ruolo dirigenziale presso Disney.

Al momento non sono disponibili ulteriori dettagli sul progetto, vengono mostrati solo alcuni esempi con il codice, dove ad esempio si afferma che TrapC impedisce il buffer overflow con l'istruzione «strcpy(buff,argv[1]);» e non consente di aumentare il puntatore o l'indice dell'array a un valore che lo porterebbe oltre il buffer allocato o alla fine dell'array. Non viene spiegato come viene raggiunta tale protezione.// darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; // TrapC azzera implicitamente, no memoria sporca int success = 0; // In C, il sovrascrittura del buffer corrompe success strcpy(buff,argv[1]); // TrapC non può oltrepassare, strcpy è sicuro if(!strcmp(buff,"s3cr8tpw")) { success = 1; } if(success) // TrapC ha bloccato la sovrascrittura di strcpy, success buono { printf("Benvenuto!\n"); } return !success; }// trapc_ptr.c int main() { const char* ptr = "Hello World"; // larga 12 char while(ptr) // Nessun buffer overrun con TrapC { printf("%c",*ptr); // stampa un char alla volta ptr++; // Passi oltre la fine: TrapC azzera ptr! } // NON tentare questo in C, porterà a segfault! assert(ptr == 0); return 0; }// trapc_array.c int score[10]; printf("%i",score[-1]); // TrapC non permetterà 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