Versione 1.94 di Rust. Sperimentare Rust nel kernel FreeBSD. Database Turso e VCAD in Rust.

È stato rilasciato il linguaggio di programmazione Rust 1.94, fondato dal progetto Mozilla ma ora sviluppato sotto gli auspici dell'organizzazione indipendente no-profit Rust Foundation. Il linguaggio si concentra sulla sicurezza della memoria e fornisce strumenti per ottenere un elevato parallelismo nell'esecuzione dei task, senza l'uso di un garbage collector e di un runtime (il runtime è ridotto all'inizializzazione di base e alla manutenzione della libreria standard).

I metodi di gestione della memoria di Rust sono progettati per eliminare gli errori nella manipolazione dei puntatori e proteggere dai problemi derivanti dalla gestione della memoria di basso livello, come l'accesso alla memoria dopo che è stata liberata, la dereferenziazione dei puntatori nulli, i buffer overrun e così via. Il progetto sta sviluppando il gestore di pacchetti Cargo per distribuire le librerie, facilitare le build e gestire le dipendenze. Il repository crates.io è gestito per l'hosting delle librerie.

La sicurezza della memoria viene fornita in Rust in fase di compilazione attraverso il controllo dei riferimenti, tenendo traccia della proprietà dell'oggetto, tenendo traccia della durata dell'oggetto (scopi) e valutando la correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce anche protezione contro gli overflow di numeri interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili per impostazione predefinita, offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

Principali innovazioni:

  • Il tipo slice ora dispone di un metodo array_windows. Questo metodo crea un iteratore per attraversare le slice in finestre di dimensione fissa che avanzano di un elemento alla volta. A differenza del metodo windows precedentemente disponibile, array_windows opera su una dimensione di finestra costante e restituisce un riferimento a un array di dimensione fissa (&[T; N]) anziché a una slice di dimensione indefinita (&[T]) per ogni iterazione. Poiché la dimensione dell'array è inizialmente nota al compilatore, è possibile migliorare le prestazioni evitando il controllo dei limiti a ogni fase dell'iterazione. 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]); affermare!(iter.next().is_none());
  • I file di configurazione del gestore pacchetti Cargo (.cargo/config.toml) implementano la direttiva "include", che consente di inserire sul posto il contenuto di altri file. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • Il supporto per la nuova versione del linguaggio di markup TOML 1.1 è stato aggiunto ai file manifest e di configurazione. Questa nuova versione aggiunge il supporto per tabelle incorporate multi-riga, la sequenza di escape "\xHH" per l'inserimento di rappresentazioni di byte esadecimali e la sequenza di escape "\e" per "\u001B", oltre alla possibilità di lasciare una virgola finale alla fine dell'ultimo elemento e di omettere i secondi nei valori di tempo. serde = { version = "1.0", features = ["derive"] } può ora essere sostituito con serde = { version = "1.0", features = ["derive"], }
  • Una nuova porzione dell'API è stata spostata nella categoria stabile, inclusi i metodi e le implementazioni dei tratti sono stati stabilizzati:
    • <[T]>::array_windows
    • <[T]>::offset_elemento
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • impl ProvaDa per l'uso
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • Intrinseche per le istruzioni x86 avx512fp16
    • Intrinseci per le istruzioni AArch64 NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::RAPPORTO_AUREO
    • f64::consts::RAPPORTO_AUREO
  • Il segno “const” viene utilizzato nelle funzioni:
    • f32::mul_add
    • f64::mul_add
  • La piattaforma riscv64im-unknown-none-elf è stata spostata al livello di supporto 3. Il livello di supporto 3 include il supporto di base, ma non include test automatizzati, rilasci di build ufficiali o verifica delle build.

Inoltre, vorremmo evidenziare i progetti e gli eventi annunciati di recente relativi a Rust:

  • Ayrton Muñoz, che ha implementato il supporto per la piattaforma Sony PlayStation 1 nel compilatore Rust e ha portato FreeBSD su computer con chip Apple Silicon, ha implementato la possibilità di scrivere componenti del kernel e driver di dispositivo in Rust per FreeBSD. È stato fornito un set di binding KPI (Kernel Programming Interface) che consentono l'uso del codice Rust nel kernel FreeBSD per i test, insieme al driver audio virtio (virtio_snd), al driver DockChannel HID per la tastiera del MacBook M2 e a diversi driver di basso livello per sottosistemi di computer Mac con chip Apple Silicon, tutti creati utilizzando questi binding.

    Il lavoro sui binding Rust è in corso dalla fine del 2024. Attualmente, i binding implementano solo una parte dei C-KPI e sono considerati instabili, ma nel tempo si prevede di migliorarne la stabilità per eguagliarla a quella di un'interfaccia simile per il linguaggio C. Il driver virtio_snd, proposto come esempio, è adatto per la riproduzione di musica in QEMU. Si prevede che entro il 2026 i binding Rust saranno sufficientemente stabili da consentire agli sviluppatori interessati di iniziare a utilizzarli per la scrittura di codice.

  • Lo sviluppatore di NetBSD Benny Siegert ha spiegato perché il supporto a Rust non apparirà nel kernel di NetBSD: NetBSD supporta architetture per le quali Rust non è disponibile; mantenere la toolchain Rust esistente in pkgsrc è uno sforzo notevole ed è supportato solo da pochi sviluppatori; il supporto del kernel per Rust richiede che il compilatore Rust sia incluso nel sistema di base; il bootstrap di Rust su NetBSD utilizza un pacchetto binario legacy, il che è inaccettabile per distribuzioni autonome distribuite come sorgente; i cicli di rilascio di Rust sono incompatibili con i cicli di sviluppo e supporto di NetBSD (ad esempio, NetBSD 9, rilasciato nel 2020, continua a essere supportato, il che richiederebbe la distribuzione e il supporto di un compilatore Rust vecchio di sei anni).
  • Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
  • Un progetto per consentire l'uso della libreria standard Rust nei programmi lato GPU.
  • Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
  • RustConn (flatpak) è un'interfaccia grafica per la gestione delle connessioni di rete esterne verso altri host, che supporta SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust e SFTP. Il codice è scritto in Rust utilizzando GTK4 e Wayland.
  • È stata rilasciata una nuova versione del progetto zlib-rs 0.6, che la rende la prima versione stabile completamente compatibile con l'API C di zlib e adatta a sostituire in modo trasparente zlib. Il progetto mira a creare un'alternativa sicura alla libreria di compressione dati zlib. Lo sviluppo è incentrato sul progetto zlib-ng, che sviluppa una variante ad alte prestazioni di zlib.
  • Il progetto VCAD è lo sviluppo di un sistema di progettazione assistita da computer (CAD) parametrico scritto in Rust e integrato con agenti di intelligenza artificiale tramite il protocollo MCP. Supporta la modellazione 3D, la simulazione, lo sketching 2D, l'assemblaggio di componenti, l'importazione STEP e l'esportazione STL/GLB/STEP/DXF.
  • È stato pubblicato un sistema di riconoscimento vocale scritto in Rust che utilizza il modello di intelligenza artificiale in tempo reale Mistral Voxtral Mini 4B e il framework di apprendimento automatico Burn. Il progetto si concentra sul riconoscimento vocale al volo per la trascrizione in streaming live.
  • È stato rilasciato il toolkit c2rust 0.22. È progettato per tradurre il codice C (C99) in una rappresentazione Rust non sicura, simile nella struttura al codice C originale. Il framework di lavoro risultante può essere utilizzato per la migrazione graduale a Rust idiomatico e la rimozione dei blocchi non sicuri.

Fonte: opennet.ru

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster