v1.10.3
릴리스 날짜: 2026-08-01 - GitHub Release
주요 변경 사항
섹션 제목: “주요 변경 사항”버그 수정
섹션 제목: “버그 수정”stringx: n이 음수일 때 FirstN이 빈 문자열을 반환하도록 수정 (#5620)
섹션 제목: “stringx: n이 음수일 때 FirstN이 빈 문자열을 반환하도록 수정 (#5620)”FirstN은 음수인 n과 절대 같아질 수 없는 counter로 rune을 순회했기 때문에, 빈 문자열 대신 전체 입력 문자열을 조용히 반환했습니다. 이제 다음과 같이 조기 반환 가드가 추가되어 음수 길이에 대해 예측 가능하게 동작합니다.
if n < 0 { return ""}stringx: slice panic 방지를 위해 Substr에서 start > stop을 거부 (#5616)
섹션 제목: “stringx: slice panic 방지를 위해 Substr에서 start > stop을 거부 (#5616)”Substr은 start와 stop을 각각 [0, length] 범위로 검증했지만 start <= stop 여부는 확인하지 않았습니다. Substr("hello", 3, 2)와 같은 호출은 두 검증을 모두 통과해 rs[3:2]에서 panic이 발생했습니다. 이제 start > stop은 유효하지 않은 stop position으로 처리되어 panic 대신 ErrInvalidStopPosition을 반환합니다.
mapping: pointer-to-slice 필드의 unmarshal 오류 수정 (#5662)
섹션 제목: “mapping: pointer-to-slice 필드의 unmarshal 오류 수정 (#5662)”httpx.Parse가 *[]uint64와 같은 pointer-to-slice 필드를 제대로 unmarshal하지 못했습니다. fillSlice가 fieldType.Elem()을 사용했는데, *[]T의 경우 T가 아니라 []T로 해석되어 [9000, 9001]과 같은 JSON 배열에서 타입 불일치 오류가 발생했습니다. 이제 slice element type을 해석하기 전에 field type의 pointer를 역참조합니다.
redis: 높은 동시성 상황에서 circuit breaker가 잘못 동작하던 문제 수정 (#5654)
섹션 제목: “redis: 높은 동시성 상황에서 circuit breaker가 잘못 동작하던 문제 수정 (#5654)”DisableIdentity와 Protocol 필드가 이제 go-redis로 전달되며, 오픈소스 Redis에서 CLIENT MAINT_NOTIFICATIONS 명령을 지원하지 않으므로 MaintNotifications는 기본적으로 비활성화됩니다. 이를 통해 높은 동시성 상황이나 호환되지 않는 Redis server에서 circuit breaker가 잘못 트립되던 문제가 해결되었습니다.
성능 개선
섹션 제목: “성능 개선”collection: Queue growth 전략 최적화 (#5704)
섹션 제목: “collection: Queue growth 전략 최적화 (#5704)”core/collection.Queue는 이전에 queue가 가득 찰 때마다 초기 queue 크기만큼 내부 slice를 늘렸는데, 초기 용량이 작을 경우 O(n²)의 전체 복사 비용이 발생했습니다. 새 구현은 Go slice와 유사한 growth curve를 사용합니다 — 작은 queue는 두 배로, 큰 queue는 점진적으로 1.25배로 증가합니다 — 동시에 wrap된 ring buffer의 FIFO 순서를 유지하고, dequeue된 slot을 비워 GC가 참조된 객체를 회수할 수 있게 하며, 0 이하의 초기 용량은 즉시 거부합니다.
새 기능
섹션 제목: “새 기능”redis: XGroupSetID/XGroupSetIDCtx 추가 (#5637)
섹션 제목: “redis: XGroupSetID/XGroupSetIDCtx 추가 (#5637)”stream에서 consumer group의 마지막 전달 ID를 갱신하는 새 method가 추가되었습니다.
lastID, err := client.XGroupSetIDCtx(ctx, "mystream", "mygroup", "$")의존성 업데이트
섹션 제목: “의존성 업데이트”go-redis/v99.19.0 → 9.21.0mongo-driver/v22.6.0 → 2.8.0pelletier/go-toml/v22.3.1 → 2.4.3
새 기여자
섹션 제목: “새 기여자”- @Vierblatt, @sapirbaruch, @SAY-5, @jeonghyeon-net, @Meppo, @puneetdixit200, @lxffong, @014-code 님이 첫 기여를 했습니다.
전체 변경 로그: https://github.com/zeromicro/go-zero/compare/v1.10.2…v1.10.3
