Go програмчлалын хэлийг гаргах 1.14

Оруулсан програмчлалын хэлний хувилбар 1.14 руу оч, хөрвүүлсэн хэлний өндөр гүйцэтгэлийг код бичихэд хялбар, хөгжүүлэлтийн хурд, алдаанаас хамгаалах зэрэг скрипт хэлний давуу талуудтай хослуулсан эрлийз шийдэл болгон олон нийтийн оролцоотойгоор Google-ээс боловсруулж байна. Төслийн код тараасан BSD лицензийн дагуу.

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

Төслийг эхлээд олон урсгалтай програмчлал, олон цөмт системүүд дээр үр ашигтай ажиллуулах, түүний дотор зэрэгцээ тооцооллыг зохион байгуулах операторын түвшний хэрэгслээр хангах, зэрэгцээ гүйцэтгэх аргуудын хоорондын харилцан үйлчлэлийг харгалзан боловсруулсан болно. Энэ хэл нь хэт их хуваарилагдсан санах ойн блокоос хамгаалагдсан бөгөөд хог цуглуулагчийг ашиглах боломжийг олгодог.

Үндсэн инновациGo 1.14 хувилбарт танилцуулсан:

  • "Go" командын шинэ модулийн системийг ерөнхийд ашиглахад бэлэн гэж зарлаж, анхдагчаар идэвхжүүлсэн бөгөөд GOPATH-ийн оронд хараат байдлын менежментийг санал болгосон. Шинэ модулийн систем нь хувилбарын нэгдсэн дэмжлэг, багц хүргэх чадвар, хараат байдлын менежментийг сайжруулсан. Модулиудын тусламжтайгаар хөгжүүлэгчид GOPATH модны дотор ажиллахгүй болж, хувилбарын хамаарлыг тодорхой тодорхойлж, давтагдах боломжтой бүтээцүүдийг бий болгож чадна.
  • Нэмсэн давхцаж буй аргуудтай интерфэйсүүдийг оруулахад дэмжлэг үзүүлэх. Суурилуулсан интерфейсийн аргууд нь одоо байгаа интерфэйсүүдийн аргуудтай ижил нэр, гарын үсэгтэй байж болно. Ил тод зарласан аргууд нь өмнөх шигээ өвөрмөц хэвээр байна.
  • "Хойшлуулах" илэрхийллийн гүйцэтгэлийг сайжруулж, хойшлуулсан функцийг шууд дуудахтай адил хурдан болгож, гүйцэтгэлд мэдрэмтгий кодонд хойшлуулсан функцийг гүйцэтгэх боломжийг олгосон.
  • Корутинуудыг (goroutines) асинхрон урьдчилан сэргийлэх боломжтой - функцын дуудлагыг агуулаагүй гогцоонууд одоо төлөвлөгчийг гацаанд оруулах эсвэл хог цуглуулах эхлэлийг хойшлуулах боломжтой.
  • Санах ойн хуудасны хуваарилалтын системийн үр ашиг сайжирч, GOMAXPROCS-ийн том утгууд бүхий тохиргоонуудад түгжих маргаанууд мэдэгдэхүйц багассан. Үүний үр дүнд санах ойн том блокуудыг нэгэн зэрэг эрчимтэй тарааж, хоцролтыг багасгаж, дамжуулах чадварыг нэмэгдүүлнэ.
  • Түгжээг оновчтой болгож, контекст шилжүүлэгчийн тоог тухайн хугацаанд ашигласан дотоод таймерыг багасгасан.After, time.Tick, net.Conn.SetDeadline функцууд.
  • Go командын "-mod=vendor" гэсэн тугийг үндсэнд нь тодорхой борлуулагчтай холбоотой гадны хамаарлыг хүргэх зориулалттай үйлдвэрлэгчийн лавлах байгаа бол анхдагчаар идэвхжүүлдэг. Модулуудыг "борлуулагч" лавлахаас биш модулийн кэшээс ачаалах тусдаа "-mod=mod" тугийг нэмсэн. Хэрэв go.mod файл нь зөвхөн уншигдах боломжтой бол дээд "борлуулагч" лавлах байхгүй бол "-mod=readonly" гэсэн тугийг анхдагчаар тохируулна. Модулийн үндсэн директорт байгаа файлын оронд өөр go.mod файлыг зааж өгөхийн тулд "-modfile=file" тугийг нэмсэн.
  • GOINSECURE орчны хувьсагчийг нэмсэн бөгөөд тохируулсан үед go команд нь HTTPS ашиглах шаардлагагүй бөгөөд модулиудыг шууд ачаалах үед гэрчилгээний шалгалтыг алгасах болно.
  • Хөрвүүлэгч нь unsafe.Pointer-ийг аюулгүй ашиглах дүрэмд нийцэж байгаа эсэхийг шалгахын тулд анхдагчаар идэвхжсэн “-d=checkptr” тугийг нэмсэн.
  • Хүргэлтэнд шинэ багц багтсан болно хэш/maphash криптографийн бус хэш функцууд нь дурын байт дараалал эсвэл мөрүүдэд зориулсан хэш хүснэгтүүдийг үүсгэх.
  • Линукс дээрх 64 битийн RISC-V платформд туршилтын дэмжлэг нэмсэн.
  • 64 битийн ARM системүүд дээр FreeBSD-ийн дэмжлэгийг нэмсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх