2 poin oleh GN⁺ 2023-08-15 | 1 komentar | Bagikan ke WhatsApp
  • Artikel tentang pentingnya kompatibilitas mundur dalam bahasa pemrograman Go, dengan fokus pada fitur baru di Go 1.21 dan masa depan Go 2
  • Go 1.21 mencakup fitur-fitur baru untuk meningkatkan kompatibilitas, dengan tujuan menjaga Go tetap stabil dan dapat diprediksi, sehingga pengembang bisa lebih fokus pada pekerjaan mereka daripada perubahan bahasa
  • Tim Go telah berfokus pada kompatibilitas selama lebih dari 10 tahun, dengan niat yang jelas bahwa program yang ditulis sesuai spesifikasi Go 1 akan terus dapat dikompilasi dan dijalankan dengan benar tanpa perubahan selama masa hidup spesifikasi tersebut
  • Dijelaskan dua pendekatan utama untuk menjaga kompatibilitas: pemeriksaan API dan pengujian. Pemeriksaan API memastikan API yang ada tidak dihapus atau diubah dengan cara yang merusak kode lama. Pengujian mencakup menjalankan pengujian yang sudah ada terhadap versi pengembangan dari rilis Go berikutnya
  • Diberikan contoh masalah kompatibilitas halus yang ditemukan lewat pengujian Go di internal Google, seperti literal struct dan field baru, serta presisi waktu
  • Masalah kompatibilitas diklasifikasikan ke dalam tiga kategori: perubahan output, perubahan input, dan perubahan protokol
  • Go 1.21 meningkatkan kompatibilitas mundur dengan memperluas dan memformalkan penggunaan GODEBUG. Pengaturan GODEBUG dipertahankan setidaknya selama dua tahun dan disetel agar sesuai dengan versi Go yang tercantum di file go.mod paket utama
  • Artikel ditutup dengan pembaruan tentang Go 2, yang menyatakan bahwa tidak akan ada Go 2 yang merusak program Go 1. Sebagai gantinya, tim Go akan memprioritaskan kompatibilitas, dan meyakini bahwa ini adalah keputusan desain terpenting yang mereka ambil untuk Go 1

1 komentar

 
GN⁺ 2023-08-15
Opini Hacker News
  • Artikel ini membahas pentingnya kompatibilitas di Go 1.21 dan kemungkinan Go 2 di masa depan.
  • Go 1.21 menawarkan dua fitur unik: pengaturan GODEBUG untuk setiap perubahan dan metrik untuk mendeteksi penggunaan implementasi sebelumnya, serta versi toolchain per modul yang secara otomatis mengambil go toolchains lama maupun baru.
  • Jika versi Go tertentu ditentukan, versi Go yang lebih baru akan secara otomatis menerapkan konfigurasi opt-out yang relevan, sehingga perilaku baru tidak akan diterapkan sampai diminta.
  • Tim bahasa Go berkomitmen untuk mempertahankan kompatibilitas mundur, dan hal ini diapresiasi oleh para pengembang yang memelihara sistem Go berskala besar.
  • Beberapa pengguna menyampaikan kekhawatiran bahwa peningkatan penting pada sistem tipe mungkin memerlukan perubahan yang bersifat merusak.
  • Ada usulan agar Go tidak benar-benar memiliki Go 2, karena perubahan besar dapat menuntut percabangan bahasa dan pergantian nama.
  • Stabilitas dan prediktabilitas Go, yang digambarkan sebagai "membosankan", dikontraskan dengan ekosistem JavaScript yang terfragmentasi dan terus berubah.
  • Artikel ini juga menyebut posting terkait tentang "kompatibilitas maju dan manajemen toolchain di Go 1.21".
  • Komitmen terhadap kompatibilitas mundur di Go dipuji, dan seorang pengguna berbagi bagaimana memindahkan kode dari Python ke Go membantu mereka melakukan penskalaan.
  • Teknik yang digunakan Go untuk menjamin kompatibilitas dihormati, dan dipertimbangkan untuk digunakan dalam perancangan bahasa lain.