1P by neo 14일전 | ★ favorite | 댓글 1개
  • 언어 변경 사항
    • 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 리액터/라이브러리로 빌드하는 것을 지원함.
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를 보면서 큰 기대는 하지 않음