단순성, 동시성 및 기능적 프로그래밍 기능으로 유명한 Google에서 만든 오픈 소스 언어의 프로덕션 릴리스인 Go 1.20이 컴파일러용 PGO(프로파일 기반 최적화) 미리 보기와 함께 소개되었습니다. Go 1.20은 공식 go.dev 웹사이트 에서 다운로드할 수 있습니다.
Go 1.20의 PGO 미리보기를 통해 컴파일러 도구 체인은 런타임 프로필 정보에 따라 애플리케이션 및 워크로드별 최적화를 수행할 수 있습니다. 현재 컴파일러는 runtime/pprof 또는 net/http/pprof 패키지를 사용하여 수집할 수 있는 pprof CPU 프로필을 지원합니다.
피드백 지향 최적화라고도 하는 PGO는 애플리케이션의 다음 빌드를 위해 애플리케이션의 대표 실행에서 다시 컴파일러로 프로파일 데이터를 공급하는 것과 관련됩니다. 이 정보를 사용하여 컴파일러는 정보에 입각한 최적화 결정을 내릴 수 있습니다. 대표적인 Go 프로그램 집합에 대한 벤치마크는 PGO 인라인 최적화를 활성화하면 성능이 약 3%~4% 향상되는 것으로 나타났습니다. 향후 릴리스에서는 더 많은 PGO 최적화를 도입할 것으로 예상됩니다.
PGO 도입과 함께 Go 1.20은 언어에 네 가지 변경 사항을 제공합니다. 첫째, 2021년 Go 1.17에 도입된 슬라이스를 배열 포인터로 변환하는 기능이 이제 슬라이스에서 배열로의 변환으로 확장됩니다. 둘째, 안전하지 않은 패키지에는 SliceData, String 및 StringData의 세 가지 새로운 기능이 포함되어 있습니다. 이러한 함수는 정확한 표현에 관계없이 슬라이스 및 문자열 값을 구성하고 분해하는 완전한 기능을 제공합니다.
세 번째로 사양은 이제 구조체 유형 정의에 나타나는 순서대로 필드를 고려하고 첫 번째 불일치에서 중지하여 구조체 값이 한 번에 한 필드씩 비교되도록 설정합니다. 넷째, 일반 인터페이스와 같은 비교 가능한 유형은 유형 인수가 엄격하게 비교 가능하지 않더라도 비교 가능한 제약 조건을 충족할 수 있습니다. 이를 통해 인터페이스 유형 또는 인터페이스 유형을 포함하는 복합 유형과 같이 엄격하게 비교할 수 없는 유형 인수를 사용하여 비교 가능한 제약 조건으로 제한되는 유형 매개 변수를 인스턴스화할 수 있습니다.
이러한 언어 변경 외에도 Go 1.20에는 애플리케이션 및 통합 테스트를 포함하여 프로그램에 대한 코드 커버리지 프로파일 수집 지원과 같은 다양한 기타 개선 사항이 포함되어 있습니다. $GOROOT/pkg 디렉토리는 더 이상 표준 라이브러리에 대한 미리 컴파일된 패키지 활동을 유지하지 않으므로 Go 배포 크기가 줄어들고 cgo 패키지에 대한 C 도구 체인 왜곡이 방지됩니다. 또한 go test –json 구현이 강화되어 견고성을 높이고 go version -m 명령은 이제 실행 권한 없이 Windows DLL 및 Linux 바이너리를 포함하여 더 광범위한 Go 바이너리를 읽을 수 있습니다.
Go 1.20은 또한 RISC-V에서 FreeBSD에 대한 실험적 지원을 제공하고 C 툴체인이 없는 시스템에서 기본적으로 cgo를 비활성화합니다. 그러나 Go 1.20은 macOS 10.13 High Sierra 및 10.14 Mojave를 지원하는 마지막 릴리스이며 Go 1.21에는 macOS 10.15 Catalina 이상이 필요합니다.
AppMaster.io 와 같은 No-code 플랫폼은 Go 1.20과 같이 새롭게 최적화된 언어를 통합함으로써 큰 이점을 얻을 수 있습니다. 웹, 모바일 및 백엔드 애플리케이션을 위한 강력한 도구를 통합함으로써 기업은 생산성, 사용자 경험 및 확장성을 크게 향상시킬 수 있습니다. 기술 곡선에서 앞서 나가기 위해 no-code 및 low-code 앱 개발 에 대해 자세히 알아보세요.