[Go] 릴리스 노트
Updated:
공식 릴리스 히스토리
릴리스 정책
- 각 메이저 Go 릴리스는 두 개의 새로운 메이저 릴리스가 나올 때까지 지원됨
- 보안 수정 및 중요 버그 수정은 마이너 버전으로 제공 (예: 1.22.1, 1.22.2)
- 약 6개월마다 새로운 메이저 버전 릴리스 (2월, 8월)
주요 마일스톤
🎯 Go 1.x 시리즈 (안정화 및 진화)
- Go 1.0 (2012): 장기 안정성 보장 시작
- Go 1.5 (2015): 컴파일러/런타임 완전히 Go로 재작성
- Go 1.11 (2018): Go Modules 도입 (의존성 관리 혁신)
- Go 1.18 (2022): Generics 추가 (역사적 기능)
- Go 1.21 (2023): PGO(Profile-Guided Optimization) 도입
버전별 상세 변경사항
| 버전 | 날짜 | 분류 | 주요 변경사항 |
|---|---|---|---|
| r56 | 2011/03/16 | major | 첫 번째 stable release |
| r57 | 2011/05/03 | major | |
| r57.1 ~ r57.2 | minor | ||
| r58 | 2011/06/29 | major | |
| r58.1 | minor | ||
| r59 | 2011/08/01 | major | |
| r60 | 2011/09/07 | major | |
| r60.1 ~ r60.3 | minor | ||
| 1 | 2012-03-28 | major | 신뢰할 수 있는 제품/프로젝트/출판물을 만들기 위한 언어 및 핵심 라이브러리 정의 |
| 1.0.1 ~ 1.0.3 | 2012-04-25 ~ 2012-09-21 | minor | |
| 1.1 | 2013-05-13 | major | 컴파일러, 라이브러리 및 런타임 속도 개선 |
| 1.1.1 ~ 1.1.2 | 2013-06-13 ~ 2013-08-13 | minor | |
| 1.2 | 2013-12-01 | major | three-index slices 기능 추가 |
| 1.2.1 ~ 1.2.2 | 2014-03-02 ~ 2014-05-05 | minor | |
| 1.2.2 | 2014-05-05 | minor | |
| 1.3 | 2014-06-18 | major | 정확한 가비지 컬렉션 빌드 속도 향상 동기화 관련 메모리 모델 개선 |
| 1.3.1 ~ 1.3.3 | 2014-08-13 ~ 2014-09-30 | minor | |
| 1.4 | 2014-12-10 | major | for-range loop 개선 “hot stack split” 문제 제거 |
| 1.4.1 ~ 1.4.3 | 2015-01-15 ~ 2015-09-22 | minor | |
| 1.5 | 2015-08-19 | major | 컴파일러와 런타임이 C에서 완전히 Go로 작성 맵 리터럴 개선 |
| 1.5.1 ~ 1.5.4 | 2015-09-08 ~ 2016-04-12 | minor | |
| 1.6 | 2016-02-17 | major | 압축, 암호화, 정렬 패키지 성능 10% 개선 |
| 1.6.1 ~ 1.6.4 | 2016-04-12 ~ 2016-12-01 | minor | |
| 1.7 | 2016-08-15 | major | |
| 1.7.1 | 2016-09-07 | minor | 가비지 컬렉션 및 코어 라이브러리 최적화을 통한 성능 개선 |
| 1.7.2 | minor | should not be used | |
| 1.7.3 ~ 1.7.6 | 2016-10-19 ~ 2017-05-23 | minor | |
| 1.8 | 2017-02-16 | major | 태그만 다른 구조체 간의 변환 허용 가비지 컬렉션 및 코어 라이브러리 최적화을 통한 성능 개선 |
| 1.8.1 ~ 1.8.7 | 2017-04-07 ~ 2018-02-07 | minor | |
| 1.9 | 2017-08-24 | major | 타입 별칭 지원 가비지 컬렉션 및 코어 라이브러리 최적화을 통한 성능 개선 math/bits 패키지 추가 |
| 1.9.1 ~ 1.9.7 | 2017-10-04 ~ 2018-06-05 | minor | |
| 1.10 | 2018-02-16 | major | 가비지 컬렉션 및 코어 라이브러리 최적화을 통한 성능 개선 |
| 1.10.1 ~ 1.10.8 | 2018-03-28 ~ 2019-01-23 | minor | |
| 1.11 | 2018-08-24 | major | 코어 라이브러리 최적화을 통한 성능 개선 |
| 1.11.1 ~ 1.11.13 | 2018-10-01 ~ 2019-08-13 | minor | |
| 1.12 | 2019-02-25 | major | 런타임 성능 향상 |
| 1.12.1 ~ 1.12.17 | 2019-03-14 ~ 2020-02-12 | minor | |
| 1.13 | 2019-09-03 | major | defer 성능 30% 향상 crypto/ed25519 패키지 추가 |
| 1.13.1 ~ 1.13.15 | 2019-09-25 ~ 2020-08-06 | minor | |
| 1.14 | 2020-02-25 | major | defer 오버헤드 제거 고루틴 비동기 선점 가능 hash/maphash 패키지 추가 |
| 1.14.1 ~ 1.14.15 | 2020-03-19 ~ 2021-02-04 | minor | |
| 1.15 | 2020-08-11 | major | 바이너리 크기 5% 감소 링커 성능 향상(속도 20% 증가, 메모리 사용률 30% 감소) time/tzdata 패키지 추가 |
| 1.15.1 ~ 1.15.15 | 2020-09-01 ~ 2021-08-05 | minor | |
| 1.16 | 2021-02-16 | major | 바이너리 크기 감소 링커 성능 향상(속도 20~25% 증가, 메모리 사용률 5~15% 감소) io/ioutil 패키지 지원 중단 io/fs 패키지 추가 |
| 1.16.1 ~ 1.16.15 | 2021-03-10 ~ 2022-03-03 | minor | |
| 1.17 | 2021-08-16 | major | 함수 인자 및 결과 전달을 스택 대신 레지스터 사용(5% 성능 향상, 2% 바이너리 크기 감소) runtime/cgo 패키지 추가 |
| 1.17.1 ~ 1.17.13 | 2021-09-09 ~ 2022-08-01 | minor | |
| 1.18 | 2022-03-15 | major | 제네릭 지원 제네릭 지원으로 인해 컴파일 속도 15% 감소 바이너리 크기 감소 debug/buildinfo, net/netip 패키지 추가 |
| 1.18.1 ~ 1.18.9 | 2022-04-12 ~ 2022-12-06 | minor | |
| 1.19 | 2022-08-02 | major | 런타임 메모리 제한 지원 switch문 20% 성능 향상 -importmap 플래그 지원 종료 sync/atomic 패키지 추가 |
| 1.19.1 ~ 1.19.13 | 2022-09-06 ~ 2023-09-06 | minor | |
| 1.20 | 2023-02-01 | major | 가비지 컬렉터 데이터 구조 재구성으로 CPU 성능 최대 2% 향상 빌드 속도 최대 10% 향상 crypto/ecdh 패키지 추가 |
| 1.20.1 ~ 1.20.8 | 2023-02-14 ~ 2023-09-06 | minor | |
| 1.21.0 | 2023-08-08 | major | clear, min, max 내장 함수 추가 PGO 도입으로 빌드 속도 최대 6% 향상 slog, slices, maps, cmp 패키지 추가 |
| 1.21.1 ~ 1.21.13 | 2023-09-06 ~ 2024-08-06 | minor | |
| 1.22.0 | 2024-02-06 | major | for 루프 변수 범위 개선 (루프 변수 캡처 문제 해결) range over integer 지원 math/rand/v2 패키지 추가 |
| 1.22.1 ~ 1.22.12 | 2024-03-05 ~ 2025-02-04 | minor | |
| 1.23.0 | 2024-08-13 | major | iterator 지원 (range 함수 사용 가능) unique 패키지 추가 (인터닝 기능) 타이머 성능 개선 |
| 1.23.1 ~ 1.23.12 | 2024-09-05 ~ 2025-08-06 | minor | |
| 1.24.0 | 2025-02-11 | major | 공식 릴리스 노트 참조 |
| 1.24.1 ~ 1.24.11 | 2025-03-04 ~ 2025-12-02 | minor | |
| 1.25.0 | 2025-08-12 | major | 공식 릴리스 노트 참조 |
| 1.25.1 ~ 1.25.5 | 2025-09-03 ~ 2025-12-02 | minor |
주요 개선 흐름
성능 최적화
- 1.5 ~ 1.7: 가비지 컬렉션 지연 시간 대폭 감소
- 1.13 ~ 1.14: defer 성능 30% 향상 → 오버헤드 제거
- 1.15 ~ 1.18: 링커 성능 지속 개선, 바이너리 크기 감소
- 1.17: 레지스터 기반 호출 규약 (5% 성능 향상)
- 1.21: PGO 도입으로 실행 성능 향상
언어 기능 확장
- 1.9: 타입 별칭 (type alias) 지원
- 1.13: 숫자 리터럴 개선 (0b, 0o 접두사)
- 1.18: Generics - Go 역사상 가장 큰 기능 추가
- 1.21: clear, min, max 내장 함수
- 1.22: range over integer, for 루프 변수 범위 개선
- 1.23: iterator 패턴 공식 지원
표준 라이브러리
- 1.7: context 패키지 추가 (요청 컨텍스트 관리)
- 1.9: math/bits 패키지
- 1.16: io/fs 패키지 (파일 시스템 추상화), io/ioutil 지원 중단
- 1.18: net/netip 패키지 (IP 주소 처리 개선)
- 1.19: sync/atomic 패키지 재구성
- 1.20: crypto/ecdh 패키지
- 1.21: slog (구조화 로깅), slices, maps, cmp 패키지
- 1.22: math/rand/v2 (개선된 난수 생성)
- 1.23: unique 패키지 (문자열/슬라이스 인터닝)
도구 및 개발 경험
- 1.11: Go Modules 도입 (GOPATH에서 벗어남)
- 1.13: 에러 wrapping (fmt.Errorf with %w)
- 1.16: Go Modules 기본 활성화
- 1.18: 제네릭 지원으로 컴파일 속도 15% 감소
- 1.19: 런타임 메모리 제한 설정 가능
- 1.21: PGO(Profile-Guided Optimization)
- 1.22: 향상된 테스트 도구
버전 호환성
- Go 1 호환성 보장: Go 1로 작성된 프로그램은 이후 Go 1.x 버전에서 계속 컴파일/실행 가능
- 표준 라이브러리 안정성: 기존 API 유지, 새 기능은 새 패키지로 추가
- 지원 중단: io/ioutil (1.16~), -importmap 플래그 (1.19) 등 점진적 제거