4 minute read

공식 릴리스 히스토리


릴리스 정책

  • 각 메이저 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) 등 점진적 제거


관련 링크