2021.02.18

구글 고(Go) 1.16 출시··· 애플 실리콘 지원 및 라이브러리 개선

Paul Krill | InfoWorld
구글에서 개발한 오픈소스 프로그래밍 언어 ‘고(Go)’의 최신 업데이트 버전 1.16이 스테이블 프로덕션 릴리스(Stable Production Release)로 공개됐다. 코어 라이브러리 및 런타임 개선을 비롯해 여러 새로운 기능이 소개됐다. 
 
ⓒGetty Images

고(Go) 개발팀에 따르면 코어 라이브러리의 변경 사항에는 //go:embed 지시문을 사용, 컴파일할 때 프로그램에 임베디드된 파일 액세스를 제공하는 새로운 embed 패키지가 포함된다. 라이브러리에도 마이너한 변경 사항과 업데이트가 있다. 이는 crypto/dsa 사용 중단부터 유니코드 패키지를 유니코드(Unicode) 13.0.0으로 업그레이드하는 것까지 다양하다.   

또한 코어 라이브러리에서 파일 시스템이 개선됐다. 새로운 io/fs 패키지는 파일의 읽기 전용 트리 추상화를 정의한다. fs.FS 인터페이스와 표준 라이브러리 패키지는 적절한 경우 인터페이스를 사용하도록 조정됐다. 인터페이스의 프로듀서 측에서 이 새로운 embed.FS 타입은 zip.Reader와 마찬가지로 fs.FS를 구현한다. 

새로운 os.DirFS 함수는 운영체제 파일 트리로 지원되는 fs.FS 구현을 제공한다. 컨슈머 측에서 새로운 http.FS 함수는 fs.FShttp.Handler로 변환한다. 그리고 html.templatetext/template 패키지의 ParseFS 함수 및 메소드는 fs.FS에서 템플릿을 읽는다. 

fs.FS를 구현하는 코드를 테스트하기 위한 새로운 testing/fstest 패키지는 일반적인 오류를 보고하는 TestFS 기능을 제공한다. 또한 fs.FS 구현을 허용하는 코드를 테스트하기 위한 간단한 인메모리 파일 시스템 구현인 MapFS이 지원된다. 

런타임도 개선됐다. 새로운 runtime/metrics 패키지는 구현 방법에 따라 정의된 메트릭스를 읽기 위한 스테이블 인터페이스를 적용했다. 리눅스에서 이제 고(Go) 런타임은 OS가 메모리 압력을 받을 때 느리게 작동하지 않고, 즉시 운영체제에 메모리를 해제하도록 기본 설정된다.

이 밖에 래이스 디텍터(race detector)와 고 메모리 모델 사이의 불일치가 수정됐다. 래이스 디텍터는 이제 메모리 모델의 채널 동기화 규칙을 더욱더 정확하게 따른다. 따라서 디텍터가 이전에는 놓쳤었던 래이스를 보고할 수 있다. 

한편 고(Go) 1.16 버전용 바이너리 및 소스 배포 파일은 이곳(golang.org)에서 다운로드 받을 수 있다. 기타 변경 사항은 다음과 같다. 

• 빌드 실행 속도가 빨라지고 메모리를 적게 사용한다.
• 애플 실리콘(Apple Silicon), 즉 맥OS의 64비트 ARM 아키텍처가 G00S=darwin, GOARCH=arm64와 함께 지원된다. AMD64 기반 맥OS에서 실행되는 iOS 시뮬레이터를 대상으로 한 ios/amd64 포트도 추가됐다. 
• 컴파일러는 레이블이 지정되지 않은 for 루프, 메소드 값, 타입 스위치를 사용하여 함수를 인라인할 수 있다. 또한 인라이너는 인라이닝이 가능할 때 더 많은 인라이닝 호출을 감지할 수 있다. 
• 링커가 개선돼 리소스 사용량이 줄어들고 코드 유지 관리가 용이해졌다. 이는 링커를 현대화하기 위한 작업의 일환이다. 
• 모듈 인식 모드는 기본적으로 활성화된다. 
go 명령은 새로운 //go:embed 지시문을 통해 정적 파일 및 파일 트리를 최종 실행 파일의 일부로 포함하도록 지원한다. 
• 새로운 GOVCS 환경 변수는 go 명령이 소스 코드를 다운로드하는 데 사용할 수 있는 버전 제어 도구를 제한한다. 이렇게 하면 신뢰할 수 있고 인증된 환경에서 사용되는 도구로 보안 문제를 완화할 수 있다. 
• 고 1.16은 맥OS 시에라에서 실행되는 마지막 릴리스다. 고 1.17부터는 맥OS 10.13 하이 시에라 이상이 필요하다. ciokr@idg.co.kr
 



2021.02.18

구글 고(Go) 1.16 출시··· 애플 실리콘 지원 및 라이브러리 개선

Paul Krill | InfoWorld
구글에서 개발한 오픈소스 프로그래밍 언어 ‘고(Go)’의 최신 업데이트 버전 1.16이 스테이블 프로덕션 릴리스(Stable Production Release)로 공개됐다. 코어 라이브러리 및 런타임 개선을 비롯해 여러 새로운 기능이 소개됐다. 
 
ⓒGetty Images

고(Go) 개발팀에 따르면 코어 라이브러리의 변경 사항에는 //go:embed 지시문을 사용, 컴파일할 때 프로그램에 임베디드된 파일 액세스를 제공하는 새로운 embed 패키지가 포함된다. 라이브러리에도 마이너한 변경 사항과 업데이트가 있다. 이는 crypto/dsa 사용 중단부터 유니코드 패키지를 유니코드(Unicode) 13.0.0으로 업그레이드하는 것까지 다양하다.   

또한 코어 라이브러리에서 파일 시스템이 개선됐다. 새로운 io/fs 패키지는 파일의 읽기 전용 트리 추상화를 정의한다. fs.FS 인터페이스와 표준 라이브러리 패키지는 적절한 경우 인터페이스를 사용하도록 조정됐다. 인터페이스의 프로듀서 측에서 이 새로운 embed.FS 타입은 zip.Reader와 마찬가지로 fs.FS를 구현한다. 

새로운 os.DirFS 함수는 운영체제 파일 트리로 지원되는 fs.FS 구현을 제공한다. 컨슈머 측에서 새로운 http.FS 함수는 fs.FShttp.Handler로 변환한다. 그리고 html.templatetext/template 패키지의 ParseFS 함수 및 메소드는 fs.FS에서 템플릿을 읽는다. 

fs.FS를 구현하는 코드를 테스트하기 위한 새로운 testing/fstest 패키지는 일반적인 오류를 보고하는 TestFS 기능을 제공한다. 또한 fs.FS 구현을 허용하는 코드를 테스트하기 위한 간단한 인메모리 파일 시스템 구현인 MapFS이 지원된다. 

런타임도 개선됐다. 새로운 runtime/metrics 패키지는 구현 방법에 따라 정의된 메트릭스를 읽기 위한 스테이블 인터페이스를 적용했다. 리눅스에서 이제 고(Go) 런타임은 OS가 메모리 압력을 받을 때 느리게 작동하지 않고, 즉시 운영체제에 메모리를 해제하도록 기본 설정된다.

이 밖에 래이스 디텍터(race detector)와 고 메모리 모델 사이의 불일치가 수정됐다. 래이스 디텍터는 이제 메모리 모델의 채널 동기화 규칙을 더욱더 정확하게 따른다. 따라서 디텍터가 이전에는 놓쳤었던 래이스를 보고할 수 있다. 

한편 고(Go) 1.16 버전용 바이너리 및 소스 배포 파일은 이곳(golang.org)에서 다운로드 받을 수 있다. 기타 변경 사항은 다음과 같다. 

• 빌드 실행 속도가 빨라지고 메모리를 적게 사용한다.
• 애플 실리콘(Apple Silicon), 즉 맥OS의 64비트 ARM 아키텍처가 G00S=darwin, GOARCH=arm64와 함께 지원된다. AMD64 기반 맥OS에서 실행되는 iOS 시뮬레이터를 대상으로 한 ios/amd64 포트도 추가됐다. 
• 컴파일러는 레이블이 지정되지 않은 for 루프, 메소드 값, 타입 스위치를 사용하여 함수를 인라인할 수 있다. 또한 인라이너는 인라이닝이 가능할 때 더 많은 인라이닝 호출을 감지할 수 있다. 
• 링커가 개선돼 리소스 사용량이 줄어들고 코드 유지 관리가 용이해졌다. 이는 링커를 현대화하기 위한 작업의 일환이다. 
• 모듈 인식 모드는 기본적으로 활성화된다. 
go 명령은 새로운 //go:embed 지시문을 통해 정적 파일 및 파일 트리를 최종 실행 파일의 일부로 포함하도록 지원한다. 
• 새로운 GOVCS 환경 변수는 go 명령이 소스 코드를 다운로드하는 데 사용할 수 있는 버전 제어 도구를 제한한다. 이렇게 하면 신뢰할 수 있고 인증된 환경에서 사용되는 도구로 보안 문제를 완화할 수 있다. 
• 고 1.16은 맥OS 시에라에서 실행되는 마지막 릴리스다. 고 1.17부터는 맥OS 10.13 하이 시에라 이상이 필요하다. ciokr@idg.co.kr
 

X