Langkah Selanjutnya 2

Ketentuan


Kami bekerja keras untuk Go 1.13, rilis yang, saya harap, akan berlangsung pada awal Agustus tahun ini. Ini adalah rilis pertama yang akan mencakup perubahan khusus dalam bahasa (dan bukan hanya perubahan kecil pada spesifikasi) setelah moratorium panjang pada perubahan tersebut.


Untuk sampai pada perubahan-perubahan dalam bahasa ini, kami mulai dengan beberapa proposal yang layak, dipilih dari daftar yang jauh lebih besar dari penawaran Go 2 , sesuai dengan proses evaluasi proposal baru yang dijelaskan dalam pos " Go 2, kami datang !". Kami ingin seleksi awal proposal oleh kami untuk memainkan peran yang relatif kecil dan, sebagian besar, tidak menimbulkan kontroversi, sehingga dengan probabilitas tinggi mereka akan melalui seluruh proses. Perubahan yang diusulkan harus kompatibel ke belakang agar dapat memecahkan sesedikit mungkin, karena modul (yang di masa depan akan memungkinkan Anda untuk memilih versi bahasa untuk modul tertentu) belum merupakan mode build default. Secara singkat, fase awal perubahan saat ini lebih bertujuan untuk bangkit kembali dan mendapatkan pengalaman, daripada menyelesaikan masalah besar.


Daftar kalimat awal kami - Unicode dalam bentuk umum dalam pengidentifikasi , literer bilangan bulat biner , pembatas untuk literal numerik , pergeseran bit oleh bilangan bulat yang ditandatangani - telah dipersingkat dan diperluas. Proposal untuk Unicode secara umum dalam pengidentifikasi tidak bertahan reduksi, karena kami tidak berhasil menyusun dokumen desain pada waktunya. Proposal untuk literer bilangan bulat biner telah sangat diperluas dan telah mengarah pada tinjauan komprehensif dan modernisasi sintaksis literal Go numeric. Kami juga menambahkan proposal pemeriksaan kesalahan draft Go 2, yang diterima sebagian.


Dengan perubahan awal pada Go 1.13, inilah saatnya untuk memikirkan masa depan Go 1.14 dan menentukan apa yang ingin kita ubah selanjutnya.


Saran untuk Go 1.14


Tujuan yang kami tetapkan untuk Go hari ini sama dengan di tahun 2007: untuk membuat pengembangan perangkat lunak dapat diskalakan . Tiga kendala utama untuk meningkatkan skalabilitas untuk Go adalah kurangnya paket dan sistem manajemen versi, dukungan untuk sistem penanganan kesalahan yang lebih baik, dan obat generik.


Dengan peningkatan sistem modul Go, masalah mengelola paket dan versi sedang diatasi. Tetap memperbaiki penanganan kesalahan dan obat generik. Kami menangani kedua masalah dan mempresentasikan dokumen rancangan konsep di GopherCon tahun lalu di Denver. Sejak itu, kami secara bertahap memperbaikinya. Pada penanganan kesalahan, kami menerbitkan proposal yang direvisi dan disederhanakan secara signifikan (lihat di bawah). Mengenai obat generik, kami sedang mengusahakannya "Generics in Go" karya Ian Lance Taylor akan memberikan pidato tentang topik ini di GopherCon di San Diego tahun ini, tetapi kami belum mencapai tahap di mana kami dapat memberikan proposal yang konkret.


Kami juga ingin terus meningkatkan bahasa itu sendiri secara bertahap. Untuk Go 1.14, kami memilih penawaran berikut:


# 32437 Fungsi pengecekan kesalahan bawaan adalah "coba" ( dokumen desain ).


Ini adalah saran kami untuk meningkatkan penanganan kesalahan. Meskipun ekstensi bahasa yang disarankan mundur yang kompatibel kecil, kami mengharapkan dampak yang signifikan pada kode penanganan kesalahan. Proposal ini telah menyebabkan sejumlah besar komentar, dan ini tidak mudah diikuti. Kami sarankan memulai dengan komentar pertama untuk deskripsi singkat, dan kemudian membaca dokumen desain terperinci. Komentar pertama memiliki beberapa tautan ke ringkasan ulasan. Ikuti panduan umpan balik (lihat bagian “Langkah Berikutnya”) sebelum menjawab.


# 6977 Izinkan penyematan antarmuka yang tumpang tindih ( dokumen desain ).


Ini adalah proposal lama yang kompatibel untuk membuat antarmuka embedding lebih toleran.


# 32479 Peringatkan tentang konversi string(int) bentuk string(int) ke go vet .


Konversi dari string(int) bentuk string(int) telah lama ditambahkan ke Go untuk kenyamanan, namun sangat membingungkan bagi pemula ( string(10) adalah "\n" , bukan "10" ) dan tidak lagi dibenarkan, karena sekarang konversi tersedia di unicode/utf8 paket unicode/utf8 . Karena menghapus transformasi ini bukan perubahan yang kompatibel ke belakang, kami sarankan untuk melempar kesalahan saat melakukan go vet .


# 32466 Terima prinsip desain kriptografi ( dokumen desain ).


Ini adalah permintaan umpan balik untuk serangkaian prinsip desain perpustakaan kriptografis yang ingin kami terima. Lihat juga saran yang sesuai untuk menghapus dukungan SSLv3 dari crypto/tls .


Langkah selanjutnya


Kami secara aktif mengumpulkan umpan balik tentang semua saran ini. Kami terutama tertarik pada bukti yang menunjukkan mengapa proposal tersebut mungkin tidak berfungsi dengan baik dalam praktiknya, atau dalam aspek-aspek bermasalah yang mungkin terlewatkan ketika kami kembangkan. Contoh meyakinkan dalam mendukung saran juga sangat membantu. Di sisi lain, komentar yang hanya berisi pendapat pribadi kurang efektif: kita dapat memperhitungkannya, tetapi kita tidak dapat secara konstruktif bekerja dengannya. Sebelum menjawab, silakan luangkan waktu sejenak untuk membaca dokumen desain terperinci dan ulasan sebelumnya atau ringkasannya. Topik Anda mungkin telah diangkat dan dibahas dalam komentar sebelumnya, terutama selama diskusi panjang.


Jika proposal ini tidak menemui masalah yang jelas, maka kami berencana untuk mengimplementasikan semuanya pada awal siklus pengembangan Go 1.14 (awal Agustus 2019), sehingga ini sudah dapat dievaluasi dalam praktik. Sesuai dengan proses mengevaluasi proposal, keputusan akhir akan dibuat pada akhir siklus pengembangan (awal November 2019).


Terima kasih telah membantu meningkatkan bahasa Go!


Robert Griesemer, untuk tim Go

Source: https://habr.com/ru/post/id457814/


All Articles