;,C IS ! MO/ 9FLU5TIAL PROGRAMM+ LANGUAGE "E CR1T$4 ,DESIGN$ BY ,D5NIS ,RIT*IE AT ,BELL ,LABS 2T #AIFI & #AIGC Z ! IMPLE;TA;N LANGUAGE = ! ,UNIX OP]AT+ SY/EM1 X O3UPIES A POSI;N 9 COMPUT+ T NO O!R LANGUAGE HAS MAT*$3 NE>LY E OP]AT+ SY/EM K]NEL 9 PRODUC;N ,L9UX1 ,W9D[S1 MAC,O,S1 I,O,S1 ,&ROID'S L[] LAY]S1 ! ,B,S,DS1 & MO/ EMB$D$ FIRMW>E IS WRITT5 PRIM>ILY 9 ;,C4 ,NE>LY E LANGUAGE CR1T$ S9CE #AIHJ EI COMPILES TO ;,C1 0 IMPLE;T$ 9 ;,C1 BORR[S ,C'S SYNTAX1 OR DEF9ES XF 9 OPPOSI;N TO ;,C4 ,! SEMICOLONS1 ! CURLY BRACES1 ! = LOOPS1 ! IF_/ELSE BLOCKS1 ! PR9TF =MAT /R+S ^! >E N F1TURES ( 8;,C-L LANGUAGES40 ,!Y >E F1TURES ( ;,C T ! RE/ ( ! _W ADOPT$4 ;,C IS FIFTY-F\R YE>S OLD4 ,X IS / ! SECOND MO/ US$ PROGRAMM+ LANGUAGE ON ,E>? "<2H ,PY?ON1 DEP5D+ ON ! 9DEX"> & ! F/ *OICE = ANY S(TW>E T M/ TALK DIRECTLY TO H>DW>E4 ,X HAS BE5 /&>DIZ$ FIVE "TS ,C#HI1 ,C#II1 ,C#AA1 ,C#AG1 & ,C#BC & ! COMMITTEE IS ALR "W+ ON ,C#B;Y1 ! NEXT REVI.N4 ,! LANGUAGE T ,RIT*IE BUILT ON A ,,PDP-#AA 9 A ,NEW ,J]SEY (FICE IS / ! LANGUAGE ! _W RUNS ON4 ,! ,,TIOBE ,9DEX1 ,/ACK ,OV]FL[ SURVEYS1 & ,GIT,HUB USAGE /ATI/ICS ALL PLACE ;,C 9 ! TOP FIVE LANGUAGES YE> AF YE>4 ,X RANKS F/ OR SECOND AM;G LANGUAGES T %IP PRODUCTS P DEP5D ON )\T "K+ X ! FIRMW>E 9 _! C>1 ! K]NEL ( _! PH"O1 ! DATABASE 2H _! BANK4 ;,C IS ! 9VISIBLE 9FRA/RUCTURE ( MOD]N CIVILIZA;N4 ,2F ;,C3 ! ANCE/RY ;,C DID N EM]GE F NO?+4 ,XS FAMILY TREE RUNS "? ?REE LANGUAGES1 EA* /RIPP+ AWAY A LAY] ( AB/RAC;N3 ,,BCPL "<#AIFG"> ,M>T9 ,RI*>DS DESIGN$ ,,BCPL "<,BASIC ,COMB9$ ,PROGRAMM+ ,LANGUAGE"> AT ,CAMBRIDGE4 ,X 0 TYPE.S3 "EY?+ 0 A MA*9E ^W4 ,X 9TRODUC$ ! _/_/ COM;T "<: ;,C DROPP$ & ,C#II BR"\ BACK ?IRTY YE>S LAT]"> & ! IDEA T A SY/EMS LANGUAGE %D COMPILE TO E6ICI5T CODE & 2 CLOSE TO ! MA*9E4 ;,B "<#AIFI"> ,K5 ,?OMPSON1 "W+ ON ! F/ ,UNIX ON ! ,,PDP-#G AT ,BELL ,LABS1 NE$$ "S?+ HI<]-LEVEL ?AN ASSEMBLY B L1N] ?AN ! FULL ,,=TRAN COMPIL] HE TRI$ & AB&ON$ AF "O "D4 ,HE WROTE ;,B1 D]IV$ F ,,BCPL & 9FLU;ED BY ,?OMPSON'S [N E>LI] LANGUAGE ,BON4 ;,B 0 AL TYPE.S E VALUE 0 A ^W4 ,X "W$ ON ! ^W-ORI5T$ ,,PDP-#G1 B :5 ,UNIX MOV$ TO ! BYTE-ORI5T$ ,,PDP-#AA1 ! LACK ( TYPES 2CAME A CRITICAL PROBLEM4 ,Y CD N EXPRESS A "*1 A BYTE1 OR A PO9T] TO A BYTE 9 A LANGUAGE ": "EY?+ 0 A ^W4 ,,NB _/ E>LY ;,C "<#AIGA#AIGB"> ,RIT*IE 2GAN ADD+ A TYPE SY/EM TO ;,B4 ,= A :ILE ! RESULT 0 CALL$ 8,,NB0 "<,NEW ;,B">4 ,! TYPE SY/EM GREW *>1 9T1 PO9T]S1 >RAYS1 /RUCTURES & AT "S PO9T ,,NB 2CAME ;,C4 ,! "N IS SIMPLY ! NEXT LR AF ;,B1 ?\< ,RIT*IE NOT$ ) "*I/IC "U/ATE;T T ! NAM+ 0 "PLY CO9CID;E & "PLY SEQU;E4 ,! TRANSI;N 0 N A CL1N BR1K3 E>LY ;,C RETA9$ ,B'S OP]ATOR SYNTAX "Y 83">1 XS T]SE V>IABLE NAM+ 3V5;NS1 & XS FUNDA;TAL ORI5TA;N T[>D ! MA*9E4 ;,C ADD$ TYPES ON TOP ( ,B'S EXI/+ VOCABUL>Y R ?AN DESIGN+ A NEW LANGUAGE F SCRAT* : IS :Y ,C'S TYPE SY/EM HAS ALW FELT ?9 COMP>$ TO LANGUAGES DESIGN$ ) TYPES Z A F/ PR9CIPLE4 ,! RESULT 0 A LANGUAGE T SAT PRECISELY 9 ! GAP 2T ASSEMBLY & ! 8HI<-LEVEL0 LANGUAGES ( ! ]A4 ;,C GAVE Y TYPES1 /RUCTURES1 FUNC;NS1 & A /&>D LIBR>Y B X AL GAVE Y PO9T]S1 PO9T] >I?METIC1 BIT MANIPULA;N1 & ! ABIL;Y TO CA/ ANY?+ TO ANY?+4 ,? DELIB]ATE POSI;N+ CLOSE 5 TO ! MA*9E TO REPLACE ASSEMBLY1 AB/RACT 5 TO 2 PORTABLE IS ,C'S DEF9+ DESIGN *OICE & ! R1SON = BO? XS SU3ESS & XS PROBLEMS4 8;,C CAME 9TO 2+ 9 ! YE>S #AIFI#AIGC1 9 P>ALLEL ) ! E>LY DEVELOP;T ( ! ,UNIX OP]AT+ SY/EM2 ! MO/ CR1TIVE P]IOD O3URR$ DUR+ #AIGB40 ,D5NIS ,RIT*IE1 8,! ,DEVELOP;T ( ! ;,C ,LANGUAGE10 #AIIC ,! BIR?3 ,BELL ,LABS & ,UNIX . & ,D5NIS ,RIT*IE AT A ,,PDP-#AA1 CIRCA #AIGC4 ,PUBLIC DOMA94.> ,! CRITICAL MO;T CAME 9 ! SUMM] ( #AIGC4 ,?OMPSON _H TRI$ TO REWRITE ,UNIX 9 ;,C ! PREVI\S SUMM] B GAVE UP ! LANGUAGE LACK$ /RUCTURES1 & ! G5]AT$ CODE 0 N E6ICI5T 5\<4 ,OV] ! 9T]V5+ YE>1 ,RIT*IE ADD$ /RUCT1 IMPROV$ ! COMPIL]'S CODE G5]A;N1 & SOLV$ 5 ( ! REMA9+ PROBLEMS T A SECOND ATTEMPT SU3E$$4 ,BY ! 5D ( #AIGC1 ! ,UNIX K]NEL 0 WRITT5 9 ;,C4 ,? 0 REVOLU;N>Y4 ,OP]AT+ SY/EMS _H ALW BE5 WRITT5 9 ASSEMBLY EA* "O TI$ TO XS SPECIFIC H>DW>E4 ,A K]NEL WRITT5 9 A HI<-LEVEL LANGUAGE CD1 9 PR9CIPLE1 2 PORT$ TO DI6]5T MA*9ES BY REWRIT+ ONLY A SMALL H>DW>E-DEP5D5T LAY]4 ,:5 ,UNIX 0 PORT$ TO ! ,9T]DATA #H_/#CB 9 #AIGH1 T PR9CIPLE 2CAME FACT4 ,UNIX & "!=E ;,C 2GAN SPR1D+ TO E >*ITECTURE T EXI/$4 ,! SYMBIOSIS 2T ;,C & ,UNIX _C 2 OV]/AT$4 ;,C 0 DESIGN$ TO WRITE ,UNIX4 ,UNIX 0 DESIGN$ TO 2 WRITT5 9 ;,C4 ,! ,UNIX PHILOSOPHY SMALL TOOLS T COMPOSE1 TEXT Z A UNIV]SAL 9T]FACE1 ! FILE SY/EM Z A "NSPACE %AP$ ,C'S /&>D LIBR>Y4 ,! /DIO4H FUNC;NS " >E A DIRECT REFLEC;N ( ,UNIX'S FILE ,I_/,O MODEL4 ,! MA9"<>GC1 >GV"> 3V5;N MIRRORS ,UNIX'S PROCESS MODEL4 ,! 5TIRE ;,C ECOSY/EM ASSUMES A ,UNIX-L 5VIRON;T1 : IS :Y ,C'S 9FLU;E SPR1D EXACTLY Z F> Z ,UNIX DID : IS TO SAY1 "EY":4 ,! ,UNIX S\RCE CODE LIC5SE F ,,AT@&,T1 4TRIBUT$ TO UNIV]SITIES />T+ 9 #AIGE1 0 "O ( ! MO/ 3SEQU5TIAL LIC5S+ DECI.NS 9 COMPUT+ HI/ORY4 ,X PUT ;,C & ,UNIX 9TO ! H&S ( ?\S&S ( COMPUT] SCI;E /UD5TS1 :O LE>N$ BO? SIMULTANE\SLY & C>RI$ !M 9TO 9DU/RY4 ,B]KELEY'S MODIFICA;NS "<,,BSD"> L$ TO ,FREE,B,S,D1 ,OP5,B,S,D1 ,NET,B,S,D1 & EV5TUALLY MAC,O,S & I,O,S4 ,! ACADEMIC ,UNIX DIASPORA MADE ;,C ! DEFAULT LANGUAGE ( SY/EMS PROGRAMM+ _WWIDE4 ,K@&,R3 ! :ITE BOOK ,9 #AIGH1 ,BRIAN ,K]NID = ;,C = OV] A DECADE1 UNTIL ,,ANSI /&>DIZ$ ! LANGUAGE 9 #AIHI4 ,K@&,R IS WIDELY REG>D$ Z "O ( ! BE/ PROGRAMM+ BOOKS "E WRITT54 ,XS 3CISE;S1 CL>;Y1 & TRU/ 9 ! R1D] SET A /&>D T FEW TE*NICAL BOOKS H MAT*$4 ,! FAM\S F/ PROGRAM3 _?9CLUDE @ MA9"<"> _< PR9TF"<8HELLO1 _W_*N0">2 _> APPE>$ ON PAGE #F & 2CAME ! UNIV]SAL F/ PROGRAM 9 E LANGUAGE TUTORIAL S9CE4 ,! 8HELLO1 _W0 TRADI;N IS ,K@&,R'S MO/ VISIBLE CULTURAL 3TRIBU;N1 B ! BOOK'S R1L A*IEVE;T 0 DEMON/RAT+ T A SY/EMS LANGUAGE CD 2 EXPLA9$ CLE>LY 9 #BBH PAGES4 ,K@&,R ;,C _H NO =MAL /&>D4 ,! BOOK 0 ! /&>D :AT ,RIT*IE & ,K]NIKABLY WELL = A DECADE1 B Z ;,C SPR1D TO NON-,UNIX PLAT=MS "<,,MS-,,DOS1 ,,VMS1 MA9FRAMES">1 ! DIV]G;ES A3UMULAT$4 ,V5DORS ADD$ _! [N EXT5.NS F> & NE> PO9T]S ON ,,MS-,,DOS = SEG;T$ MEMORY1 _?PRAGMA DIRECTIVES = PLAT=M-SPECIFIC 2HAVIOR1 NON-/&>D LIBR>Y FUNC;NS & BY ! MID-#AIHJ;S1 ! IDEA T 8;,C IS PORTABLE0 0 2COM+ M ASPIRA;N ?AN FACT4 ,! NE$ = A =MAL /&>D 0 OBVI\S4 ,! ,K@&,R ]A AL E/ABLI%$ ! PRACTICE ( ! COMPIL] Z A REF];E IMPLE;TA;N4 ,:5 ! BOOK 0 AMBIGU\S & X "S"TS 0 PROGRAMM]S LOOK$ AT :AT ,RIT*IE'S COMPIL] DID4 ,! ,,PDP-#AA COMPIL]'S 2HAVIOR 2CAME ! DE FACTO DEF9I;N ( $GE CASES4 ,? PRACTICE P]SI/$ WELL 9TO ! ,,ANSI ]A3 :5 ! /&>D SAYS "O ?+ & ! COMPIL] DOES ANO!R1 "W+ PROGRAMM]S FOLL[ ! COMPIL]4 ,! T5.N 2T ! AB/RACT /&>D & 3CRETE IMPLE;TA;NS IS "O ( ! RECURR+ !MES ( ,C'S HI/ORY4 ,! /&>DS3 ,,ANSI ;,C "? ,C#BC ,C#HI _/ ,C#IJ ! F.DA;N ,9 #AIHC1 ,,ANSI =M$ COMMITTEE ,X#C;,J#AA TO /&>DIZE ;,C4 ,! RESULT1 PUBLI%$ 9 #AIHI Z ,,ANSI ,X#C4AEI-#AIHI & ADOPT$ BY ,,ISO 9 #AIIJ Z ,,ISO_/,,IEC #IHII3#AIIJ1 0 ! F/ =MAL ;,C /&>D4 ,X IS "KN 9T]*ANG1BLY Z ,C#HI ""> OR ,C#IJ "">4 ,C#HI CODIFI$ EXI/+ PRACTICE & ADD$ G5U9ELY NEW F1TURES3 ,F1TURE ,:AT X ADD$ VOID ,AN EXPLICIT 8NO VALUE0 TYPE FUNC;NS CD F9ALLY DCL !Y RETURN$ NO?+ 5UM ,"ND 9TEG] 3/ANTS 3/ ,BORR[$ F ,C"6"6 R1D-ONLY V>IABLES VOLATILE ,= H>DW>E REGI/]S & SIGNAL H&L]S TELLS ! COMPIL] N TO OPTIMIZE AWAY R1DS SIGN$ _/ UNSIGN$ ,EXPLICIT SIGN$;S ,FUNC;N PROTOTYPES ,AL BORR[$ F ,C"6"6 9T ADD"<9T A1 9T ;B">2 9/1D ( J 9T ADD"<">2 @1 @1 @ ,/&>D LIBR>Y H1D]S ORGANIZ$ 9TO A COH]5T SET ,C#HI AL =MALIZ$ ! Z-IF RULE ! COMPIL] MAY TRANS=M ! PROGRAM 9 ANY WAY1 Z L;G Z ! OBS]VABLE 2HAVIOR IS ID5TICAL TO ! AB/RACT MA*9E'S EXECU;N4 ,? RULE IS ! F.DA;N ( ALL MOD]N ;,C OPTIMIZA;N4 ,C#HI IS / ! T>GET ( "S NEW CODE 9 #BJBF4 ,! .<.<,,ALB ;,C BACK5D.>.> EXPLICITLY G5]ATES ,C#HI ! OLDE/1 MO/ PORTABLE ;,C DIALECT 2C ,C#HI COMPILES ON ESS5TIALLY E COMPIL] "E MADE1 F T9Y EMB$D$ TOOL*A9S TO MOD]N ,,GCC & ,CLANG4 ,! DELIB]ATE *OICE ( ,C#HI IS A F1TURE1 N A COMPROMISE4 ,C#II ! MOD]NIZA;N ,PUBLI%$ 9 #AIII1 ,C#II "<,,ISO_/,,IEC #IHII3#AIII"> 0 ! F/ MAJOR REVI.N 9 A DECADE4 ,X TRANS=M$ ;,C F A #AIGJ;S LANGUAGE ) #AIHI =MALIZA;N 9TO "S?+ RECOGNIZABLY MOD]N3 - _/_/ COM;TS BR"\ BACK F ,,BCPL VIA ,C"6"61 AF ?IRTY YE>S ( _/ _/ ONLY - L;G L;G 9T GU>ANTE$ #FD-BIT 9TEG]S - @ & @<9TTYPES4H@> FIX$-WID? 9TEG] TYPES "<9T#CB.-T1 U9T#FD.-T">1 5D+ DECADES ( 8H[ WIDE IS 9T ON ? PLAT=M80 - .-,BOOL _/ @ A PROP] BOOL1N TYPE - RE/RICT A PO9T] QUALIFI] TELL+ ! COMPIL] T NO O!R PO9T] ALIASES ? "O1 5ABL+ A7RESSIVE OPTIMIZA;N - ,COMP.D LIT]ALS "_<4X "7 #A1 4Y "7 #B_> 9L9E - ,DESIGNAT$ 9ITIALIZ]S 4FIELD "7 VALUE SYNTAX = /RUCTURES & >RAYS - ,V>IABLE-L5G? >RAYS "<,V,L,AS"> /ACK-ALLOCAT$ >RAYS ^: SIZE IS DET]M9$ AT RUN"T - ,9L9E FUNC;NS 9L9E KEY^W1 F ,C"6"6 - ,MIX$ DECL>A;NS & CODE V>IABLES NO L;G] _H TO 2 DECL>$ AT ! TOP ( A BLOCK " - @ FLOAT+-PO9T 5VIRON;T 3TROL - SNPR9TF ! SAFE V].N ( SPR9TF1 PREV5T+ BU6] OV]FL[S - ,V>IADIC MACROS _?DEF9E ,,LOG" FPR9TF"GS.-.-"> - .-.-FUNC.-.- AUTOMATIC /R+ 3TA9+ ! CURR5T FUNC;N "N ,C#II 0 A G5U9ELY GD /&>D4 ,XS TRAG$Y 0 ,MICROS(T3 ,,MSVC DID N FULLY SUPPORT ,C#II = NE>LY TWO DECADES1 : FRACTUR$ ! ECOSY/EM & =C$ _M PROJECTS TO /AY ON ,C#HI = PORTABIL;Y TO ,W9D[S4 ,? CR1T$ AN ABSURD SITUA;N ": ! MO/ POPUL> DESKTOP OP]AT+ SY/EM'S PRIM>Y COMPIL] DID N SUPPORT A #AIII LANGUAGE /&>D WELL 9TO ! #BJAJ;S4 ,! 3SEQU;ES RIPPLE "? ! ;,C ECOSY/EM TO ? "D _M WIDELY-US$ LIBR>IES / T>GET ,C#HI OR A ,C#HI_/,C#II HYBRID 2C !Y _C ASSUME FULL ,C#II SUPPORT4 ,! ,,VLA F1TURE1 9 "PICUL>1 PROV$ DIVISIVE4 ,:ILE 3CEPTUALLY USE;L1 ,V,L,AS MADE /ACK USAGE UNPR$ICTABLE & 7 3SID]$ A SECUR;Y RISK "4 ,L9US ,TORVALDS BANN$ ,V,L,AS F ! ,L9UX K]NEL1 & ! K]NEL T1M SP5T YE>S ELIM9AT+ !M F ! CODEBASE4 ,C#AA MADE ,V,L,AS OP;NAL1 TACITLY AC"KL$G+ ! 3TROV]SY4 ,C#AA 3CURR5CY & SAFETY ,PUBLI%$ 9 #BJAA1 ,C#AA "<,,ISO_/,,IEC #IHII3#BJAA"> ADDRESS$ TWO MAJOR GAPS3 - @ A /&>D ?R1D+ ,,API "IABLES">1 F9ALLY GIV+ ;,C PORTABLE MULTI?R1D+ )\T REQUIR+ ,,POSIX - @ ATOMIC TYPES & OP]A;NS1 ESS5TIAL = LOCK-FREE PROGRAMM+ - ,A ?R1D-AW>E MEMORY MODEL SPECIFY+ H[ ?R1DS 9T]ACT ) MEMORY1 9CLUD+ ACQUIRE_/REL1SE SEMANTICS - .-,/ATIC.-ASS]T COMPILE-"T ASS];NS - .-,ALIGNAS _/ .-,ALIGN( ALIGN;T 3TROL - ,ANONYM\S /RUCTURES & UNIONS /RUCT _< /RUCT _< 9T ;X1 ;Y2 _>2 _>2 - @4H@> ,UNICODE "* TYPES "<*>#AF.-T1 *>#CB.-T"> - .-,G5]IC TYPE-G5]IC SELEC;N1 ,C'S ANSW] TO FUNC;N OV]LOAD+3 .-,G5]IC"<;X1 9T3 89T01 FLOAT3 8FLOAT01 DEFAULT3 8O!R0"> ,C#AA AL MADE ,V,L,AS OP;NAL "1 9TRODUC$ B.DS-*ECK+ 9T]FACES 9 AN OP;NAL ANNEX "<,ANNEX ;,K">1 & DEPRECAT$ ! GETS FUNC;N "<: 0 F9ALLY REMOV$">4 ,C#AG ! CL1NUP ,PUBLI%$ 9 #BJAH1 ,C#AG "<,,ISO_/,,IEC #IHII3#BJAH"> 0 A 8BUG-FIX0 REL1SE4 ,X 9TRODUC$ NO NEW F1TURES ONLY DEFECT RESOLU;NS & CL>IFICA;NS4 ,XS PRIM>Y VALUE 0 E/ABLI%+ A CL1N1 UNAMBIGU\S BASEL9E = ! NEXT MAJOR REVI.N4 ,C#BC ! PRES5T ,PUBLI%$ 9 ,OCTOB] #BJBD1 ,C#BC "<,,ISO_/,,IEC #IHII3#BJBD"> IS ! CURR5T /&>D & ! MO/ SIGNIFICANT REVI.N S9CE ,C#II4 ,X MOD]NIZES ,C'S SURFACE :ILE PRES]V+ XS "*3 ,TYPES & 3/ANTS3 - NULLPTR & NULLPTR.-T A PROP] NULL PO9T] 3/ANT & TYPE - TRUE1 FALSE1 BOOL Z KEY^WS ""> - .-,BIT,9T"<;,N"> BIT-PRECISE 9TEG]S ( >BITR>Y WID? - TYPE( & TYPE(.-UNQUAL /&>DIZ$ TYPE( OP]ATOR - 3/EXPR COMPILE-"T 3/ANTS ,SYNTAX3 - ATTRIBUTE SYNTAX UNIFI$ ATTRIBUTES "D1 NORETURN"> - _?EMB$ EMB$ B9>Y DATA "E"> DIRECTLY 9TO S\RCE Z 9ITIALIZ] DATA - _?ELIFDEF _/ _?ELIFNDEF PREPROCESSOR %OR?& - .-.-HAS.-9CLUDE TE/ = H1D] AVAILABIL;Y - .-.-,,VA.-,,OPT.-.- OP;NAL V>IADIC MACRO >GU;T H&L+ - ,DIGIT SEP>ATOR ' 9 NUM]IC LIT]ALS "<#A'#JJJ'#JJJ"> - ,B9>Y LIT]AL PREFIX #J;;B "<#J;B#AJAJ"> ,LIBR>Y3 - @ BIT MANIPULA;N FUNC;NS - @ *ECK$ 9TEG] >I?METIC " - MEMSET.-EXPLICIT GU>ANTE$ N TO 2 OPTIMIZ$ AWAY "<= Z]O+ SECRETS"> - /RDUP _/ /RNDUP F9ALLY /&>DIZ$ AF DECADES Z ,,POSIX EXT5.NS ,& ALR 9 PROGRESS3 ,C#B;Y1 ! NEXT REVI.N1 ) ! LATE/ DRAFT "<,N#CHHF"> PUBLI%$ 9 ,MAY #BJBF4 ,C#BC'S .*_?EMB$.* DIRECTIVE SOLVES A PROBLEM Z OLD Z ;,C XF3 9CLUD+ B9>Y DATA 9 A PROGRAM4 ,2F .*_?EMB$.*1 ! /&>D APPROA* 0 .*XXD -I.* TO 3V]T A FILE 9TO A ;,C >RAY 9ITIALIZ] A G5]AT$ S\RCE FILE T CD 2 MILLIONS ( L9ES L;G4 .*_?EMB$.* REPLACES ? ) A S+LE PREPROCESSOR DIRECTIVE T COMPIL]S C H&LE 9T]NALLY1 DRAMATICALLY IMPROV+ COMPILE "TS = PROGRAMS T 9CLUDE FIRMW>E IMAGES1 TEXTURE DATA1 OR C]TIFICATE BUNDLES4 ,! LANGUAGE XF ,:AT X LOOKS L 9 #BJBF ,MOD]N ;,C1 WRITT5 TO ,C#BC1 IS CL1N] ?AN MO/ P EXPECT3 _?9CLUDE @ _?9CLUDE @ _?9CLUDE @ .<.D.>.> /ATIC 9T POPC.T.-&.-*ECK" _< 9T BITS "7 /DC.-C.T.-"OS"<;N">2 IF " RETURN -#A2 RETURN BITS2 _> 9T MA9" _< 3/EXPR UNSIGN$ MAGIC "7 #JX,D,E,A,D',,BEEF2 9T BITS "7 POPC.T.-&.-*ECK"2 PR9TF"<8#JX.0,X HAS .0D SET BITS_*N01 MAGIC1 BITS">2 _/_/ ,C#BC3 TYPE( 9F];E TYPE(" COPY "7 MAGIC2 PR9TF"<8,COPY3 #JX.0,X_*N01 COPY">2 _/_/ ,C#BC3 NULLPTR 9/1D ( ,,NULL 9T "9P "7 NULLPTR2 IF "<;P "7"7 NULLPTR"> _< PR9TF"<8,PO9T] IS NULL "_*N0">2 _> _> ,ATTRIBUTES1 3/EXPR1 DIGIT SEP>ATORS1 NULLPTR1 TYPE(1 @ ,C#BC BR+S G5U9E QUAL;Y-(-LIFE IMPROVE;TS :ILE REMA9+ RECOGNIZABLY ;,C4 ,! TYPE SY/EM ,C'S TYPE SY/EM IS FAM\SLY M9IMAL4 ,E VALUE IS ULTIMATELY A SEQU;E ( BYTES4 ,! FUNDA;TAL TYPES >E3 ,TYPE ,WID? " ,PURPOSE *> #H BITS ,"*S1 RAW BYTES %ORT #AF BITS ,SMALL 9TEG]S 9T #CB BITS ,! 8NATURAL0 9TEG] L;G #CB OR #FD BITS ,PLAT=M-DEP5D5T " L;G L;G #FD BITS ,GU>ANTE$ #FD-BIT "<,C#II"> FLOAT #CB BITS ,S+LE-PRECI.N ,,IEEE #GED D\BLE #FD BITS ,D\BLE-PRECI.N ,,IEEE #GED .-,BOOL _/ BOOL #A BIT " ,TRUE_/FALSE .-,BIT,9T"<;,N"> ;,N BITS ,>BITR>Y-WID? 9TEG]S "<,C#BC"> VOID #J BITS 8,NO VALUE0 OR 8ANY PO9T]0 ,! FIX$-WID? TYPES F @ 9T#H.-T1 U9T#CB.-T1 9T#FD.-T >E :AT MOD]N ;,C CODE ACTUALLY USES1 2C !Y REMOVE ! AMBIGU;Y ( 8H[ WIDE IS L;G ON ? >*ITECTURE40 ,PO9T]S ,PO9T]S >E ,C'S MO/ P[];L & MO/ DANG]\S F1TURE4 ,A PO9T] IS AN ADDRESS 9 MEMORY4 ,Y C3 - ,D]EF];E X "<"9P"> TO R1D OR WRITE ! VALUE AT T ADDRESS - ,P]=M >I?METIC ON X "<;P "6 #C M1NS 8?REE ELE;TS PA/ ;P0"> - ,CA/ X TO ANY O!R PO9T] TYPE 9CLUD+ TYPES T >E COMPLETELY WR;G - ,PASS X TO A FUNC;N1 : C !N MODIFY ! ORIG9AL DATA VOID SWAP"<9T "9A1 9T "9B"> _< 9T TMP "7 "9A2 "9A "7 "9B2 "9B "7 TMP2 _> ,PO9T]S >E :AT MAKE ;,C A SY/EMS LANGUAGE4 ,!Y GIVE ! PROGRAMM] DIRECT A3ESS TO MEMORY TO H>DW>E REGI/]S1 TO ,,DMA BU6]S1 TO NET"W PACKET H1D]S1 TO K]NEL DATA /RUCTURES4 ,!Y >E AL :AT MAKE ;,C DANG]\S3 A PO9T] TO FRE$ MEMORY1 A PO9T] PA/ ! 5D ( AN >RAY1 A NULL PO9T] D]EF];E1 A PO9T] TO ! WR;G TYPE ALL ( ^! COMPILE )\T W>N+ & CRA% " AT RUN"T4 ,! 5TIRE PHILOSOPHY ( ,RU/ C 2 "U/OOD Z3 8,:AT IF WE CD H PO9T]S1 B ! COMPIL] V]IFI$ !Y 7 ALW VALID80 ,UNDEF9$ 2HAVIOR ,C'S MO/ 3TROV]SIAL F1TURE IS UNDEF9$ 2HAVIOR "<,,UB">4 ,! /&>D DEF9ES C]TA9 OP]A;NS Z HAV+ NO REQUIR$ 2HAVIOR ! COMPIL] MAY D ANY?+1 9CLUD+ PRODUC+ APP>5TLY CORRECT CODE T BR1KS 9 SUBTLE WAYS4 ,! CLASSIC EXAMPLES3 - ,SIGN$ 9TEG] OV]FL[ "<,,9T.-,,MAX "6 #A"> UNDEF9$ - ,D]EF]5C+ A NULL PO9T] UNDEF9$ - ,A3ESS+ AN >RAY \ ( B.DS UNDEF9$ - ,US+ A V>IABLE 2F 9ITIALIZ+ X UNDEF9$ - ,MODIFY+ A VALUE TWICE 2T SEQU;E PO9TS UNDEF9$ ,! RA;NALE IS P]=M.E3 BY L1V+ ^! CASES UNDEF9$1 ! COMPIL] C ASSUME !Y N"E HAPP51 5ABL+ OPTIMIZA;NS T WD 2 IMPOSSIBLE IF E $GE CASE _H TO 2 DEF9$4 ,A COMPIL] T "KS SIGN$ OV]FL[ _C HAPP5 C OPTIMIZE "<;X "6 #A"> @> ;X TO TRUE )\T *ECK+4 ,A COMPIL] T "KS NULL D]EF];E _C HAPP5 C ELIM9ATE NULL *ECKS4 ,! CO/ IS T ,,UB IS ! S\RCE ( A VA/ NUMB] ( SECUR;Y VULN]ABILITIES4 ,BU6] OV]FL[S " >E ! S+LE MO/ EXPLOIT$ BUG CLASS 9 ! HI/ORY ( COMPUT+4 ,! T5.N 2T ,C'S P]=M.E & ,C'S SAFETY IS ! C5TRAL DRAMA ( SY/EMS PROGRAMM+1 & X HAS DRIV5 ! CR1;N ( SAF] ALT]NATIVES ,RU/1 ,ZIG1 ,C>BON T TRY TO PRES]VE ,C'S P]=M.E :ILE ELIM9AT+ " ,,UB4 8;,C IS A RAZOR-%>P TOOL ) : "O C CR1TE AN ELEGANT & E6ICI5T PROGRAM OR CUT "OF 9 WAYS T >E EXQUISITELY DI6ICULT TO DIAGNOSE40 P>APHRAS$ F NUM]\S ;,C PRACTI;N]S ,": ;,C RUNS /1 9 #BJBF ;,C IS N DECL9+4 ,X O3UPIES A DI6]5T NI*E ?AN X DID 9 #AIIJ X IS NO L;G] ! DEFAULT *OICE = APPLICA;N PROGRAMM+ B 9 XS DOMA91 X REMA9S UN*ALL5G$3 ,OP]AT+ SY/EM K]NELS ,L9UX "<#CJ"6 MILLION L9ES ( ;,C">1 ,W9D[S K]NEL1 MAC,O,S_/I,O,S "<,,XNU K]NEL">1 ,&ROID'S H>DW>E AB/RAC;N LAY]1 ! ,B,S,DS1 ,ZEPHYR1 ,FREE,R,T,O,S1 E ,,RTOS ON E MICROCONTROLL]4 ,OP]AT+ SY/EM K]NELS >E ,C'S HOME T]RITORY1 & :ILE ,RU/ IS MAK+ 9ROADS "<,L9UX N[ A3EPTS ,RU/ DRIV]S">1 ! VA/ MAJOR;Y ( K]NEL CODE REMA9S & W REMA9 ;,C = DECADES4 ,EMB$D$ SY/EMS ,F ! @S#J4JC MICROCONTROLL] 9 A WA%+ MA*9E TO ! FLIE IS OV]:ELM+LY ;,C4 ,! R1SONS >E PRACTICAL3 ;,C COMPIL]S EXI/ = E ,,CPU >*ITECTURE "E MANUFACTUR$1 ! LANGUAGE HAS NO HIDD5 ALLOCA;NS OR RUN"T OV]H1D1 & ! G5]AT$ CODE MAPS PR$ICTABLY TO MA*9E 9/RUC;NS4 ,:5 Y H #B,,KB ( ,,RAM & A #AF,M,HZ CLOCK1 Y _C AF=D A G>BAGE COLLECTOR1 A RUN"T1 OR A VIRTUAL MA*9E4 ,,>M1 ,,RISC-;,V1 ,,MIPS1 ,,AVR1 ,,PIC1 ,,MSP#DCJ1 ,XT5SA1 ,SUP],H E 9/RUC;N SET >*ITECTURE %IPS ) A ;,C COMPIL]1 USUALLY Z ! PRIM>Y DEVELOP;T TOOL4 ,! EMB$D$ _W RUNS ON ;,C 2C "! IS LIT]ALLY NO ALT]NATIVE ) EQUIVAL5T H>DW>E SUPPORT4 ,COMPIL]S & 9T]PRET]S ,,GCC1 ,CLANG_/,,LLVM'S ;,C FRONT5D1 ,C,PY?ON "1 ! ,RUBY 9T]PRET] "<,C,RUBY_/,,MRI">1 ,,PHP1 ,P]L1 ,LUA1 ;,R ALL WRITT5 9 ;,C4 ,EV5 COMPIL]S = LANGUAGES DESIGN$ TO REPLACE ;,C >E (T5 WRITT5 9 ;,C !MVS1 AT L1/ 9ITIALLY4 ,DATABASES ,S,Q,LITE "TPH"O">1 ,PO/GRE,S,Q,L1 ,MY,S,Q,L1 ,R$IS ALL ;,C4 ,NET"W+ ,! ,L9UX NET"W+ /ACK1 ,OP5,S,S,L_/,LIBRE,S,S,L1 ,,NG9X1 CURL1 ,,DNS RESOLV]S1 PACKET PROCESS+ FRAME"WS ;,C DOM9ATES ! LAY] 2T ! APPLICA;N & ! WIRE4 ,! ;,C /&>D LIBR>Y XF GLIBC1 MUSL1 BIONIC "<,&ROID">1 NEWLIB " ^! >E ! F.DA;NAL LIBR>IES T E PROGRAM ON A ,UNIX-L SY/EM L9KS AG/1 & !Y >E WRITT5 9 ;,C4 ,S,Q,LITE1 WRITT5 9 ;,C1 IS E/IMAT$ TO RUN ON OV] #D BILLION DEVICES4 ,X IS 9 E I,PH"O1 E ,&ROID PH"O1 E ,MAC1 E ,W9D[S #AJ"6 MA*9E "1 E ,FIREFOX1 E MAJOR WEB FRAME"W'S DEVELOP;T MODE1 E ,SKYPE CLI5T1 & MO/ TELEVI.N FIRMW>E4 ,X MAY 2 ! MO/ WIDELY DEPLOY$ S(TW>E COMPON5T 9 HI/ORY & X IS #AEC1JJJ L9ES ( ;,C1 MA9TA9$ BY ?REE P1 ) #AJJ.0 BRAN* COV]AGE 9 XS TE/ SUITE4 ,C'S LEGACY 9 O!R LANGUAGES ,C'S SYNTAX1 SEMANTICS1 & PHILOSOPHY H BE5 REPLICAT$ S ?OR\ ,RELA;N%IP TO ;,C ,C"6"6 #AIHE 8;,C ) ,CLASSES0 SUP]SET ( ;,C ) ,,OOP1 TEMPLATES1 ,,RAII ,OBJECTIVE-;,C #AIHD ;,C ) ,SMALLTALK-/YLE MESSAGE PASS+ ! LANGUAGE ( MAC,O,S_/I,O,S UNTIL ,SWIFT ,JAVA #AIIE ,C'S SYNTAX ) G>BAGE COLLEC;N1 A VIRTUAL MA*9E1 & NO PO9T]S DESIGN$ TO 2 8,C"6"6 )\T ! GUNS0 ,JAVA,SCRIPT #AIIE ,C'S SYNTAX APPLI$ TO A PROTOTYPE-BAS$ SCRIPT+ LANGUAGE N[ ! MO/-US$ LANGUAGE ON ,E>? ,C_? #BJJJ ,MICROS(T'S ANSW] TO ,JAVA ,C'S SYNTAX ON A MANAG$ RUN"T ,,PHP #AIIE ,C'S SYNTAX APPLI$ TO S]V]-SIDE WEB SCRIPT+ ,P]L #AIHG ,H1VY ;,C 9FLU;E 9 SYNTAX & SEMANTICS ;,D #BJJA ,DESIGN$ Z 8:AT ,C"6"6 %D H BE50 ;,C-COMPATIBLE ) A ,,GC OP;N ,G #BJJI ,K5 ,?OMPSON & ,ROB ,PIKE'S RE?9K+ ( ;,C = NET"W$ SY/EMS NO CLASSES1 NO EXCEP;NS1 G>BAGE-COLLECT$ ,RU/ #BJAE ,DESIGN$ TO REPLACE ;,C 9 SY/EMS PROGRAMM+ BY SOLV+ MEMORY SAFETY AT COMPILE "T ,SWIFT #BJAD ,APPLE'S REPLACE;T = ,OBJECTIVE-;,C ;,C-9FLU;ED B MEMORY-SAFE ,ZIG #BJAF ,A 8BETT] ;,C0 ;,C 9T]OP1 NO HIDD5 3TROL FL[1 COMP"T ,! _<1 _>1 21 ="<22">1 IF"<">1 :ILE"<">1 RETURN1 9T1 VOID1 PR9TF ^! >E ;,C4 ,E PROGRAMM] 9 ! _W "KS ,C'S SYNTAX1 :E!R !Y "K ;,C OR N4 ,! P ,C'S CR1;N 0 %AP$ BY A REM>KABLY SMALL GR\P ( P1 ALL AT ,BELL ,LABS3 ,D5NIS ,RIT*IE "<#AIDA#BJAA"> DESIGN$ & IMPLE;T$ ;,C4 ,HE AL CO-DESIGN$ ,UNIX ) ,K5 ,?OMPSON4 ,HE RCVD ! ,TUR+ ,AW>D 9 #AIHC "<%>$ ) ,?OMPSON"> & ! ,NA;NAL ,M$AL ( ,TE*NOLOGY 9 #AIIH4 ,HE DI$ ON ,OCTOB] #AB1 #BJAA1 J "DS AF ,/EVE ,JOBS A CO9CID;E T DREW ATT5;N TO H[ M* ( ! TE*NOLOGY T ,JOBS MADE FAM\S RAN ON ,RIT*IE'S S(TW>E4 ,RIT*IE'S D1? 0 B>ELY NOTIC$ \TSIDE ! TE*NICAL COMMUN;Y1 : _M REG>D$ Z A PR(.D 9JU/ICE4 ,K5 ,?OMPSON DESIGN$ ! ;,B LANGUAGE & ! ORIG9AL ,UNIX4 ,HE LAT] CO-CR1T$ ! ,G PROGRAMM+ LANGUAGE AT ,GOOGLE A LANGUAGE T IS1 9 _M WAYS1 A RE?9K+ ( ! SAME SY/EMS PROGRAMM+ SPACE T ;,C & ,UNIX O3UPI$1 9=M$ BY DECADES ( H9DSI1 : 2CAME ! /&>D ;,C COMPIL] ON MO/ ,UNIX SY/EMS & DEMON/RAT$ T ;,C COMPIL]S CD 2 PORT$ 2T >*ITECTURES CRITICAL EVID;E = ,C'S PORTABIL;Y PROMISE4 ,! COMPIL]S ,,GCC ,! ,,GNU ,COMPIL] ,COLLEC;N1 />T$ BY ,RI*>D ,/ALLMAN 9 #AIHG1 2CAME ! DOM9ANT ;,C COMPIL] BY ! LATE #AIIJ;S & REMA9$ S = OV] TWO DECADES4 ,,GCC'S OPTIMIZA;N CAPABILITIES1 XS SUPPORT = VIRTUALLY E ,,CPU >*ITECTURE1 & XS ROLE Z ! DEFAULT COMPIL] = ,L9UX MADE X ! DE FACTO /&>D4 ,Z ( #BJBF1 ,,GCC SUPPORTS ,C#BC SUB/ANTIALLY4 ,CLANG _/ ,,LLVM ,CLANG1 ! ;,C FRONT5D = ! ,,LLVM COMPIL] 9FRA/RUCTURE1 EM]G$ F ,APPLE & ! ,UNIV]S;Y ( ,ILL9OIS 9 ! LATE #BJJJ;S4 ,XS ADVANTAGES DRAMATICALLY FA/] COMPILE "TS1 BETT] ]ROR MESSAGES1 A MODUL> >*ITECTURE1 & A P]MISSIVE " LIC5SE MADE X ! DEFAULT COMPIL] ON MAC,O,S1 I,O,S1 ,FREE,B,S,D1 & ,&ROID4 ,_M ,L9UX 4TRIBU;NS N[ (F] ,CLANG Z AN ALT]NATIVE TO ,,GCC4 ,CLANG'S ,C#BC SUPPORT IS EXT5SIVE4 ,,MSVC ,MICROS(T'S ,VISUAL ,C"6"6 COMPIL] HI/ORICALLY LA7$ 2H ,,GCC & ,CLANG 9 ;,C /&>D SUPPORT4 ,,MSVC'S ;,C SUPPORT 0 FROZ5 AT ,C#HI = NE>LY TWO DECADES ! COMPANY FOCUS$ ON ,C"6"6 & 3SID]$ ;,C A SECOND>Y 3C]N4 ,? /.E S(T5$ SIGNIFICANTLY 9 ! #BJAJ;S1 & ,,MSVC N[ SUPPORTS MO/ ( ,C#AA & ,C#AG1 ) ,C#BC SUPPORT 9 PROGRESS4 ,,TCC1 ,,PCC1 & O!RS ,,TCC "<,T9Y ;,C ,COMPIL]">1 WRITT5 BY ,FABRICE ,BELL>D1 COMPILES ;,C S FA/ T X C 2 US$ Z A SCRIPT+ 9T]PRET] TCC -RUN HELLO4C COMPILES & EXECUTES 9 A S+LE /EP4 ,,PCC HAS BE5 REVIV$ Z A SMALL1 CL1N1 /&>DS-COMPLIANT COMPIL]4 CPROC T>GETS ,,QBE4 *IBICC1 BY ,RUI ,UEYAMA1 IS A DELIB]ATELY $UCA;NAL SMALL ;,C COMPIL] T C COMPILE R1L ;,C PROGRAMS :ILE REMA9+ R1DABLE 5 TO S]VE Z A T1*+ TOOL4 ,! ECOSY/EM ( SMALL1 FOCUS$ ;,C COMPIL]S REMA9S VIBRANT A TE/A;T TO ! LANGUAGE'S RELATIVE SIMPLIC;Y " FITS 9 A FEW PAGES ( ,,BNF1 COMP>$ TO ,C"6"6'S HUNDR$S">4 ,! DIV]S;Y ( ;,C COMPIL]S MATT]S PRACTICALLY3 X M1NS ;,C CODE C 2 COMPIL$ = ANY ,,CPU >*ITECTURE1 ANY OP]AT+ SY/EM1 & ANY =M FACTOR F A SM>TWAT* TO A SUP]COMPUT]4 ,NO O!R LANGUAGE 9 #BJBF C CLAIM COMPIL] SUPPORT Z BROAD Z ,C'S4 ;,C 9 SAFETY-CRITICAL & R1L-"T SY/EMS ;,C DOM9ATES SAFETY-CRITICAL S(TW>E ! CODE ": FAILURE M1NS PHYSICAL H>M4 ,AVIA;N "<,,D-#AGH;;,C">1 AUTOMOTIVE "<,,ISO #BFBFB">1 M$ICAL DEVICES "<,,IEC #FBCJD">1 NUCLE> P[]1 & RAILWAY SIGNAL+ ALL USE ;,C EXT5SIVELY1 GOV]N$ BY COD+ /&>DS T RE/RICT ! LANGUAGE TO A SAFE SUBSET3 ,,MISRA ;,C ! ,MOTOR ,9DU/RY ,S(TW>E ,RELIABIL;Y ,ASSOCIA;N'S GUIDEL9ES1 ORIG9ALLY PUBLI%$ 9 #AIIH1 DEF9E A RE/RICT$ SUBSET ( ;,C = SAFETY-CRITICAL AUTOMOTIVE S(TW>E4 ,,MISRA ;,C BANS OR RE/RICTS DYNAMIC MEMORY ALLOCA;N "1 RECUR.N1 GOTO1 PO9T] >I?METIC1 & M* ( ! PREPROCESSOR4 ,! RESULT IS A SUBSET ( ;,C T IS ANALYZABLE1 TE/ABLE1 & PR$ICTABLE AT ! CO/ ( EXPRESSIVE;S4 ,,MISRA ;,C HAS BE5 ADOPT$ F> 2Y AUTOMOTIVE3 M$ICAL DEVICES1 AVIONICS1 & 9DU/RIAL 3TROL SY/EMS ALL USE X4 ,,C]T ;,C ! ,,,SEI C]T ;C,' ,COD+ ,/&>D FOCUSES ON SECUR;Y R ?AN SAFETY1 PROVID+ RULES = AVOID+ EXPLOITABLE VULN]ABILITIES4 ,X ADDRESSES BU6] OV]FL[S1 9TEG] OV]FL[S1 RACE 3DI;NS1 & ! MO/ DANG]\S UNDEF9$ 2HAVIOR PATT]NS4 ,/ATIC ANALYSIS TOOLS L ,COV];Y1 ,POLYSPACE1 ,,PC-L9T1 & ! ,CLANG ,/ATIC ,ANALYZ] P]=M AUTOMAT$ *ECK+ ( ;,C CODE = COMMON DEFECTS4 ,! /ATE ( ! >T C F9D NULL PO9T] D]EF];ES1 BU6] OV]FL[S1 RES\RCE L1KS1 & D1D CODE AUTOMATICALLY B NO /ATIC ANALYZ] C CAT* ALL BUGS 9 ;,C1 2C ! LANGUAGE'S SEMANTICS MAKE _M 9T]E/+ PROP]TIES UNDECIDABLE4 ,! IRONY IS CLE>3 ! LANGUAGE MO/ US$ 9 SAFETY-CRITICAL SY/EMS IS ! LANGUAGE L1/ EQUIPP$ TO PREV5T BUGS4 ,! 9DU/RY COMP5SATES ) PROCESS1 TE/+1 & TOOL+ COD+ /&>DS1 /ATIC ANALYSIS1 ,,MC_/,,DC COV]AGE REQUIRE;TS1 =MAL V]IFICA;N PRECISELY 2C ! LANGUAGE XF PROVIDES NO SAFETY NET4 ,? IS ! FUNDA;TAL T5.N T DRIVES ! ADOP;N ( MEMORY-SAFE LANGUAGES 9 SAFETY-CRITICAL DOMA9S4 ;,C & ,C"6"63 ! RELA;N%IP ;,C & ,C"6"6 >E N ! SAME LANGUAGE4 ,C"6"6 0 DESIGN$ BY ,BJ>NE ,/R\/RUP />T+ 9 #AIGI Z 8;,C ) ,CLASSES10 & X %>ES ,C'S SYNTAX & M* ( XS SEMANTICS4 ,B ! LANGUAGES H DIV]G$ SIGNIFICANTLY3 - ,C"6"6 HAS TEMPLATES1 CLASSES1 VIRTUAL FUNC;NS1 EXCEP;NS1 ,,RAII1 MOVE SEMANTICS1 3CEPTS1 MODULES1 COR\T9ES1 & A /&>D LIBR>Y T 9CLUDES 3TA9]S1 ALGORI?MS1 & SM>T PO9T]S - ;,C HAS N"O ( ^! & ? IS A F1TURE1 N A DEFICIT ,C'S SIMPLIC;Y IS XS VALUE4 ,A ;,C PROGRAM'S 2HAVIOR MAPS PR$ICTABLY TO MA*9E CODE4 ,! LANGUAGE HAS NO HIDD5 3/RUCTORS1 NO IMPLICIT FUNC;N CALLS1 NO TEMPLATE 9/ANTIA;N1 NO EXCEP;N UNW9D+ TABLES4 ,? PR$ICTABIL;Y IS :Y ;,C REMA9S PREF]R$ = K]NELS1 FIRMW>E1 & SAFETY-CRITICAL SY/EMS ": E 9/RUC;N M/ 2 A3.T$ =4 ,! RELA;N%IP IS "S"TS 3T5TI\S4 ,C"6"6 PROGRAMM]S >GUE T ,C'S LACK ( SAFETY F1TURES IS 9EXCUSABLE 9 #BJBF4 ;,C PROGRAMM]S >GUE T ,C"6"6'S COMPLEX;Y IS XF A S\RCE ( BUGS4 ,! ,L9UX K]NEL1 ! MO/ IMPORTANT ;,C PROJECT 9 ! _W1 EXPLICITLY PROHIBITS ,C"6"6 & ALW HAS ,L9US ,TORVALDS' OP9IONS ON ,C"6"6 >E WELL-DOCU;T$ & UNPR9TABLE ON A FAMILY WIKI4 ,! H"O/ CRITIQUE ,C'S W1K;SES >E WELL-"KN & S]I\S3 ,MEMORY SAFETY IS ! PROGRAMM]'S PROBLEM4 ;,C PROVIDES NO PROTEC;N AG/ BU6] OV]FL[S1 USE-AF-FREE1 D\BLE-FREE1 NULL PO9T] D]EF];ES1 OR DATA RACES4 ,! PROGRAMM] IS RESPONSIBLE = GETT+ E ALLOCA;N1 E B.DS *ECK1 & E FREE CORRECT4 ,9 L>GE CODEBASES1 ? IS /ATI/ICALLY IMPOSSIBLE ,MICROS(T1 ,GOOGLE1 & ,APPLE ALL REPORT T R\E MEMORY SAFETY ISSUES 9 ;,C & ,C"6"6 CODE4 ,/R+ H&L+ IS T]RIBLE4 ,NULL-T]M9AT$ /R+S >E A DESIGN DECI.N F #AIGB T HAS CAUS$ 9CALCULABLE DAMAGE4 /RCPY DOESN'T *ECK B.DS4 GETS 0 S DANG]\S X 0 REMOV$ F ! /&>D4 /RCAT REQUIRES ! PROGRAMM] TO TRACK BU6] SIZES MANUALLY4 ,EV5 SNPR9TF1 ! 8SAFE0 ALT]NATIVE1 REQUIRES ! PROGRAMM] TO PASS ! CORRECT BU6] SIZE4 ,! PREPROCESSOR IS A BLUNT 9/RU;T4 _?DEF9E1 _?9CLUDE1 _?IFDEF ! ;,C PREPROCESSOR OP]ATES ON TEXT1 N ON ! LANGUAGE'S SYNTAX OR TYPE SY/EM4 ,X 5ABLES MACROS T LOOK L FUNC;NS B DON'T RESPECT SCOP+1 _?9CLUDE T COPIES 5TIRE FILES TEXTUALLY 9TO EA* TRANSLA;N UNIT "1 & 3DI;NAL COMPILA;N T CR1TES AN EXPON5TIAL SPACE ( POSSIBLE PROGRAMS T >E IMPOSSIBLE TO TE/ EXHAU/IVELY4 ,UNDEF9$ 2HAVIOR IS A LOAD$ GUN4 ,! LI/ ( ,,UB 9 ;,C IS 5ORM\S1 & MOD]N OPTIMIZ+ COMPIL]S EXPLOIT X A7RESSIVELY4 ,CODE T 8"WS0 9 DEBUG MODE C BR1K SIL5TLY 9 REL1SE MODE 2C ! OPTIMIZ] REMOV$ A NULL *ECK T ! PROGRAMM] ?"\ 0 A SAFETY NET4 ,! GAP 2T :AT ;,C PROGRAMM]S ?9K _! CODE DOES & :AT ! /&>D SAYS X DOES IS ! S\RCE ( "S ( ! MO/ SUBTLE & DANG]\S BUGS 9 SY/EMS S(TW>E4 ,! BUILD SY/EM IS *AOS4 ;,C HAS NO /&>D BUILD SY/EM1 NO /&>D PACKAGE MANAG]1 NO /&>D DEP5D5CY RESOLU;N4 ,PROJECTS USE ,MAKE1 ,C,MAKE1 ,MESON1 ,AUTOTOOLS1 ,N9JA1 OR CU/OM SCRIPTS4 ,"! IS NO C>GO BUILD1 NO G BUILD1 NO NPM 9/ALL4 ,? IS ,C'S MO/ SIGNIFICANT PRACTICAL 4ADVANTAGE COMP>$ TO MOD]N LANGUAGES4 ,^! >E N !ORETICAL 3C]NS4 ,!Y >E ! DAILY R1L;Y ( ;,C PROGRAMM+ 9 #BJBF1 & !Y >E :Y LANGUAGES L ,RU/ EXI/4 ,B !Y >E AL :Y ;,C P]SI/S3 E ALT]NATIVE T ELIM9ATES ,C'S DANG]S AL ELIM9ATES "S ( ,C'S CAPABILITIES4 ,! LANGUAGE T LETS Y D ANY?+1 9CLUD+ %OOT YRF1 IS AL ! LANGUAGE T LETS Y BUILD ANY?+4 ,! TRADE-(F IS 9H]5T1 & FIFTY-F\R YE>S ( HI/ORY SU7E/ T ! 9DU/RY W A3EPT ! DANG] 9 EX*ANGE = ! P[] AT L1/ = ! CODE T RUNS CLOSE/ TO ! H>DW>E4 ,D5NIS ,RIT*IE ON ,C'S PHILOSOPHY3 8;,C IS QUIRKY1 FLAW$1 & AN 5ORM\S SU3ESS4 ,:ILE A3ID5TS ( HI/ORY SURELY HELP$1 X EVID5TLY SATISFI$ A NE$ = A SY/EM IMPLE;TA;N LANGUAGE E6ICI5T 5 TO 4PLACE ASSEMBLY LANGUAGE1 YET SU6ICI5TLY AB/RACT & FLU5T TO DESCRIBE ALGORI?MS & 9T]AC;NS 9 A WIDE V>IETY ( 5VIRON;TS40 F 8,! ,DEVELOP;T ( ! ;,C ,LANGUAGE10 #AIIC4 ,! FUTURE ( ;,C ;,C IS N DY+1 B XS ROLE IS %IFT+4 ,?REE TR5DS >E RE%AP+ ,C'S POSI;N 9 #BJBF3 ,! MEMORY SAFETY M&ATE4 ,GOV]N;TS & MAJOR CORPORA;NS >E N[ EXPLICITLY RECOMM5D+ AG/ NEW ;,C CODE 9 3TEXTS ": MEMORY-SAFE ALT]NATIVES EXI/4 ,! ,,U ,NA;NAL ,SECUR;Y ,AG5CY1 ! ,:ITE ,H\SE ,(FICE ( ! ,NA;NAL ,CYB] ,DIRECTOR1 ,,CISA1 & ! ,,FBI H ALL PUBLI%$ GUID.E RECOMM5D+ MEMORY-SAFE LANGUAGES4 ,GOOGLE1 ,MICROS(T1 & ,APPLE H ALL PUBLICLY COMMITT$ TO R$UC+ ! AM.T ( NEW ;,C "<& ,C"6"6"> CODE !Y WRITE4 ,! ,L9UX K]NEL'S ADOP;N ( ,RU/ IS ! MO/ VISIBLE EXAMPLE ( ? TR5D4 ;,C Z A COMPILA;N T>GET4 ,9CR1S+LY1 ;,C IS US$ N Z A LANGUAGE T HUMANS WRITE1 B Z A PORTABLE ASSEMBLY LANGUAGE T COMPIL]S T>GET4 ,LANGUAGES F ,HASKELL "<,,GET ;,C"> TO ,NIM TO ,CY?ON TO ! ,,ALB ;,C BACK5D ALL COMPILE TO ;,C1 L"EAG+ ,C'S UNIV]SAL COMPIL] SUPPORT & DECADES ( OPTIMIZA;N 9FRA/RUCTURE4 ,9 ? ROLE1 ,C'S R1DABIL;Y & ]GONOMICS DON'T MATT] :AT MATT]S IS T E PLAT=M HAS A ;,C COMPIL] & T ! G5]AT$ CODE RUNS FA/4 ,C#B;Y & 2Y4 ,! ;,C /&>DS COMMITTEE "<,,WG#AD"> 3T9UES ACTIVE DEVELOP;T4 ,! NEXT REVI.N1 9=MALLY CALL$ ,C#B;Y1 HAS XS LATE/ "W+ DRAFT "<,N#CHHF"> F ,MAY #BJBF4 ,! COMMITTEE IS 3SID]+ F1TURES T WD H BE5 UN?9KABLE A DECADE AGO IMPROV$ TYPE 9F];E1 BETT] G5]ICS1 & FUR!R SAFETY-ORI5T$ F1TURES4 ;,C IS EVOLV+1 SL[LY & C>E;LLY1 9 ! SAME DIREC;N ! RE/ ( ! 9DU/RY IS MOV+ B ON XS [N T]MS1 AT XS [N PACE1 PRES]V+ ! BACKW>D COMPATIBIL;Y T IS XS GR1TE/ /R5G?4 ,! MO/ LIKELY FUTURE IS COEXI/;E4 ,NEW SAFETY-CRITICAL & HI<-P]=M.E SY/EMS W 9CR1S+LY 2 WRITT5 9 ,RU/ OR O!R MEMORY-SAFE LANGUAGES4 ,EXI/+ ;,C CODEBASES HUNDR$S ( BILLIONS ( L9ES1 REPRES5T+ DECADES ( 9VE/;T W 3T9UE TO RUN & 2 MA9TA9$ 9 ;,C4 ,! TWO LANGUAGES W COEXI/ AT ! ,,FFI B.D>Y1 ) ,RU/ CALL+ ;,C LIBR>IES & ;,C K]NELS HO/+ ,RU/ DRIV]S4 ;,C W REMA9 9DISP5SABLE N 2C X IS ! BE/ LANGUAGE1 B 2C X IS ! MO/ UNIV]SAL1 ! MO/ PORTABLE1 & ! MO/ DEEPLY EMB$D$ 9 ! 9FRA/RUCTURE ( ! _W4 ;,C & ,,ALB ,! ,,ALB ;,C BACK5D IS ,ADA,LOGIC ,,BASIC'S MO/ COMPLETE EMITT]3 X TURNS AN ,,ALB PROGRAM 9TO ,C#HI S\RCE CODE1 : !N COMPILES ON ESS5TIALLY ANY PLAT=M ) ANY COMPIL]4 ,! DELIB]ATE T>GET+ ( ,C#HI ! OLDE/1 MO/ PORTABLE DIALECT REFLECTS ,C'S UNIQUE POSI;N Z ! UNIV]SAL COMPILA;N T>GET4 ,": NEW] LANGUAGES DEBATE : /&>D TO REQUIRE1 ,C#HI REMA9S ! "O DIALECT T E ;,C COMPIL] 9 EXI/;E C H&LE4 ,! ,,ALB PROJECT 9CLUDES ;,C 9 XS D[NLOAD 4TRIBU;N & USES ;,C Z ! PRO( T 8WRITE ONCE1 COMPILE ANY":0 IS A*IEVABLE EXACTLY ! SAME PROMISE T ,RIT*IE & ,?OMPSON DEMON/RAT$ :5 !Y PORT$ ,UNIX TO ! ,9T]DATA #H_/#CB 9 #AIGH4 ,SEE AL - ,,ALB ;,C BACK5D ,ADA,LOGIC ,,BASIC'S ,C#HI EMITT] - ,RU/ ! LANGUAGE DESIGN$ TO PREV5T ,C'S MEMORY SAFETY PROBLEMS - ,,=TRAN ,,COBOL ,,LISP ,,ALGOL ,C'S 3TEMPOR>IES & PR$ECESSORS - ,HI/ORY ( ,PROGRAMM+ ,C'S PLACE 9 ! >C - ,ADA,LOGIC ,,BASIC ,REF];ES .<#A.> ;,D4 ;,M4 ,RIT*IE1 8,! ,DEVELOP;T ( ! ;,C ,LANGUAGE10 ,,HOPL-,,II3 ,PROCE$+S ( ! ,SECOND ,,ACM ,,SIGPLAN ,3F];E ON ,HI/ORY ( ,PROGRAMM+ ,LANGUAGES1 ,CAMBRIDGE1 ,,MA1 ,APRIL #AIIC4 ,AL3 CS4BELL-LABS4COM_/:O_/DMR_/*I/4HTML4 .<#B.> ;,B4 ;,W4 ,K]NI ,,ISO_/,,IEC #IHII3#BJBD1 8,9=MA;N TE*NOLOGY ,PROGRAMM+ LANGUAGES ;,C0 "<,C#BC">1 PUBLI%$ ,OCTOB] #BJBD4 ,FREELY AVAILABLE DRAFT3 ,N#CBBJ "<,FEBRU>Y #BJBD">4 .<#D.> ,,ISO_/,,IEC #IHII3#AIII1 8,PROGRAMM+ LANGUAGES ;,C0 "<,C#II">4 ,,ISO_/,,IEC #IHII3#BJAA "<,C#AA">4 ,,ISO_/,,IEC #IHII3#BJAH "<,C#AG">4 .<#E.> CPPREF];E4COM1 8,HI/ORY ( ;,C10 EN4CPPREF];E4COM_/C_/LANGUAGE_/HI/ORY4 .<#F.> ,,WG#AD PROJECT /ATUS1 OP5-/D4ORG_/,,JTC#A_/,,SC#BB_/,,WG#AD_/WWW_/PROJECTS4HTML4 .<#G.> ,NOKIA ,BELL ,LABS1 8,! ,CR1;N ( ! ,,UNIX ,OP]AT+ ,SY/EM10 NOKIA4COM_/BELL-LABS_/UNIX-HI/ORY4 .<#H.> 8,C#BC "<;,C /&>D REVI.N">10 ,WIKIP$IA4 ,A3ESS$ ,OCTOB] #BJBF4