Κυκλοφορία γλώσσας προγραμματισμού Rust 1.69

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

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

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

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

  • Ο διαχειριστής πακέτων Cargo εφαρμόζει την ανίχνευση προειδοποιήσεων που μπορούν να επιλυθούν αυτόματα και την έξοδο των κατάλληλων συστάσεων για την εκτέλεση «cargo fix» ή «cargo clippy -fix». προειδοποίηση: αχρησιμοποίητη εισαγωγή: 'std::hash::Hash' —> src/main.rs:1:5 | 1 | χρησιμοποιήστε std::hash::Hash; | ^^^^^^^^^^^^^^^^ | = σημείωση: '#[warn(unused_imports)]' από προεπιλογή προειδοποίηση: 'foo' (bin "foo") δημιούργησε 1 προειδοποίηση (εκτελέστε 'cargo fix — bin "foo"' για να εφαρμόσετε 1 πρόταση)
  • Η Cargo έχει προσθέσει μια έξοδο σύστασης για τη χρήση της εντολής "cargo add" όταν προσπαθείτε να εγκαταστήσετε μια βιβλιοθήκη με την εντολή "cargo install".
  • Για να μειωθεί ο χρόνος μεταγλώττισης, η συμπερίληψη πληροφοριών εντοπισμού σφαλμάτων στα σενάρια έκδοσης έχει διακοπεί από προεπιλογή. Εάν τα σενάρια δημιουργίας εκτελούνται με επιτυχία, η αλλαγή δεν θα έχει ως αποτέλεσμα ορατές διαφορές, αλλά εάν προκύψουν αποτυχίες, η ένδειξη παρακολούθησης θα περιέχει λιγότερες πληροφορίες. Για να επιστρέψετε την παλιά συμπεριφορά στο Cargo.toml θα πρέπει να προσθέσετε: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Ένα νέο τμήμα του API έχει μετακινηθεί στην κατηγορία των σταθερών, συμπεριλαμβανομένων των μεθόδων και των εφαρμογών των χαρακτηριστικών έχουν σταθεροποιηθεί:
    • CStr::from_bytes_until_nul
    • πυρήνας::ffi::FromBytesUntilNulError
  • Το χαρακτηριστικό "const", το οποίο καθορίζει τη δυνατότητα χρήσης του σε οποιοδήποτε πλαίσιο αντί για σταθερές, χρησιμοποιείται στις συναρτήσεις:
    • SocketAddr::new
    • SocketAddr::ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::new
    • SocketAddrV4::ip
    • SocketAddrV4::port
    • SocketAddrV6::new
    • SocketAddrV6::ip
    • SocketAddrV6::port
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Προστέθηκε η δυνατότητα χρήσης σημαιών true και false σε ορίσματα μεταγλωττιστή.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο