Έκδοση Rust 1.94. Πειραματισμός με το Rust στον πυρήνα του FreeBSD. Βάση δεδομένων Turso και VCAD στο Rust

Κυκλοφόρησε η γλώσσα προγραμματισμού Rust 1.94, η οποία ιδρύθηκε από το έργο Mozilla, αλλά τώρα αναπτύσσεται υπό την αιγίδα του ανεξάρτητου μη κερδοσκοπικού οργανισμού Rust Foundation. Η γλώσσα εστιάζει στην ασφάλεια της μνήμης και παρέχει εργαλεία για την επίτευξη υψηλού παραλληλισμού στην εκτέλεση εργασιών, χωρίς τη χρήση ενός συλλέκτη απορριμμάτων και χρόνου εκτέλεσης (ο χρόνος εκτέλεσης περιορίζεται σε βασική αρχικοποίηση και συντήρηση της τυπικής βιβλιοθήκης).

Οι μέθοδοι διαχείρισης μνήμης της Rust έχουν σχεδιαστεί για να εξαλείφουν σφάλματα στον χειρισμό δεικτών και να προστατεύουν από προβλήματα που προκύπτουν από τη διαχείριση μνήμης χαμηλού επιπέδου, όπως η πρόσβαση στη μνήμη μετά την απελευθέρωσή της, η κατάργηση αναφοράς σε null δείκτες, οι υπερβάσεις buffer κ.ο.κ. Το έργο αναπτύσσει τον διαχειριστή πακέτων Cargo για τη διανομή βιβλιοθηκών, τη διευκόλυνση μεταγλωττίσεων και τη διαχείριση εξαρτήσεων. Το αποθετήριο crates.io συντηρείται για τη φιλοξενία βιβλιοθηκών.

Η ασφάλεια της μνήμης παρέχεται στο Rust κατά τη στιγμή της μεταγλώττισης μέσω ελέγχου αναφοράς, παρακολούθησης της ιδιοκτησίας αντικειμένων, παρακολούθησης της διάρκειας ζωής των αντικειμένων (πεδίων) και αξιολόγησης της ορθότητας της πρόσβασης στη μνήμη κατά την εκτέλεση του κώδικα. Το Rust παρέχει επίσης προστασία έναντι υπερχείλισης ακεραίων, απαιτεί υποχρεωτική αρχικοποίηση τιμών μεταβλητών πριν από τη χρήση, χειρίζεται καλύτερα τα σφάλματα στην τυπική βιβλιοθήκη, εφαρμόζει την έννοια των αμετάβλητων αναφορών και μεταβλητών από προεπιλογή, προσφέρει ισχυρή στατική πληκτρολόγηση για την ελαχιστοποίηση των λογικών σφαλμάτων.

Βασικές καινοτομίες:

  • Ο τύπος slice έχει πλέον μια μέθοδο array_windows. Αυτή η μέθοδος δημιουργεί έναν επαναλήπτη για τη διέλευση slices σε παράθυρα σταθερού μεγέθους που προωθούν ένα στοιχείο κάθε φορά. Σε αντίθεση με την προηγουμένως διαθέσιμη μέθοδο windows, η array_windows λειτουργεί με σταθερό μέγεθος παραθύρου και επιστρέφει μια αναφορά σε έναν πίνακα σταθερού μεγέθους (&[T; N]) αντί για ένα slice απροσδιόριστου μεγέθους (&[T]) για κάθε επανάληψη. Δεδομένου ότι το μέγεθος του πίνακα είναι αρχικά γνωστό στον μεταγλωττιστή, η απόδοση μπορεί να βελτιωθεί αποφεύγοντας τον έλεγχο ορίων σε κάθε στάδιο επανάληψης. 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());
  • Τα αρχεία διαμόρφωσης του διαχειριστή πακέτων Cargo (.cargo/config.toml) εφαρμόζουν την οδηγία "include", η οποία σας επιτρέπει να εισάγετε επιτόπου τα περιεχόμενα άλλων αρχείων. include = [ "frodo.toml", "samwise.toml", ] include = [ { path = "required.toml" }, { path = "optional.toml", optional = true }, ]
  • Έχει προστεθεί υποστήριξη για τη νέα έκδοση της γλώσσας σήμανσης TOML 1.1 στα αρχεία manifest και διαμόρφωσης. Αυτή η νέα έκδοση προσθέτει υποστήριξη για ενσωματωμένους πίνακες πολλαπλών γραμμών, την ακολουθία διαφυγής "\xHH" για την εισαγωγή δεκαεξαδικών αναπαραστάσεων byte και την ακολουθία διαφυγής "\e" για το "\u001B", μαζί με τη δυνατότητα να αφήνεται ένα κόμμα στο τέλος του τελευταίου στοιχείου και να παραλείπονται δευτερόλεπτα στις χρονικές τιμές. Το serde = { version = "1.0", features = ["derive"] } μπορεί πλέον να αντικατασταθεί με serde = { version = "1.0", features = ["derive"], }
  • Ένα νέο τμήμα του API έχει μετακινηθεί στην κατηγορία των σταθερών, συμπεριλαμβανομένων των μεθόδων και των εφαρμογών των χαρακτηριστικών έχουν σταθεροποιηθεί:
    • <[T]>::array_windows
    • <[T]>::element_offset
    • LazyCell::get
    • LazyCell::get_mut
    • LazyCell::force_mut
    • LazyLock::get
    • LazyLock::get_mut
    • LazyLock::force_mut
    • impl TryFrom για χρήση
    • std::iter::Peekable::next_if_map
    • std::iter::Peekable::next_if_map_mut
    • Ενδογενείς οδηγίες για x86 avx512fp16
    • Εγγενή στοιχεία για τις οδηγίες AArch64 NEON fp16
    • f32::consts::EULER_GAMMA
    • f64::consts::EULER_GAMMA
    • f32::consts::GOLDEN_RATIO
    • f64::consts::GOLDEN_RATIO
  • Το σύμβολο «const» χρησιμοποιείται στις συναρτήσεις:
    • f32::mul_add
    • f64::mul_add
  • Η πλατφόρμα riscv64im-unknown-none-elf έχει μετακινηθεί στο επίπεδο υποστήριξης 3. Το επίπεδο υποστήριξης 3 περιλαμβάνει βασική υποστήριξη, αλλά δεν περιλαμβάνει αυτοματοποιημένους ελέγχους, επίσημες εκδόσεις έκδοσης ή επαλήθευση έκδοσης.

Επιπλέον, θα θέλαμε να επισημάνουμε πρόσφατα ανακοινωθέντα έργα και εκδηλώσεις που σχετίζονται με το Rust:

  • Ο Ayrton Muñoz, ο οποίος υλοποίησε υποστήριξη για την πλατφόρμα Sony PlayStation 1 στον μεταγλωττιστή Rust και μετέφερε το FreeBSD σε υπολογιστές με τσιπ Apple Silicon, υλοποίησε τη δυνατότητα εγγραφής στοιχείων πυρήνα και προγραμμάτων οδήγησης συσκευών στο Rust για FreeBSD. Ένα σύνολο συνδέσεων KPI (Kernel Programming Interface) που επιτρέπουν τη χρήση κώδικα Rust στον πυρήνα FreeBSD έχει παρασχεθεί για δοκιμή, μαζί με το πρόγραμμα οδήγησης ήχου virtio (virtio_snd), το πρόγραμμα οδήγησης DockChannel HID για το πληκτρολόγιο M2 MacBook και αρκετούς οδηγούς χαμηλού επιπέδου για υποσυστήματα υπολογιστών Mac σε τσιπ Apple Silicon, όλα δημιουργημένα χρησιμοποιώντας αυτές τις συνδέσεις.

    Οι εργασίες σχετικά με τις συνδέσεις Rust συνεχίζονται από τα τέλη του 2024. Προς το παρόν, οι συνδέσεις εφαρμόζουν μόνο ένα μέρος των C-KPI και θεωρούνται ασταθείς, αλλά με την πάροδο του χρόνου, σχεδιάζεται να βελτιωθεί η σταθερότητά τους ώστε να ταιριάζει με αυτή μιας παρόμοιας διεπαφής για τη γλώσσα C. Το πρόγραμμα οδήγησης virtio_snd, που προτείνεται ως παράδειγμα, είναι κατάλληλο για την αναπαραγωγή μουσικής στο QEMU. Αναμένεται ότι έως το 2026, οι συνδέσεις Rust θα είναι αρκετά σταθερές ώστε οι ενδιαφερόμενοι προγραμματιστές να αρχίσουν να τις χρησιμοποιούν για τη σύνταξη κώδικα.

  • Ο προγραμματιστής του NetBSD, Benny Siegert, πρότεινε μια λογική εξήγηση για το γιατί η υποστήριξη Rust δεν θα εμφανίζεται στον πυρήνα του NetBSD: Το NetBSD υποστηρίζει αρχιτεκτονικές για τις οποίες δεν είναι διαθέσιμο το Rust. Η διατήρηση της υπάρχουσας αλυσίδας εργαλείων Rust στο pkgsrc αποτελεί σημαντική προσπάθεια και υποστηρίζεται μόνο από λίγους προγραμματιστές. Η υποστήριξη πυρήνα για το Rust απαιτεί την συμπερίληψη του μεταγλωττιστή Rust στο βασικό σύστημα. Η εκκίνηση του Rust στο NetBSD χρησιμοποιεί ένα παλαιότερο δυαδικό πακέτο, το οποίο είναι απαράδεκτο για αυτοτελείς διανομές που διανέμονται ως πηγαίος κώδικας. Οι κύκλοι κυκλοφορίας του Rust δεν είναι συμβατοί με τους κύκλους ανάπτυξης και υποστήριξης του NetBSD για τους παλαιότερους κλάδους (για παράδειγμα, το NetBSD 9, που κυκλοφόρησε το 2020, συνεχίζει να υποστηρίζεται, κάτι που θα απαιτούσε την αποστολή και την υποστήριξη ενός εξαετούς μεταγλωττιστή Rust).
  • Опубликован выпуск встраиваемой в приложения СУБД Turso 0.5, написанной на языке Rust и совместимой с SQLite на уровне диалекта SQL, формата файлов БД и C API. Из расширенных возможностей отмечается механизм CDC (Change data capture) для отслеживания изменения БД в реальном времени, использование io_uring для асинхронного ввода/вывода в Linux, поддержка векторного поиска, наличие выражения ALTER для изменения схемы БД, возможность шифрования данных в БД, режим инкрементальных вычислений, конструкция «BEGIN CONCURRENT».
  • Ένα έργο που επιτρέπει τη χρήση της τυπικής βιβλιοθήκης Rust σε προγράμματα από την πλευρά της GPU.
  • Emuko — эмулятор RISC-V, написанный на Rust, способный загружать Linux, поддерживающий JIT-компиляцию, способный сохранять и восстанавливать снапшоты состояния.
  • Το RustConn (flatpak) είναι μια γραφική διεπαφή για τη διαχείριση εξωτερικών συνδέσεων δικτύου με άλλους κεντρικούς υπολογιστές, υποστηρίζοντας SSH, RDP, VNC, SPICE, Telnet, Serial, Kubernetes, Zero Trust και SFTP. Ο κώδικας είναι γραμμένος σε Rust χρησιμοποιώντας GTK4 και Wayland.
  • Κυκλοφόρησε ένας νέος κλάδος του έργου zlib-rs 0.6, ο οποίος αποτελεί την πρώτη σταθερή έκδοση πλήρως συμβατή με το zlib C API και κατάλληλη για μια διαφανή αντικατάσταση του zlib. Το έργο στοχεύει στη δημιουργία μιας ασφαλούς εναλλακτικής λύσης στη βιβλιοθήκη συμπίεσης δεδομένων zlib. Η ανάπτυξη γίνεται με επίκεντρο το έργο zlib-ng, το οποίο αναπτύσσει μια παραλλαγή υψηλής απόδοσης του zlib.
  • Το έργο VCAD είναι η ανάπτυξη ενός παραμετρικού συστήματος σχεδιασμού με τη βοήθεια υπολογιστή (CAD) γραμμένου σε Rust και ενσωματωμένου με πράκτορες τεχνητής νοημοσύνης χρησιμοποιώντας το πρωτόκολλο MCP. Υποστηρίζει τρισδιάστατη μοντελοποίηση, προσομοίωση, δισδιάστατη σχεδίαση, συναρμολόγηση εξαρτημάτων, εισαγωγή STEP και εξαγωγή STL/GLB/STEP/DXF.
  • Έχει δημοσιευτεί ένα σύστημα αναγνώρισης ομιλίας γραμμένο σε Rust και χρησιμοποιώντας το μοντέλο Mistral Voxtral Mini 4B Realtime AI και το πλαίσιο μηχανικής μάθησης Burn. Το έργο επικεντρώνεται στην αναγνώριση ομιλίας εν κινήσει για μεταγραφή ζωντανής ροής.
  • Κυκλοφόρησε το κιτ εργαλείων c2rust 0.22. Έχει σχεδιαστεί για τη μετάφραση κώδικα C (C99) σε μια μη ασφαλή αναπαράσταση Rust, παρόμοιας δομής με τον αρχικό κώδικα C. Το προκύπτον πλαίσιο εργασίας μπορεί να χρησιμοποιηθεί για σταδιακή μετάβαση σε ιδιωματική Rust και την αφαίρεση μη ασφαλών μπλοκ.

Πηγή: opennet.ru

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster