Offcanvas

개발자

고(Go) 1.17 출시··· “언어 및 컴파일러 개선”

2021.08.19 Paul Krill  |  InfoWorld
구글에서 개발한 오픈소스 프로그래밍 언어 ‘고(GO)’의 최신 버전이 8월 16일(현지 시각) 프로덕션 릴리즈로 출시됐다. 
 
ⓒGetty Images

‘고 1.17(Go 1.17)’ 릴리즈 노트에 따르면 unsafe.Pointer 안전 규칙을 준수하는 코드 작성 간소화를 포함해 언어와 관련한 3가지 작은 개선사항이 있다. 다음과 같다. 

슬라이스에서 배열 포인터로의 변환: s 유형의 표현식 []T는 이제 배열 포인터 유형 *[N]T로 변환될 수 있다. 만약 이러한 변환의 결과가 a라면 범위에 있는 해당 인덱스는 동일한 기본 요소를 참조한다(&a[i] == &s[i] for 0 <= i < N). 단 if len(s)N보다 작으면 변환 오류가 발생한다. 

unsafe.Add: unsafe.Add(ptr, len)ptrlen을 추가하고, 업데이트된 포인터 unsafe.Pointer(uintptr(ptr) + uintptr(len))를 반환한다. 

unsafe.Slice: ptr 유형의 표현식 *T에서 unsafe.Slice(ptr, len)는 기본 배열이 ptr에서 시작하고, 길이와 용량이 len인 유형 []T의 슬라이스를 반환한다. 

고 1.17에서 컴파일러는 스택 대신 레지스터를 사용하여 함수 인수와 결과를 패싱하는 새로운 방법을 구축했다. 이 기능은 64-비트 x86 아키텍처의 리눅스, 맥OS, 윈도우에서 사용할 수 있다.

개발팀에 의하면 벤치마크 결과 약 5%의 성능 향상과 2%가량의 바이너리 크기 감소가 나타났다. 이 변경사항은 안전한 고(GO) 코드의 기능에는 영향을 미치지 않는다. 

또한 컴파일러를 사용하면 클로저를 포함하는 함수를 인라인할 수 있다. 이를 통해 클로저를 포함하는 함수가 (함수를 인라인한 각 위치에서) 별개의 클로저 코드 포인터 함수를 생성할 수 있다고 개발팀은 설명했다. 

이번 릴리즈에는 정리된 모듈 그래프도 도입됐다. go.mod 파일에서 고 1.17 이상 버전을 지정하는 모듈의 모듈 그래프에는 다른 고 1.17 모듈의 즉각적인 종속성만 포함되며, 전체 전이 종속성은 포함되지 않는다. 

한편 ‘고 1.17’은 이곳(golang.org)에서 다운로드할 수 있다. 현재 스테이블 릴리즈에는 고 1.16.5와 고 1.15.13이 있다. 고 개발자를 위한 퍼징 기능은 향후 릴리즈로 계획돼 있다. ciokr@idg.co.kr



 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.