Google-ээс олон нийтийн оролцоотойгоор боловсруулж буй Go 1.19 програмчлалын хэлийг танилцуулж байна. Энэ нь хөрвүүлсэн хэлний өндөр гүйцэтгэлийг код бичихэд хялбар гэх мэт скрипт хэлний давуу талуудтай хослуулсан эрлийз шийдэл юм. , хөгжлийн хурд, алдаанаас хамгаалах. Төслийн кодыг BSD лицензийн дагуу түгээдэг.
Go-ийн синтакс нь Си хэлний танил элементүүд дээр суурилж, Python-оос зарим зээл авсан байдаг. Хэл нь харьцангуй товч боловч унших, ойлгоход хялбар. Go код нь виртуал машин ашиглах шаардлагагүй (профайл үүсгэх, дибаг хийх болон бусад ажиллах үеийн асуудлыг илрүүлэх дэд системүүд нь ажиллах үеийн бүрэлдэхүүн хэсэг болгон нэгтгэгддэг) бие даасан хоёртын executables-д хөрвүүлэгдэж, C програмуудтай харьцуулах боломжтой гүйцэтгэлд хүрдэг.
Төслийг эхлээд олон урсгалтай програмчлал, олон цөмт системүүд дээр үр ашигтай ажиллуулах, түүний дотор зэрэгцээ тооцооллыг зохион байгуулах операторын түвшний хэрэгслээр хангах, зэрэгцээ гүйцэтгэх аргуудын хоорондын харилцан үйлчлэлийг харгалзан боловсруулсан болно. Энэ хэл нь хэт их хуваарилагдсан санах ойн блокоос хамгаалагдсан бөгөөд хог цуглуулагчийг ашиглах боломжийг олгодог.
Шинэ хувилбарт гарсан өөрчлөлтүүдийн дунд:
- Өмнөх хувилбарт нэмсэн ерөнхий функц, төрлүүдийн (ерөнхий) дэмжлэгийг сайжруулах ажил хийгдсэн. Эдгээр нь хөгжүүлэгчдэд олон төрлийн нэгэн зэрэг ажиллахад зориулагдсан функцуудыг тодорхойлж, ашиглах боломжийг олгодог. Оновчлолыг хэрэгжүүлснээр зарим программуудын гүйцэтгэлийг 20% хүртэл нэмэгдүүлсэн.
- Баримт бичгийн тайлбарууд нь одоо холбоос, жагсаалт болон гарчгийг тодорхойлох энгийн синтаксийг дэмждэг. gofmt хэрэгсэл нь API баримт бичгийн тайлбарын өргөтгөсөн чадавхийг харгалзан форматлахыг дэмждэг болсон.
- Go санах ойн загвар нь дараалсан тууштай атомын утгыг дэмждэггүй C, C++, Java, JavaScript, Rust, Swift-ийн загваруудтай нийцэж байхаар шинэчлэгдсэн. Атомын утгын хэрэглээг хялбарчлахын тулд atomic.Int64 болон atomic.Pointer[T] зэрэг шинэ төрлүүдийг sync/atomic багцад нэвтрүүлсэн. Энэхүү санах ойн загварын өөрчлөлт нь одоо байгаа кодтой нийцтэй байдалд нөлөөлөхгүй.
- Аюулгүй байдлыг сайжруулахын тулд os/exec модуль нь PATH орчны хувьсагчийг өргөтгөхдөө харьцангуй замыг авч үзэхээ больсон (жишээ нь, гүйцэтгэгдэх файлын замыг тодорхойлох үед одоогийн лавлахыг шалгахаа больсон).
- Хог цуглуулагч нь одоо зөөврийн санах ойн хязгаарлалтыг дэмждэг бөгөөд энэ нь овоолгын хэмжээг хязгаарлаж, санах ойг илүү түрэмгий нөхөн сэргээх замаар хэрэгждэг. Энэ нь санах ойн хэрэглээ нь бүх нөхцөлд заасан хязгаарт үлдэх баталгаагүй гэсэн үг юм. Зөөлөн хязгаар нь тогтмол санах ойн хэмжээтэй контейнерт ажиллаж байгаа програмуудыг оновчтой болгоход тустай байж болно.
- Unix-тэй төстэй системийг (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris) шүүх "go:build" мөрөнд ашиглаж болох "unix" бүтээх шинэ хязгаарлалтыг нэмсэн.
- Олон тооны гүйцэтгэлийн оновчлолыг хэрэгжүүлсэн. Хуулсан өгөгдлийн хэмжээг багасгахын тулд корутин стекийн хэмжээг динамикаар тохируулах дэмжлэг нэмэгдсэн. Unix системүүд дээр нэмэлт файлын тодорхойлогчдын автомат хэрэглээ хэрэгжсэн (RLIMIT_NOFILE хязгаарыг нэмэгдүүлсэн). X86-64 болон ARM64 системүүд дээр том шилжүүлэгчийн мэдэгдлүүдийг хурдасгахын тулд үсрэх хүснэгтүүдийг хэрэгжүүлсэн бөгөөд энэ нь том шилжүүлгийн мэдэгдлийг 20% хүртэл хурдан боловсруулах боломжийг олгодог. Riscv64 систем дээр процессорын регистрээр дамжуулан функцийн аргументуудыг дамжуулахыг хэрэгжүүлсэн нь гүйцэтгэлийг ойролцоогоор 10%-иар нэмэгдүүлсэн.
- Туршилтын дэмжлэг нэмэгдсэн Linux-окружений на системах с процессорами Loongson на базе 64-разрядной архитектуры LoongArch (GOARCH=loong64).
Эх сурвалж: opennet.ru
