Go dasturlash tilining versiyasi 1.16

Google tomonidan hamjamiyat ishtirokida kompilyatsiya qilingan tillarning yuqori unumdorligini skript tillarining kod yozish qulayligi kabi afzalliklari bilan birlashtirgan gibrid yechim sifatida ishlab chiqilayotgan Go 1.16 dasturlash tilining chiqarilishi taqdim etildi. , rivojlanish tezligi va xatolardan himoya qilish. Loyiha kodi BSD litsenziyasi ostida tarqatiladi.

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 modullari va boshqa ish vaqti muammolarini aniqlash quyi tizimlari ish vaqti komponentlari sifatida birlashtirilgan), bu C dasturlari bilan taqqoslanadigan ishlash 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.

Go 1.16 da kiritilgan asosiy yangi xususiyatlar:

  • Dasturga o'zboshimchalik bilan fayllar va kataloglarni joylashtirish vositalarini taqdim qiluvchi o'rnatish paketi qo'shildi. Kompilyatsiya vaqtida ko'miladigan fayllarni belgilash uchun yangi "//go:embed" direktivasi taqdim etiladi. Masalan, kod izohida “//go:embed test.txt” ni belgilash va keyin “var f embed.FS” o‘zgaruvchisini e’lon qilish test.txt faylining o‘rnatilishiga va unga “” orqali kirish imkoniyatiga olib keladi. f” deskriptor. Xuddi shunday, siz ma'lum turdagi resurslar yoki individual qiymatlar bilan ishlash uchun zarur bo'lgan fayllarni joylashtirishingiz mumkin, masalan, version.txt faylidan "s" qator o'zgaruvchisini olish uchun siz quyidagilarni belgilashingiz mumkin: import _ "embed" ” //go:embed version.txt var s string print(lar)
  • Odatiy bo'lib, GOPATH-ga asoslangan qaramlikni boshqarish o'rnini bosuvchi integratsiyalangan versiyani qo'llab-quvvatlaydigan yangi modul tizimi endi talab qilinadi. GO111MODULE muhit oʻzgaruvchisi endi sukut boʻyicha “yoqilgan” holatiga oʻrnatiladi va modul rejimi ishchi yoki asosiy katalogda go.mod fayli mavjudligidan qatʼiy nazar ishlatiladi. Yangi rejimda “go build” va “go test” kabi qurish buyruqlari go.mod va go.sum mazmunini o‘zgartirmaydi va “go install” buyrug‘i versiya argumentlarini qayta ishlaydi (“go install example.com/”).[elektron pochta bilan himoyalangan]"). Eski harakatni qaytarish uchun GO111MODULE ni “avtomatik” ga o'zgartiring. Qayd etilishicha, ishlab chiquvchilarning 96 foizi allaqachon yangi modul tizimiga o‘tgan.
  • Bog'lovchi optimallashtirildi. Katta loyihalar uchun tartib endi 20-25% tezroq va 5-15% kamroq xotira talab qiladi.
  • Kompilyator "for" tsikllarining qisqartirilgan ta'riflari, usul qiymatlari va "turni o'zgartirish" konstruksiyalari bilan funktsiyalarni inline kengaytirish uchun qo'llab-quvvatlashni qo'shdi.
  • Yangi Apple M1 ARM chipi bilan jihozlangan Apple tizimlari uchun qo'shimcha qo'llab-quvvatlash. 64-bitli ARM-da NetBSD va MIPS64 tizimlarida OpenBSD-ni qo'llab-quvvatlaydigan netbsd/arm64 va openbsd/mips64 portlari qo'shildi. Linux/riscv64 portiga cgo va "-buildmode=pie" rejimini qo'llab-quvvatlash qo'shildi.
  • X87 kompilyatsiya rejimini qo'llab-quvvatlash to'xtatildi (GO386=387). SSE2 ko'rsatmalarsiz protsessorlarini qo'llab-quvvatlash endi "GO386=softfloat" dasturiy rejimi orqali mavjud.

Bundan tashqari, biz Dart 2.12 tilining beta-versiyasini sinovdan o'tkazish boshlanganini qayd etishimiz mumkin, unda "Null" qiymatidan foydalanishning xavfsiz rejimi (null xavfsizlik) barqarorlashtirildi, bu o'zgaruvchilardan foydalanishga urinishlar natijasida yuzaga keladigan ishdan chiqishni oldini olishga yordam beradi. qiymat aniqlanmagan va "Null" ga o'rnatiladi. Tartib o'zgaruvchilarga null qiymatlari aniq belgilanmagan bo'lsa, null qiymatlarga ega bo'lmasligini anglatadi. Rejim o'zgaruvchan turlarini qat'iy hurmat qiladi, bu kompilyatorga qo'shimcha optimallashtirishlarni qo'llash imkonini beradi. Turga muvofiqligi kompilyatsiya vaqtida tekshiriladi, masalan, “int” kabi noaniq holatni bildirmaydigan turga ega o‘zgaruvchiga “Null” qiymatini belgilashga harakat qilsangiz, xatolik ko‘rsatiladi.

Manba: opennet.ru

a Izoh qo'shish