Go 1.20 Memperkenalkan Pratinjau untuk Pengoptimalan Berpanduan Profil dan Penyempurnaan Bahasa
Go 1.20, pembaruan terbaru dari bahasa sumber terbuka yang dikembangkan Google, mencakup pratinjau untuk pengoptimalan yang dipandu profil (PGO) dan peningkatan bahasa. PGO meningkatkan performa sebesar 3% hingga 4% dengan pengoptimalan sebaris, sementara pengoptimalan lainnya sedang dalam proses.

Go 1.20, rilis produksi dari bahasa open-source buatan Google yang dirayakan karena kesederhanaan, konkurensi, dan fitur pemrograman fungsionalnya, telah diperkenalkan, dengan pratinjau profile-guided optimization (PGO) untuk compiler. Go 1.20 dapat diunduh dari situs web resmi go.dev .
Dengan pratinjau PGO di Go 1.20, compiler toolchain dapat melakukan pengoptimalan khusus aplikasi dan beban kerja bergantung pada informasi profil runtime. Kompiler saat ini mendukung profil CPU pprof, yang dapat dikumpulkan menggunakan paket runtime/pprof atau net/http/pprof.
Juga dikenal sebagai pengoptimalan yang diarahkan umpan balik, PGO melibatkan pengumpanan data profil dari proses perwakilan aplikasi kembali ke kompiler untuk pembuatan aplikasi berikutnya. Dengan menggunakan informasi ini, kompiler dapat membuat keputusan pengoptimalan yang lebih tepat. Tolok ukur untuk serangkaian program Go yang representatif menunjukkan bahwa mengaktifkan pengoptimalan inlining PGO meningkatkan kinerja sekitar 3% hingga 4%. Rilis mendatang diharapkan untuk memperkenalkan lebih banyak pengoptimalan PGO.
Seiring dengan pengenalan PGO, Go 1.20 juga membawa empat perubahan bahasa. Pertama, kemampuan untuk mengonversi sebuah slice menjadi sebuah pointer array, yang diperkenalkan pada Go 1.17 tahun 2021, sekarang meluas ke konversi dari sebuah slice menjadi sebuah array. Kedua, paket unsafe menyertakan tiga fungsi baru: SliceData, String, dan StringData. Fungsi-fungsi ini menawarkan kemampuan lengkap untuk membangun dan mendekonstruksi nilai irisan dan string, terlepas dari representasi persisnya.
Ketiga, spesifikasi sekarang menetapkan bahwa nilai struct dibandingkan satu bidang pada satu waktu, dengan mempertimbangkan bidang dalam urutan kemunculannya dalam definisi tipe struct, dan berhenti pada ketidakcocokan pertama. Keempat, tipe yang sebanding seperti antarmuka biasa dapat memenuhi batasan yang sebanding, bahkan jika argumen tipe tidak dapat dibandingkan secara ketat. Ini memungkinkan pembuatan contoh parameter tipe yang dibatasi oleh batasan yang sebanding dengan argumen tipe yang tidak dapat dibandingkan secara ketat, seperti tipe antarmuka atau tipe komposit yang berisi tipe antarmuka.
Selain perubahan bahasa ini, Go 1.20 hadir dengan berbagai penyempurnaan lainnya, seperti mendukung pengumpulan profil cakupan kode untuk program, termasuk pengujian aplikasi dan integrasi. Direktori $GOROOT/pkg tidak lagi menyimpan aktivitas paket yang telah dikompilasi untuk pustaka standar, yang mengurangi ukuran distribusi Go dan menghindari kemiringan toolchain C untuk paket cgo. Selain itu, implementasi go test –json telah diperkuat untuk meningkatkan kekokohan, sedangkan perintah go version -m sekarang membaca lebih banyak binari Go, termasuk binari Windows DLL dan Linux tanpa izin eksekusi.
Go 1.20 juga membawa dukungan eksperimental untuk FreeBSD pada RISC-V dan menonaktifkan cgo secara default pada sistem tanpa toolchain C. Namun, Go 1.20 akan menjadi rilis terakhir yang mendukung macOS 10.13 High Sierra dan 10.14 Mojave, dengan Go 1.21 membutuhkan macOS 10.15 Catalina atau lebih baru.
Platform No-code seperti AppMaster.io bisa sangat diuntungkan dengan menggabungkan bahasa yang baru dioptimalkan seperti Go 1.20. Dengan mengintegrasikan alat canggih tersebut untuk aplikasi web, seluler, dan backend, bisnis dapat mencapai peningkatan signifikan dalam produktivitas, pengalaman pengguna, dan skalabilitas. Pelajari lebih lanjut tentang pengembangan aplikasi no-code dan low-code agar tetap berada di depan kurva teknologi.


