go 1.23 버전이 한국시간으로 24년8월14일 배포됐다.
Standard Library 관련 변경사항
time.Timer 및 time.Ticker 변경:
- 이전에는 Stop 메서드를 호출하지 않은 Timer나 Ticker가 가비지 컬렉션되지 않았습니다. 이제는 프로그램에서 참조하지 않으면 즉시 가비지 컬렉션의 대상이 됩니다.
- Timer와 Ticker의 채널이 버퍼가 있는 채널(용량 1)에서 버퍼가 없는 채널(용량 0)로 변경되었습니다. 이로 인해 Reset이나 Stop 메서드 호출 후에 오래된 값이 전송되거나 수신되지 않도록 보장됩니다.
- 이 변경은 go.mod 파일에서 Go 1.23.0 이상을 명시한 경우에만 적용됩니다. 이전 버전의 동작은 GODEBUG=asynctimerchan=1 설정으로 유지할 수 있습니다.
unique 패키지:
- Make[T] 함수를 통해 비교 가능한 타입의 값을 정규화할 수 있습니다. 이는 Handle[T] 형태의 참조를 반환합니다.
- 두 Handle[T]는 원래 값이 같을 때만 같습니다. 이를 통해 프로그램은 값을 중복 제거하고 메모리 사용량을 줄일 수 있습니다.
- Handle[T] 값의 비교는 단순한 포인터 비교로 효율적입니다.
iter 패키지 및 관련 기능:
slices 패키지에 추가된 함수들:
All
: 슬라이스의 인덱스와 값에 대한 반복자 반환
Values
: 슬라이스 요소에 대한 반복자 반환
Backward
: 슬라이스를 역순으로 순회하는 반복자 반환
Collect
: 반복자의 값들을 새 슬라이스로 수집
Chunk
: 슬라이스를 n개 요소의 연속 부분 슬라이스로 나누는 반복자 반환
maps 패키지에 추가된 함수들:
All
: 맵의 키-값 쌍에 대한 반복자 반환
Keys
: 맵의 키에 대한 반복자 반환
Values
: 맵의 값에 대한 반복자 반환
Insert
: 반복자의 키-값 쌍을 기존 맵에 추가
Collect
: 반복자의 키-값 쌍을 새 맵으로 수집
crypto/tls 패키지:
- Encrypted Client Hello(ECH) 드래프트 명세 지원: Config.EncryptedClientHelloConfigList 필드를 설정하여 활성화할 수 있습니다.
- QUICConn 타입에 세션 재개 상태를 보고하는 새로운 이벤트가 추가되었습니다.
- 3DES 암호 스위트가 기본 목록에서 제거되었습니다. GODEBUG=tls3des=1로 이전 동작을 유지할 수 있습니다.
- X25519Kyber768Draft00 양자 내성 키 교환 메커니즘이 기본적으로 활성화되었습니다. GODEBUG=tlskyber=0으로 비활성화할 수 있습니다.
net/http 패키지:
- Cookie.Quoted 필드: 쿠키 값이 원래 따옴표로 둘러싸여 있었는지 표시합니다.
- Request.CookiesNamed 메서드: 주어진 이름과 일치하는 모든 쿠키를 검색합니다.
- Cookie.Partitioned 필드: Partitioned 속성을 가진 쿠키를 식별합니다.
- ParseCookie 함수: Cookie 헤더 값을 파싱하여 모든 쿠키를 반환합니다.
- ParseSetCookie 함수: Set-Cookie 헤더 값을 파싱하여 쿠키를 반환합니다.