Release von Rust 1.94. Experimente mit Rust im FreeBSD-Kernel. Datenbank Turso und CAD vcad in Rust.

Die neue Version der Programmiersprache Rust 1.94 wurde veröffentlicht. Ursprünglich von Mozilla entwickelt, wird sie nun unter dem Dach der unabhängigen gemeinnützigen Rust Foundation weiterentwickelt. Die Sprache legt großen Wert auf die sichere Arbeit mit Speicher und bietet Mittel zur Erreichung hohen parallelen Aufgabenverarbeitungs, ohne auf einen Garbage Collector und Runtime zurückgreifen zu müssen (die Runtime beschränkt sich auf die grundlegende Initialisierung und die Pflege der Standardbibliothek).

Die Methoden zur Arbeit mit dem Speicher in Rust zielen darauf ab, Fehler beim Manipulieren von Zeigern zu vermeiden und Probleme zu schützen, die aus der niedrigstufigen Arbeit mit Speicher resultieren können, wie z. B. den Zugriff auf Speicherbereiche nach deren Freigabe, das Dereferenzieren von Nullzeigern, das Überlaufen von Buffern usw. Zur Verbreitung von Bibliotheken und zur Verwaltung von Abhängigkeiten wird der Paketmanager Cargo entwickelt. Der Repository-Service crates.io unterstützt die Bereitstellung von Bibliotheken.

Die sichere Handhabung von Speicher in Rust wird während der Kompilierung durch die Überprüfung von Referenzen, das Verfolgen des Besitztums von Objekten, das Management der Lebensdauer von Objekten (Sichtbarkeitsbereiche) und die Bewertung der Korrektheit des Zugriffs auf den Speicher zur Laufzeit sichergestellt. Rust bietet außerdem Mechanismen zum Schutz vor ganzzahligen Überläufen, erfordert die verpflichtende Initialisierung von Variablenwerten vor der Verwendung, behandelt Fehler in der Standardbibliothek effektiver, implementiert das Konzept der Unveränderlichkeit (immutable) von Referenzen und Variablen standardmäßig und bietet eine starke statische Typisierung zur Minimierung logischer Fehler.

Hauptneuheiten:

  • Im Typ Slice wurde die Methode array_windows hinzugefügt, die einen Iterator erstellt, um durch Slices in "Fenstern" fester Größe zu iterieren, die sich jeweils um ein Element verschieben. Im Gegensatz zur zuvor verfügbaren Methode windows arbeitet die Methode array_windows mit einer festen Fenstergröße und gibt bei jeder Iteration einen Verweis auf ein Array fester Größe (&[T; N]) zurück, anstelle eines Slices unbestimmter Größe (&[T]). Da die Größe des Arrays dem Compiler von Anfang an bekannt ist, kann die Leistung verbessert werden, indem auf die Überprüfung der Arraygrenzen in jeder Iterationsphase verzichtet wird. 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());
  • In den Konfigurationsdateien des Paketmanagers Cargo (.cargo/config.toml) wurde die Direktive „include“ implementiert, die es ermöglicht, Inhalte anderer Dateien direkt einzufügen. include = [ „frodo.toml“, „samwise.toml“, ] include = [ { path = „required.toml“ }, { path = „optional.toml“, optional = true }, ]
  • In die Manifest- und Konfigurationsdateien wurde Unterstützung für die neue Version der Markup-Sprache TOML 1.1 aufgenommen, die mehrzeilige eingebettete Tabellen, Escape-Sequenzen „\xHH“ zum Einfügen der hexadezimalen Darstellung von Bytes und „\e“ zum Ersetzen von „\u001B“, die Möglichkeit, ein Komma am Ende des letzten Elements zu belassen, und das Auslassen von Sekundenangaben in Zeitwerten unterstützt. serde = { version = "1.0", features = ["derive"] } kann jetzt ersetzt werden durch serde = { version = "1.0", features = ["derive"], }
  • Eine neue Reihe von APIs wurde stabilisiert und in die stabile Version überführt, einschließlich stabilisierter Methoden und Implementierungen von 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
    • Eingebettete Funktionen für x86-Anweisungen avx512fp16
    • Eingebettete Funktionen für AArch64-Anweisungen NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • Das Kennzeichen „const“ wird in Funktionen angewendet:
    • f32::mul_add
    • f64::mul_add
  • Die Plattform riscv64im-unknown-none-elf wurde auf die dritte Unterstützungsstufe hochgestuft. Die dritte Stufe umfasst grundlegende Unterstützung, jedoch ohne automatisierte Tests, Veröffentlichung offizieller Builds und Überprüfung der Möglichkeit des Codierens.

Zusätzlich sind kürzlich angekündigte Projekte und Veranstaltungen im Zusammenhang mit Rust zu erwähnen:

  • Ayrton Muñoz, der einst die Unterstützung der Sony PlayStation 1 im Rust-Compiler umgesetzt hat und an der Portierung von FreeBSD auf Apple Silicon Prozessoren arbeitete, hat für FreeBSD die Möglichkeit geschaffen, Kernkomponenten und Gerätetreiber in Rust zu entwickeln. Zur Testung wurde ein Satz von KPI-Bindungen (Kernel Programming Interface) vorgeschlagen, die es ermöglichen, Rust-Code im FreeBSD-Kernel zu verwenden. Zudem wurde ein mit diesen Bindungen entwickelter virtio-Audiotreiber (virtio_snd), der HID-Treiber DockChannel für die Tastatur im M2 MacBook und mehrere Low-Level-Treiber für die Mac-Subsysteme mit Apple Silicon-Chips erstellt.

    Es wird angemerkt, dass die Arbeit an den Rust-Bindungen seit Ende 2024 erfolgt. Bisher ist in den Bindungen nur ein Teil der C-KPI implementiert, und sie werden als instabil angesehen, jedoch wird angestrebt, die Stabilität im Laufe der Zeit auf ein Niveau zu bringen, das dem analog zu C entspricht. Der als Beispiel vorgeschlagene Treiber virtio_snd eignet sich für die Musikwiedergabe in QEMU. Es wird erwartet, dass die Rust-Bindungen bis 2026 ausreichend stabilisiert sind, damit interessierte Entwickler damit beginnen können, Code zu schreiben.

  • Benny Siegert, der an der Entwicklung von NetBSD beteiligt ist, hat die Gründe dargelegt, warum die Unterstützung der Programmiersprache Rust nicht im NetBSD-Kernel integriert wird: NetBSD unterstützt Architekturen, die Rust nicht verfügbar haben; die Pflege des vorhandenen Rust-Toolkits in pkgsrc erfordert erhebliche Anstrengungen und wird von nur wenigen Entwicklern begleitet; die Unterstützung von Rust im Kernel würde die Einbeziehung des Rust-Compilers in das Basissystem erfordern; beim Bootstrapping von Rust in NetBSD wird eine alte Version des Binärpakets verwendet, was für selbsttragende Distributionen, die als Quellcode verteilt werden, inakzeptabel ist; die Release-Zyklen von Rust sind inkompatibel mit dem Entwicklungszyklus von NetBSD und der Pflege älterer Zweige (zum Beispiel wird die im Jahr 2020 veröffentlichte NetBSD 9 weiterhin unterstützt, was in diesem Kontext die Bereitstellung und Wartung eines sechs Jahre alten Rust-Compilers erforderlich machen würde).
  • Die Veröffentlichung von Turso 0.5, einer in Anwendungen integrierbaren Datenbankmanagementsystem (DBMS), das in Rust geschrieben wurde und mit SQLite auf SQL-Dialekt-Ebene kompatibel ist, wurde angekündigt. Zu den erweiterten Funktionen gehört der CDC-Mechanismus (Change Data Capture) zur Echtzeitüberwachung von Datenbankänderungen, die Nutzung von io_uring für asynchronen Input/Output unter Linux, Unterstützung für Vektorsuche, die Möglichkeit, mit dem ALTER-Befehl das Schema der Datenbank zu ändern, Datenverschlüsselung in der Datenbank, ein Modus für inkrementelle Berechnungen und die Konstruktionsmöglichkeit „BEGIN CONCURRENT“.
  • Ein Projekt zur Bereitstellung der Möglichkeit, die Standard-Rust-Bibliothek in Programmen zu verwenden, die auf der GPU ausgeführt werden.
  • Emuko — ein RISC-V-Emulator, geschrieben in Rust, der Linux laden kann, JIT-Kompilierung unterstützt und in der Lage ist, Status-Snapshots zu speichern und wiederherzustellen.
  • RustConn (flatpak) — eine grafische Benutzeroberfläche zur Verwaltung externer Netzwerkverbindungen zu anderen Hosts, die SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust und SFTP unterstützt. Der Code ist in Rust mit GTK4 und Wayland geschrieben.
  • Eine neue Version des Projekts zlib-rs 0.6 wurde vorgestellt, die als erste stabile Version gekennzeichnet ist und vollständig mit der zlib C API kompatibel ist, sodass sie zlib transparent ersetzen kann. Das Projekt zielt darauf ab, eine sichere Alternative zur Kompressionsbibliothek zlib zu schaffen. Die Entwicklung orientiert sich am Projekt zlib-ng, das eine leistungsstarke Version von zlib entwickelt.
  • Das Projekt vcad wurde präsentiert, das ein parametrisches System für computergestütztes Design (CAD) entwickelt, das in Rust geschrieben ist und sich mit AI-Agenten über das MCP-Protokoll integrieren lässt. Es unterstützt 3D-Modellierung, Simulation, die Arbeit mit 2D-Skizzen, die Baugruppenmontage sowie den Import im STEP-Format und den Export im STL/GLB/STEP/DXF-Format.
  • Ein Spracherkennungssystem wurde veröffentlicht, das in Rust geschrieben ist und das AI-Modell Mistral Voxtral Mini 4B Realtime sowie das Machine-Learning-Framework Burn verwendet. Das Projekt richtet sich an die Echtzeit-Spracherkennung zur Erstellung von Transkriptionen während des Livestreaming.
  • Die Version 0.22 des c2rust-Tools, das dazu dient, C-Code (C99) in eine unsichere Rust-Darstellung zu übersetzen, die strukturell dem ursprünglichen C-Code ähnelt, wurde veröffentlicht. Der erhaltene Arbeitsrahmen kann verwendet werden, um schrittweise auf idiomatisches Rust zu migrieren und unsichere Blöcke zu beseitigen.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster