Το Go 1.19 έχει ήδη κυκλοφορήσει και αυτά είναι τα νέα του

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

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

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

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

Κύρια νέα χαρακτηριστικά του Go 1.19

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

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

Εκτός από αυτό αναθεωρημένο μοντέλο μνήμης Go για ευθυγράμμιση με C, C++, Java, JavaScript, Rust και Swift που δεν αποδέχονται διαδοχικά σταθερές ατομικές τιμές. Νέοι τύποι όπως το atomic.Int64 και το atomic.Pointer[T] έχουν εισαχθεί στο πακέτο sync/atomic για να διευκολύνουν τη χρήση ατομικών τιμών.

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

Τονίζεται επίσης ότι σε συστήματα Unix, οι πρόσθετοι περιγραφείς αρχείων ενεργοποιούνται αυτόματα (αυξάνοντας το όριο RLIMIT_NOFILE), για να επιταχυνθούν οι εκφράσεις μεγάλων αλλαγών στα συστήματα x86-64 και ARM64, χρησιμοποιούνται πίνακες μεταπήδησης, οι οποίοι επιτρέπουν την επεξεργασία εκφράσεων μεγάλων αλλαγών έως και 20% ταχύτερα.

Στα συστήματα riscv64, εφαρμόστηκε η μετάδοση ορισμάτων συνάρτησης μέσω καταχωρητών CPU, γεγονός που επέτρεψε την αύξηση της απόδοσης περίπου 10%.

Από τις άλλες αλλαγές που ξεχωρίζουν από αυτήν τη νέα έκδοση:

  • Έχουν εφαρμοστεί πολυάριθμες βελτιστοποιήσεις απόδοσης.
  • Προστέθηκε υποστήριξη για δυναμική ρύθμιση του μεγέθους της στοίβας ρουτίνας για μείωση του μεγέθους των αντιγραμμένων δεδομένων
  • Προστέθηκε πειραματική υποστήριξη για περιβάλλοντα Linux σε συστήματα με επεξεργαστές Loongson που βασίζονται στην αρχιτεκτονική 64-bit LoongArch (GOARCH=loong64).
  • Η αλλαγή του μοντέλου μνήμης δεν επηρέασε τη συμβατότητα με προηγουμένως γραμμένο κώδικα.
  • Προστέθηκε ένας νέος περιορισμός κατασκευής "unix" που μπορεί να χρησιμοποιηθεί σε γραμμές "go:build" για φιλτράρισμα συστημάτων που μοιάζουν με Unix (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
  • Για να βελτιώσει την ασφάλεια, η λειτουργική μονάδα os/exec αγνοεί πλέον τις σχετικές διαδρομές κατά την επέκταση της μεταβλητής περιβάλλοντος PATH (για παράδειγμα, όταν προσδιορίζεται η διαδρομή ενός εκτελέσιμου αρχείου, ο τρέχων κατάλογος δεν ελέγχεται πλέον).

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


Γίνε ο πρώτος που θα σχολιάσει

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.