Go бағдарламалау тілі 1.18 шығарылымы

Go 1.18 бағдарламалау тілінің шығарылымы ұсынылды, оны Google қауымдастықтың қатысуымен құрастырылған тілдердің жоғары өнімділігін кодты жазудың қарапайымдылығы сияқты сценарий тілдерінің артықшылықтарымен біріктіретін гибридті шешім ретінде әзірлейді. , даму жылдамдығы және қателерден қорғау. Жоба коды 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 салыстырмалы, V саны](m карта[K]V) V { var s V үшін _, v := диапазон m { s += v } қайтару s }

Басқа жақсартулар:

  • Кодты анықтауға арналған утилиталар стандартты құралдар жинағына біріктірілген. Тестілеу кезінде кіріс деректерінің барлық ықтимал кездейсоқ комбинацияларының ағыны жасалады және оларды өңдеу кезінде мүмкін болатын сәтсіздіктер жазылады. Егер реттілік бұзылса немесе күтілетін жауапқа сәйкес келмесе, бұл әрекет қатені немесе осалдықты көрсетуі ықтимал.
  • Бір уақытта бірнеше модульдерде пәрмендерді орындауға мүмкіндік беретін, бірнеше модульдерде кодты бір уақытта құруға және іске қосуға мүмкіндік беретін көп модульді жұмыс кеңістігіне қолдау қосылды.
  • Apple M1, ARM64 және PowerPC64 процессорларына негізделген жүйелер үшін өнімділікті айтарлықтай оңтайландырулар жасалды. Функцияларға аргументтерді беру және нәтижені қайтару үшін стектің орнына регистрлерді пайдалану мүмкіндігін қосты. Компилятор арқылы циклдарды кірістірілген шығару жақсартылған. Компилятордағы типті тексеру толығымен қайта жасалды. Кейбір сынақтар алдыңғы шығарылыммен салыстырғанда код өнімділігінің 20%-ға артқанын көрсетеді, бірақ компиляцияның өзі шамамен 15%-ға ұзағырақ уақыт алады.
  • Жұмыс уақытында бос жадты операциялық жүйеге қайтару тиімділігі артты және қоқыс жинағыштың жұмысы жақсарды, оның әрекеті болжамды болды.
  • Стандартты кітапханаға жаңа net/netip және debug/buildinfo бумалары қосылды. TLS 1.0 және 1.1 қолдауы клиент кодында әдепкі бойынша өшірілген. Crypto/x509 модулі SHA-1 хэшімен қол қойылған сертификаттарды өңдеуді тоқтатты.
  • Linux жүйесіндегі ортаға қойылатын талаптар жұмыс істеу үшін көтерілді, енді сізде кемінде 2.6.32 нұсқасы бар Linux ядросы болуы керек. Келесі шығарылымда FreeBSD үшін ұқсас өзгерістер күтіледі (FreeBSD 11.x тармағына қолдау көрсету тоқтатылады) және жұмыс істеу үшін кем дегенде FreeBSD 12.2 қажет болады.

Ақпарат көзі: opennet.ru

пікір қалдыру