Keluaran bahasa pengaturcaraan Go 1.14

Dikemukakan oleh keluaran bahasa pengaturcaraan Pergi 1.14, 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.14:

  • Sistem modul baharu dalam perintah "go" diisytiharkan sedia untuk kegunaan umum, didayakan secara lalai dan disyorkan untuk pengurusan pergantungan dan bukannya GOPATH. 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 berulang.
  • Ditambah sokongan untuk membenamkan antara muka dengan set kaedah yang bertindih. Kaedah daripada antara muka terbina dalam kini boleh mempunyai nama dan tandatangan yang sama seperti kaedah dalam antara muka sedia ada. Kaedah yang diisytiharkan secara eksplisit kekal unik seperti sebelum ini.
  • Prestasi ungkapan "menangguhkan" telah dipertingkatkan, menjadikannya hampir sepantas memanggil fungsi tertunda secara langsung, membenarkan pelaksanaan fungsi tertunda dalam kod sensitif prestasi.
  • Preemption tak segerak bagi coroutine (goroutine) disediakan - gelung yang tidak mengandungi panggilan fungsi kini berpotensi menyebabkan kebuntuan penjadual atau melambatkan permulaan kutipan sampah.
  • Kecekapan sistem peruntukan halaman memori telah dipertingkatkan dan kini terdapat lebih sedikit pertikaian kunci dalam konfigurasi dengan nilai GOMAXPROCS yang besar. Hasilnya adalah pengurangan kependaman dan peningkatan daya pengeluaran sambil secara intensif mengedarkan blok memori yang besar.
  • Penguncian telah dioptimumkan dan bilangan suis konteks telah dikurangkan apabila menjalankan pemasa dalaman yang digunakan pada masa itu. Selepas, masa.Tick, net.Conn.SetDeadline berfungsi.
  • Dalam arahan go, bendera "-mod=vendor" didayakan secara lalai jika terdapat direktori vendor dalam akar, bertujuan untuk menghantar kebergantungan luaran yang terikat pada vendor tertentu. Menambah bendera "-mod=mod" yang berasingan untuk memuatkan modul daripada cache modul dan bukannya daripada direktori "vendor". Jika fail go.mod adalah baca sahaja, bendera "-mod=readonly" ditetapkan secara lalai jika tiada direktori "vendor" teratas. Menambahkan bendera "-modfile=file" untuk menentukan fail go.mod alternatif dan bukannya fail dalam direktori akar modul.
  • Menambah pembolehubah persekitaran GOINSECURE, apabila ditetapkan, arahan go tidak memerlukan penggunaan HTTPS dan melangkau pemeriksaan sijil apabila memuatkan modul secara langsung.
  • Pengkompil telah menambahkan bendera "-d=checkptr", didayakan secara lalai, untuk menyemak kod untuk pematuhan peraturan untuk penggunaan selamat yang tidak selamat. Pointer.
  • Pakej baru disertakan dalam penghantaran hash/maphash dengan fungsi cincang bukan kriptografi untuk mencipta jadual cincang untuk jujukan atau rentetan bait sewenang-wenangnya.
  • Menambahkan sokongan percubaan untuk platform RISC-V 64-bit di Linux.
  • Menambah sokongan untuk FreeBSD pada sistem ARM 64-bit.

Sumber: opennet.ru

Tambah komen