Das Projekt TrapC entwickelt eine C-Ă€hnliche Sprache mit sicherem Umgang mit Speicher.

Das Startup Trasec entwickelt die Programmiersprache TrapC, ein Dialekt von C, der ein sicheres Arbeiten mit Speicher ermöglicht. Um Fehler beim Umgang mit Speicher, wie das Überlaufen eines zugewiesenen Puffers und den Zugriff auf bereits freigegebenen Speicher, zu verhindern, wendet TrapC einen grundlegend anderen Ansatz im Umgang mit Zeigern und einen speziellen Mechanismus zur Fehlererfassung auf Basis von Ausnahmebehandlern (trap) an. Der Quellcode des Compilers fĂŒr TrapC soll 2025 veröffentlicht werden.

Es wurde erklĂ€rt, dass die Besonderheiten im Umgang mit Zeigern möglichst den vertrauten Arbeitsablauf nicht stören und durch den Compiler umgesetzt werden. Nach der Vorstellung der Sprachentwickler wird der Compiler garantieren, dass Zeiger nur auf die zugehörigen Speicherbereiche verweisen und alle Pufferrandgrenzen ĂŒberprĂŒfen. Der Compiler merkt sich die Typen und erlaubt keine unsichere Typumwandlung. Alle erstellten Variablen und Puffer werden eindeutig initialisiert oder vom Compiler mit Nullen gefĂŒllt.

Anstelle von malloc wird im TrapC ein Ă€hnlicher Konstruktor wie in C++ verwendet: new. Aufrufe von free und delete fehlen, und die Speicherfreigabe obliegt dem Compiler, was vor Fehlern schĂŒtzt, die zu Speicherlecks fĂŒhren könnten. Im Heap wird ein inkrementelles automatisches Speichermanagement angewendet, jedoch ohne Garbage Collector. Auf der ABI-Ebene wird TrapC mit C kompatibel sein, was die Kombination von TrapC- und reinem C-Code in einer Anwendung ermöglicht, jedoch wird fĂŒr C-Code kein Schutz beim Umgang mit Speicher gewĂ€hrleistet.

Das Projekt wird von Robin Rowe geleitet, einem ehemaligen Professor fĂŒr Informatik, der an Komitees zur Entwicklung von C- und C++-Standards beteiligt war, und der zu seiner Zeit den Grafikeditor Cinepaint geschaffen hat, der bei der Produktion einiger Hollywood-Filme verwendet wurde, sowie der POSIX-Bibliothek libunistd fĂŒr Windows. MitbegrĂŒnder von Trasec ist Gabrielle Pantera, die eine leitende Position bei Disney innehatte.

Details zum Projekt werden bislang nicht angegeben, es werden nur einige Beispiele mit Code gezeigt, in dem zum Beispiel erklĂ€rt wird, dass TrapC einen PufferĂŒberlauf von buff bei der AusfĂŒhrung von „strcpy(buff,argv[1]);“ verhindern oder den Zeiger oder Index eines Arrays nicht um einen Wert erhöhen wird, der ihn ĂŒber den zugewiesenen Puffer oder das Ende des Arrays hinausschiebt. Wie genau dieser Schutz erreicht wird, wird nicht erlĂ€utert. \/\/ darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; \/\/ TrapC initialisiert automatisch auf Null, kein schmutziger Speicher int success = 0;\/\/ In C, BufferĂŒberschreibung beschĂ€digt success strcpy(buff,argv[1]); \/\/ TrapC kann nicht ĂŒberlaufen, strcpy ist sicher if(!strcmp(buff,"s3cr8tpw")) { success = 1; } if(success) \/\/ TrapC blockierte strcpy-Überschreibung, success ist gut { printf("Willkommen!\n"); } return !success; } \/\/ trapc_ptr.c int main() { const char* ptr = "Hello World"; \/\/ 12 Zeichen breit while(ptr) \/\/ Kein PufferĂŒberlauf mit TrapC { printf("%c",*ptr); \/\/ ein Zeichen nach dem anderen drucken ptr++; \/\/ Geht ĂŒber das Ende hinaus: TrapC setzt ptr auf Null! } \/\/ Dies in C nicht versuchen, wird segfault verursachen! assert(ptr == 0); return 0; } \/\/ trapc_array.c int score[10]; printf("%i",score[-1]); \/\/ TrapC erlaubt keinen Zugriff for(int i = 0;i

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster