Utgivning av Rust 1.94. Experiment med Rust i FreeBSD-kÀrnan. Databasen Turso och CAD-programmet vcad pÄ Rust

Den nya versionen av programmeringssprÄket Rust 1.94 har publicerats. SprÄket, som grundades av Mozilla, utvecklas nu under vingen av den oberoende ideella organisationen Rust Foundation. SprÄket fokuserar pÄ sÀker minneshantering och erbjuder verktyg för att uppnÄ hög parallellitet i uppgiftskörning, utan att anvÀnda en garbage collector eller runtime (runtime begrÀnsas till grundlÀggande initialisering och underhÄll av standardbiblioteket).

Minneshanteringsmetoderna i Rust syftar till att eliminera fel vid hantering av pekare och skydda mot problem som uppstÄr frÄn lÄg nivÄ minneshantering, sÄsom att referera till minnesomrÄden efter att de har frigjorts, dereferensiering av nullpekare, buffertöverskridningar, etc. För spridning av bibliotek, byggnation och hantering av beroenden utvecklas paketchefen Cargo. För att lagra bibliotek stöds ett repository pÄ crates.io.

SÀker minneshantering sÀkerstÀlls i Rust under kompilering genom att kontrollera referenser, spÄra Àgandeskap över objekt, ta hÀnsyn till livslÀngden av objekt (synlighet) och utvÀrdera korrekt minnesÄtkomst under körning av koden. Rust erbjuder ocksÄ verktyg för att skydda mot heltalsöverflöden, krÀver obligatorisk initialisering av variabelvÀrden innan de anvÀnds, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet av oförÀnderliga (immutable) referenser och variabler som standard och erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga nyheter:

  • I typen slice har metoden array_windows lagts till, som skapar en iterator för att gĂ„ igenom skivor (slice) med fasta storlekar som flyttas ett element i taget. Till skillnad frĂ„n den tidigare tillgĂ€ngliga metoden windows, arbetar metoden array_windows med en konstant storlek pĂ„ fönstret och returnerar vid varje iteration en referens till en array av fast storlek (&[T; N]) istĂ€llet för en slice av obestĂ€md storlek (&[T]). Eftersom storleken pĂ„ arrayen Ă€r kĂ€nd för kompilatorn finns möjligheten att undvika grĂ€nskontroller vid varje iterationssteg för att öka prestandan. let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
  • I konfigurationsfilerna för pakethanteraren Cargo (.cargo/config.toml) har en direktiv för „include“ implementerats, som tillĂ„ter att innehĂ„ll frĂ„n andra filer infogas pĂ„ plats. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • Stöd för den nya versionen av markup-sprĂ„ket TOML 1.1 har lagts till i manifestfiler och konfigurationsfiler, med stöd för flerradiga inbyggda tabeller, escape-sekvenser „\xHH“ för att infoga den hexadecimala representationen av bytes och „\e“ för att ersĂ€tta „\u001B“, samt möjligheten att ha ett kommatecken i slutet av det sista elementet och att hoppa över att ange sekunder i tidsvĂ€rden. serde = { version = "1.0", features = ["derive"] } kan nu ersĂ€ttas med serde = { version = "1.0", features = ["derive"], }
  • En ny uppsĂ€ttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
    • ::array_windows
    • ::element_offset
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • impl TryFrom for usize
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • Inbyggda funktioner för x86-instruktioner av typen av avx512fp16
    • Inbyggda funktioner för AArch64-instruktioner av typen NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • Indikatorn "const" har tillĂ€mpats i funktioner:
    • f32::mul_add
    • f64::mul_add
  • Plattformen riscv64im-unknown-none-elf har uppnĂ„tt tredje supportnivĂ„. Den tredje nivĂ„n omfattar grundlĂ€ggande stöd, men utan automatiserad testning, publicering av officiella versioner och kodkompilationskontroller.

Man kan Àven nÀmna nyligen tillkÀnnagivna projekt och hÀndelser relaterade till Rust:

  • Ayrton Muñoz, som tidigare implementerade stöd för plattformen Sony PlayStation 1 i Rust-kompilatorn och arbetade med att portera FreeBSD till datorer med Apple Silicon-chips, har möjliggjort skapandet av kĂ€rnkomponenter och enhetsdrivrutiner för FreeBSD med Rust. För testning har en uppsĂ€ttning KPI-bindningar (Kernel Programming Interface) föreslagits, vilket möjliggör anvĂ€ndning av Rust-kod i FreeBSD-kĂ€rnan, samt det ljuddrivrutin virtio (virtio_snd) och HID-drivrutinen DockChannel för tangentbordet pĂ„ M2 MacBook, och flera lĂ„gnivĂ„drivrutiner för Mac-datorsubsystem med Apple Silicon-chips.

    Det pÄpekas att arbetet med Rust-bindningarna har pÄgÄtt sedan slutet av 2024. I bindningarna har bara en del av C-KPI implementerats och de positioneras som instabila, men med tiden planerar man att stabilitetsnivÄn ska nÄ den för grÀnssnittet för sprÄket C. Den föreslagna virtio_snd-drivrutinen Àr anvÀndbar för musikuppspelning i QEMU. Det förvÀntas att Rust-bindningarna Är 2026 kommer att vara tillrÀckligt stabiliserade för att intresserade utvecklare ska kunna börja anvÀnda dem för kodskrivning.

  • Benny Siegert, som deltar i utvecklingen av NetBSD, har försökt motivera skĂ€len till varför stöd för Rust-sprĂ„ket inte kommer att introduceras i NetBSD-kĂ€rnan: NetBSD stöder arkitekturer dĂ€r Rust inte Ă€r tillgĂ€ngligt; underhĂ„llet av det befintliga Rust-verktyget i pkgsrc krĂ€ver mycket arbete och stöds endast av nĂ„gra fĂ„ utvecklare; stöd för Rust i kĂ€rnan krĂ€ver att Rust-kompilatorn inkluderas i det grundlĂ€ggande systemet; vid bootstrap av Rust i NetBSD anvĂ€nds en tidigare version av det binĂ€ra paketet, vilket Ă€r oacceptabelt för sjĂ€lvförsörjande distributioner som distribueras i kĂ€llkod; slĂ€ppcyklerna för Rust Ă€r inkompatibla med utvecklingscykeln för NetBSD och stödet för Ă€ldre versioner (till exempel fortsĂ€tter man att stödja NetBSD 9 som slĂ€pptes 2020, och under dessa omstĂ€ndigheter skulle det krĂ€vas att sju Ă„r gammal Rust-kompilator tillhandahĂ„lls och underhĂ„lls).
  • UtgĂ„van av den inbĂ€ddade databashanteraren Turso 0.5 har offentliggjorts, skriven i Rust och kompatibel med SQLite pĂ„ SQL-dialektnivĂ„, databasformat och C API. Bland de avancerade funktionerna mĂ€rks en CDC-mekanism (Change Data Capture) för att spĂ„ra databasĂ€ndringar i realtid, anvĂ€ndning av io_uring för asynkron in- och utdata i Linux, stöd för vektorsökning, en ALTER-uttalande för att Ă€ndra databasscheman och möjligheten att kryptera data i databaser, inkrementell berĂ€kningslĂ€ge och konstruktionen "BEGIN CONCURRENT".
  • Projektet för att möjliggöra anvĂ€ndning av Rusts standardbibliotek i program som körs pĂ„ GPU-sidan.
  • Emuko Ă€r en RISC-V-emulator, skriven i Rust, som kan ladda Linux, stöder JIT-kompilering och kan spara och Ă„terstĂ€lla tillstĂ„ndssnapshots.
  • RustConn (flatpak) Ă€r ett grafiskt grĂ€nssnitt för att hantera externa nĂ€tverksanslutningar till andra vĂ€rdar, som stöder SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust och SFTP. Koden Ă€r skriven i Rust med GTK4 och Wayland.
  • En ny gren av projektet zlib-rs 0.6 har presenterats, som markerar den första stabila versionen, helt kompatibel med zlib C API och lĂ€mplig för en transparent ersĂ€ttning av zlib. Projektet syftar till att skapa en sĂ€ker motsvarighet till zlib datakomprimeringsbibliotek. Utvecklingen görs med hĂ€nsyn till projektet zlib-ng som utvecklar en högpresterande variant av zlib.
  • Projektet vcad har presenterats, som utvecklar ett parameterbaserat system för datorstödda designer (CAD) skrivet i Rust och integrerat med AI-agenter via MCP-protokollet. 3D-modellering, simulering, arbete med 2D-skissningar, komponentmontering, import i STEP-format och export i format som STL/GLB/STEP/DXF stöds.
  • Ett röstsensor-system skrivet i Rust har offentliggjorts, som anvĂ€nder AI-modellen Mistral Voxtral Mini 4B Realtime och maskininlĂ€rningsramverket Burn. Projektet Ă€r inriktat pĂ„ röstigenkĂ€nning i realtid för att generera transkription vid strömning.
  • Verktyget c2rust 0.22 har slĂ€ppts, avsett för att översĂ€tta C-kod (C99) till ett osĂ€kert Rust-representationsformat som liknar den ursprungliga C-koden. Den resulterande arbetsramen kan sedan anvĂ€ndas för att gradvis översĂ€tta till idiomatisk Rust och eliminera osĂ€kra block.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster