Go dasturlash tilining versiyasi 1.14

Tanishtirdi dasturlash tilini chiqarish 1.14-ga o'ting, bu Google tomonidan hamjamiyat ishtirokida kompilyatsiya qilingan tillarning yuqori unumdorligini skript tillarining kod yozish qulayligi, rivojlanish tezligi va xatolardan himoya qilish kabi afzalliklari bilan birlashtirgan gibrid yechim sifatida ishlab chiqilmoqda. Loyiha kodi tarqaladi BSD litsenziyasi ostida.

Go sintaksisi Python tilidan ba'zi qarzlar bilan C tilining tanish elementlariga asoslangan. Til juda ixcham, ammo kodni o'qish va tushunish oson. Go kodi virtual mashinadan foydalanmasdan tabiiy ravishda ishlaydigan mustaqil ikkilik bajariladigan fayllarga kompilyatsiya qilinadi (profillash, disk raskadrovka va boshqa ish vaqtidagi muammolarni aniqlash quyi tizimlari quyidagi tarzda birlashtirilgan). ish vaqti komponentlari), bu sizga C dasturlari bilan taqqoslanadigan ishlashga erishish imkonini beradi.

Loyiha dastlab ko'p bosqichli dasturlash va ko'p yadroli tizimlarda samarali ishlash, shu jumladan parallel hisoblashni tashkil qilish uchun operator darajasidagi vositalarni taqdim etish va parallel bajariladigan usullar o'rtasidagi o'zaro ta'sirni hisobga olgan holda ishlab chiqilgan. Til, shuningdek, ortiqcha ajratilgan xotira bloklaridan o'rnatilgan himoyani ta'minlaydi va axlat yig'uvchidan foydalanish imkoniyatini beradi.

asosiy yangiliklarGo 1.14 versiyasida taqdim etilgan:

  • "O'tish" buyrug'idagi yangi modul tizimi umumiy foydalanishga tayyor deb e'lon qilinadi, sukut bo'yicha yoqilgan va GOPATH o'rniga qaramlikni boshqarish uchun tavsiya etiladi. Yangi modul tizimi integratsiyalashgan versiyalarni qo'llab-quvvatlash, paketlarni yetkazib berish imkoniyatlari va takomillashtirilgan qaramlikni boshqarish imkonini beradi. Modullar yordamida ishlab chiquvchilar endi GOPATH daraxti ichida ishlashga bog'lanmaydilar, versiyaga bog'liqliklarni aniq belgilashlari va takrorlanadigan tuzilmalarni yaratishlari mumkin.
  • Qo'shilgan bir-biriga o'xshash usullar to'plami bilan interfeyslarni joylashtirishni qo'llab-quvvatlash. O'rnatilgan interfeysdagi usullar endi mavjud interfeyslardagi usullar bilan bir xil nom va imzolarga ega bo'lishi mumkin. Aniq e'lon qilingan usullar avvalgidek noyob bo'lib qoladi.
  • "Kechiktirish" iborasining ishlashi yaxshilandi, bu uni deyarli kechiktirilgan funksiyani to'g'ridan-to'g'ri chaqirish kabi tez qildi, bu esa ishlashga sezgir kodda kechiktirilgan funksiyani bajarishga imkon beradi.
  • Koroutinlarning (goroutinlarning) asinxron oldindan belgilanishi ta'minlanadi - funktsiya chaqiruvlarini o'z ichiga olmaydigan halqalar endi potentsial ravishda rejalashtiruvchining yopilishiga olib kelishi yoki axlat yig'ish boshlanishini kechiktirishi mumkin.
  • Xotira sahifalarini taqsimlash tizimining samaradorligi oshirildi va GOMAXPROCS qiymati katta bo'lgan konfiguratsiyalarda endi blokirovkalar sezilarli darajada kamaygan. Natijada bir vaqtning o'zida katta xotira bloklarini intensiv ravishda tarqatish bilan birga kechikish qisqaradi va o'tkazuvchanlik oshadi.
  • Vaqt.After, time.Tick, net.Conn.SetDeadline funksiyalarida ishlatiladigan ichki taymerlarni ishga tushirishda qulflash optimallashtirildi va kontekstli kalitlar soni kamaydi.
  • Go buyrug'ida "-mod=vendor" bayrog'i sukut bo'yicha, agar ildizda ma'lum bir sotuvchiga bog'langan tashqi bog'liqliklarni yetkazib berish uchun mo'ljallangan sotuvchi katalogi mavjud bo'lsa, yoqiladi. Modullarni "sotuvchi" katalogidan emas, balki modul keshidan yuklash uchun alohida "-mod = mod" bayrog'i qo'shildi. Agar go.mod fayli faqat o'qish uchun mo'ljallangan bo'lsa, "-mod=faqat o'qish" bayrog'i sukut bo'yicha o'rnatiladi, agar yuqori "sotuvchi" katalogi bo'lmasa. Modulning ildiz katalogidagi fayl oʻrniga muqobil go.mod faylini belgilash uchun “-modfile=file” bayrogʻi qoʻshildi.
  • GOINSECURE muhit oʻzgaruvchisi qoʻshildi, oʻrnatilganda go buyrugʻi HTTPS dan foydalanishni talab qilmaydi va modullarni toʻgʻridan-toʻgʻri yuklashda sertifikat tekshiruvini oʻtkazib yuboradi.
  • Kompilyator unsafe.Pointerdan xavfsiz foydalanish qoidalariga muvofiqligini tekshirish uchun sukut bo'yicha yoqilgan "-d=checkptr" bayrog'ini qo'shdi.
  • Yetkazib berishda yangi paket mavjud hash/maphash ixtiyoriy bayt ketma-ketliklari yoki satrlari uchun xesh jadvallarini yaratish uchun kriptografik bo'lmagan xesh funktsiyalari bilan.
  • Linuxda 64-bitli RISC-V platformasi uchun tajribaviy yordam qoʻshildi.
  • 64-bitli ARM tizimlarida FreeBSD-ni qo'llab-quvvatlash qo'shildi.

Manba: opennet.ru

a Izoh qo'shish