GN⁺: Go 1.24 릴리즈
(go.dev)-
언어 변경 사항
- Go 1.24는 이제 제네릭 타입 별칭을 완전히 지원함. 타입 별칭은 정의된 타입처럼 매개변수를 받을 수 있음.
-
성능 개선
- 런타임에서 여러 성능 개선이 이루어져 대표적인 벤치마크에서 평균 2-3%의 CPU 오버헤드 감소를 이룸.
- 새로운 내장 맵 구현, 작은 객체의 메모리 할당 효율성 향상, 새로운 런타임 내부 뮤텍스 구현 포함.
-
도구 개선
-
go
명령어는 모듈의 도구 종속성을 추적하는 메커니즘을 제공함.go get -tool
을 사용하여 현재 모듈에 도구 지시문을 추가할 수 있음. -
go vet
하위 명령어의 새로운 테스트 분석기는 테스트 패키지의 테스트, 퍼저, 벤치마크, 예제 선언에서 일반적인 실수를 보고함.
-
-
표준 라이브러리 추가
- 표준 라이브러리는 FIPS 140-3 준수를 위한 새로운 메커니즘을 포함하며, 승인된 알고리듬을 사용하는 데 소스 코드 변경이 필요 없음.
- x/crypto 모듈에 있던 여러 패키지가 이제 표준 라이브러리에서 사용 가능함.
- 벤치마크는 이제 더 빠르고 오류가 적은
testing.B.Loop
메서드를 사용할 수 있음. - 새로운
os.Root
타입은 특정 디렉토리 아래에서 파일 시스템 작업을 수행할 수 있는 기능을 제공함. - 런타임은
runtime.AddCleanup
이라는 새로운 정리 메커니즘을 제공하여runtime.SetFinalizer
보다 더 유연하고 효율적이며 오류가 적음.
-
WebAssembly 지원 개선
- Go 1.24는 Go 프로그램이 WebAssembly 호스트에 함수를 내보낼 수 있는
go:wasmexport
지시문을 추가하고, Go 프로그램을 WASI 리액터/라이브러리로 빌드하는 것을 지원함.
- Go 1.24는 Go 프로그램이 WebAssembly 호스트에 함수를 내보낼 수 있는
Hacker News 의견
- 특히 더 빠른 맵 구현과 text/template에서 이제 함수 타입을 지원하는 것에 만족함
- Go 1.23에서 함수 타입에 대한 range를 도입했으나, 이제서야 Go 템플릿에서 작동하게 되었음
- 도구 지시문으로 지정된 도구를 설치할 때 사용할 태그를 지정할 수 있는지 궁금함
- 시도해봤지만 작동하지 않음 (태그 없이 설치됨)
-
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
사용
-
os.Root
의 사용 사례가 무엇인지 궁금함- 보안과 관련이 있는 것으로 이해함
- 내부적으로
Chroot
를 사용하지 않기 때문에 결국 누군가가 Root에서 탈출할 방법을 찾을 수 있을 것이라 상상함
- 지루하지만 좋아함
- 새로운 도구 플래그에 가장 기대가 큼
- 추한 tools.go를 제거할 수 있을 것임
- GODEBUG=fips140=only 사용 시, FIPS 140-3을 준수하지 않는 암호화 알고리즘이 오류나 패닉을 반환함
- 표준 라이브러리가 의도적으로 패닉을 일으키는 아이디어가 마음에 들지 않음
- 코드를 보지 않았지만, 현재 오류를 반환하지 않는 함수에서만 발생하는지 궁금함
- 마침내 제네릭 타입 별칭이 오래 기다려왔음
- 좋음!
GOAUTH
때문에 이번 릴리스를 기대했음- 개인 git 저장소 작업이 덜 번거로워지길 바람
-
go help goauth
를 보면서 큰 기대는 하지 않음