Go ක්‍රමලේඛන භාෂාව නිකුත් කිරීම 1.18

Go 1.18 ක්‍රමලේඛන භාෂාව නිකුතුව ඉදිරිපත් කර ඇති අතර, එය Google විසින් ප්‍රජාවගේ සහභාගීත්වයෙන් සංවර්ධනය කරන ලද දෙමුහුන් විසඳුමක් ලෙස සම්පාදනය කරන ලද භාෂාවල ඉහළ කාර්ය සාධනය සහ කේත ලිවීමේ පහසුව ලෙස භාෂා ස්ක්‍රිප්ට් කිරීමේ වාසි සමඟ ඒකාබද්ධ කරයි. , සංවර්ධනයේ වේගය සහ දෝෂ ආරක්ෂා කිරීම. ව්යාපෘති කේතය BSD බලපත්රය යටතේ බෙදා හරිනු ලැබේ.

Go හි වාක්‍ය ඛණ්ඩය පදනම් වී ඇත්තේ පයිතන් භාෂාවෙන් සමහර ණය ගැනීම් සමඟ C භාෂාවේ හුරුපුරුදු මූලද්‍රව්‍ය මත ය. භාෂාව තරමක් සංක්ෂිප්ත ය, නමුත් කේතය කියවා තේරුම් ගැනීමට පහසුය. Go කේතය අථත්‍ය යන්ත්‍රයක් භාවිතා නොකර ස්වදේශීයව ක්‍රියාත්මක වන Stand-alone binary executable files වෙත සම්පාදනය කර ඇත (profiling, debugging modules, සහ අනෙකුත් ධාවන කාල ගැටළු හඳුනාගැනීමේ උපපද්ධති ධාවන කාල සංරචක ලෙස ඒකාබද්ධ කර ඇත), එමඟින් C වැඩසටහන් සමඟ සැසඳිය හැකි කාර්ය සාධනය සඳහා ඉඩ ලබා දේ.

ව්‍යාපෘතිය මුලින් සංවර්ධනය කර ඇත්තේ බහු-නූල් ක්‍රමලේඛනය සහ බහු-මූලික පද්ධති මත කාර්යක්ෂමව ක්‍රියාත්මක කිරීම සඳහා වන අතර, සමාන්තර පරිගණකකරණය සහ සමාන්තර-ක්‍රියාත්මක කරන ලද ක්‍රම අතර අන්තර්ක්‍රියා සංවිධානය කිරීම සඳහා ක්‍රියාකරු මට්ටමේ මාධ්‍යයන් සැපයීම ඇතුළුව. භාෂාව වැඩිපුර වෙන් කරන ලද මතක කොටස් වලට එරෙහිව ගොඩනඟන ලද ආරක්ෂාවක් සපයන අතර කසළ එකතු කරන්නෙකු භාවිතා කිරීමේ හැකියාව ද සපයයි.

В новой версии добавлена поддержка обобщённых функций и типов (дженериков), при помощи которых разработчик может определить и использовать функции, предназначенные для работы сразу с несколькими типами. Также предоставлена возможность использования интерфейсов для создания комбинированных типов, охватывающих несколько типов данных. Поддержка дженериков реализована без нарушения обратной совместимости с существующим кодом. // Суммирование значений набора, работающее для типов int64 и float64 func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // Другой вариант с обобщённым определением типа: type Number interface { int64 | float64 } func SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

වෙනත් වැඩිදියුණු කිරීම්:

  • В штатный инструментарий интегрированы утилиты для fuzzing-тестирования кода. В ходе fuzzing-тестировании осуществляется генерация потока всевозможных случайных комбинаций входных данных и фиксация возможных сбоев в процессе их обработки. Если какая-то последовательность приводит к краху или не соответствует ожидаемой реакции, то такое поведение с высокой вероятностью свидетельствует об ошибке или уязвимости.
  • Добавлена поддержка могомодульных рабочих пространств, позволяющих выполнять команды сразу для нескольких модулей, что позволяет одновременно собирать и запускать код в нескольких модулях.
  • Проведена значительная оптимизация производительности для систем на базе процессоров Apple M1, ARM64 и PowerPC64. Включена возможность использования регистров вместо стека для передачи аргументов в функции и возврата результата. Улучшено inline-развёртывание циклов компилятором. Полностью переделана проверка типов в компиляторе. В отдельных тестах по сравнению с прошлым выпуском отмечается повышение производительности кода на 20%, но сама компиляция стала выполняться примерно на 15% дольше.
  • В runtime повышена эффективность возвращения освобождённой памяти операционной системе и улучшена работа сборщика мусора, поведение которого стало более предсказуемым.
  • В стандартную библиотеку добавлены новые пакеты net/netip и debug/buildinfo. В клиентском коде по умолчанию отключена поддержка TLS 1.0 и 1.1. В модуле crypto/x509 прекращена обработка сертификатов с подписью на базе хэша SHA-1.
  • Подняты требования к окружению в Linux, для работы теперь необходимо наличие ядра Linux как минимум версии 2.6.32. В следующем выпуске аналогичные изменения ожидаются для FreeBSD (будет прекращена поддержка ветки FreeBSD 11.x) и для рабты потребуется наличие как минимум FreeBSD 12.2.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න