NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
EL

Σύγκριση γλωσσών προγραμματισμού

Σκουριά: Ασφάλεια μνήμης χωρίς συλλέκτη σκουπιδιών

Η πρόταση του Rust είναι ακριβής: καταργήστε τις οικογένειες σφαλμάτων χωρίς χρήση και αγώνων δεδομένων κατά τη στιγμή της μεταγλώττισης, διατηρώντας παράλληλα την απόδοση εγγενούς ταχύτητας και χωρίς παύσεις συλλογής σκουπιδιών. Ο κλάδος παρατήρησε, από πυρήνες λειτουργικού συστήματος που δέχονται ενότητες Rust έως επισκευές ασφαλείας σε βάσεις κωδικών C-heavy. Αυτό είναι το αφιερωμένο άρθρο πίσω από το δοκίμιό μας γιατί-σκουριάς και τις κατ' ιδίαν συγκρίσεις με Go, Python και C++.

Βασικά σημεία

  1. Ο ελεγκτής δανείου είναι η καινοτομία που αποδίδει: η ιδιοκτησία και η διάρκεια ζωής διαγράφουν ολόκληρες οικογένειες CVE που έχουν καταστραφεί μνήμης στατικά (χρήση-μετά-δωρεάν, διπλό-δωρεάν, ακύρωση επαναλήπτη, κούρσες δεδομένων μεταξύ νημάτων). Η ίδια εργονομική τιμή εξηγεί γιατί η κοινότητά του συνιστά να το μάθεις νωρίς.
  2. Κανένας συλλέκτης σκουπιδιών δεν κάνει μάρκετινγκ: η συμπεριφορά μνήμης με συνέπεια λανθάνουσας κατάστασης παίζει ρόλο στις πιο απαιτητικές ακραίες περιπτώσεις των βιομηχανιών (ενσωματωμένο, διαδρομές πυρήνα, ήχος σε πραγματικό χρόνο). Η απόδοση του εγγενούς κώδικα του Rust χωρίς παύσεις GC είναι ο λόγος που το 'rewrite in Rust' στοχεύει συγκεκριμένα hot μονοπάτια και όχι οτιδήποτε άλλο.
  3. Το φορτίο είναι η τάφρος της εμπειρίας: η εξάρτηση/έκδοση/κατασκευή εργαλείων συν το οικοσύστημα crates.io κάνει την ιστορία της επιβίβασης πιο ομαλή από τα παλαιού τύπου κτήματα μεταγλωττισμένης γλώσσας. Ο «έλεγχος φορτίου» έναντι των συμβουλευτικών βάσεων δεδομένων είναι η απάντηση στην αλυσίδα εφοδιασμού.
  4. Το Interop το διατηρεί ρεαλιστικό: τα όρια FFI στο C είναι η τυπική ιστορία ενοποίησης (καλέστε τις υπάρχουσες βιβλιοθήκες C, σελιδοποιήστε παρόμοια στο Rust από άλλες γλώσσες), γι' αυτό το Rust ζει μέσα σε μεγαλύτερα συστήματα (προγράμματα περιήγησης, πυρήνες, διακομιστές ιστού) αντί να απαιτεί απομόνωση Greenfield.
  5. Το κόστος είναι ειλικρινές: η καμπύλη εκμάθησης (το μοντέλο δανεισμού μετατοπίζει τις ιδέες σχετικά με το ψευδώνυμο/ιδιοκτησία δεδομένων) καθώς και οι χρόνοι μεταγλώττισης είναι μεγάλοι σε στενούς κύκλους επανάληψης. Οι ομάδες με ρυθμό προϊόντων με βαρύ CRUD αποστέλλονται συχνά πιο γρήγορα με γλώσσες GC (το άρθρο μας γιατί-rust καλύπτει ποια εξαρτήματα ωριμάζουν σε Rust και ποια παραμένουν τοποθετημένα).
  6. Όπου κερδίζει στην πράξη: στοιχεία υποδομής και αναλυτές (αλυσίδες διακομιστή μεσολάβησης/φίλτρου/εργαλείων), οικοσυστήματα CLI, ενσωματωμένες μονάδες και μονάδες πυρήνα και κρίσιμες για την ασφάλεια επανεγγραφές όπου ένα μεμονωμένο σφάλμα μνήμης κοστίζει περισσότερο από ό,τι η καμπύλη μηχανικής.

Σημείωση από το πεδίο

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

Συχνές ερωτήσεις

Πρέπει η ομάδα μου να ξαναγράψει τα πάντα στο Rust;

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

Πόσο απότομο είναι πραγματικά το δάνειο πούλι;

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

Πώς συγκρίνεται με το Go head-to-head;

Ο χρόνος μεταγλώττισης είναι πολύ μεγαλύτερος από την ταχύτητα κατασκευής του Go. Τα μοντέλα συγχρονισμού διαφέρουν (ιδιοκτησία Rust, κανάλια Go). Τα οικοσυστήματα CLI-plus-reliability και τα δύο φιλικά. Το άρθρο μας rust-vs-go καλύπτει τα ειλικρινή όρια ανά τύπο φόρτου εργασίας.

Το Rust τρέχει στον πυρήνα του Linux τώρα;

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

Πώς βοηθάει η Kinetikatech στα σύγκριση γλωσσών προγραμματισμού

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

Μιλήστε με έναν μηχανικό

Πρόβλημα διακομιστή; Εισβολή στον ιστότοπο; Αργός ιστότοπος;

Απάντηση σε κρίσιμα ζητήματα εντός 30 λεπτών — 24 ώρες την ημέρα, 7 ημέρες την εβδομάδα.

Ζήτηστε επείγουσα υποστήριξη support@kinetikatech.com