최근에 프로그래밍 언어 «Go 1.19»의 새 버전 출시 발표, 다양한 개선 사항과 무엇보다도 버그 수정을 추가하여 이전 릴리스에서 개선된 버전 우리가 강조할 수 있는 참신 중 메모리 관리 개선, 보안 개선 등을 들 수 있습니다.
Go를 처음 접하시는 분들은 컴파일 언어의 고성능에 코드 작성 용이성 개발 및 버그 보호.
Go의 구문은 C 언어의 일반적인 요소를 기반으로 합니다. Python 언어에서 일부 차용. 언어는 매우 간결하지만 코드는 읽고 이해하기 쉽습니다.
Go 코드는 별도의 바이너리 실행 파일로 컴파일됩니다. 가상 머신을 사용하지 않고 기본적으로 실행됩니다(프로파일링, 디버깅 및 기타 런타임 문제 해결 하위 시스템은 런타임 구성 요소로 내장됨).
Go 1.19 주요 뉴스
이 새로운 버전의 Go 1.19에서는 다음이 강조됩니다. 기능 및 제네릭 유형에 대한 지원을 개선하기 위한 작업이 완료되었습니다. 최신 버전에 추가되어 개발자가 여러 유형과 동시에 작동하도록 설계된 기능을 정의하고 사용할 수 있으며 제네릭을 사용하는 일부 프로그램의 성능 최적화가 20% 향상되었습니다.
새 버전에서 눈에 띄는 또 다른 변경 사항은 링크, 목록 및 더 간단한 구문에 대한 지원 추가 문서 주석의 헤더를 정의합니다. gofmt 유틸리티는 API 문서와 함께 주석의 고급 기능을 염두에 두고 서식을 제공합니다.
게다가 C, C++, Java, JavaScript, Rust 및 Swift에 맞게 수정된 Go 메모리 모델 순차적으로 일관된 원자 값을 허용하지 않습니다. atomic.Int64 및 atomic.Pointer[T]와 같은 새로운 유형이 sync/atomic 패키지에 도입되어 원자 값을 더 쉽게 사용할 수 있습니다.
반면에 가비지 수집기는 이제 소프트 제한을 정의할 수 있습니다., 힙의 크기를 제한하고 시스템에 메모리를 더 적극적으로 반환함으로써 시행됩니다. 즉, 소비가 모든 조건에서 지정된 제한 내로 보장되지는 않습니다. 소프트 제한은 고정 메모리 컨테이너에서 실행되는 프로그램을 최적화하는 데 유용할 수 있습니다.
또한 Unix 시스템에서는 추가 파일 설명자가 자동으로 활성화됩니다. (RLIMIT_NOFILE 제한 증가) x86-64 및 ARM64 시스템에서 대규모 변경 표현식의 속도를 높이기 위해 점프 테이블이 사용되어 대규모 변경 표현식을 최대 20% 더 빠르게 처리할 수 있습니다.
riscv64 시스템에서 CPU 레지스터를 통해 함수 인수를 전달하는 기능이 구현되어 성능이 약 10% 향상되었습니다.
다른 변경 사항 중 이 새 버전에서 눈에 띄는 :
- 수많은 성능 최적화가 구현되었습니다.
- 복사된 데이터의 크기를 줄이기 위해 루틴 스택 크기를 동적으로 설정하는 지원 추가
- 64비트 LoongArch 아키텍처(GOARCH=loong64)를 기반으로 하는 Loongson 프로세서가 있는 시스템에서 Linux 환경에 대한 실험적 지원을 추가했습니다.
- 메모리 모델을 변경해도 이전에 작성된 코드와의 호환성에는 영향을 미치지 않았습니다.
- 유닉스 계열 시스템(aix, android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris)을 걸러내기 위해 "go:build" 라인에서 사용할 수 있는 새로운 "unix" 빌드 제한을 추가했습니다. ).
- 보안을 향상시키기 위해 os/exec 모듈은 이제 PATH 환경 변수를 확장할 때 상대 경로를 무시합니다(예: 실행 파일의 경로를 결정할 때 현재 디렉토리는 더 이상 확인되지 않음).
마지막으로 이 새 릴리스에 대해 자세히 알아보려면 다음에서 세부 정보를 확인할 수 있습니다. 다음 링크.