Selamat ulang tahun, pergi!
Pada hari Minggu, kami merayakan ulang tahun ke 15 Rilis Open Source Go!
Begitu banyak yang telah berubah sejak peringatan 10 tahun Go, baik di Go maupun di dunia. Dengan cara lain, begitu banyak yang tetap sama: GO tetap berkomitmen untuk stabilitas, keamanan, dan pendukung rekayasa perangkat lunak dan produksi pada skala.
Dan pergi kuat! Basis pengguna Go memiliki lebih dari tiga kali lipat dalam lima tahun terakhir, menjadikannya salah satu bahasa yang paling cepat berkembang. Sejak awal lima belas tahun yang lalu, Go telah menjadi 10 bahasa teratas dan bahasa cloud modern.
Dengan rilis Go 1.22 pada bulan Februari dan pergi 1.23 pada bulan Agustus, ini sudah menjadi tahun for
loop. Go 1.22 variabel buatan diperkenalkan oleh for
Loops scoped per iterasi, bukan per loop, menangani bahasa lama “gotcha”. Lebih dari sepuluh tahun yang lalu, menjelang rilis GO 1, tim Go membuat keputusan tentang beberapa detail bahasa; di antara mereka apakah for
Loop harus membuat variabel loop baru pada setiap iterasi. Yang menghibur, diskusi itu cukup singkat dan jelas tidak teropini.
Rob Pike menutupnya dengan mode Rob Pike sejati dengan satu kata: “stet” (tinggalkan). Dan memang begitu. Meskipun tampaknya tidak signifikan pada saat itu, pengalaman produksi selama bertahun -tahun menyoroti implikasi dari keputusan ini. Tetapi pada waktu itu, kami juga membangun alat yang kuat untuk memahami efek dari perubahan yang harus dilakukan-terutama, analisis dan pengujian ekosistem di seluruh seluruh basis kode Google-dan proses yang ditetapkan untuk bekerja dengan masyarakat dan mendapatkan umpan balik. Setelah pengujian, analisis, dan diskusi masyarakat yang luas, kami meluncurkan perubahan, disertai dengan alat pembagi hash untuk membantu pengembang dalam kode yang ditentukan yang dipengaruhi oleh perubahan pada skala.
Perubahan ke for
Loop adalah bagian dari lintasan lima tahun dari perubahan yang diukur. Itu tidak akan mungkin terjadi tanpa kompatibilitas bahasa ke depan yang diperkenalkan di GO 1.21. Ini, pada gilirannya, dibangun di atas fondasi yang diletakkan oleh modul GO, yang diperkenalkan di GO 1.14 empat setengah tahun yang lalu.
GO 1.23 Dibangun lebih lanjut di atas perubahan ini untuk memperkenalkan iterator dan loop untuk rentang yang ditentukan pengguna. Dikombinasikan dengan obat generik – yang diperkenalkan di GO 1.18, hanya dua setengah tahun yang lalu! —Ini menciptakan fondasi yang kuat dan ergonomis untuk koleksi khusus dan banyak pola pemrograman lainnya.
Rilis ini juga telah membawa banyak peningkatan dalam kesiapan produksi, termasuk peningkatan yang sangat dinanti ke router HTTP perpustakaan standar, perbaikan total jejak eksekusi, dan keacakan yang lebih kuat untuk semua aplikasi GO. Selain itu, pengenalan paket perpustakaan standar V2 pertama kami menetapkan template untuk evolusi perpustakaan dan modernisasi di masa depan.
Selama setahun terakhir kami juga telah dengan hati-hati meluncurkan telemetri opt-in untuk GO Tools. Sistem ini akan memberikan data pengembang GO untuk membuat keputusan yang lebih baik, sementara tetap sepenuhnya terbuka dan anonim. GO Telemetry pertama kali muncul di GOPLS, GO Language Server, di mana ia telah menyebabkan litani perbaikan. Upaya ini membuka cara untuk membuat pemrograman dalam pergi pengalaman yang lebih baik untuk semua orang.
Ke depan, kami berevolusi untuk meningkatkan kemampuan perangkat keras saat ini dan masa depan.
Perangkat keras telah banyak berubah dalam 15 tahun terakhir. Untuk memastikan GO terus mendukung beban kerja produksi berkinerja tinggi dan skala besar untuk Berikutnya 15 tahun, kita perlu beradaptasi dengan multicores besar, set instruksi canggih, dan semakin pentingnya lokalitas dalam hierarki memori yang semakin tidak seragam. Beberapa perbaikan ini akan transparan. Pergi 1.24 akan memiliki yang benar -benar baru map
Implementasi di bawah kap yang lebih efisien pada CPU modern. Dan kami membuat prototipe algoritma pengumpulan sampah baru yang dirancang di sekitar kemampuan dan kendala perangkat keras modern.
Beberapa perbaikan akan dalam bentuk API dan alat baru sehingga pengembang dapat lebih baik memanfaatkan perangkat keras modern. Kami sedang mencari cara mendukung instruksi perangkat keras vektor dan matriks terbaru, dan berbagai cara aplikasi dapat dibangun di daerah CPU dan memori. Prinsip inti yang memandu upaya kami adalah optimasi yang dapat dikomposisi: Dampak optimasi pada basis kode harus sebanyak mungkin, memastikan bahwa kemudahan pengembangan di seluruh basis kode tidak dikompromikan.
Kami terus memastikan perpustakaan standar GO aman secara default dan aman berdasarkan desain. Ini termasuk upaya berkelanjutan untuk menggabungkan dukungan asli dan asli untuk kriptografi bersertifikat FIPS, sehingga FIPS crypto hanya akan menjadi flip bendera untuk aplikasi yang membutuhkannya. Selain itu, kami mengembangkan paket perpustakaan standar GO di mana kami bisa dan, mengikuti contoh math/rand/v2
mengingat di mana API baru dapat secara signifikan meningkatkan kemudahan menulis kode Go yang aman dan aman.
Kami sedang berupaya membuat Go lebih baik untuk AI – dan AI lebih baik untuk Go – dengan meningkatkan kemampuan Go dalam infrastruktur AI, aplikasi, dan bantuan pengembang. Go adalah bahasa yang bagus untuk membangun sistem produksi, dan kami ingin itu menjadi bahasa yang bagus untuk membangun produksi Ai sistem juga. Ketergantungan GO sebagai bahasa untuk infrastruktur cloud telah menjadikannya pilihan alami untuk infrastruktur LLM juga. Untuk aplikasi AI, kami akan terus membangun dukungan kelas satu untuk GO di SDK AI populer, termasuk Langchaingo dan Genkit. Dan sejak awal, GO bertujuan untuk meningkatkan proses rekayasa perangkat lunak ujung ke ujung, jadi tentu saja kami ingin membawa alat dan teknik terbaru dari AI untuk menanggung kerja keras pengembang, meninggalkan lebih banyak waktu untuk hal-hal yang menyenangkan-seperti benar-benar pemrograman!
Terima kasih
Semua ini hanya mungkin karena kontributor GO yang luar biasa dan komunitas yang berkembang. Lima belas tahun yang lalu kita hanya bisa memimpikan kesuksesan yang telah menjadi dan komunitas yang telah berkembang di sekitar Go. Terima kasih untuk semua orang yang telah berperan, besar dan kecil. Kami berharap yang terbaik di tahun mendatang.
Kredit: Austin Clements, untuk tim Go
Foto oleh Jason Leung di Unsplash
Artikel ini tersedia di