Go 프로그래밍 언어 릴리스 1.15

도입 프로그래밍 언어 릴리스 1.15로 이동는 컴파일 언어의 높은 성능과 코드 작성 용이성, 개발 속도, 오류 방지 등 스크립팅 언어의 장점을 결합한 하이브리드 솔루션으로 Google이 커뮤니티의 참여를 통해 개발하고 있습니다. 프로젝트 코드 배포자 BSD 라이센스에 따라.

Go의 구문은 Python 언어에서 일부 차용한 C 언어의 친숙한 요소를 기반으로 합니다. 언어는 매우 간결하지만 코드는 읽고 이해하기 쉽습니다. Go 코드는 가상 머신을 사용하지 않고 기본적으로 실행되는 독립형 바이너리 실행 파일로 컴파일됩니다(프로파일링, 디버깅 및 기타 런타임 문제 감지 하위 시스템은 다음과 같이 통합됩니다). 런타임 구성요소)를 사용하면 C 프로그램과 비슷한 성능을 얻을 수 있습니다.

이 프로젝트는 처음에는 병렬 컴퓨팅을 구성하고 병렬 실행 방법 간의 상호 작용을 위한 운영자 수준 수단을 제공하는 것을 포함하여 멀티 스레드 프로그래밍과 멀티 코어 시스템의 효율적인 작동에 초점을 맞춰 개발되었습니다. 또한 이 언어는 과도하게 할당된 메모리 블록에 대한 기본 보호 기능을 제공하고 가비지 수집기를 사용하는 기능을 제공합니다.

주요 혁신Go 1.15 릴리스에 도입되었습니다.

  • Существенно улучшена работа компоновщика, как в области повышения скорости работы и сокращения потребления памяти, так и в направлении упрощения сопровождения кода. При тестировании в операционных системах, использующих формат исполняемых файлов ELF (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, Solaris), компоновка типового набора крупных Go-приложений стала выполняться на 20% быстрее, а потребление памяти в среднем уменьшилось на 30%. Повышение производительности стало возможным благодаря переходу на новый формат объектных файлов и переработке внутренних стадий для повышения уровня распараллеливания работ. Собственный компоновщик теперь используется по умолчанию на системах linux/amd64 и linux/arm64 в режиме «-buildmode=pie», в котором теперь не требуется применения Си-компоновщика.
  • В runtime значительно улучшено распределение мелких объектов на системах с большим числом ядер CPU и сокращены задержки. При сбоях обеспечен вывод значений с числовыми и строковыми типами, вместо показа адреса. При отправке Go-приложению сигналов SIGSEGV, SIGBUS и SIGFPE, в случае отсутствия обработчика os/signal.Notify, приложение будет завершено с выводом трассировки стека (ранее поведение было непредсказуемым).
  • Проведена оптимизация компилятора, позволившая сократить размер генерируемых исполняемых файлов в среднем на 5% за счёт прекращения включения некоторых метаданных для сборщика мусора и более агрессивной чистке неиспользуемых метаданных.
  • В компилятор и ассемблер добавлен флаг «-spectre» для включения защиты от атак класса Spectre (для большинства программ не требуется, включение опции может быть оправдано лишь для отдельных очень специфичных случаев).
  • В сертификатах X.509 объявлено устаревшим поле CommonName, которое теперь не трактуется как имя хоста в случае отсутствия поля Subject Alternative Names.
  • В команде «go» в переменной окружения GOPROXY теперь можно перечислять несколько прокси, разделённых запятой или символом «|». Если первый прокси в списке вернёт ошибку (404 или 410), то будет предпринята попытка обращения через второй прокси и т.д.
  • В утилите vet добавлено предупреждение о попытке преобразования из string(x), если «x» является целочисленным типом, отличным от rune или byte.
  • В утилиту objdump добавлен флаг «-gnu» для поддержки дизассемблирования синтаксиса GNU assembler.
  • Добавлен новый пакет time/tzdata, позволяющий встроить в программу БД с данными о часовых поясах.
  • Из исходных текстов и документации убраны фразы whitelist/blacklist и master/slave, вместо которых теперь используются «allowlist», «blocklist», «process», «pty», «proc» и «control».
  • Внесена большая порция незначительных улучшений в стандартную библиотеку.
  • Добавлена поддержка OpenBSD 6.7 в режимах GOARCH=arm и GOARCH=arm64 (ранее поддерживались только GOARCH=386 и GOARCH=amd64).
  • Продолжено развитие 64-разрядной платформы RISC-V (GOOS=linux, GOARCH=riscv64).
  • Для 32-разрядных систем x86 в следующем выпуске будут подняты минимальные требования к системе — продолжат поддерживаться только процессоры с SSE2. Для сборки в режиме GOARCH=386 потребуется как минимум Intel Pentium 4 (выпущен в 2000 году) или AMD Opteron/Athlon 64 (выпущен в 2003 году).

출처 : opennet.ru

코멘트를 추가