Rilis bahasa pemrograman Go 1.14

Disampaikan oleh rilis bahasa pemrograman Pergi 1.14, 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.14:

  • Sistem modul baru pada perintah "go" dinyatakan siap untuk penggunaan umum, diaktifkan secara default, dan direkomendasikan untuk manajemen ketergantungan daripada GOPATH. 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.
  • Ditambahkan dukungan untuk menyematkan antarmuka dengan serangkaian metode yang tumpang tindih. Metode dari antarmuka bawaan kini dapat memiliki nama dan tanda tangan yang sama dengan metode di antarmuka yang sudah ada. Metode yang dideklarasikan secara eksplisit tetap unik seperti sebelumnya.
  • Performa ekspresi "defer" telah ditingkatkan, membuatnya hampir secepat memanggil fungsi yang ditangguhkan secara langsung, sehingga memungkinkan eksekusi fungsi yang ditangguhkan dalam kode yang sensitif terhadap performa.
  • Preemption coroutine (goroutine) asinkron disediakan - loop yang tidak berisi pemanggilan fungsi kini berpotensi menyebabkan kebuntuan penjadwal atau menunda dimulainya pengumpulan sampah.
  • Efisiensi sistem alokasi halaman memori telah ditingkatkan dan kini terdapat lebih sedikit pertentangan kunci dalam konfigurasi dengan nilai GOMAXPROCS yang besar. Hasilnya adalah pengurangan latensi dan peningkatan throughput sekaligus mendistribusikan blok memori dalam jumlah besar secara intensif.
  • Penguncian telah dioptimalkan dan jumlah sakelar konteks telah dikurangi saat menjalankan pengatur waktu internal yang digunakan dalam fungsi time.After, time.Tick, net.Conn.SetDeadline.
  • Pada perintah go, flag β€œ-mod=vendor” diaktifkan secara default jika terdapat direktori vendor di root, yang dimaksudkan untuk mengirimkan dependensi eksternal yang terkait dengan vendor tertentu. Menambahkan tanda "-mod=mod" terpisah untuk memuat modul dari cache modul, bukan dari direktori "vendor". Jika file go.mod bersifat read-only, flag β€œ-mod=readonly” disetel secara default jika tidak ada direktori β€œvendor” teratas. Menambahkan tanda "-modfile=file" untuk menentukan file go.mod alternatif, bukan file yang ada di direktori root modul.
  • Menambahkan variabel lingkungan GOINSECURE, jika disetel, perintah go tidak memerlukan penggunaan HTTPS dan melewatkan pemeriksaan sertifikat saat memuat modul secara langsung.
  • Kompiler telah menambahkan tanda β€œ-d=checkptr”, yang diaktifkan secara default, untuk memeriksa kepatuhan kode terhadap aturan penggunaan unsafe.Pointer yang aman.
  • Paket baru disertakan dalam pengiriman hash/maphash dengan fungsi hash non-kriptografi untuk membuat tabel hash untuk urutan byte atau string yang berubah-ubah.
  • Menambahkan dukungan eksperimental untuk platform RISC-V 64-bit di Linux.
  • Menambahkan dukungan untuk FreeBSD pada sistem ARM 64-bit.

Sumber: opennet.ru

Tambah komentar