Rilis bahasa pemrograman Go 1.13

Disampaikan oleh rilis bahasa pemrograman Pergi 1.13, yang sedang dikembangkan oleh Google dengan partisipasi komunitas sebagai solusi hibrid yang menggabungkan kinerja tinggi bahasa yang dikompilasi dengan keunggulan bahasa skrip seperti kemudahan penulisan kode, kecepatan pengembangan, dan perlindungan kesalahan. Kode proyek didistribusikan oleh di bawah lisensi BSD.

Sintaks Go didasarkan pada elemen bahasa C yang familiar dengan beberapa pinjaman dari bahasa Python. Bahasanya cukup ringkas, namun kodenya mudah dibaca dan dipahami. Kode Go dikompilasi menjadi executable biner yang berdiri sendiri yang berjalan secara native tanpa menggunakan mesin virtual (profiling, debugging, dan subsistem deteksi masalah runtime lainnya terintegrasi sebagai komponen waktu proses), yang memungkinkan Anda mencapai kinerja yang sebanding dengan program C.

Proyek ini awalnya dikembangkan dengan tujuan pemrograman multi-thread dan operasi yang efisien pada sistem multi-core, termasuk menyediakan sarana tingkat operator untuk mengatur komputasi paralel dan interaksi antara metode yang dijalankan secara paralel. Bahasa ini juga memberikan perlindungan bawaan terhadap blok memori yang dialokasikan secara berlebihan dan menyediakan kemampuan untuk menggunakan pengumpul sampah.

Utama inovasidiperkenalkan pada rilis Go 1.13:

  • Paket crypto/tls memiliki dukungan protokol yang diaktifkan secara default TLS 1.3. Menambahkan paket baru "crypto/ed25519" dengan dukungan untuk tanda tangan digital Ed25519;
  • Menambahkan dukungan untuk awalan literal numerik baru untuk menentukan bilangan biner (misalnya 0b101), oktal (0o377), imajiner (2.71828i) dan floating point heksadesimal (0x1p-1021), dan kemampuan untuk menggunakan karakter "_" untuk memisahkan digit secara visual dalam jumlah besar (1_000_000);
  • Pembatasan penggunaan hanya penghitung tak bertanda tangan dalam operasi shift telah dihapus, sehingga menghindari konversi yang tidak perlu ke tipe uint sebelum menggunakan operator β€œβ€Ήβ€Ήβ€ dan β€œβ€Ίβ€Ίβ€;
  • Menambahkan dukungan untuk platform Illumos (GOOS=illumos). Kompatibilitas dengan platform Android 10 telah dipastikan. Persyaratan untuk versi minimum FreeBSD (11.2) dan macOS (10.11 β€œEl Capitan”) telah ditingkatkan.
  • Melanjutkan pengembangan sistem modul baru, yang dapat digunakan sebagai alternatif GOPATH. Bertentangan dengan rencana yang diumumkan sebelumnya di Go 1.13, sistem ini tidak diaktifkan secara default dan memerlukan aktivasi melalui variabel GO111MODULE=on atau penggunaan konteks di mana modul diterapkan secara otomatis. Sistem modul baru ini dilengkapi dukungan versi terintegrasi, kemampuan pengiriman paket, dan manajemen ketergantungan yang ditingkatkan. Dengan modul, pengembang tidak lagi terikat untuk bekerja dalam pohon GOPATH, dapat secara eksplisit menentukan dependensi berversi, dan membuat build yang dapat diulang.

    Tidak seperti rilis sebelumnya, penerapan otomatis sistem baru sekarang berfungsi ketika file go.mod ada di direktori kerja atau direktori induk saat ini ketika perintah go dijalankan, termasuk ketika file tersebut berada di direktori GOPATH/src. Variabel lingkungan baru telah ditambahkan: GOPRIVATE, yang mendefinisikan jalur modul yang dapat diakses publik, dan GOSUMDB, yang menentukan parameter akses ke database checksum untuk modul yang tidak tercantum dalam file go.sum;

  • Perintah "go" secara default memuat modul dan memeriksa integritasnya menggunakan cermin modul dan database checksum yang dikelola oleh Google (proxy.golang.org, sum.golang.org dan index.golang.org);
  • Dukungan hanya untuk paket biner telah dihentikan; membuat paket dalam mode β€œ//go:binary-only-package” sekarang menghasilkan kesalahan;
  • Menambahkan dukungan untuk akhiran "@patch" ke perintah "go get", yang menunjukkan bahwa modul harus diperbarui ke rilis pemeliharaan terbaru, tetapi tanpa mengubah versi mayor atau minor saat ini;
  • Saat mengambil modul dari sistem kontrol sumber, perintah "go" sekarang melakukan pemeriksaan tambahan pada string versi, mencoba mencocokkan nomor versi semu dengan metadata dari repositori;
  • Ditambahkan dukungan pemeriksaan kesalahan (pembungkusan kesalahan) melalui pembuatan pembungkus yang memungkinkan penggunaan penangan kesalahan standar. Misalnya, kesalahan "e" dapat mengatasi kesalahan "w" dengan menyediakan metode Membuka, mengembalikan "w". Kesalahan "e" dan "w" tersedia dalam program dan keputusan dibuat berdasarkan kesalahan "w", tetapi "e" memberikan konteks tambahan untuk "w" atau menafsirkannya secara berbeda;
  • Kinerja komponen runtime telah dioptimalkan (peningkatan kecepatan hingga 30% telah dicatat) dan pengembalian memori yang lebih agresif ke sistem operasi telah diterapkan (sebelumnya, memori dikembalikan setelah lima menit atau lebih, tetapi sekarang segera setelah mengurangi ukuran tumpukan).

Sumber: opennet.ru

Tambah komentar