Go программалоо тили релиз 1.16

Go 1.16 программалоо тилинин релизи сунушталды, ал Google тарабынан коомчулуктун катышуусу менен иштелип чыккан гибриддик чечим катары компиляцияланган тилдердин жогорку натыйжалуулугун скрипт тилдеринин код жазуунун жеңилдиги сыяктуу артыкчылыктары менен айкалыштырган. , иштеп чыгуу ылдамдыгы жана ката коргоо. Долбоордун коду BSD лицензиясы боюнча таратылат.

Go синтаксиси Python тилинен алынган кээ бир C тилинин тааныш элементтерине негизделген. Тили абдан кыска, бирок кодду окуу жана түшүнүү оңой. Go коду өзүнчө экилик аткарылуучу файлдарга компиляцияланган, алар виртуалдык машинаны колдонбостон (профильдөө, мүчүлүштүктөрдү оңдоо модулдары жана башка иштөө убактысынын көйгөйлөрүн аныктоочу подсистемалары иштөө убактысынын компоненттери катары бириктирилген), бул C программаларына салыштырууга болот.

Долбоор адегенде көп агымдуу программалоону жана көп ядролуу системаларда эффективдүү иштөөнү, анын ичинде параллелдүү эсептөөлөрдү жана параллелдүү аткарылуучу методдордун ортосундагы өз ара аракеттенүүнү уюштуруу үчүн оператор деңгээлиндеги каражаттарды камсыз кылуу менен иштелип чыккан. Тил ошондой эле ашыкча бөлүнгөн эстутум блокторуна каршы камтылган коргоону камсыз кылат жана таштанды жыйгычты колдонуу мүмкүнчүлүгүн берет.

Go 1.16да киргизилген негизги жаңы функциялар:

  • Программага ыктыярдуу файлдарды жана каталогдорду кыстаруу үчүн куралдар менен камсыз кылуучу камтылган пакет кошулду. Жаңы "//go:embed" директивасы компиляция убагында кыстарыла турган файлдарды көрсөтүү үчүн берилген. Мисалы, коддун комментарийинде “//go:embed test.txt” көрсөтүү жана андан кийин “var f embed.FS” өзгөрмөсүн жарыялоо test.txt файлынын кыстарылышына жана ага “ аркылуу кирүү мүмкүнчүлүгүнө алып келет. f” дескриптору. Ошо сыяктуу эле, сиз файлдарды ресурстарга же жумуш үчүн зарыл болгон белгилүү бир түрдөгү жеке маанилерге кыстара аласыз, мисалы, version.txt файлынан "s" сап өзгөрмөсүн алуу үчүн, төмөнкүнү белгилей аласыз: import _ "embed ” //go:embed version.txt var s string print(s)
  • GOPATH негизиндеги көз карандылыкты башкарууну алмаштырып, интегралдык версияны колдоо менен жаңы модулдук тутум демейки боюнча талап кылынат. GO111MODULE чөйрө өзгөрмөсү азыр демейки боюнча "күйгүзүлгөн" деп коюлган жана модулдук режим жумушчу же аталык каталогдо go.mod файлынын бар экендигине карабастан колдонулат. Жаңы режимде "go build" жана "go test" сыяктуу куруу буйруктары go.mod жана go.sum мазмунун өзгөртпөйт, ал эми "go install" буйругу версияга тиешелүү аргументтерди иштетет ("go install example.com/cmd@v1.0.0"). Мурунку жүрүм-турумга кайтуу үчүн, GO111MODULEди "авто" деп өзгөртүңүз. Белгиленгендей, иштеп чыгуучулардын 96% жаңы модулдук системага көчүп кетишкен.
  • Шилтеме оптималдаштырылды. Ири долбоорлор үчүн макет азыр 20-25% тезирээк жана 5-15% аз эстутумду талап кылат.
  • Компилятор "үчүн" циклдеринин, методдун баалуулуктарынын жана "тип которгучунун" конструкцияларынын кыскартылган аныктамалары менен функцияларды саптык кеңейтүү үчүн колдоо кошту.
  • Жаңы Apple M1 ARM чиптери менен жабдылган Apple системалары үчүн кошумча колдоо. 64 биттик ARMде NetBSD жана MIPS64 системаларында OpenBSD колдоосу менен netbsd/arm64 жана openbsd/mips64 порттору кошулду. Linux/riscv64 портуна cgo жана “-buildmode=pie” режими үчүн колдоо кошулду.
  • x87 компиляция режимин колдоо токтотулду (GO386=387). SSE2 көрсөтмөсүз процессорлорду колдоо азыр "GO386=softfloat" программалык режими аркылуу жеткиликтүү.

Кошумчалай кетсек, Dart 2.12 тилинин бета-релизинин тестирлөөнүн башталышын белгилей кетсек болот, анда “Null” коопсуз режими турукташтырылган, ал мааниси аныкталбаган жана “Null” деп коюлган өзгөрмөлөрдү колдонуу аракеттеринен келип чыккан кыйроолордон качууга жардам берет. ”. Режим өзгөрмөлөр нөл маанилерине ээ боло албастыгын билдирет, эгерде алар ачык нөл мааниге ээ болмоюнча. Режим өзгөрмөлөрдүн түрлөрүн катуу сыйлайт, бул компиляторго кошумча оптималдаштырууларды колдонууга мүмкүндүк берет. Типтин шайкештиги компиляция учурунда текшерилет, мисалы, "Int" сыяктуу аныкталбаган абалды билдирбеген түрдөгү өзгөрмөгө "Null" маанисин ыйгарууга аракет кылсаңыз, ката көрсөтүлөт.

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster