Προγραμματισμός

Τι νέο υπάρχει στο Rust 1.48

Η μοναδική προσέγγιση της γλώσσας προγραμματισμού Rust οδηγεί σε καλύτερο κώδικα με λιγότερους συμβιβασμούς από τους C, C ++, Go και τις άλλες γλώσσες που πιθανώς χρησιμοποιείτε. Επίσης ενημερώνεται τακτικά, συχνά κάθε μήνα.

Πού να κατεβάσετε την τελευταία έκδοση Rust

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

Σταθερή ενημέρωση $ rustup

Σχετικό βίντεο: Ανάπτυξη ασφαλέστερου λογισμικού με το Rust

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

Τα νέα χαρακτηριστικά στο Rust 1.48.0

Παρουσιάστηκε στις 19 Νοεμβρίου 2020, το Rust 1.48.0 διαθέτει ευκολότερη σύνδεση στο εργαλείο τεκμηρίωσης της βιβλιοθήκης Rustdoc, με σύνταξη για να ενημερώνει το Rustdoc όταν οι προγραμματιστές προσπαθούν να συνδεθούν σε έναν τύπο. Θα δημιουργηθούν διευθύνσεις URL. Επίσης στην έκδοση 1.48.0:

  • Οι προγραμματιστές μπορούν να καθορίσουν # {doc (ψευδώνυμο = "")] σε στοιχεία για να προσθέσετε ψευδώνυμα αναζήτησης κατά την αναζήτηση μέσω του Rustdoc UI.
  • ο επισφαλής Η λέξη-κλειδί επιτρέπεται τώρα συντακτικά σε ενότητες. Ενώ εξακολουθεί να απορρίπτεται σημασιολογικά, αυτό μπορεί τώρα να αναλυθεί από διαδικαστικές μακροεντολές.
  • Στον μεταγλωττιστή, το -C σύνδεσμος αυτόνομος = η σημαία του μεταγλωττιστή σταθεροποιείται. Αυτό λέει rustc εάν θα συνδέσει το δικό του C χρόνο εκτέλεσης και βιβλιοθήκες ή θα βασιστεί σε έναν εξωτερικό σύνδεσμο για να τα βρει. Αυτό υποστηρίζεται μόνο στις windows-gnu, linux-musl, και ήμουν πλατφόρμες.
  • Στη βιβλιοθήκη, το [Τ; N]: TryFrom Το API είναι πλέον σταθερό. Οι προγραμματιστές μπορούν να το χρησιμοποιήσουν για να προσπαθήσουν να μετατρέψουν ένα διάνυσμα σε μια σειρά δεδομένου μήκους. Σταθεροποιήθηκαν επίσης σε αυτήν την έκδοση πέντε άλλα API: slice :: as_ptr_range, slice :: as_mut_ptr_range, VecDeque :: make_contiguous, μέλλον :: εκκρεμεί, και μέλλον :: έτοιμο.
  • Επίσης, στη βιβλιοθήκη, εφαρμόζονται όλες οι συστοιχίες οποιουδήποτε μήκους Δοκιμάστε από.

Τα νέα χαρακτηριστικά στο Rust 1.47.0

Ανακοινώθηκε στις 8 Οκτωβρίου 2020, το Rust 1.47.0 δεν έχει νέα χαρακτηριστικά γλώσσας αλλά βελτιώνει την τυπική βιβλιοθήκη. Στην έκδοση παρουσιάζονται βελτιώσεις ποιότητας ζωής και εργαλειοθήκης καθώς και σταθεροποιήσεις βιβλιοθηκών. Οι σημειώσεις έκδοσης έχουν δημοσιευτεί για την αναβάθμιση.

Συγκεκριμένες δυνατότητες στο Rust 1.47.0 περιλαμβάνουν:

  • Ένα χαρακτηριστικό "const generics", που επηρεάζει τα χαρακτηριστικά σε μεγαλύτερες συστοιχίες. Το χαρακτηριστικό πρέπει ακόμη να σταθεροποιηθεί. Το Rust δεν είχε έναν τρόπο να είναι γενικό σε ακέραιες τιμές, γεγονός που προκάλεσε προβλήματα με τις συστοιχίες. Αυτή η δυνατότητα προορίζεται να αντιμετωπίσει αυτό το ζήτημα και να κάνει τους πίνακες πιο χρήσιμους.
  • Μια αναβάθμιση σε υποδομή μεταγλωττιστή LLVM 11, καθιστώντας την προεπιλογή.
  • Μικρότερες οπισθοδρομήσεις, διευκολύνοντας την εύρεση προβλημάτων.
  • rustc υποστηρίζει τώρα -C έλεγχος-ροή-προστατευτικό, μια επιλογή που θα ενεργοποιήσει την ικανότητα ασφαλείας Control Flow Guard στα Windows. Άλλες πλατφόρμες αγνοούν αυτήν τη σημαία.
  • Το Rustdoc υποστηρίζει τώρα το θέμα Ayu.
  • Εννέα API στη βασική βιβλιοθήκη σταθεροποιήθηκαν: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU και f64 :: TAU.

Τα νέα χαρακτηριστικά στο 1.46.0

Το Rust 1.46, που ανακοινώθηκε στις 27 Αυγούστου 2020, περιλαμβάνει τις ακόλουθες δυνατότητες:

  • Μπορούν τώρα να χρησιμοποιηθούν πολλά βασικά γλωσσικά χαρακτηριστικά const fn, συμπεριλαμβανομένου αν, αν αφήστεαγώνας, και πολλά άλλα.
  • ΕΝΑ # [track_caller] χαρακτηριστικό, σχεδιασμένο για τη βελτίωση των μηνυμάτων σφάλματος όταν ξεδιπλώνω πανικού και συναφείς λειτουργίες, είναι πλέον σταθερή.
  • Σε μια αλλαγή στη βιβλιοθήκη, std :: mem :: ξεχάστε είναι τώρα ένα const fn. Επίσης στη βιβλιοθήκη, δύο νέα API σταθεροποιήθηκαν: Επιλογή :: zip και vec :: Αποστράγγιση :: as_slice.
  • Για τον μεταγλωττιστή, το citylib Ο στόχος μπορεί να χρησιμοποιηθεί σε πλατφόρμες Apple iOS και tvOS.
  • Η αναδρομική ευρετηρίαση σε πλειάδες δεν απαιτεί πλέον παρενθέσεις.

Τα νέα χαρακτηριστικά στο Rust 1.45.0

Ανακοινώθηκε στις 16 Ιουλίου 2020, το Rust 1.45 περιλαμβάνει τις ακόλουθες προσθήκες και βελτιώσεις:

  • Προσφέρεται μια επιδιόρθωση για να επιδιορθωθεί κάποια μακροχρόνια αβεβαιότητα κατά τη μετάδοση μεταξύ ακέραιων και πλωτήρων.
  • Η σταθεροποίηση προσφέρεται για λειτουργικές λειτουργικές μακροεντολές σε εκφράσεις, μοτίβα και δηλώσεις. Η επέκταση της χρήσης μακροεντολών βοηθά στη χρήση του διαδικτυακού πλαισίου Rocket για το Rust.
  • Αρκετά API βιβλιοθήκης έχουν σταθεροποιηθεί, όπως Arc :: as_ptr, BTreeMap :: remove_entry, και Περιοχή :: resol__at. Η πλήρης λίστα των API μπορείτε να βρείτε στο Rust Blog.

Τα νέα χαρακτηριστικά του Rust 1.43.1

Αυτή η έκδοση σημείων κυκλοφόρησε στις 7 Μαΐου 2020, για να αντιμετωπίσει δύο παλινδρομήσεις που παρουσιάστηκαν στην σταθερή έκδοση 1,43,0. Ενημερώνει επίσης την έκδοση OpenSSL που χρησιμοποιείται από τον διαχειριστή πακέτων Cargo. Τα χαρακτηριστικά περιλαμβάνουν:

  • Το Rust 1.27 παρουσίασε υποστήριξη για την ανίχνευση λειτουργιών x86 CPU στην τυπική βιβλιοθήκη, μέσω του είναι_x86_feature_detected μακροεντολή. Λόγω εσωτερικής αναδιαμόρφωσης, το Rust 1.43.0 απέτρεψε την ανίχνευση χαρακτηριστικών που δεν μπορούν να χρησιμοποιηθούν ακόμη σε σταθερό, παρόλο που επιτρέπεται η ανίχνευσή τους στο παρελθόν. Η έκδοση 1.43.1 διορθώνει αυτήν την παλινδρόμηση.
  • Προσφέρεται μια επιδιόρθωση για σπασμένα πακέτο φορτίου - λίστα εντολή. Το Rust 1,43 έσπασε την υποστήριξη για την καταχώριση αρχείων που περιλαμβάνονται σε πακέτα που έχουν δημοσιευτεί με το Cargo, όταν εκτελούνται σε έναν χώρο εργασίας με εξαρτήσεις διαδρομής ή μη δημοσιευμένες εκδόσεις.
  • Το OpenSSL, μια εξάρτηση Cargo, έχει ενημερωθεί σε 1.1.1g. Το OpenSSL είχε κυκλοφορήσει μια συμβουλή ασφαλείας, αλλά η ομάδα του Rust δεν μπόρεσε να συμπεριλάβει την επιδιόρθωση εγκαίρως για το Rust 1.43.0. Η ομάδα δεν έχει στοιχεία ότι η ευπάθεια θα μπορούσε να θέσει σε κίνδυνο την ασφάλεια των χρηστών Cargo.

Τα νέα χαρακτηριστικά στο Rust 1.43.0

Ανακοινώθηκε στις 23 Απριλίου 2020, το Rust 1.43.0 θεωρήθηκε μια αρκετά μικρή έκδοση, χωρίς να έχουν εισαχθεί σημαντικά χαρακτηριστικά. Οι αλλαγές περιλαμβάνουν:

  • Οι προγραμματιστές μπορούν να χρησιμοποιήσουν είδος θραύσματα για παρεμβολή αντικειμένων στο σώμα του χαρακτηριστικό, εμφ, και εξωτερικός μπλοκ.
  • Το συμπέρασμα τύπου γύρω από πρωτόγονα, αναφορές και δυαδικές λειτουργίες βελτιώθηκε.
  • Για να βοηθήσει στη δοκιμή ενοποίησης, το Cargo θα ορίσει μερικές νέες μεταβλητές περιβάλλοντος για δοκιμές για να βρει εκτελέσιμα.
  • Στη βιβλιοθήκη Rust, οι προγραμματιστές μπορούν να χρησιμοποιούν άμεσα συνδεδεμένες σταθερές σε πλωτήρες και ακέραιους αριθμούς χωρίς να χρειάζεται να εισάγουν τη λειτουργική μονάδα. Επίσης, υπάρχει ένα νέο πρωτόγονος λειτουργική μονάδα που επανεξάγει πρωτόγονους τύπους σκουριάς, η οποία είναι χρήσιμη κατά τη σύνταξη μιας μακροεντολής και οι προγραμματιστές θέλουν να διασφαλίσουν ότι οι τύποι δεν σκιάζονται.
  • Αρκετά API στη βιβλιοθήκη σταθεροποιήθηκαν: Μόλις :: is_completed, f32 :: LOG10_2, f32 :: LOG2_10, f32 :: LOG10_2, f64 :: LOG10_2, f64 :: LOG2_10, και iter :: Once_with.

Τα νέα χαρακτηριστικά στο Rust 1.41

Τα νέα χαρακτηριστικά στο Rust 1.38

Το Rust 1.38, που κυκλοφόρησε τον Σεπτέμβριο του 2019, περιέχει τις ακόλουθες νέες δυνατότητες και βελτιώσεις:

  • Ο διαχειριστής πακέτων Cargo θα επωφεληθεί αυτόματα από τη συλλογή σωληνώσεων με το Rust 1.38. Με τη συλλογή σωληνώσεων, ο μεταγλωττιστής δεν χρειάζεται εξαρτήσεις πλήρως κατασκευασμένες κατά τη σύνταξη ενός κιβωτίου. Το μόνο που χρειάζεται είναι τα μεταδεδομένα τους, όπως η λίστα των τύπων εξαρτήσεων. Τα μεταδεδομένα παράγονται νωρίς στη διαδικασία σύνταξης. Ορισμένες δοκιμές έχουν δείξει αυξήσεις ταχύτητας συλλογής 10 έως 20 τοις εκατό για βελτιστοποιημένες, καθαρές κατασκευές ορισμένων γραφημάτων κιβωτίων.
  • Χρωματισμός ορισμένων λανθασμένων χρήσεων του mem :: {ενοποιημένο, μηδενισμένο}. Με αυτήν την κυκλοφορία, ο μεταγλωττιστής rustc θα παρέχει ένα χνούδι για μια στενή κατηγορία λανθασμένων αρχικοποιήσεων mem :: uninitialized ή mem :: zeroed.
  • Επέκταση του # [καταργήθηκε] χαρακτηριστικό σε μακροεντολές. Αυτό το χαρακτηριστικό επέτρεψε στους συντάκτες του κιβωτίου να ειδοποιήσουν τους χρήστες ότι ένα στοιχείο του κιβωτίου τους πρόκειται να καταργηθεί και να αφαιρεθεί σε μελλοντική κυκλοφορία.
  • Οι προγραμματιστές μπορούν να χρησιμοποιήσουν std :: any :: type_name για να λάβετε το όνομα ενός τύπου.
  • Σταθεροποίηση ορισμένων λειτουργιών, συμπεριλαμβανομένων ::εκμαγείο και ::εκμαγείο.

Τα νέα χαρακτηριστικά στο Rust 1.37

Το Rust 1.37, που κυκλοφόρησε τον Αύγουστο του 2019, έχει τις ακόλουθες νέες δυνατότητες και βελτιώσεις:

  • Ικανότητα αναφοράς απαρ παραλλαγές μέσω τύπος. Οι προγραμματιστές μπορούν επίσης να αναφερθούν απαρίθμηση παραλλαγές με Self :: Παραλλαγή.
  • ο πωλητής φορτίου εντολή, προηγουμένως ξεχωριστό κιβώτιο, είναι πλέον ενσωματωμένη στη γλώσσα. Η εντολή ανακτά τις εξαρτήσεις έργου, τις αποσυσκευάζει στον προμηθευτήκατάλογο και εμφανίζει το απόσπασμα διαμόρφωσης που απαιτείται για τη χρήση του προμηθευτή κώδικα κατά τη διάρκεια των εκδόσεων.
  • ο rustc Το πρόγραμμα μεταγλώττισης υποστηρίζει βελτιστοποίηση καθοδηγούμενη από προφίλ, μια τεχνική βελτιστοποίησης για μεταγλωττιστές μπροστά από το χρόνο, μέσω-C προφίλ-δημιουργία και -Για χρήση προφίλ.
  • Οι προγραμματιστές μπορούν να δημιουργήσουν χωρίς όνομα υπ αντικείμενα.

Τα νέα χαρακτηριστικά στο Rust 1.36

Η έκδοση 1.36 της γλώσσας προγραμματισμού συστημάτων Rust κυκλοφόρησε τον Ιούλιο του 2019. Το Rust 1.36 περιλαμβάνει τις ακόλουθες νέες δυνατότητες και βελτιώσεις:

  • Το μελλοντικό χαρακτηριστικό, που χρησιμοποιείται για την κήρυξη ασύγχρονης εργασίας, είναι τώρα σταθερό. Οι ασύγχρονες λειτουργίες στο Rust έχουν συγκεντρωθεί σε πολλά κομμάτια για αρκετές εκδόσεις τώρα, με ασύγχρονος και αναμένω είναι τα τελευταία σημαντικά κομμάτια που απομένουν.
  • Το κιβώτιο κατανομής, που χρησιμοποιείται για τη διαχείριση της μνήμης, είναι πλέον σταθερό. Αυτό το κιβώτιο συλλέγει όλα τα κομμάτια της τυπικής βιβλιοθήκης του Rust που εξαρτώνται από έναν παγκόσμιο μηχανισμό κατανομής μνήμης, όπως Vec. Με αυτόν τον τρόπο, τα κιβώτια που δεν χρησιμοποιούν την τυπική βιβλιοθήκη μπορούν ακόμα να κάνουν χρήση του εκχωρητή εισάγοντας ξεχωριστή κατανομή — χρήσιμα για περιβάλλοντα όπου θέλετε τα μεγέθη κώδικα να είναι όσο το δυνατόν πιο λιπαρά.
  • Ένας νέος τύπος, Ίσως Uninit, σας επιτρέπει να ορίσετε αντικείμενα που μπορεί να αποτελούνται από μη αρχικοποιημένη μνήμη, όπως μια συνηθισμένη σειρά. Ο προηγούμενος μηχανισμός του Rust για να γίνει αυτό ήταν μια συνάρτηση, mem :: μη αρχικοποιημένο, που ενέχει πολλούς κινδύνους σε περιστασιακή χρήση Ίσως Uninit παρέχει έναν ασφαλέστερο τρόπο για να γίνει αυτό που χρησιμοποιεί τους περιορισμούς του συστήματος τύπου Rust.
  • Η μη λεξική διάρκεια ζωής, μια δυνατότητα για τις πρόσφατες εκδόσεις του Rust, έχει υποστηριχθεί σε προηγούμενες εκδόσεις. Η μη λεξική διάρκεια ζωής καθιστά τον μηχανισμό ελέγχου δανεισμού της Rust λιγότερο δύσκολο να εργαστεί (στην ουσία, επιτρέποντάς σας να γράψετε ένα ευρύτερο φάσμα προγραμμάτων που εξακολουθούν να είναι έγκυρα Rust) και καλύτερα ικανά να αντιμετωπίσουν προβλήματα που έλειπε ο ελεγκτής δανεισμού.

Άλλες βελτιώσεις:

  • Μια νέα εφαρμογή για το HashMap τύπος που τρέχει πιο γρήγορα και χρησιμοποιεί λιγότερη μνήμη.
  • Το Cargo μπορεί πλέον να λειτουργεί εντελώς εκτός σύνδεσης, εάν χρειάζεται.

Τα νέα χαρακτηριστικά στο Rust 1.35

Η έκδοση 1.35, που κυκλοφόρησε τον Μάιο του 2019, προσφέρει τα εξής: