TrapC projekt arendab C-sarnast keelt, mis töötab mÀluga ohutult.

Traseci alustav arendab programmeerimiskeelt TrapC, mis on C keele dialekt, tagades turvalise mĂ€lu kasutamise. MĂ€lu viga, nĂ€iteks mĂ€lupiiri ĂŒletamine ja juba vabastatud mĂ€lu juurde pÀÀsemine, takistatakse TrapC-s fundamentaalselt erineva tĂ”ukeratta töötlemise ja spetsiaalse veahoidmise mehhanismiga, mis pĂ”hineb erandite töötlejatel (trap). TrapC kompilatori lĂ€htekood plaanitakse avada 2025. aastal.

On vĂ€idetud, et tĂ”ukerattaga töötamise eripĂ€ra ei riku harrastust ja rakendatakse kompilaatori toetusel. Keel loojate idee kohaselt garanteerib kompilaator, et nĂ€itajad viitavad ainult oma valdkondadele, samuti kontrollivad nad kĂ”iki puutepindade piire. Kompilaator mĂ€letab tĂŒĂŒpe ja ei luba ohtlikke tĂŒĂŒpide teisendusi. KĂ”ik loodud muutujad ja puutepinnad initsialiseeritakse selgelt vĂ”i tĂ€idetakse kompilaatori poolt nullidega.

TrapC-s kasutatakse malloc asemel C++-ile sarnast new konstruktoreid. free ja delete kutsungi ei ole, mĂ€lu vabastamine on kompilaatori ĂŒlesanne, mis kaitseb mĂ€lulekke vigu. Kogumises rakendatakse inkrementaalset automaatset mĂ€lu haldust, kuid ilma prĂŒgikoristajata. ABI tasandil on TrapC ĂŒhilduv C-ga, mis vĂ”imaldab kombineerida TrapC ja puhta C koodi ĂŒhes rakenduses, kuid C-koodi jaoks ei tagata mĂ€lu turvalisust.

Projekti arendab Robin Rowe, endine arvutiteaduste professor, kes osales C ja C++ standardite arendamise komiteedes, kes kunagi lÔi graafika redaktori Cinepaint, mida kasutati mitmete Hollywoodi filmide loomisel, ning POSIX teeki libunistd Windowsis. Traseci asutaja on Gabrielle Pantera, kes oli juhatuse liige ettevÔttes Disney.

Projekti ĂŒksikasju ei tooda praegu vĂ€lja, nĂ€idatakse vaid paar koodi nĂ€idet, milles nĂ€iteks öeldakse, et TrapC ei lase buff-i puhverdust ĂŒle tĂ€ita, kui tĂ€idetakse "strcpy(buff,argv[1]);" vĂ”i ei lase pointerit vĂ”i massiivi indekseid suurendada vÀÀrtuse vĂ”rra, mis nihutab nende piire eraldatud puhverdusest vĂ”i massiivi lĂ”pust. Kuidas selline kaitse tĂ€pselt saavutatakse, ei selgitata. \/\/ darpa_tractor.c int main(int argc,char* argv[]) { char buff[8]; \/\/ TrapC nullib vaikimisi, mĂ€lus ei ole raisatud ruumi int success = 0;\/\/ C-s, puhversuse ĂŒlekirjutamine rikub successi strcpy(buff,argv[1]); \/\/ TrapC ei saa alaregulatsiooni, strcpy on turvaline if(!strcmp(buff,"s3cr8tpw")) { success = 1; } if(success) \/\/ TrapC takistab strcpy ĂŒlekirjutamist, success on hea { printf("Tere tulemast!\n"); } return !success; } \/\/ trapc_ptr.c int main() { const char* ptr = "Tere tulemast"; \/\/ 12 tĂ€hemĂ€rki laiad while(ptr) \/\/ TrapC ei lase puhverdust ĂŒle tĂ€ita { printf("%c",*ptr); \/\/ prindi ĂŒks tĂ€hemĂ€rk korraga ptr++; \/\/ Astub lĂ”pust vĂ€lja: TrapC nullib ptr! } \/\/ Ära ĂŒrita seda C-s, segfault jÀÀb! assert(ptr == 0); return 0; } \/\/ trapc_array.c int score[10]; printf("%i",score[-1]); \/\/ TrapC ei luba ligipÀÀsu for(int i = 0;i

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster