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

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

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

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

Шинэ хувилбар нь ерөнхий функц, төрлүүдийн (ерөнхий) дэмжлэгийг нэмсэн бөгөөд үүний тусламжтайгаар хөгжүүлэгч хэд хэдэн төрөлтэй нэгэн зэрэг ажиллахад зориулагдсан функцуудыг тодорхойлж, ашиглах боломжтой болно. Олон төрлийн өгөгдлийн төрлийг хамарсан хосолсон төрлүүдийг үүсгэхийн тулд интерфейсийг ашиглах боломжтой. Одоо байгаа кодтой нийцтэй байдлыг алдагдуулахгүйгээр ерөнхий програмын дэмжлэгийг хэрэгжүүлдэг. // нийлбэр багц утгууд, int64 болон float64 төрлүүдэд ажилладаг func SumIntsOrFloats[K харьцуулах боломжтой, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Ерөнхий төрлийн тодорхойлолттой өөр сонголт: төрөл Тоо интерфэйс { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

Бусад сайжруулалт:

  • Тохиромжгүй кодын тест хийх хэрэгслүүдийг стандарт хэрэгслийн багцад нэгтгэсэн болно. Тохиромжтой туршилтын явцад оролтын өгөгдлийн бүх боломжит санамсаргүй хослолын урсгалыг үүсгэж, тэдгээрийг боловсруулах явцад гарч болзошгүй алдааг бүртгэдэг. Хэрэв дараалал гацсан эсвэл хүлээгдэж буй хариу үйлдэлтэй таарахгүй бол энэ үйлдэл нь алдаа эсвэл эмзэг байдлыг илтгэнэ.
  • Олон модультай ажлын талбарт зориулсан дэмжлэг нэмэгдсэн нь олон модуль дээр тушаалуудыг нэгэн зэрэг гүйцэтгэх боломжийг олгож, олон модульд нэгэн зэрэг код үүсгэж, ажиллуулах боломжийг олгоно.
  • Apple M1, ARM64 болон PowerPC64 процессорууд дээр суурилсан системүүдийн гүйцэтгэлд ихээхэн оновчлол хийсэн. Функцуудад аргумент дамжуулах, үр дүнг буцаахын тулд стекийн оронд регистр ашиглах боломжийг идэвхжүүлсэн. Хөрвүүлэгчийн гогцоонуудын доторлогоо тайлалтыг сайжруулсан. Хөрвүүлэгчийн төрлийг шалгах бүрэн шинэчлэгдсэн. Зарим туршилтууд өмнөх хувилбартай харьцуулахад кодын гүйцэтгэл 20%-иар нэмэгдсэнийг харуулж байгаа ч эмхэтгэл нь өөрөө ойролцоогоор 15%-иар удаан үргэлжилдэг.
  • Ашиглалтын явцад суллагдсан санах ойг үйлдлийн системд буцаах үр ашиг нэмэгдэж, хог цуглуулагчийн ажиллагаа сайжирч, зан төлөвийг урьдчилан таамаглах боломжтой болсон.
  • Стандарт номын санд net/netip, debug/buildinfo гэсэн шинэ багцууд нэмэгдсэн. TLS 1.0 болон 1.1-ийн дэмжлэгийг үйлчлүүлэгчийн кодонд анхдагч байдлаар идэвхгүй болгосон. Crypto/x509 модуль нь SHA-1 хэш ашиглан гарын үсэг зурсан гэрчилгээг боловсруулахаа зогсоосон.
  • Линукс дахь орчинд тавигдах шаардлагыг нэмэгдүүлсэн; ажиллахын тулд та одоо дор хаяж 2.6.32 хувилбартай Линуксийн цөмтэй байх шаардлагатай. Дараагийн хувилбарт FreeBSD-д ижил төстэй өөрчлөлтүүд хийгдэх төлөвтэй байна (FreeBSD 11.x салбарыг дэмжихээ болино) ба ажиллахын тулд хамгийн багадаа FreeBSD 12.2 шаардлагатай.

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

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