Η Google κυκλοφόρησε μια προεπισκόπηση της νέας έκδοσης της γλώσσας προγραμματισμού Go. Η έκδοση 1.18 προσθέτει λειτουργικότητα για «γενικό» προγραμματισμό με τους λεγόμενους «παραμετροποιημένους» τύπους.
Με τα δικά τους λόγια, είναι η πιο σημαντική και μεγαλύτερη αλλαγή στη γλώσσα προγραμματισμού από την κυκλοφορία της Go έκδοσης 1. Η ιδέα πίσω από τα γενικά είναι ότι τώρα επιτρέπει τη λειτουργικότητα για την αναπαράσταση συναρτήσεων και δομών δεδομένων τροποποιώντας τους τύπους. Αυτό αποκλείει τη «γενικότητα» που επιτρέπεται με τον ορισμό ενός τύπου διεπαφής ως τρόπο αφαίρεσης των πραγματικών δεδομένων που μεταφέρονται σε μια συνάρτηση.
Η Google υποδεικνύει ότι οι προγραμματιστές της Go θα πρέπει να συνειδητοποιήσουν ότι η λειτουργικότητα θα οδηγήσει αναμφίβολα σε νέα σφάλματα. Θα πρέπει επομένως να προσεγγίσουν αυτά τα «γενόσημα» με προσοχή.
Άλλες λειτουργίες στο Go 1.18 Beta
Εκτός από την παραπάνω λειτουργικότητα, η νέα προεπισκόπηση έχει επίσης ενσωματωμένη υποστήριξη για τη σύνταξη δοκιμών που βασίζονται σε fuzzing. Αυτές οι δοκιμές μπορούν να βρουν αυτόματα εισόδους που προκαλούν τη διακοπή λειτουργίας των προγραμμάτων ή την επιστροφή μη έγκυρων απαντήσεων. Το Go 1.18 Beta προσφέρει επίσης μια νέα «Λειτουργία χώρου εργασίας Go». Αυτό επιτρέπει στους προγραμματιστές να εργάζονται με πολλαπλές μονάδες Go ταυτόχρονα. Αυτό είναι ιδιαίτερα χρήσιμο για μεγάλα έργα, σύμφωνα με την Google.
Επιπλέον, η έκδοση 1.18 Beta προσθέτει λειτουργικότητα με μια εκτεταμένη εντολή go version -m. Αυτή η εντολή τώρα αποθηκεύει λεπτομέρειες ως σημαίες μεταγλωττιστή. Ένα πρόγραμμα μπορεί τώρα να ρωτήσει τις δικές του λεπτομέρειες κατασκευής με την εντολή debug.ReadBuildInfo.
Επίσης, στην προεπισκόπηση έχει προστεθεί περισσότερες συμβάσεις κλήσεων που βασίζονται σε καταχωρήσεις, διαθέσιμες από το Go 1.17. Όπου στην προηγούμενη έκδοση αυτή η λειτουργία ήταν κατάλληλη μόνο για την επιτάχυνση του κώδικα Go σε συστήματα x86 και x64, τώρα είναι επίσης κατάλληλη για συστήματα που βασίζονται σε ARM64 και PPC64. Αυτό θα πρέπει να παρέχει έως και 20 τοις εκατό μεγαλύτερη ταχύτητα.