2020.12.22

‘고(Go) 언어’ 버전 1.16, 첫 베타 공개··· 라이브러리 및 런타임 개선

Paul Krill | InfoWorld
구글에서 개발한 오픈소스 프로그래밍 언어 ‘고(Go)’ 버전 1.16의 첫 베타가 지난 17일(현지 시각) 공개됐다. 코어 라이브러리와 런타임이 개선됐으며 여러 새로운 기능이 도입됐다. 언어 자체는 변경되지 않았다. 

2021년 2월 출시 예정인 고(Go) 버전 1.16의 릴리즈 노트에 따르면 //go:embed 디렉티브를 통해 컴파일하는 동안 프로그램에 임베디드된 파일에 액세스 할 수 있는 새로운 embed 패키지가 코어 라이브러리에 포함됐다. 
 
ⓒGetty Images

코어 라이브러리의 파일 시스템도 개선됐다. 새로운 io/fs 패키지는 파일의 읽기 전용 트리인 fs.FS 인터페이스에 관한 추상화를 정의한다. 그리고 표준 라이브러리 패키지는 인터페이스를 적절하게 사용하도록 조정됐다. 

인터페이스의 생산자 측에서는 새로운 embed.FS 타입이 zip.Reader처럼 fs.FS를 구현한다. 새 os.DirFS 함수는 운영시스템 파일 트리로 지원되는 fs.FS 구현을 제공한다. 소비자 측에서는 새 http.FSfs.FShttp.Handler로 변환한다. 

html.templatetext/template 패키지의 ParseFS 함수 및 메소드는 fs.FS에서 템플릿을 읽는다. fs.FS 구현 코드를 테스트하는 새 testing/fstest 패키지는 일반적인 오류를 보고하는 TestFS 기능을 제공한다. 간단한 메모리 내 파일 시스템 구현인 MapFS도 지원된다. 

고(Go) 1.16은 런타임도 개선됐다. 새 runtime/metrics 패키지는 구현-정의 매트릭을 읽기 위한 안정적인 인터페이스를 도입했다. 또 고 런타임은 이제 리눅스(Linux)에서 OS가 메모리 압박을 받을 때 운영시스템에 메모리를 즉시 해제하도록 기본 설정됐다. 

구글 고(Go) 언어 개발팀은 버전 1.16에서 레이스 디텍터(race detector)와 고(Go) 메모리 모델 간의 불일치를 수정했다고 전했다. 이제 레이스 디텍터는 메모리 모델의 채널 동기화 규칙을 정확하게 따른다. 따라서 디텍터가 이전에 놓친 레이스를 보고할 수 있다. 

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

• 맥OS(MacOS)의 64-비트 ARM 아키텍처, 즉 애플 실리콘(Apple Silicon)이 G00S=darwin, GOARCH=arm64를 통해 지원된다. AMD64 기반 맥OS에서 실행되는 iOS 시뮬레이터를 대상으로 하는 ios/amd64 포트도 추가됐다. 

• 컴파일러는 이제 레이블이 지정되지 않은 for 루프, 메소드 값, 타입 스위치를 사용해 함수를 인라인 할 수 있다. 또한 인라이너는 인라인이 가능한 경우 더 많은 인라인 호출을 감지할 수 있다. 

• 링커 개선으로 리소스 사용량(시간 및 메모리)이 감소하고, 코드 유지 관리가 향상됐다. 이는 고(Go) 링커 현대화 계획의 일부다. 

• 모듈 인식 모드가 기본적으로 활성화된다. 

• 이제 go 명령이 새로운 //go:embed 디렉티브를 통해 정적 파일 및 파일 트리를 최종 실행 파일의 일부로 포함하도록 지원한다. 

• 새로운 GOVCS 환경 변수는 go 명령이 소스코드를 다운로드하는 데 사용할 수 있는 버전 제어 도구를 제한한다. 이렇게 하면 일반적으로 신뢰할 수 있고 인증된 환경에서 사용하는 도구를 통해 보안 문제를 완화할 수 있다. 

• 고(Go) 1.16은 맥OS 시에라(Sierra)에서 실행되는 마지막 릴리즈다. 고(Go) 1.17은 맥OS 10.13 하이 시에라(High Sierra) 이상 버전이 필요하다. ciokr@idg.co.kr
 



2020.12.22

‘고(Go) 언어’ 버전 1.16, 첫 베타 공개··· 라이브러리 및 런타임 개선

Paul Krill | InfoWorld
구글에서 개발한 오픈소스 프로그래밍 언어 ‘고(Go)’ 버전 1.16의 첫 베타가 지난 17일(현지 시각) 공개됐다. 코어 라이브러리와 런타임이 개선됐으며 여러 새로운 기능이 도입됐다. 언어 자체는 변경되지 않았다. 

2021년 2월 출시 예정인 고(Go) 버전 1.16의 릴리즈 노트에 따르면 //go:embed 디렉티브를 통해 컴파일하는 동안 프로그램에 임베디드된 파일에 액세스 할 수 있는 새로운 embed 패키지가 코어 라이브러리에 포함됐다. 
 
ⓒGetty Images

코어 라이브러리의 파일 시스템도 개선됐다. 새로운 io/fs 패키지는 파일의 읽기 전용 트리인 fs.FS 인터페이스에 관한 추상화를 정의한다. 그리고 표준 라이브러리 패키지는 인터페이스를 적절하게 사용하도록 조정됐다. 

인터페이스의 생산자 측에서는 새로운 embed.FS 타입이 zip.Reader처럼 fs.FS를 구현한다. 새 os.DirFS 함수는 운영시스템 파일 트리로 지원되는 fs.FS 구현을 제공한다. 소비자 측에서는 새 http.FSfs.FShttp.Handler로 변환한다. 

html.templatetext/template 패키지의 ParseFS 함수 및 메소드는 fs.FS에서 템플릿을 읽는다. fs.FS 구현 코드를 테스트하는 새 testing/fstest 패키지는 일반적인 오류를 보고하는 TestFS 기능을 제공한다. 간단한 메모리 내 파일 시스템 구현인 MapFS도 지원된다. 

고(Go) 1.16은 런타임도 개선됐다. 새 runtime/metrics 패키지는 구현-정의 매트릭을 읽기 위한 안정적인 인터페이스를 도입했다. 또 고 런타임은 이제 리눅스(Linux)에서 OS가 메모리 압박을 받을 때 운영시스템에 메모리를 즉시 해제하도록 기본 설정됐다. 

구글 고(Go) 언어 개발팀은 버전 1.16에서 레이스 디텍터(race detector)와 고(Go) 메모리 모델 간의 불일치를 수정했다고 전했다. 이제 레이스 디텍터는 메모리 모델의 채널 동기화 규칙을 정확하게 따른다. 따라서 디텍터가 이전에 놓친 레이스를 보고할 수 있다. 

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

• 맥OS(MacOS)의 64-비트 ARM 아키텍처, 즉 애플 실리콘(Apple Silicon)이 G00S=darwin, GOARCH=arm64를 통해 지원된다. AMD64 기반 맥OS에서 실행되는 iOS 시뮬레이터를 대상으로 하는 ios/amd64 포트도 추가됐다. 

• 컴파일러는 이제 레이블이 지정되지 않은 for 루프, 메소드 값, 타입 스위치를 사용해 함수를 인라인 할 수 있다. 또한 인라이너는 인라인이 가능한 경우 더 많은 인라인 호출을 감지할 수 있다. 

• 링커 개선으로 리소스 사용량(시간 및 메모리)이 감소하고, 코드 유지 관리가 향상됐다. 이는 고(Go) 링커 현대화 계획의 일부다. 

• 모듈 인식 모드가 기본적으로 활성화된다. 

• 이제 go 명령이 새로운 //go:embed 디렉티브를 통해 정적 파일 및 파일 트리를 최종 실행 파일의 일부로 포함하도록 지원한다. 

• 새로운 GOVCS 환경 변수는 go 명령이 소스코드를 다운로드하는 데 사용할 수 있는 버전 제어 도구를 제한한다. 이렇게 하면 일반적으로 신뢰할 수 있고 인증된 환경에서 사용하는 도구를 통해 보안 문제를 완화할 수 있다. 

• 고(Go) 1.16은 맥OS 시에라(Sierra)에서 실행되는 마지막 릴리즈다. 고(Go) 1.17은 맥OS 10.13 하이 시에라(High Sierra) 이상 버전이 필요하다. ciokr@idg.co.kr
 

X