Έκδοση γλώσσας προγραμματισμού Go 1.13

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

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

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

Ο κύριος καινοτομίεςπαρουσιάστηκε στην κυκλοφορία του Go 1.13:

  • Το πακέτο crypto/tls έχει την υποστήριξη πρωτοκόλλου ενεργοποιημένη από προεπιλογή TLS 1.3. Προστέθηκε νέο πακέτο "crypto/ed25519" με υποστήριξη για ψηφιακές υπογραφές Ed25519.
  • Προστέθηκε υποστήριξη για νέα αριθμητικά κυριολεκτικά προθέματα για τον ορισμό δυαδικών αριθμών (π.χ. 0b101), οκταδικού (0o377), φανταστικού (2.71828i) και δεκαεξαδικής κινητής υποδιαστολής (0x1p-1021) και τη δυνατότητα χρήσης του χαρακτήρα "_" για οπτικό διαχωρισμό ψηφίων σε μεγάλους αριθμούς (1_000_000)
  • Ο περιορισμός στη χρήση μόνο ανυπόγραφων μετρητών στις λειτουργίες βάρδιας έχει καταργηθεί, γεγονός που αποφεύγει τις περιττές μετατροπές στον τύπο uint πριν από τη χρήση των τελεστών «‹‹» και «››».
  • Προστέθηκε υποστήριξη για την πλατφόρμα Illumos (GOOS=illumos). Έχει διασφαλιστεί η συμβατότητα με την πλατφόρμα Android 10. Οι απαιτήσεις για τις ελάχιστες εκδόσεις του FreeBSD (11.2) και του macOS (10.11 “El Capitan”) έχουν αυξηθεί.
  • Συνεχής ανάπτυξη του νέου συστήματος μονάδων, το οποίο μπορεί να χρησιμοποιηθεί ως εναλλακτική λύση στο GOPATH. Σε αντίθεση με τα προηγούμενα ανακοινωθέντα σχέδια στο Go 1.13, αυτό το σύστημα δεν είναι ενεργοποιημένο από προεπιλογή και απαιτεί ενεργοποίηση μέσω της μεταβλητής GO111MODULE=on ή τη χρήση ενός περιβάλλοντος στο οποίο οι λειτουργικές μονάδες εφαρμόζονται αυτόματα. Το νέο σύστημα λειτουργικών μονάδων διαθέτει ενσωματωμένη υποστήριξη εκδόσεων, δυνατότητες παράδοσης πακέτων και βελτιωμένη διαχείριση εξαρτήσεων. Με τις λειτουργικές μονάδες, οι προγραμματιστές δεν είναι πλέον δεσμευμένοι να εργάζονται μέσα σε ένα δέντρο GOPATH, μπορούν να ορίσουν ρητά τις εξαρτήσεις με έκδοση και να δημιουργήσουν επαναλαμβανόμενες εκδόσεις.

    Σε αντίθεση με προηγούμενες εκδόσεις, η αυτόματη εφαρμογή του νέου συστήματος λειτουργεί πλέον όταν υπάρχει ένα αρχείο go.mod στον τρέχοντα κατάλογο εργασίας ή στον γονικό κατάλογο κατά την εκτέλεση της εντολής go, ακόμη και όταν βρίσκεται στον κατάλογο GOPATH/src. Προστέθηκαν νέες μεταβλητές περιβάλλοντος: GOPRIVATE, που καθορίζει τις διαδρομές των λειτουργικών μονάδων προσβάσιμων από το κοινό και GOSUMDB, το οποίο καθορίζει παραμέτρους πρόσβασης στη βάση δεδομένων αθροίσματος ελέγχου για μονάδες που δεν αναφέρονται στο αρχείο go.sum.

  • Η εντολή "go" από προεπιλογή φορτώνει τις ενότητες και ελέγχει την ακεραιότητά τους χρησιμοποιώντας τη βάση δεδομένων mirror και checksum της ενότητας που διατηρεί η Google (proxy.golang.org, sum.golang.org και index.golang.org).
  • Η υποστήριξη μόνο για δυαδικά πακέτα έχει διακοπεί· η δημιουργία ενός πακέτου στη λειτουργία "//go:binary-only-package" έχει πλέον ως αποτέλεσμα σφάλμα.
  • Προστέθηκε υποστήριξη για το επίθημα "@patch" στην εντολή "go get", υποδεικνύοντας ότι η μονάδα πρέπει να ενημερωθεί στην πιο πρόσφατη έκδοση συντήρησης, αλλά χωρίς αλλαγή της τρέχουσας κύριας ή δευτερεύουσας έκδοσης.
  • Κατά την ανάκτηση μονάδων από συστήματα ελέγχου πηγής, η εντολή "go" εκτελεί τώρα έναν πρόσθετο έλεγχο στη συμβολοσειρά έκδοσης, επιχειρώντας να αντιστοιχίσει αριθμούς ψευδο-εκδόσεων με μεταδεδομένα από το χώρο αποθήκευσης.
  • Προστέθηκε υποστήριξη επιθεώρηση σφάλματος (αναδίπλωση σφαλμάτων) μέσω της δημιουργίας περιτυλίξεων που επιτρέπουν τη χρήση τυπικών εργαλείων χειρισμού σφαλμάτων. Για παράδειγμα, σφάλμα Το "e" μπορεί να τυλιχθεί γύρω από το σφάλμα "w" παρέχοντας μια μέθοδο Ξεδιπλώνω, επιστρέφοντας "w". Και τα δύο σφάλματα "e" και "w" είναι διαθέσιμα στο πρόγραμμα και οι αποφάσεις λαμβάνονται με βάση το σφάλμα "w", αλλά το "e" παρέχει πρόσθετο πλαίσιο στο "w" ή το ερμηνεύει διαφορετικά.
  • Η απόδοση των στοιχείων χρόνου εκτέλεσης έχει βελτιστοποιηθεί (έχει σημειωθεί αύξηση ταχύτητας έως και 30%) και έχει εφαρμοστεί μια πιο επιθετική επιστροφή της μνήμης στο λειτουργικό σύστημα (προηγουμένως, η μνήμη επέστρεφε μετά από πέντε ή περισσότερα λεπτά, αλλά τώρα αμέσως μετά τη μείωση του μεγέθους του σωρού).

Πηγή: opennet.ru

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