Go 1.27 출시, 제네릭 메서드·encoding/json/v2 도입

요약

Go 팀이 Go 1.27을 정식 출시했다.
메서드가 자체 타입 매개변수를 선언할 수 있는 제네릭 메서드가 언어에 추가됐다.
표준 라이브러리에는 새 JSON 패키지 encoding/json/v2, uuid 패키지, 양자내성 서명 ML-DSA를 구현한 crypto/mldsa가 들어갔다.
Go 1 호환성 약속에 따라 기존 프로그램은 대부분 그대로 컴파일·실행된다.

주요 내용

  • 제네릭 메서드: math/rand/v2의 Rand에 정수 타입별 메서드 대신 하나의 제네릭 N 메서드가 추가된 것이 대표 예다. 인터페이스 메서드는 여전히 타입 매개변수를 가질 수 없다.
  • 구조체 리터럴의 키로 임베디드 구조체의 필드 등 유효한 필드 선택자를 쓸 수 있게 됐고, 제네릭 함수의 타입 추론이 모든 대입 문맥으로 넓어졌다.
  • encoding/json/v2는 잘못된 UTF-8과 중복 키를 기본으로 거부하는 등 더 엄격해졌으며, 기존 encoding/json도 v2 구현 위에서 동작한다.
  • 80바이트 미만 소형 객체의 할당 비용을 최대 30% 줄이는 크기별 특화 할당이 도입됐다. 할당이 많은 프로그램 기준 전체 개선 폭은 약 1%다.
  • 영원히 블록된 고루틴을 찾는 goroutineleak 프로파일이 정식 기능이 됐고, go fix에 새 modernizer들이 추가됐으며 go doc은 package@version 조회를 지원한다.
  • macOS에서는 13 Ventura 이상이 필요하다.

왜 중요한가

제네릭 메서드는 제네릭 도입 이후 꾸준히 요청돼 온 기능으로, 라이브러리 API를 설계하는 방식에 변화를 줄 수 있다. JSON v2와 표준 UUID 패키지는 그동안 외부 라이브러리에 기대던 영역을 표준으로 가져온다는 점에서 의존성 관리 부담을 덜어준다.

go.devGo 1.27 is released - The Go Programming LanguageGo 1.27 adds generic methods, encoding/json/v2 package, uuid package, faster memory allocation, goroutine leak profiles, and more.

AI와 함께 작성한 글이에요.

0

댓글 0

아직 댓글이 없어요. 첫 댓글을 남겨보세요.

glegam은 서비스 개선과 이용 분석을 위해 쿠키를 사용해요. 자세한 내용은 개인정보처리방침을 확인하세요.