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

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

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

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

  • Ο διαχειριστής πακέτων Cargo έχει τη δυνατότητα να συγχωνεύει διπλότυπα σφάλματα και προειδοποιήσεις που εμφανίζονται κατά τη διάρκεια μιας κατασκευής. Κατά την εκτέλεση εντολών όπως "cargo test" και "cargo check --all-targets" που καταλήγουν σε πολλαπλές εκδόσεις ενός πακέτου με διαφορετικές παραμέτρους, εμφανίζεται τώρα στον χρήστη μια σύνοψη της εμφάνισης ενός επαναλαμβανόμενου προβλήματος, αντί να εμφανίζεται πολλαπλές πανομοιότυπες προειδοποιήσεις όταν δημιουργείτε το ίδιο πράγμα επανειλημμένα.αρχείο. $ cargo +1.55.0 έλεγχος —όλα τα targets Έλεγχος foo v0.1.0 προειδοποίηση: η συνάρτηση δεν χρησιμοποιείται ποτέ: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = σημείωση: '#[warn(dead_code)]' από προεπιλογή προειδοποίηση: 'foo' (lib) δημιούργησε 1 προειδοποίηση: 'foo' (lib test) δημιούργησε 1 προειδοποίηση (1 διπλότυπο) Ολοκληρωμένος στόχος προγραμματιστής [μη βελτιστοποιημένη + εντοπισμός σφαλμάτων] (s) σε 0.84 δευτ
  • Ο κώδικας ανάλυσης κινητής υποδιαστολής στην τυπική βιβλιοθήκη έχει μετακινηθεί για να χρησιμοποιηθεί ο ταχύτερος και ακριβέστερος αλγόριθμος Eisel-Lemire, ο οποίος έχει επιλύσει ορισμένα προβλήματα που παρατηρήθηκαν προηγουμένως με τη στρογγυλοποίηση και την ανάλυση αριθμών με πολύ μεγάλους αριθμούς ψηφίων.
  • Η δυνατότητα καθορισμού μη κλειστών περιοχών σε πρότυπα έχει σταθεροποιηθεί (το "X.." ερμηνεύεται ως ένα εύρος που ξεκινά με την τιμή X και τελειώνει με τη μέγιστη τιμή του ακέραιου τύπου): αντιστοιχίστε το x ως u32 { 0 => println! ("μηδέν!"), 1.. => println!("θετικός αριθμός!"), }
  • Εκτεταμένες παραλλαγές σφάλματος που καλύπτονται από το std::io::ErrorKind (ταξινομεί τα σφάλματα σε κατηγορίες όπως το NotFound και το WouldBlock). Προηγουμένως, τα σφάλματα που δεν χωρούσαν σε υπάρχουσες κατηγορίες ανήκαν στην κατηγορία ErrorKind::Other, η οποία χρησιμοποιήθηκε επίσης για σφάλματα σε κώδικα τρίτων κατασκευαστών. Υπάρχει τώρα μια ξεχωριστή εσωτερική κατηγορία ErrorKind::Uncategorized για σφάλματα που δεν ταιριάζουν σε υπάρχουσες κατηγορίες και η κατηγορία ErrorKind::Other περιορίζεται σε σφάλματα που δεν εμφανίζονται στην τυπική βιβλιοθήκη (τυπικές συναρτήσεις βιβλιοθήκης που επιστρέφουν io::Error δεν χρησιμοποιείτε πλέον την κατηγορία ErrorKind:: Άλλο).
  • Ένα νέο τμήμα του API έχει μετακινηθεί στην κατηγορία των σταθερών, συμπεριλαμβανομένων των μεθόδων και των εφαρμογών των χαρακτηριστικών έχουν σταθεροποιηθεί:
    • Δεμένο::κλωνοποιημένο
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • ΊσωςUninit::assume_init_mut
    • ΊσωςUninit::assume_init_ref
    • MaybeUninit::write
    • πίνακας:: χάρτης
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Το χαρακτηριστικό "const", το οποίο καθορίζει τη δυνατότητα χρήσης του σε οποιοδήποτε περιβάλλον αντί για σταθερές, χρησιμοποιείται στη μέθοδο str::from_utf8_unchecked.
  • Το τρίτο επίπεδο υποστήριξης έχει εφαρμοστεί για την πλατφόρμα powerpc64le-unknown-freebsd. Το τρίτο επίπεδο περιλαμβάνει βασική υποστήριξη, αλλά χωρίς αυτοματοποιημένες δοκιμές, δημοσίευση επίσημων εκδόσεων ή έλεγχο του αν μπορεί να κατασκευαστεί ο κώδικας.

Πηγή: opennet.ru

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