Ngaleupaskeun basa pamrograman Go 1.18

Pelepasan basa pamrograman Go 1.18 dibere, anu dikembangkeun ku Google kalayan partisipasi masarakat salaku solusi hibrida anu ngagabungkeun kinerja luhur basa anu disusun sareng kaunggulan basa skrip sapertos gampang nyerat kode. , laju ngembangkeun sarta panyalindungan kasalahan. Kodeu proyék disebarkeun dina lisénsi BSD.

Sintaksis Go dumasar kana unsur akrab tina basa C sareng sababaraha injeuman tina basa Python. Basana rada singket, tapi kodena gampang dibaca sareng kaharti. Kodeu Go disusun kana file laksana binér anu mandiri anu dijalankeun sacara asli tanpa nganggo mesin virtual (profil, modul debugging, sareng subsistem deteksi masalah runtime sanésna diintegrasikeun salaku komponén runtime), anu ngamungkinkeun kinerja anu dibandingkeun sareng program C.

Proyék ieu mimitina dikembangkeun kalayan panon pikeun program multi-threaded sareng operasi efisien dina sistem multi-inti, kalebet nyayogikeun sarana tingkat operator pikeun ngatur komputasi paralel sareng interaksi antara metode anu dieksekusi paralel. Basa ogé nyadiakeun panyalindungan diwangun-di ngalawan blok memori leuwih-dialokasikeun sarta nyadiakeun kamampuhan pikeun ngagunakeun collector sampah.

Versi anyar nambihkeun dukungan pikeun fungsi sareng jinis umum (generik), kalayan bantosan pamekar anu tiasa ngartikeun sareng nganggo fungsi anu dirancang pikeun dianggo sareng sababaraha jinis sakaligus. Ieu oge mungkin migunakeun interfaces pikeun nyieun tipe digabungkeun nu bentang sababaraha tipe data. Rojongan pikeun generik dilaksanakeun tanpa megatkeun kasaluyuan mundur jeung kode nu aya. // Jumlah set nilai, lumaku pikeun int64 na float64 jenis func SumIntsOrFloats [K comparable, V int64 | float64](m peta [K] V) V {var s V pikeun _, v: = rentang m {s += v} balik s} // Pilihan séjén kalawan harti tipe generik: tipe Jumlah panganteur {int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V {var s V for _, v:= range m {s += v } return s }

Perbaikan séjén:

  • Utiliti pikeun uji kode fuzzing diintegrasikeun kana toolkit standar. Salila uji fuzzing, aliran sadaya kombinasi acak tina data input dihasilkeun sareng kamungkinan gagal nalika ngolahna dirékam. Upami sekuen ngadat atanapi henteu cocog sareng réspon anu dipiharep, maka paripolah ieu kamungkinan pisan nunjukkeun bug atanapi kerentanan.
  • Ditambahkeun dukungan pikeun ruang kerja multi-modular, ngamungkinkeun anjeun ngalaksanakeun paréntah dina sababaraha modul sakaligus, ngamungkinkeun anjeun sakaligus ngawangun sareng ngajalankeun kode dina sababaraha modul.
  • Optimasi kinerja anu penting parantos dilakukeun pikeun sistem dumasar kana prosesor Apple M1, ARM64 sareng PowerPC64. Aktipkeun kamampuhan pikeun ngagunakeun registers tinimbang tumpukan pikeun ngalirkeun argumen kana fungsi jeung mulangkeun hasilna. Ningkatkeun unrolling inline tina loop ku kompiler. Mariksa jinis dina kompiler parantos dirarancang deui. Sababaraha tés nunjukkeun paningkatan 20% dina kinerja kode dibandingkeun sareng sékrési sateuacana, tapi kompilasi nyalira peryogi 15% langkung lami.
  • Dina runtime, efisiensi mulangkeun mémori anu dibébaskeun kana sistem operasi parantos ningkat sareng operasi kolektor sampah parantos ningkat, paripolah anu janten langkung tiasa diprediksi.
  • pakét anyar net / netip na debug / buildinfo geus ditambahkeun kana perpustakaan baku. Rojongan pikeun TLS 1.0 sareng 1.1 ditumpurkeun sacara standar dina kode klien. Modul crypto / x509 parantos ngeureunkeun ngolah sertipikat anu ditandatanganan nganggo hash SHA-1.
  • Sarat pikeun lingkungan di Linux parantos diangkat; pikeun damel, anjeun ayeuna kedah gaduh kernel Linux sahenteuna versi 2.6.32. Dina release salajengna, parobahan sarupa diperkirakeun FreeBSD (rojongan pikeun cabang FreeBSD 11.x bakal dieureunkeun) jeung sahenteuna FreeBSD 12.2 bakal diperlukeun pikeun digawé.

sumber: opennet.ru

Tambahkeun komentar