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

Εκμάθηση σκουριάς: Ξεκινήστε με τη γλώσσα Rust

Τα τελευταία δύο χρόνια, ο Rust έχει περάσει από μια περιέργεια που δημιουργήθηκε στο εργαστήριο ενός υπαλλήλου της Mozilla σε έναν ισχυρό υποψήφιο για τη σύνταξη της επόμενης γενιάς εγγενών εφαρμογών και λύσεων bare-metal. Αλλά αυτές οι εξελίξεις προέρχονται από τη Rust παρέχοντας τη δική της αλυσίδα εργαλείων και σύστημα διαχείρισης εξαρτημάτων - μαζί με τις δικές της δυνατότητες και ιδιότητες.

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

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

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

Κατανοήστε το Rust κάθε νύκτα, beta και σταθερές κυκλοφορίες

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

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

  • Σταθερός: Κυριότερες κυκλοφορίες σημείων, οι οποίες εμφανίζονται κάθε έξι εβδομάδες περίπου.
  • Βήτα: Οι υποψήφιοι για την επόμενη σημαντική έκδοση, που εμφανίζονται πιο συχνά.
  • Κάθε βράδυ: Η πιο άμεση κατασκευή, με πρόσβαση σε πρωτοποριακά χαρακτηριστικά, αλλά δεν εγγυάται τη σταθερότητά τους.

Όπως επεσήμανε ο προγραμματιστής Karol Kuczmarski, είναι καλύτερο να σκεφτείτε το νυχτερινό κανάλι Rust ως τη δική του γλώσσα. Ορισμένες δυνατότητες Rust, όπως η μεταγλώττιση στο WebAssembly, διατίθενται μόνο στο νυχτερινό κανάλι και μπορούν να ενεργοποιηθούν μόνο με ειδικές οδηγίες μεταγλωττιστή. Με άλλα λόγια, δεν θα συντάξουν καν στα κανάλια beta ή στα σταθερά.

Αυτό είναι σχεδιασμένο, γιατί δεν υπάρχει καμία εγγύηση ότι τα νυχτερινά χαρακτηριστικά θα υποστηρίζονται οπουδήποτε αλλού. Ωστόσο, πολλές από αυτές τις δυνατότητες τελικά αποχωρούν από το νυχτερινό κανάλι και σε beta και σταθερές κυκλοφορίες. (Η μεταγλώττιση στο WebAss Assembly, για παράδειγμα, λειτουργεί σε σταθερό από το Rust 1.30.)

Εν συντομία:

  1. Χρήση σταθερός για πραγματική παραγωγή.
  2. Χρήση βήτα για να δοκιμάσετε το τρέχον λογισμικό έναντι επερχόμενων εκδόσεων για να δείτε αν κάτι ενδέχεται να σπάσει στην αναβάθμιση.
  3. Χρησιμοποιήστε μόνο κάθε βράδυ για πειράματα με sandbox με τις νεότερες δυνατότητες του Rust.

Επιλέξτε ένα λειτουργικό σύστημα για ανάπτυξη Rust

Το Rust υποστηρίζει και τις τρεις μεγάλες πλατφόρμες - Windows, Linux και MacOS - και στις ενσαρκώσεις 32 και 64 bit, με επίσημα δυαδικά αρχεία για κάθε μία. Πολλές άλλες πλατφόρμες έχουν επίσης επίσημα δυαδικά αρχεία, αλλά δεν έχουν το ίδιο επίπεδο αυτοματοποιημένης κάλυψης δοκιμών. Αυτές οι πλατφόρμες δεύτερης κατηγορίας περιλαμβάνουν ARMv6 και ARMv7 για iOS, Android και Linux. MIPS Linux και MIPS64 Linux; 32-bit εκδόσεις x86 iOS, Windows και Linux. και WebAss Assembly. Άλλες πλατφόρμες, όπως τα Windows XP ή το πειραματικό HaikuOS, υποστηρίζονται μέσω ανεπίσημων εκδόσεων.

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

Τούτου λεχθέντος, θα πρέπει να υπάρχει διαθέσιμο υποστηριζόμενο build Rust για τη συντριπτική πλειονότητα των κοινών, βασικών περιπτώσεων χρήσης - δηλαδή, 32- και 64-bit Windows, Linux και MacOS.

Εάν σκοπεύετε να αναπτύξετε το Rust σε Windows, λάβετε υπόψη τις αλυσίδες εργαλείων σας. Το Rust υποστηρίζει δύο αλυσίδες εργαλείων στα Windows:

  • Το εγγενές Microsoft Visual C (MSVC) ABI
  • Το Gnu ABI που χρησιμοποιείται από τον σύνδεσμο GCC.

Επειδή σχεδόν όλο το λογισμικό C / C ++ που είναι ενσωματωμένο στα Windows χρησιμοποιεί MSVC ούτως ή άλλως, θα θελήσετε να χρησιμοποιήσετε την αλυσίδα εργαλείων MSVC τη συντριπτική πλειοψηφία του χρόνου. Εάν χρειάζεστε ποτέ GCC, πιθανότατα θα είναι για διαλειτουργικότητα με βιβλιοθήκες τρίτων κατασκευαστών που έχουν ενσωματωθεί στα Windows με το GCC.

Τα καλά νέα είναι ότι το σύστημα διαχείρισης αλυσίδας εργαλείων της Rust σάς επιτρέπει να διατηρείτε και τα δύο MSVC και Οι αλυσίδες εργαλείων GCC έχουν εγκατασταθεί και σας επιτρέπει να εναλλάσσετε μεταξύ τους ανά έργο ανά έργο.

Ένας από τους στόχους συλλογής του Rust είναι το WebAssembly, που σημαίνει ότι μπορείτε να γράψετε στο Rust και να το αναπτύξετε σε ένα πρόγραμμα περιήγησης ιστού. Το ίδιο το WebAss Assembly εξακολουθεί να είναι τραχύ γύρω από τις άκρες, και το ίδιο υποστηρίζει και ο Rust. Αλλά αν είστε φιλόδοξοι και θέλετε να κάνετε τα χέρια σας ακατάστατα, διαβάστε το βιβλίο που καταρτίστηκε από τους προγραμματιστές Rust και WebAss Assembly που περιγράφει λεπτομερώς τη διαδικασία σύνταξης του WebAssembly στο Rust. Το βιβλίο περιλαμβάνει ένα σεμινάριο για ένα απλό έργο, μια εφαρμογή του Conway's Game of Life, γραμμένο στο Rust και αναπτύχθηκε ως WebAssembly.

Ξεκινήστε τη ρύθμιση Rust με σκουριάς

Το Rust παρέχει ένα πρόγραμμα συντήρησης all-in-one και ένα σύστημα συντήρησης αλυσίδας εργαλείων που ονομάζεται σκουριάς. Κατεβάστε σκουριάς και τρέξτε το. θα αποκτήσει τις τελευταίες εκδόσεις της αλυσίδας εργαλείων Rust και θα τις εγκαταστήσει για εσάς.

Τα πιο κρίσιμα εργαλεία που διατηρεί η σκουριάς είναι:

  • σκουριάς εαυτό. Όποτε νέες εκδόσεις του σκουριάς ή δημοσιεύονται άλλα εργαλεία, μπορείτε απλώς να εκτελέσετε ενημέρωση rustup και τα πάντα ενημερώνονται αυτόματα.
  • rustc, ο μεταγλωττιστής Rust.
  • Cargo, διαχειριστής πακέτων και χώρου εργασίας της Rust.

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

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

Διαμορφώστε το IDE σας για το Rust

Παρά το γεγονός ότι το Rust είναι μια σχετικά νέα γλώσσα, έχει ήδη λάβει ισχυρή υποστήριξη από πολλά κοινά IDE. Ο προγραμματιστής Manuel Hoffman διατηρεί ένα έργο για την παρακολούθηση της κατάστασης αυτής της υποστήριξης στον ιστότοπο areweideyet.com.

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

Ακολουθούν τα IDE που υποστηρίζουν το Rust:

  • Το Visual Studio Code της Microsoft διαθέτει επέκταση υποστήριξης γλώσσας Rust που δημιουργήθηκε από την ομάδα εργαλείων προγραμματιστών της Rust. Αυτό το επίπεδο ολοκλήρωσης το καθιστά ένα από τα καλύτερα υποστηριζόμενα IDE για το Rust.
  • Οι χρήστες του Eclipse μπορούν να κατεβάσουν μια προσυσκευασμένη έκδοση του Eclipse for Rust development ή να χρησιμοποιήσουν το αυτόνομο Corrosion plugin για το Eclipse Photon. (Ένα παλαιότερο πακέτο, το RustDT, δεν συντηρείται πλέον.)
  • Εάν είστε λάτρης του Emacs ή του Vim, άλλοι προγραμματιστές όπως εσείς έχουν γράψει πρόσθετα ειδικά για το Rust και για τους δύο συντάκτες. Το Emacs έχει λειτουργία ειδικά για Rust και το Vim διαθέτει πρόσθετο για την επισήμανση και τη μορφοποίηση σύνταξης. Η υποστήριξη RLS είναι διαθέσιμη τόσο για τα Emacs όσο και για το Vim, αλλά πρέπει να προστεθεί και να ρυθμιστεί χειροκίνητα.
  • Οι χρήστες IntelliJ Idea και Atom μπορούν να προσθέσουν πρόσθετα για να ολοκληρώσουν την υποστήριξη Rust.
  • Το Sublime Text διαθέτει υποστήριξη σύνταξης Rust έξω από το κουτί και τα πρόσθετα παρέχουν βαθύτερη υποστήριξη για άλλες λειτουργίες.
  • Ένα έργο για τη δημιουργία ενός απλού IDE ειδικά για το Rust, SolidOak, ήταν υπό ανάπτυξη για κάποιο χρονικό διάστημα, αλλά έκτοτε έχει σταματήσει. Το καλύτερο στοίχημά σας είναι να πάτε με ένα από τα υπάρχοντα IDE που έχει ήδη υποστήριξη.

Δημιουργήστε το πρώτο σας έργο Rust

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

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

Το εργαλείο Cargo του Rust διαχειρίζεται τόσο τα έργα Rust όσο και τις βιβλιοθήκες ή «κιβώτια» που χρησιμοποιούν. Για να δημιουργήσετε ένα νέο έργο Rust με το όνομα το προτζεκτ μου στον δικό του κατάλογο, πληκτρολογήστε φορτίο νέο my_project. (Για προγραμματιστές C # που εργάζονται με το .Net Core, σκεφτείτε το dotnet νέο εντολή.) Το νέο έργο εμφανίζεται σε έναν υποκατάλογο με αυτό το όνομα, μαζί με ένα βασικό μανιφέστο έργου - το Cargo.toml αρχείο — και ένα στέλεχος για τον πηγαίο κώδικα του έργου, σε src υποκατάλογος

Όταν δημιουργείτε ένα νέο έργο, amain.rs το αρχείο δημιουργείται αυτόματα στο src κατάλογος του έργου. Αυτό το αρχείο περιέχει μια βασική εφαρμογή «Γεια σας κόσμος», ώστε να μπορείτε να δοκιμάσετε αμέσως την αλυσίδα εργαλείων Rust, μεταγλωττίζοντας και εκτελώντας την.

Ο πηγαίος κώδικας για την εφαρμογή "hello world":

fn main () {

println! ("Γεια σου Κόσμος!");

}

Για να το δημιουργήσετε και να το εκτελέσετε, εισαγάγετε τη ρίζα του καταλόγου έργου και πληκτρολογήστε τρέξιμο φορτίου. Σημειώστε ότι από προεπιλογή, το Cargo δημιουργεί έργα σε κατάσταση εντοπισμού σφαλμάτων. Για εκτέλεση σε λειτουργία απελευθέρωσης, χρησιμοποιήστε φορτίο - κυκλοφορία. Τα δυαδικά αρχεία είναι ενσωματωμένα στο target / εντοπισμός σφαλμάτων ή στόχος / απελευθέρωση υποκατάλογος ενός έργου, ανάλογα με το προφίλ συλλογής που χρησιμοποιείτε.

Εργαστείτε με κιβώτια σκουριάς

Η διαχείριση πακέτων αποτελεί βασικό μέρος κάθε σύγχρονου περιβάλλοντος προγραμματισμού. Για το σκοπό αυτό, η Rust παρέχει «κιβώτια», οι οποίες είναι βιβλιοθήκες τρίτων συσκευασμένων για διανομή με τα εργαλεία του Rust. Μπορείτε να βρείτε κιβώτια στο επίσημο μητρώο πακέτων Rust, Crates.io.

Εάν το έργο σας εξαρτάται από ένα συγκεκριμένο κιβώτιο, πρέπει να καθορίσετε αυτό το κιβώτιο με την επεξεργασία του έργου Cargo.toml αρχείο. Ο βασικός τρόπος για να το κάνετε αυτό είναι χειροκίνητα - δηλαδή, απλώς με επεξεργασία Cargo.toml απευθείας με ένα πρόγραμμα επεξεργασίας κειμένου. Την επόμενη φορά που θα ξαναχτιστεί το έργο, η Rust λαμβάνει αυτόματα τις απαραίτητες εξαρτήσεις.

Υπόδειξη: Δύο εργαλεία, επεξεργασία φορτίου και cargo-edit-τοπικά, μπορούν να ενημερώσουν εξαρτήσεις από τη γραμμή εντολών, αν και είναι ανεπίσημα έργα τρίτων.

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

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

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

Cross-compile Rust σε άλλη πλατφόρμα

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

Αυτή η διασταύρωση απαιτεί μια αλυσίδα εργαλείων στην πλατφόρμα στην οποία εργάζεστε και αντιστοιχεί στην πλατφόρμα προορισμού. Μερικές φορές, όπως συμβαίνει με τη διασταυρούμενη μεταγλώττιση σε Linux σε Windows ή αντίστροφα, αυτό συνεπάγεται κάτι περισσότερο από το να έχεις τον σύνδεσμο GCC. Αλλά άλλες φορές, είναι πιο περίπλοκο. Για διασταυρούμενη μεταγλώττιση σε MacOS, για παράδειγμα, χρειάζεστε τις βιβλιοθήκες Xcode IDE για να ολοκληρώσετε την εργασία — cctools (αντίστοιχο της Apple με τα binutils) και το MacOS SDK.

Τα εργαλεία τρίτων προσφέρουν τρόπους αντιμετώπισης αυτών των δυσκολιών:

  • Ένα τέτοιο εργαλείο είναι το Trust, ένα πρότυπο Travis CI και AppVeyor που μπορούν να δημοσιεύουν αυτόματα δυαδικές εκδόσεις ενός έργου Rust. Μπορεί να κατασκευαστεί για Linux, Windows και MacOS, παρόλο που απαιτεί τη χρήση των υπηρεσιών Travis CI και AppVeyor και απαιτεί την φιλοξενία του έργου σας στο GitHub.
  • Ένα άλλο έργο, το Cross, εκτελείται απευθείας σε έναν κεντρικό υπολογιστή 64-bit x86 Linux, αλλά παρέχει αυτό που ο δημιουργός του περιγράφει ως "μηδενική εγκατάσταση" cross-compile σε μια ευρεία ποικιλία στόχων, συμπεριλαμβανομένων των 64-bit Windows και MIPS.
  • Το έργο crossbuild παρέχει μια εικόνα Docker πολλαπλών αρχιτεκτονικών που μπορεί να χρησιμοποιηθεί για cross-build και στις τρεις μεγάλες πλατφόρμες.
$config[zx-auto] not found$config[zx-overlay] not found