Keluaran bahasa pengaturcaraan Go 1.13

Dikemukakan oleh keluaran bahasa pengaturcaraan Pergi 1.13, yang sedang dibangunkan oleh Google dengan penyertaan komuniti sebagai penyelesaian hibrid yang menggabungkan prestasi tinggi bahasa yang disusun dengan kelebihan bahasa skrip seperti kemudahan menulis kod, kelajuan pembangunan dan perlindungan ralat. Kod projek diedarkan oleh di bawah lesen BSD.

Sintaks Go adalah berdasarkan unsur biasa bahasa C dengan beberapa pinjaman daripada bahasa Python. Bahasanya agak ringkas, tetapi kodnya mudah dibaca dan difahami. Kod Go disusun ke dalam boleh laku binari berdiri sendiri yang berjalan secara asli tanpa menggunakan mesin maya (profil, penyahpepijatan dan subsistem pengesanan masalah masa jalan yang lain disepadukan sebagai komponen runtime), yang membolehkan anda mencapai prestasi yang setanding dengan program C.

Projek ini pada mulanya dibangunkan dengan fokus kepada pengaturcaraan berbilang benang dan operasi yang cekap pada sistem berbilang teras, termasuk menyediakan cara peringkat operator untuk mengatur pengkomputeran selari dan interaksi antara kaedah yang dilaksanakan selari. Bahasa ini juga menyediakan perlindungan terbina dalam terhadap blok memori yang terlalu diperuntukkan dan menyediakan keupayaan untuk menggunakan pengumpul sampah.

Utama inovasidiperkenalkan dalam keluaran Go 1.13:

  • Pakej crypto/tls mempunyai sokongan protokol yang didayakan secara lalai TLS 1.3. Menambahkan pakej baharu "crypto/ed25519" dengan sokongan untuk tandatangan digital Ed25519;
  • Menambah sokongan untuk awalan literal berangka baharu untuk mentakrifkan nombor perduaan (cth 0b101), perlapanan (0o377), khayalan (2.71828i) dan titik terapung heksadesimal (0x1p-1021), dan keupayaan untuk menggunakan aksara "_" untuk memisahkan digit secara visual dalam jumlah besar (1_000_000);
  • Sekatan untuk menggunakan hanya kaunter yang tidak ditandatangani dalam operasi syif telah dialih keluar, yang mengelakkan penukaran yang tidak perlu kepada jenis uint sebelum menggunakan pengendali β€œβ€Ήβ€Ήβ€ dan β€œβ€Ίβ€Ίβ€;
  • Menambah sokongan untuk platform Illumos (GOOS=illumos). Keserasian dengan platform Android 10 telah dipastikan. Keperluan untuk versi minimum FreeBSD (11.2) dan macOS (10.11 β€œEl Capitan”) telah ditingkatkan.
  • Pembangunan berterusan sistem modul baharu, yang boleh digunakan sebagai alternatif kepada GOPATH. Bertentangan dengan rancangan yang diumumkan sebelum ini dalam Go 1.13, sistem ini tidak didayakan secara lalai dan memerlukan pengaktifan melalui pembolehubah GO111MODULE=on atau penggunaan konteks di mana modul digunakan secara automatik. Sistem modul baharu menampilkan sokongan versi bersepadu, keupayaan penghantaran pakej dan pengurusan pergantungan yang dipertingkatkan. Dengan modul, pembangun tidak lagi terikat untuk bekerja dalam pepohon GOPATH, boleh mentakrifkan kebergantungan versi secara eksplisit dan mencipta binaan boleh berulang.

    Tidak seperti keluaran sebelumnya, aplikasi automatik sistem baharu kini berfungsi apabila fail go.mod hadir dalam direktori kerja semasa atau direktori induk semasa menjalankan arahan go, termasuk apabila ia berada dalam direktori GOPATH/src. Pembolehubah persekitaran baharu telah ditambah: GOPRIVATE, yang mentakrifkan laluan modul yang boleh diakses secara umum dan GOSUMDB, yang menentukan parameter akses kepada pangkalan data checksum untuk modul yang tidak disenaraikan dalam fail go.sum;

  • Perintah "go" secara lalai memuatkan modul dan menyemak integritinya menggunakan cermin modul dan pangkalan data checksum yang diselenggara oleh Google (proxy.golang.org, sum.golang.org dan index.golang.org);
  • Sokongan untuk pakej binari sahaja telah dihentikan; membina pakej dalam mod "//go:binary-only-package" kini mengakibatkan ralat;
  • Menambah sokongan untuk akhiran "@patch" pada perintah "go get", yang menunjukkan bahawa modul harus dikemas kini kepada keluaran penyelenggaraan terkini, tetapi tanpa mengubah versi major atau minor semasa;
  • Apabila mendapatkan semula modul daripada sistem kawalan sumber, perintah "go" kini menjalankan semakan tambahan pada rentetan versi, cuba memadankan nombor versi pseudo dengan metadata daripada repositori;
  • Menambah sokongan pemeriksaan ralat (pembungkusan ralat) melalui penciptaan pembungkus yang membenarkan penggunaan pengendali ralat standard. Sebagai contoh, kesilapan "e" boleh dililitkan ralat "w" dengan menyediakan kaedah Buka balut, kembali "w". Kedua-dua ralat "e" dan "w" tersedia dalam atur cara dan keputusan dibuat berdasarkan ralat "w", tetapi "e" menyediakan konteks tambahan kepada "w" atau mentafsirnya secara berbeza;
  • Prestasi komponen masa jalan telah dioptimumkan (peningkatan kelajuan sehingga 30% telah diperhatikan) dan pengembalian memori yang lebih agresif kepada sistem pengendalian telah dilaksanakan (sebelum ini, memori dikembalikan selepas lima minit atau lebih, tetapi kini serta-merta selepas mengurangkan saiz timbunan).

Sumber: opennet.ru

Tambah komen