"Rust er fremtiden for systemprogrammering, C er den nye assembler" - en tale af en af ​​de førende ingeniører fra Intel

På det nylige Open Source Technology Summi (OSTS) Josh Triplett, en senioringeniør hos Intel, sagde, at hans virksomhed er interesseret i, at Rust når "paritet" med C-sproget, der stadig dominerer systemer og udvikling på lavt niveau i den nærmeste fremtid. I sin tale Under titlen "Intel and Rust: The Future of Systems Programming" talte han også om systemprogrammeringens historie, hvordan C blev standard systemprogrammeringssprog, hvilke funktioner i Rust giver det en fordel i forhold til C, og hvordan det helt kunne erstatte C i dette programmeringsfelt.

"Rust er fremtiden for systemprogrammering, C er den nye assembler" - en tale af en af ​​de førende ingeniører fra Intel

Systemprogrammering er udvikling og styring af software, der fungerer som en platform til at skabe applikationsapplikationer, der sikrer, at sidstnævnte interagerer 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 skabe applikationssoftware uden at dykke ned i detaljerne om, hvordan selve hardwaren fungerer.

Triplett selv definerer systemprogrammering som "alt, der ikke er en applikation." Det inkluderer ting som BIOS, firmware, bootloadere og operativsystemkerner, forskellige typer indlejret lav-niveau kode og virtuelle maskine implementeringer. Interessant nok mener Triplett, at en webbrowser også er systemsoftware, da browseren for længst er blevet mere end "bare et program", idet den er blevet en selvstændig "platform for websteder og webapplikationer."

Tidligere blev de fleste systemprogrammer, inklusive BIOS, bootloadere og firmware, skrevet i assemblersprog. I 1960'erne begyndte eksperimenter at give hardwareunderstøttelse til sprog på højt niveau, hvilket førte til oprettelsen af ​​sprog som PL/S, BLISS, BCPL og ALGOL 68.

Så, i 1970'erne, skabte Dennis Ritchie C-programmeringssproget til Unix-operativsystemet. Oprettet i B-programmeringssproget, som ikke engang havde skriveunderstøttelse, var C fyldt med kraftfulde funktioner på højt niveau, der var bedst egnede til at skrive operativsystemer og drivere. Flere komponenter i UNIX, inklusive dens kerne, blev til sidst omskrevet i C. Efterfølgende blev mange andre systemprogrammer, herunder Oracle-databasen, meget af Windows-kildekoden og Linux-operativsystemet, også skrevet i C.

C har fået enorm opbakning i denne retning. Men hvad fik udviklere til at skifte til det? Triplett mener, at for at motivere udviklere til at skifte fra et programmeringssprog til et andet, skal sidstnævnte først levere nye funktioner uden at miste gamle funktioner.

For det første skal sproget tilbyde "rimelig imponerende" nye funktioner. "Han kunne ikke være bedre. Det skal være væsentligt bedre for at retfærdiggøre den indsats og den ingeniørtid, det tager at gennemføre omstillingen,” forklarer han. Sammenlignet med assemblersprog havde C mange ting at byde på. Det understøttede noget typesikker adfærd, gav bedre portabilitet og ydeevne med konstruktioner på højt niveau og genererede generelt meget mere læsbar kode.

For det andet skal sproget give understøttelse af gamle funktioner, hvilket betyder, at udviklere i historien om overgangen til C skulle være sikre på, at det ikke var mindre funktionelt end assemblersprog. Triplett forklarer: "Et nyt sprog kan ikke bare være bedre, det skal også være lige så godt." Ud over at være hurtigere og understøtte enhver datatype, som assembly-sprog kunne bruge, havde C også det, som Triplett kaldte en "escape hatch" - nemlig at den understøttede indsættelse af assembly-sprogkode i sig selv.

"Rust er fremtiden for systemprogrammering, C er den nye assembler" - en tale af en af ​​de førende ingeniører fra Intel

Triplett mener, at C nu er ved at blive, hvad assemblersprog var for mange år siden. "C er den nye samler," erklærer han. Nu leder udviklere efter et nyt sprog på højt niveau, der ikke kun løser de problemer, der har ophobet sig i C, som ikke længere kan rettes, men også tilbyder spændende nye funktioner. Et sådant sprog skal være overbevisende nok til at få udviklere til at skifte til det, skal være sikkert, give automatisk hukommelsesstyring og meget mere.

"Ethvert sprog, der ønsker at være bedre end C, skal tilbyde meget mere end blot beskyttelse mod bufferoverløb, hvis det virkelig vil være et overbevisende alternativ. Udviklere er interesserede i brugervenlighed og ydeevne, idet de skriver kode, der er selvforklarende og udfører mere arbejde på færre linjer. Sikkerhedsproblemer skal også løses. Brugervenlighed og ydeevne går hånd i hånd. Jo mindre kode du skal skrive for at opnå noget, jo mindre mulighed har du for at begå fejl, sikkerhedsrelateret eller ej,” forklarer Triplett.

Sammenligning af Rust og C

Tilbage i 2006 begyndte Graydon Hoare, en Mozilla-medarbejder, at skrive Rust som et personligt projekt. Og i 2009 begyndte Mozilla at sponsorere udviklingen af ​​Rust til egne behov og udvidede også holdet for at videreudvikle sproget.

En af grundene til, at Mozilla var interesseret i det nye sprog, er, at Firefox blev skrevet i over 4 millioner linjer C++-kode og havde en del kritiske sårbarheder. Rust blev bygget med sikkerhed og samtidighed i tankerne, hvilket gør det til et ideelt valg til at omskrive mange af Firefoxs komponenter som en del af Quantum-projektet for fuldstændigt at redesigne browserens arkitektur. Mozilla bruger også Rust til at udvikle Servo, en HTML-gengivelsesmotor, der med tiden vil erstatte den nuværende Firefox-gengivelsesmotor. 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 i C-sproget. Det tilbyder automatisk hukommelsesstyring, så udviklere ikke behøver at tildele og derefter frigøre det manuelt for hvert objekt i applikationen. Det, der gør Rust anderledes end andre moderne sprog, er, at den ikke har en skraldeopsamler, der automatisk fjerner ubrugte objekter fra hukommelsen, og den har heller ikke det runtime-miljø, der kræves for at få det til at fungere, som Java Runtime Environment for Java. I stedet har Rust begreberne ejerskab, lån, referencer og levetid. "Rust har et system til at angive kald til et objekt for at angive, om ejeren bruger det eller bare låner det. Hvis du blot låner et objekt, vil compileren holde styr på dette og sikre, at originalen forbliver på plads, så længe du refererer til den. Rust vil også sikre, at objektet fjernes fra hukommelsen, så snart brugen er fuldført, ved at indsætte et tilsvarende kald i koden på kompileringstidspunktet uden yderligere tid,” siger Triplett.

Manglen på en native runtime kan også betragtes som en positiv egenskab ved Rust. Triplett mener, at de sprog, den kører på, er svære at bruge som systemprogrammeringsværktøjer. Som han forklarer: "Du skal initialisere denne runtime, før du kan kalde nogen kode, du skal bruge denne runtime til at kalde funktioner, og selve runtime kan køre yderligere kode bag din ryg på uventede tidspunkter."

Rust stræber også efter at levere sikker parallel programmering. De samme funktioner, der gør det hukommelsessikkert, holder styr på ting som hvilken tråd der ejer hvilket objekt, og hvilke objekter der kan føres mellem tråde og hvilke der skal låses.

Alle disse funktioner gør Rust overbevisende nok til, at udviklere kan vælge det som et nyt værktøj til systemprogrammering. Med hensyn til parallel computing er Rust dog stadig lidt bagud C.

Triplett har til hensigt at oprette en særlig arbejdsgruppe, der vil fokusere på at introducere de nødvendige funktioner i Rust, så den fuldt ud kan lig med, overgå og erstatte C inden for systemprogrammering. I tråd på Reddit, dedikeret til sin tale, sagde han, at "FFI/C Parity-gruppen er i gang med oprettelsen og endnu ikke er begyndt at arbejde," for nu er han klar til at besvare alle spørgsmål, og i fremtiden vil han helt sikkert offentliggøre øjeblikkelige planer for udviklingen af ​​Rust som led i hans initiativ for alle interesserede.

Det kan antages, at FFI/C Parity-gruppen først og fremmest vil fokusere på at forbedre multi-threading-understøttelse i Rust, introducere understøttelse af BFLOAT16, et floating-point-format, der er dukket op i de nye Intel Xeon Scalable-processorer, samt stabilisering af samlingen kodeindsættelser.



Kilde: 3dnews.ru

Tilføj en kommentar