På det nyligt afholdte Open Source Technology Summit (OSTS) , ledende ingeniør hos Intel, nævnte, at hans virksomhed er interesseret i at Rust i den nærmeste fremtid opnår "paritet" med det stadig dominerende sprog C inden for system- og lavniveauudvikling. med titlen "Intel og Rust: fremtiden for systemprogrammering" delte han også historien om systemprogrammering, hvordan C er blevet standarden for systemprogrammering, hvilke fordele Rust har i forhold til C, og hvordan det i den nærmeste fremtid kan erstatte C i dette felt af programmering.

Systemprogrammering er udviklingen og forvaltningen af software, der fungerer som platform for oprettelse af applikationer og sikrer deres interaktion med processoren, RAM, input-output enheder og netværksudstyr. Systemsoftware skaber en særlig abstraktion i form af grænseflader, der hjælper med at udvikle applikationssoftware uden at skulle forstå detaljerne i, hvordan "hardwaren" fungerer.
Triplett definerer selv systemprogrammering som "alt, hvad der ikke er en applikation". Det inkluderer ting som BIOS, firmware, bootloadere og operativsystemkerner, forskellige former for indlejret lavniveau kode, samt implementeringer af virtuelle maskiner. Interessant nok mener Triplett, at en webbrowser også er systemsoftware, da browseren i lang tid har været mere end "bare et program", og er blevet en selvstændig "platform for hjemmesider og webapplikationer."
Tidligere blev de fleste systemprogrammer, herunder BIOS, bootloadere og firmware, skrevet i assembler. I 1960'erne begyndte eksperimenter med at levere hardwareunderstøttelse til højniveausprog, hvilket førte til oprettelsen af sprog som PL/S, BLISS, BCPL og ALGOL 68.
I 1970'erne skabte Dennis Ritchie programmeringsspråket C til operativsystemet Unix. C blev udviklet på baggrund af programmeringssproget B, som ikke engang havde støtte til typetjek. C var fyldt med kraftfulde høj-niveau funktioner, der var ideelle til at skrive operativsystemer og drivere. Flere komponenter af UNIX, inklusive dets kerne, blev i sidste ende omskrevet i C. Senere blev mange andre systemprogrammer, herunder Oracle-databasen, størsteparten af Windows' kildekode og operativsystemet Linux, også skrevet i C.
C fik enorm støtte i denne retning. Men hvad fik udviklerne til at skifte til det? Triplett mener, at for at motivere udviklere til at skifte fra ét programmeringssprog til et andet, skal det nye sprog først og fremmest tilbyde nye funktioner uden at miste de gamle.
For det første skal sproget tilbyde "tilstrækkeligt imponerende" nye funktioner. "Det kan ikke være kun en smule bedre. Det skal være markant bedre for at retfærdiggøre den indsats og tid, som ingeniører skal investere i overgangen," forklarer han. I forhold til assembler-sproget havde C mange ting, der kunne tilbydes. Det understøttede i nogen grad sikker typetjek, sikrede bedre portabilitet og ydeevne med høj-niveau konstruktioner og genererede generelt en langt mere læsbar kode.
For det andet skal sproget sikre støtte til gamle funktioner, hvilket betyder, at udviklerne skulle være sikre på, at det ikke var mindre funktionelt end assembler-sproget i fortællingen om overgangen til C. Triplett forklarer: "Det nye sprog kan ikke bare være bedre, det skal også være mindst lige så godt." Udover at C var hurtigere og understøttede alle de datatyper, som assembler-sproget kunne bruge, havde det også, hvad Triplett kaldte "nødbremsen", nemlig støtte til indlejring af kode i assembler-sprog.

Triplet mener, at C nu bliver det, som assemblersprog var for mange år siden. "C er den nye Assembly", siger han. Nu søger udviklere et nyt højniveau-sprog, der ikke kun vil løse de problemer, som C har ophobet, og som allerede er umulige at rette, men også tilbyde nye, imponerende muligheder. Dette sprog skal være overbevisende nok til at få udviklere til at skifte til det, skal være sikkert, sørge for automatisk hukommelsesstyring og meget mere.
"Ethvert sprog, der ønsker at være bedre end C, skal tilbyde meget mere end blot beskyttelse mod buffer-overløb, hvis det virkelig ønsker at blive et overbevisende alternativ. Udviklere er interesserede i brugervenlighed og ydeevne, i at skrive kode, der ikke kræver forklaringer, og som udfører mere arbejde med færre linjer. Også sikkerhedsproblemer skal løses. Brugervenlighed og ydeevne er uadskilleligt forbundet. Jo mindre kode du skal skrive for at opnå noget, jo færre muligheder har du for at lave fejl relateret til sikkerhed eller ikke", forklarer Triplet.
Sammenligning af Rust og C
Allerede i 2006 begyndte Graydon Hoare, ansat i Mozilla, at skrive Rust som et personligt projekt. Og i 2009 begyndte Mozilla at sponsorere udviklingen af Rust til deres egne behov og udvidede også teamet for at fremme sprogudviklingen.
En af grundene til, at Mozilla var interesseret i et nyt sprog, er, at Firefox var skrevet i mere end 4 millioner linjer C++-kode og havde en del kritiske sårbarheder. Rust blev skabt med krav til sikkerhed og parallelisme i tankerne, hvilket gør det til et ideelt valg for at omskrive mange komponenter af Firefox som en del af Quantum-projektet, der omfatter en komplet overhauling af browserens arkitektur. Mozilla bruger også Rust til at udvikle Servo, en HTML-renderingsmotor, der i fremtiden vil erstatte den nuværende Firefox-renderingsmotor. Mange andre virksomheder er begyndt at bruge Rust til deres projekter, herunder Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu og mange flere.
Rust løser et af de vigtigste problemer ved C-sprog. Det tilbyder automatisk hukommelsesstyring, så udviklere ikke behøver manuelt at tildele og derefter frigive hukommelse for hver objekt i applikationen. Det, der adskiller Rust fra andre moderne sprog, er, at det ikke har en garbage collector, der automatisk fjerner ubrugte objekter fra hukommelsen, såvel som den kørselstid, der er nødvendig for dens drift, ligesom Java Runtime Environment for Java. I stedet har Rust koncepter som ejerskab, lån, referencer og livstid. "I Rust er der et system til deklaration af objektopkald, der angiver, om det er ejeren, der bruger det, eller om det blot er et lån. Hvis du bare låner et objekt, vil compileren holde øje med dette og sikre, at originalen forbliver på plads så længe, du henviser til det. Og Rust vil også sikre, at objektet fjernes fra hukommelsen lige efter dets brug, ved at indsætte det relevante opkald i koden under kompileringen uden ekstra tidsomkostninger," fortæller Triplett.
Mangel på en egen kørselstid kan også betragtes som en positiv egenskab ved Rust. Triplett mener, at sprog, der kører ved hjælp af det, er svære at bruge som et værktøj til systemprogrammering. Som han forklarer: "Du skal initialisere denne runtime, før du kan kalde nogen kode, du skal bruge denne runtime for at kalde funktioner, og selve runtime kan udføre ekstra kode bag din ryg på uventede tidspunkter."
Rust stræber også efter at sikre sikker parallel programmering. De samme funktioner, der gør det sikkert for hukommelsen, holder øje med ting som, hvilken tråd der ejer hvilket objekt og hvilke objekter der kan overføres mellem tråde og hvilke der har brug for at blive låst.
Alle disse funktioner gør Rust til et overbevisende valg for udviklere, der ønsker at vælge det som et nyt værktøj til systemprogrammering. Men når det kommer til parallelle beregninger, halter Rust stadig lidt bagefter C.
Triplet er i gang med at oprette en særlig arbejdsgruppe, der skal implementere nødvendige funktioner i Rust, så det helt kan matche, overgå og erstatte C inden for systemprogrammering. I , der omhandler hans præsentation, nævnte han, at «FFI/C Parity-gruppen er under oprettelse og endnu ikke er begyndt at arbejde», og indtil videre er han klar til at besvare spørgsmål, mens han i fremtiden bestemt vil offentliggøre de nærmeste planer for Rusts udvikling inden for hans initiativ for alle interesserede parter.
Det kan antages, at FFI/C Parity-gruppen først vil fokusere på at forbedre understøttelsen af multitrådning i Rust, implementeringen af BFLOAT16 understøttelse, et format for flydende komma-tal, der er blevet introduceret i de nye Intel Xeon Scalable-processorer, samt stabilisering af kodeindsættelser i Assembly.
Kilde: 3dnews.ru
