본문 바로가기
Programing/Go

[GoLang] Go 1.22에는 무엇이 들어있나요?

by 멍멍돌이야 2024. 6. 10.
반응형

Go 프로그래밍 언어가 계속해서 발전함에 따라 다가오는 릴리스인 Go 1.22는 다양한 새로운 기능, 개선 사항 및 변경 사항을 약속합니다. 2024년 2월에 출시될 예정인 Go 1.22에는 언어, 도구, 런타임, 컴파일러 및 핵심 라이브러리에 대한 향상된 기능이 도입되었습니다. 개발자가 이번 버전에서 기대할 수 있는 몇 가지 중요한 변경 사항과 추가 사항을 살펴보겠습니다.

 

Changes to the Language

1. “For” Loop Enhancements

이동 에 두 가지 눈에 띄는 변경 사항이 있습니다. 1.22에는 "for" 루프 . 이전에는 "for" 루프 내에서 선언된 변수가 한 번 생성되어 각 반복마다 업데이트되었습니다. 새 버전에서는 반복할 때마다 실수로 버그를 공유하는 것을 방지하기 위해 새로운 변수가 생성됩니다. 또한, "for" 루프는 이제 정수 범위에 걸쳐 범위를 지정할 수 있으므로 루프 구성에 더 많은 유연성을 제공합니다.

 

package main

import "fmt"

func main() {
  for i := range 10 {
    fmt.Println(10 - i)
  }
  fmt.Println("go1.22 has lift-off!")
}

 

2. Range-Over-Function Iterators (Preview)

Go 1.22에는 범위 초과 기능 반복기와 관련된 언어 변경 미리보기가 포함되어 있습니다. 이 기능은 다음을 사용하여 빌드하여 활성화할 수 있습니다. GOEXPERIMENT=rangefunc.

Tools

1. Go Command

이동 명령 작업공간 종속성과 관련된 향상된 기능을 소개합니다. 이제 작업공간은 종속성을 포함하는 공급업체 디렉토리를 사용할 수 있으며 go work vendor명령은 이 디렉터리를 생성하고 사용합니다. 특히, go get 레거시 GOPATH 모드의 모듈 외부에서는 더 이상 지원되지 않습니다.

 

2. Trace Tool

추적 도구의 웹 UI가 새로워져 문제가 해결되고 가독성이 향상되었습니다. Go 1.22 이상에서 생성된 추적은 이러한 개선 사항의 이점을 누리며 향후 릴리스에서는 이전 버전의 추적으로 확장할 계획입니다.

 

3. Vet Tool

수의사 도구는 다음을 포함한 새로운 경고를 제공합니다.

  • 루프 변수에 대한 참조: 루프 변수 의미 체계의 변경 사항을 반영합니다.
  • 이후 누락된 값에 대한 경고 append.
  • 연기에 대한 경고 time.Since 전화.
  •  

 

Runtime

1. Garbage Collection Metadata Optimization

Go 1.22는 가비지 수집 메타데이터를 각 힙 객체에 더 가깝게 유지하여 최적화합니다. 이렇게 하면 CPU 성능이 1~3% 향상되고 대부분의 프로그램에서 메모리 오버헤드가 줄어듭니다. 그러나 특정 메모리 정렬에 의존하여 조정이 필요한 프로그램에 영향을 미칠 수 있습니다.

 

2. Windows/AMD64 Enhancements

이제 windows/amd64 포트에서 프로그램은 SetUnhandledExceptionFilter Go 런타임에서 처리되지 않는 예외를 포착하는 Win32 함수로 디버깅 기능이 향상됩니다.

 

Compiler

1. Profile-Guided Optimization (PGO) Improvements

Go 1.22의 PGO 빌드는 더 높은 비율의 호출을 탈가상화하여 대부분의 프로그램에서 2~14%의 성능 향상을 가져올 수 있습니다. 또한 컴파일러는 인터페이스 메서드 호출을 위한 향상된 인라인 추론 기능을 도입했습니다.

 

2. New Inlining Phase (Preview)

중요한 호출 사이트에서는 인라인성을 높이고 덜 중요한 사이트에서는 인라인을 억제하기 위해 휴리스틱과 함께 향상된 인라인 단계 미리 보기가 도입되었습니다. 다음을 사용하여 구축 GOEXPERIMENT=newinliner 이 기능을 활성화합니다.

 

Linker

링커의 -s 그리고 -w 플래그는 모든 플랫폼에서 보다 일관되게 작동하며 ELF 플랫폼 및 Windows에 추가 기능이 도입되었습니다.

 

Core Library

1. Math/Rand Version 2

Go 1.22에는 표준 라이브러리에 첫 번째 "v2" 패키지가 도입되었습니다. math/rand/v2. 이 버전은 새로운 전역 생성기와 더 빠른 알고리즘을 포함하여 개선된 기능을 제공합니다.

 

2. Enhanced HTTP Routing Patterns

HTTP 라우팅 패턴 net/http 표준 라이브러리는 표현력이 더욱 풍부해지고 메소드, 와일드카드를 지원하고 중첩 패턴 처리가 향상되었습니다.

 

Minor Changes to the Library

핵심 라이브러리는 Go 1의 호환성 약속에 따라 다양한 사소한 변경과 업데이트를 거칩니다. 또한 전체적으로 성능이 향상되었습니다.

 

Conclusion

Go 1.22는 언어, 도구, 런타임, 컴파일러 및 핵심 라이브러리에 다양한 흥미로운 기능과 개선 사항을 제공합니다. 개발자는 향상된 루프 의미 체계, 향상된 도구, 최적화된 가비지 수집 등을 기대할 수 있습니다. 호환성과 성능 유지에 중점을 두고 Go는 다양하고 효율적인 프로그래밍 언어로 계속 발전하고 있습니다. 2024년 2월 공식 릴리스를 주목하고 Go 1.22가 제공하는 새로운 가능성을 살펴보세요.

 

 

출처: https://golang.withcodeexample.com/blog/go-1.22/
728x90
반응형

댓글