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

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

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

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

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

  • Το έργο του linker έχει βελτιωθεί σημαντικά, τόσο στην αύξηση της ταχύτητας λειτουργίας και στη μείωση της κατανάλωσης μνήμης, όσο και στην κατεύθυνση της απλοποίησης της συντήρησης του κώδικα. Όταν δοκιμάστηκε σε λειτουργικά συστήματα που χρησιμοποιούν τη μορφή εκτελέσιμου αρχείου ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), ένα τυπικό σύνολο μεγάλων εφαρμογών Go κατασκευάστηκε 20% πιο γρήγορα και η κατανάλωση μνήμης μειώθηκε κατά μέσο όρο κατά 30%. Η αυξημένη παραγωγικότητα κατέστη δυνατή με τη μετάβαση σε μια νέα μορφή αρχείου αντικειμένου και την εκ νέου επεξεργασία των εσωτερικών σταδίων για να αυξηθεί το επίπεδο παραλληλισμού της εργασίας. Ο εγγενής σύνδεσμος χρησιμοποιείται πλέον από προεπιλογή σε συστήματα linux/amd64 και linux/arm64 στο "-buildmode=pie", το οποίο δεν απαιτεί πλέον τη χρήση συνδέσμου C.
  • Στο χρόνο εκτέλεσης, η κατανομή μικρών αντικειμένων σε συστήματα με μεγάλο αριθμό πυρήνων CPU έχει βελτιωθεί σημαντικά και η καθυστέρηση έχει μειωθεί. Σε περίπτωση αποτυχίας, εμφανίζονται τιμές με αριθμούς και τύπους συμβολοσειρών αντί για εμφάνιση της διεύθυνσης. Κατά την αποστολή σημάτων SIGSEGV, SIGBUS και SIGFPE σε μια εφαρμογή Go, ελλείψει OS/signal. Notify handler, η εφαρμογή θα εξέλθει με έξοδο stack trace (παλαιότερα η συμπεριφορά ήταν απρόβλεπτη).
  • Ο μεταγλωττιστής έχει βελτιστοποιηθεί για να μειώνει το μέγεθος των εκτελέσιμων αρχείων που δημιουργούνται κατά μέσο όρο κατά 5%, σταματώντας τη συμπερίληψη κάποιων μεταδεδομένων για τον συλλέκτη σκουπιδιών και πιο επιθετικό καθαρισμό αχρησιμοποίητων μεταδεδομένων.
  • Η σημαία "-spectre" έχει προστεθεί στον μεταγλωττιστή και τον συναρμολογητή για να ενεργοποιηθεί η προστασία από επιθέσεις κλάσης Spectre (για τα περισσότερα προγράμματα αυτό δεν απαιτείται, η ενεργοποίηση της επιλογής μπορεί να δικαιολογηθεί μόνο για κάποιες πολύ συγκεκριμένες περιπτώσεις).
  • Στα πιστοποιητικά X.509, το πεδίο CommonName έχει καταργηθεί, το οποίο δεν αντιμετωπίζεται πλέον ως όνομα κεντρικού υπολογιστή εάν λείπει το πεδίο Εναλλακτικά ονόματα θεμάτων.
  • Η εντολή "go" στη μεταβλητή περιβάλλοντος GOPROXY μπορεί τώρα να παραθέσει πολλαπλούς μεσολάβησης, διαχωρισμένους με κόμμα ή "|". Εάν ο πρώτος διακομιστής μεσολάβησης στη λίστα εμφανίσει σφάλμα (404 ή 410), τότε θα γίνει προσπάθεια επικοινωνίας μέσω του δεύτερου διακομιστή μεσολάβησης κ.λπ.
  • Το βοηθητικό πρόγραμμα κτηνίατρος έχει προσθέσει μια προειδοποίηση σχετικά με την απόπειρα μετατροπής από συμβολοσειρά(x) εάν το "x" είναι ακέραιος τύπος εκτός από rune ή byte.
  • Η σημαία "-gnu" έχει προστεθεί στο βοηθητικό πρόγραμμα objdump για να υποστηρίζει την αποσυναρμολόγηση της σύνταξης συναρμολογητή GNU.
  • Προστέθηκε νέο πακέτο ώρα/τζδάτα, το οποίο σας επιτρέπει να ενσωματώσετε μια βάση δεδομένων με δεδομένα ζώνης ώρας στο πρόγραμμα.
  • Από κείμενα πηγής και τεκμηρίωση αφαιρέθηκε τις φράσεις whitelist/blacklist και master/slave, οι οποίες πλέον αντικαθίστανται από τις λέξεις "allowlist", "blocklist", "process", "pty", "proc" και "control".
  • Ένα μεγάλο μέρος των δευτερευουσών βελτιώσεων έχει γίνει στην τυπική βιβλιοθήκη.
  • Προστέθηκε υποστήριξη για το OpenBSD 6.7 σε λειτουργίες GOARCH=arm και GOARCH=arm64 (παλαιότερα υποστηριζόταν μόνο το GOARCH=386 και το GOARCH=amd64).
  • Η ανάπτυξη της πλατφόρμας RISC-V 64-bit (GOOS=linux, GOARCH=riscv64) συνεχίστηκε.
  • Για συστήματα x32 86 bit, η επόμενη έκδοση θα αυξήσει τις ελάχιστες απαιτήσεις συστήματος - θα συνεχίσουν να υποστηρίζονται μόνο επεξεργαστές με SSE2. Για να δημιουργήσετε σε λειτουργία GOARCH=386 θα χρειαστείτε τουλάχιστον ένα Intel Pentium 4 (κυκλοφόρησε το 2000) ή ένα AMD Opteron/Athlon 64 (κυκλοφόρησε το 2003).

Πηγή: opennet.ru

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