ცოტა ხნის წინ გამოცხადდა პროგრამირების ენის ახალი ვერსიის «Go 1.19» გამოშვება, ვერსია, რომელიც აუმჯობესებს წინა ვერსიას სხვადასხვა გაუმჯობესების დამატებით და, უპირველეს ყოვლისა, შეცდომების გამოსწორებით. სიახლეებიდან, რომლებიც შეგვიძლია გამოვყოთ არის მეხსიერების მართვის გაუმჯობესება, უსაფრთხოების გაუმჯობესება და სხვა საკითხებთან ერთად.
მათთვის, ვინც ახალია Go-ში, უნდა იცოდეთ, რომ ეს არის პროგრამირების ენა, რომელიც შემუშავებულია საზოგადოების მონაწილეობით, როგორც ჰიბრიდული გადაწყვეტა, რომელიც აერთიანებს კომპილირებული ენების მაღალ შესრულებას უპირატესობებთან, როგორიცაა სკრიპტირების ენები, როგორიცაა კოდის დაწერის სიმარტივე, განვითარება და შეცდომებისგან დაცვა.
Go-ს სინტაქსი ეფუძნება C ენის ჩვეულებრივ ელემენტებს. პითონის ენიდან გარკვეული ნასესხებლებით. ენა საკმაოდ მოკლეა, მაგრამ კოდი ადვილად წასაკითხი და გასაგებია.
Go კოდი შედგენილია ცალკეულ ბინარულ შესრულებად ფაილებად რომლებიც მუშაობენ ბუნებრივად, ვირტუალური მანქანის გამოყენების გარეშე (პროფილის, გამართვის და მუშაობის დროის პრობლემების მოგვარების სხვა ქვესისტემები ჩაშენებულია როგორც გაშვების კომპონენტები).
Go 1.19 – ის მთავარი ახალი მახასიათებლები
Go 1.19-ის ამ ახალ ვერსიაში, რომელიც წარმოდგენილია, ხაზგასმულია, რომ გაკეთდა მუშაობა ფუნქციების და ზოგადი ტიპების მხარდაჭერის დახვეწაზე დამატებულია უახლეს ვერსიაში, რომლის დახმარებით დეველოპერს შეუძლია განსაზღვროს და გამოიყენოს ფუნქციები, რომლებიც შექმნილია ერთდროულად რამდენიმე ტიპთან მუშაობისთვის, პლუს ზოგიერთი პროგრამის შესრულების ოპტიმიზაცია გენერიკების გამოყენებით გაიზარდა 20%-ით.
კიდევ ერთი ცვლილება, რომელიც გამოირჩევა ახალი ვერსიით, არის ის დაემატა ბმულების, სიების და უფრო მარტივი სინტაქსის მხარდაჭერა დოკუმენტის კომენტარებში სათაურების განსაზღვრა. gofmt პროგრამა უზრუნველყოფს ფორმატირებას კომენტარების მოწინავე ფუნქციების გათვალისწინებით API დოკუმენტაციის გათვალისწინებით.
ამის გარდა შესწორებული Go მეხსიერების მოდელი C, C++, Java, JavaScript, Rust და Swift-თან შესასწორებლად რომლებიც არ იღებენ თანმიმდევრულად თანმიმდევრულ ატომურ მნიშვნელობებს. ახალი ტიპები, როგორიცაა atomic.Int64 და atomic.Pointer[T] დაინერგა სინქრონიზაციის/ატომურ პაკეტში, რათა გაადვილდეს ატომური მნიშვნელობების გამოყენება.
მეორეს მხრივ, ასევე აღნიშნულია, რომ ნაგვის შემგროვებელს ახლა აქვს რბილი საზღვრების განსაზღვრის უნარი, რომლებიც აღსრულებულია გროვის ზომის შეზღუდვით და მეხსიერების სისტემაში უფრო აგრესიულად დაბრუნებით, ანუ მოხმარება გარანტირებული არ არის მითითებულ ლიმიტებში ყველა პირობებში. რბილი ლიმიტები შეიძლება სასარგებლო იყოს პროგრამების ოპტიმიზაციისთვის, რომლებიც მუშაობენ ფიქსირებული მეხსიერების კონტეინერებში.
ხაზგასმულია ისიც, რომ Unix სისტემებზე დამატებითი ფაილის აღწერები ავტომატურად ჩართულია (RLIMIT_NOFILE ლიმიტის გაზრდა), x86-64 და ARM64 სისტემებზე დიდი ცვლილებების გამონათქვამების დასაჩქარებლად გამოიყენება გადახტომის ცხრილები, რომლებიც იძლევა დიდი ცვლილების გამონათქვამების 20%-მდე სწრაფად დამუშავების საშუალებას.
riscv64 სისტემებზე განხორციელდა ფუნქციის არგუმენტების გადაცემა CPU რეგისტრების მეშვეობით, რამაც შესაძლებელი გახადა მუშაობის დაახლოებით 10%-ით გაზრდა.
სხვა ცვლილებებიდან რომელიც გამოირჩევა ამ ახალი ვერსიიდან:
- განხორციელდა შესრულების მრავალი ოპტიმიზაცია.
- დამატებულია მხარდაჭერა რუტინული სტეკის ზომის დინამიურად დასაყენებლად, კოპირებული მონაცემების ზომის შესამცირებლად
- დაემატა Linux გარემოს ექსპერიმენტული მხარდაჭერა სისტემებზე Loongson პროცესორებით, რომლებიც დაფუძნებულია 64-ბიტიან LoongArch არქიტექტურაზე (GOARCH=loong64).
- მეხსიერების მოდელის შეცვლამ არ იმოქმედა ადრე დაწერილ კოდთან თავსებადობაზე.
- დამატებულია ახალი "unix" build შეზღუდვა, რომელიც შეიძლება გამოყენებულ იქნას "go:build" ხაზებში Unix-ის მსგავსი სისტემების გასაფილტრად (aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
- უსაფრთხოების გასაუმჯობესებლად, os/exec მოდული ახლა იგნორირებას უკეთებს ნათესავ ბილიკებს PATH გარემოს ცვლადის გაფართოებისას (მაგალითად, შესრულებადი ფაილის გზის განსაზღვრისას, მიმდინარე დირექტორია აღარ არის შემოწმებული).
და ბოლოს, თუ გაინტერესებთ მეტი გაიგოთ ამ ახალი გამოშვების შესახებ, შეგიძლიათ შეამოწმოთ დეტალები აქ შემდეგი ბმული.
იყავი პირველი კომენტარი