11 poin oleh GN⁺ 2025-11-16 | 1 komentar | Bagikan ke WhatsApp
  • Menandai 16 tahun sejak Go dirilis sebagai open source, artikel ini merangkum kemajuan teknis utama selama setahun terakhir dan rencana ke depan
  • Pada Go 1.24 dan 1.25, ada peningkatan besar di pengujian, keamanan, dan performa
  • Fitur seperti synctest, container-aware scheduling, dan flight recorder memperkuat keandalan serta efisiensi di lingkungan produksi
  • Paket kriptografi yang disiapkan untuk sertifikasi FIPS 140-3 dan Green Tea GC meningkatkan keamanan serta performa
  • Ekosistem Go sedang meluas ke pengembangan terintegrasi AI dan otomatisasi kode modern, dengan dukungan lebih kuat untuk perangkat keras skala besar dan AI di masa depan

Ringkasan 16 Tahun Go dan Rilis Terbaru

  • Merayakan 16 tahun sejak Go dirilis sebagai open source pada 10 November
  • Pada Februari 2024 Go 1.24, dan pada Agustus Go 1.25 dirilis sesuai siklus rilis reguler
  • Kedua versi mencakup API untuk pengembangan perangkat lunak yang andal, penguatan keamanan, dan peningkatan performa runtime
  • Tim Go sedang mendorong pengembangan integrasi AI, agen, dan infrastruktur berbasis Go sebagai respons terhadap perubahan di era AI generatif

Peningkatan Utama pada Bahasa dan Pustaka Standar

  • Paket testing/synctest, yang diperkenalkan secara eksperimental di Go 1.24 dan diresmikan pada 1.25, menyederhanakan pengujian kode asinkron dan paralel
    • Dengan virtualisasi waktu, pengujian yang lambat atau tidak stabil dapat diubah menjadi pengujian yang andal dan instan
    • Strukturnya terintegrasi secara mendalam dengan runtime Go dan pustaka standarnya
  • API testing.B.Loop meningkatkan kemudahan penggunaan API benchmark lama (B.N) dan mengatasi jebakan tradisional
  • Ditambahkan API pembersihan pengujian dan output log berbasis Context untuk meningkatkan efisiensi pengelolaan pengujian
  • Go 1.25 memperkenalkan container-aware scheduling untuk menyesuaikan pemrosesan paralel secara otomatis di dalam container
    • Mencegah CPU throttling dan memperbaiki latensi
  • Fitur flight recorder memperluas execution tracer sehingga dapat merekam secara rinci peristiwa tepat sebelum terjadinya error

Pengembangan Perangkat Lunak yang Berpusat pada Keamanan

  • Paket kriptografi Go dalam audit oleh firma keamanan independen Trail of Bits hanya menemukan satu isu dengan tingkat keparahan rendah
  • Melalui kolaborasi antara Go Security Team dan Geomys, Go memperoleh sertifikasi CAVP dan menyelesaikan persiapan untuk sertifikasi FIPS 140-3
    • Ini meningkatkan kegunaan Go di lingkungan yang teregulasi dan mengatasi ketergantungan pada solusi tidak resmi yang sudah ada
  • Pustaka standar Go terus berkembang ke arah safe by default
    • API os.Root di Go 1.24 mencegah kerentanan penelusuran jalur saat mengakses sistem berkas

Peningkatan Struktur Internal dan Performa

  • Pada Go 1.24, implementasi map didesain ulang sepenuhnya untuk mencerminkan desain hash table modern
    • Meningkatkan performa, menurunkan latensi, dan memperbaiki efisiensi memori
  • Green Tea garbage collector di Go 1.25 mengurangi overhead GC sebesar 10~40%
    • Menggunakan algoritme baru yang disesuaikan untuk perangkat keras modern
    • Pada Go 1.26, peningkatan tambahan 10% direncanakan pada perangkat keras yang mendukung AVX-512
    • Direncanakan aktif secara default mulai Go 1.26

Perluasan Stack Pengembangan dan Integrasi AI

  • Go berkembang melampaui sekadar bahasa menjadi platform pengembangan yang lengkap
  • Language server gopls diperkuat lewat 4 rilis reguler (v0.17~v0.20)
    • Menambahkan analyzer kode, refactoring, pemrosesan tag JSON, server MCP bawaan, dan lainnya
  • Diperkenalkan fitur modernisasi kode otomatis (modernizer)
    • Secara otomatis mengubah pola kode lama menjadi bentuk yang modern dan aman
    • Terintegrasi dengan fitur saran IDE untuk membantu menjaga konsistensi kode dan pembelajaran berbantuan AI
    • Pada Go 1.26, perintah go fix akan diperbarui agar dapat menerapkan seluruh modernizer sekaligus
  • Melalui kolaborasi dengan Anthropic dan komunitas, dirilis SDK Go resmi v1.0.0 untuk Model Context Protocol (MCP)
    • Mendukung klien dan server MCP, berdasarkan fitur MCP di gopls
    • ADK for Go dari Google menyediakan framework untuk pengembangan sistem multi-agen di atas MCP SDK
    • Ini menunjukkan bahwa konkurensi, performa, dan keandalan Go cocok untuk pengembangan AI produksi

Rencana ke Depan dan Komunitas

  • Direncanakan ketersediaan umum Green Tea GC, dukungan perangkat keras SIMD, dan peningkatan skalabilitas multicore
  • Sedang dikerjakan upgrade besar encoding/json, profiling kebocoran goroutine, serta peningkatan net/http dan unicode
  • Perluasan bahasa, alat, dan sistem diagnostik untuk menggabungkan Go dan AI
  • Proyek open source Go menargetkan perluasan komunitas kontributor dan skalabilitas proses pengembangan
  • Kemajuan Go bertumpu pada kontribusi pengguna dan komunitas kontributor, dan menandakan pertumbuhan berkelanjutan ke depan

1 komentar

 
GN⁺ 2025-11-16
Komentar Hacker News
  • Saya benar-benar suka Go. Terutama sangat menonjol di lingkungan monorepo. Saat menambahkan aplikasi baru, cukup buat satu folder dan masukkan file go yang berisi fungsi main(). Lalu jalankan go install ./... dari root dan semuanya akan dibangun dengan cepat.
    Kesederhanaan ini benar-benar langkah jenius saat perlu cepat membuat program CLI

    • Saya jadi bertanya-tanya apakah hampir semua bahasa lain juga pada dasarnya bisa melakukan ini
    • Menurut saya kasus penggunaan monorepo seperti ini perlu lebih sering dibahas
  • Dulu orang sering bilang bahasa bukanlah bottleneck, tapi saat pertama kali melihat Go saya merasa “ini berbeda”. Belajarnya juga sangat cepat — mungkin karena spesifikasi bahasanya kecil.
    Rasanya seperti mendapatkan 80% fitur Rust dengan 20% usaha

    • Kelebihan Go adalah seluruh bahasanya bisa dipelajari dalam waktu singkat. Bahkan konkurensi dan jebakannya pun bisa dipahami semuanya. Sebaliknya, C# atau C++ terlalu kompleks sehingga hampir tidak ada orang yang benar-benar memahami keseluruhannya
    • Seperti kata Rob Pike, Go adalah bahasa yang dirancang untuk developer junior. Tujuan besarnya juga untuk mengurangi waktu build di dalam Google. Karena itu, kalau ada dependensi yang tidak digunakan akan muncul error kompilasi (sumber)
    • Spesifikasi bahasa yang kecil tidak selalu berarti sederhana. Misalnya Swift punya spesifikasi besar tetapi didefinisikan dengan longgar. Saya bahkan pernah menemukan kesalahan di tata bahasa literal integer saat membaca spesifikasi Go
    • Tapi sayangnya 20% fitur Rust yang tersisa justru mencakup 80% dari kegunaannya
    • Selain itu, Go juga makin lama makin kompleks. Misalnya setelah generics ditambahkan, tingkat kesederhanaannya berkurang
  • Bagi saya Go terasa seperti Rust yang terlalu disederhanakan. Perbaikan kode otomatis, pemaksaan loop, dan pengecekan keberadaan key pada map juga terasa kurang nyaman.
    Pemrosesan array atau definisi enum juga terasa canggung, dan karena aturan linter di perusahaan, kode jadi terpecah-pecah sampai terasa seperti Java enterprise.
    Meski begitu, interface-nya sederhana dan cepat dipelajari.
    Kalau Go punya enum yang layak, sintaks slice yang alami, iterator, dan sintaks singkat untuk unwrapping result, pasti akan jauh lebih baik

    • Salah satu kekurangan Go adalah budaya nama variabel pendek. Fakta bahwa field pertama struct bisa bertindak seperti pewarisan, atau kontrol akses memakai huruf besar/kecil, juga merepotkan.
      Library json bawaan juga punya banyak masalah, misalnya menserialisasi slice kosong menjadi null.
      Meski begitu, saya akui kecepatan tooling-nya tinggi dan sifat praktisnya nyata
    • Saya pernah mem-fork lexer/parser Go dan membuat bahasa eksperimental yang menambahkan Result[T]/Option[T], sum type, iterator, tuple, dan lain-lain (proyek agl)
    • Go juga punya enum. Hanya saja tidak punya sum type. Array dan slice-nya hampir sama persis dengan C, dan justru karena kurang “sihir” jadinya terlihat membingungkan.
      Unwrapping result sudah lama dibahas komunitas, tetapi sampai sekarang belum ada solusi yang rapi
    • Sebenarnya Go sudah punya paket iter dan slices.Delete.
      Kalau Anda sering menghapus elemen dari tengah array, berarti Anda salah memilih struktur data
    • Penghapusan bisa dilakukan dengan slices.Delete, dan hal seperti pemaksaan if err != nil itu bukan masalah bahasa, melainkan masalah aturan tim
  • Saya sempat berharap Go akan dirilis untuk Apple II (lihat SWEET16)

  • Sangat mudah berkontribusi ke codebase Go yang baru.
    Berkat kesederhanaan bahasanya dan tool standar seperti gofmt dan golangci-lint, semua codebase memiliki struktur yang mirip.
    Tidak ada perdebatan soal build tool seperti di komunitas bahasa lain

    • Saya sedang berusaha meyakinkan para ilmuwan tempat saya bekerja untuk memakai code formatter dan linter. Menurut saya keputusan Go untuk memaksakannya adalah keputusan yang bagus
    • Saya baru mulai belajar Go, dan saya suka filosofi “hanya ada satu cara untuk melakukannya”.
      Hanya saja cara operator % menangani bilangan negatif sempat membingungkan
  • Menarik melihat diperkenalkannya alat modernisasi kode otomatis (modernizer).
    Mulai gopls v0.18.0, alat ini menggunakan analisis sintaks untuk menemukan idiom lama dan secara otomatis mengubahnya menjadi kode yang lebih cepat dan aman.
    Seperti gofmt yang menciptakan konsistensi gaya, modernizer akan menciptakan konsistensi idiom

  • Di golangci-lint, menyalakan linter seperti exhaustive, exhaustruct, dan wrapcheck sangat meningkatkan keamanan dan mempercepat pengembangan

  • Di perusahaan kami, kami menjalankan program onboarding 10 minggu untuk developer backend Go (tautan rencana)
    Sudah 7 tahun sejak beralih dari Python ke Go, dan ini menjadi faktor kunci keberhasilan startup kami

    • Namun, lowongan terkait Go kebanyakan menuntut pengetahuan DevOps (AWS, Kubernetes, CI/CD). Posisi software engineering murni jarang ada
    • Tautan langsung
  • Awalnya saya meragukan Go, tetapi sekarang ini bahasa favorit saya. Sederhana namun kuat.
    Hanya saja akan lebih baik jika pemeriksaan null, stack trace error, dan exhaustive check untuk sum type tersedia secara bawaan

    • Alat pemeriksaan null NilAway sedang dikembangkan
    • Pemeriksaan sum type bisa dilakukan dengan golangci-lint
  • Sepertinya Go akan sempurna jika punya sedikit lebih banyak fitur terkait functional programming.
    Terutama immutability, penanganan null, dan exhaustiveness pada switch yang terasa kurang.
    Saya menutupinya dengan memakai NilAway dari Uber, tetapi akan lebih baik jika didukung di level sistem tipe

    • Ada proyek bernama Borgo, tetapi masih belum matang
    • Saya memimpikan Go dengan sum type dan tanpa pointer nil. Gleam mendekati arah itu, tetapi sudah melaju ke jalur yang terlalu berbeda