https://www.ciokorea.com/news/183404

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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a2f3c62a-2f7e-4070-a73f-4a458e999f6d/GettyImages-134202789.jpg

ⓒ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)에서 다운로드 받을 수 있다. 기타 변경 사항은 다음과 같다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d954fbef-6c84-4886-b9e2-0b8948587e3e/01_s.300x240.jpg