Нашри забони барномасозии Go 1.16

Нашри забони барномасозии Go 1.16 муаррифӣ шудааст, ки онро Google бо иштироки ҷомеа ҳамчун як ҳалли гибридӣ таҳия мекунад, ки иҷрои баланди забонҳои тартибдодашударо бо бартариҳои забонҳои скриптӣ, ба монанди осонии навиштани код муттаҳид мекунад. , суръати рушд ва муҳофизати хатогиҳо. Рамзи лоиҳа таҳти иҷозатномаи BSD паҳн карда мешавад.

Синтаксиси Go ба унсурҳои шиноси забони Си бо баъзе қарзҳо аз забони Python асос ёфтааст. Забон хеле мухтасар аст, аммо кодро хондан ва фаҳмидан осон аст. Рамзи Go ба файлҳои иҷрошавандаи бинарии мустақил тартиб дода мешавад, ки бе истифодаи мошини виртуалӣ кор мекунанд (профилсозӣ, модулҳои ислоҳи хатогӣ ва дигар зерсистемаҳои муайянкунии мушкилоти вақти корӣ ҳамчун ҷузъҳои вақти корӣ муттаҳид карда мешаванд), ки имкон медиҳад иҷроишро бо барномаҳои C муқоиса кунад.

Лоиҳа дар ибтидо бо назардошти барномасозии бисёрсоҳавӣ ва кори муассир дар системаҳои бисёраслӣ, аз ҷумла таъмини воситаҳои сатҳи оператор барои ташкили ҳисобҳои параллелӣ ва ҳамкорӣ байни усулҳои параллелӣ иҷрошуда таҳия шудааст. Забон инчунин муҳофизати дохилиро аз блокҳои хотираи аз ҳад зиёд ҷудошуда таъмин мекунад ва қобилияти истифодаи коллектори партовҳоро таъмин мекунад.

Хусусиятҳои нави асосии дар Go 1.16 муаррифӣшуда:

  • Бастаи embed илова карда шуд, ки асбобҳоро барои ворид кардани файлҳо ва директорияҳои ихтиёрӣ ба барнома таъмин мекунад. Директиваи нави "//go:embed" барои муайян кардани файлҳое, ки дар вақти компиляция дохил карда мешаванд, пешниҳод карда мешавад. Масалан, дар шарҳи код нишон додани "//go:embed test.txt" ва баъдан эълон кардани тағирёбандаи "var f embed.FS" боиси воридшавии файли test.txt ва имкони дастрасӣ ба он тавассути " f" тавсифкунанда. Ба ҳамин монанд, шумо метавонед файлҳоро бо захираҳо ё арзишҳои инфиродии навъи муайяне, ки барои кор заруранд, ҷойгир кунед, масалан, барои гирифтани тағирёбандаи сатри "s" аз файли version.txt, шумо метавонед муайян кунед: import _ "embed ” //go:embed version.txt var s сатри чоп (ҳо)
  • Бо нобаёнӣ, ҳоло системаи нави модул бо дастгирии интегралии версия талаб карда мешавад, ки идоракунии вобастагии GOPATH-ро иваз мекунад. Тағйирёбандаи муҳити GO111MODULE ҳоло ба таври пешфарз ба "фаъолият" муқаррар карда шудааст ва режими модулҳо новобаста аз мавҷудияти файли go.mod дар директорияи корӣ ё волидайн истифода мешавад. Дар реҷаи нав фармонҳои сохтан ба монанди "go. build" ва "go test" мундариҷаи go.mod ва go.sumро тағир намедиҳанд ва фармони "go install" далелҳои версияро коркард мекунад ("go install example.com/"[почтаи электронӣ ҳифз карда шудааст]"). Барои баргардонидани рафтори кӯҳна, GO111MODULE -ро ба "авто" иваз кунед. Қайд карда мешавад, ки 96% таҳиягарон аллакай ба системаи модули нав гузаштаанд.
  • Пайвасткунак оптимизатсия карда шудааст. Барои лоиҳаҳои калон, тарҳ ҳоло 20-25% тезтар аст ва хотираи 5-15% камтарро талаб мекунад.
  • Компилятор барои тавсеаи дохилии функсияҳо бо таърифҳои мухтасари ҳалқаҳои "барои", арзишҳои метод ва конструксияҳои "навъи гузариш" дастгирӣ илова кардааст.
  • Дастгирии иловашуда барои системаҳои Apple муҷаҳҳаз бо чипи нави Apple M1 ARM. Илова ба портҳои netbsd/arm64 ва openbsd/mips64 бо дастгирии NetBSD дар ARM 64-бит ва OpenBSD дар системаҳои MIPS64. Дастгирии cgo ва режими "-buildmode=pie" ба порти linux/riscv64 илова карда шуд.
  • Дастгирии реҷаи тартибдиҳии x87 қатъ карда шуд (GO386=387). Дастгирии протсессори бе дастури SSE2 ҳоло тавассути режими нармафзори "GO386=softfloat" дастрас аст.

Илова бар ин, мо метавонем оғози санҷиши бета-версияи забони Dart 2.12-ро қайд кунем, ки дар он ҳолати бехатари "Null" мӯътадил шудааст, ки барои пешгирӣ кардани садамаҳо дар натиҷаи кӯшиши истифодаи тағирёбандаҳое, ки арзиши онҳо номуайян аст ва ба "Null" гузошта шудааст, кӯмак мекунад. ». Режим маънои онро дорад, ки тағирёбандаҳо қиматҳои сифр дошта наметавонанд, агар онҳо ба таври возеҳ арзиши null таъин карда нашаванд. Режим ба таври қатъӣ намудҳои тағирёбандаро эҳтиром мекунад, ки ба компилятор имкон медиҳад, ки оптимизатсияи иловагиро татбиқ кунад. Мутобиқати намуд дар вақти тартибдиҳӣ санҷида мешавад, масалан, агар шумо кӯшиш кунед, ки арзиши "Null" -ро ба тағирёбанда бо навъе, ки ҳолати номуайянро дар назар надорад, ба мисли "int" таъин кунед, хатогӣ нишон дода мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ