Go 1.25의 실험적 JSON 패키지: 성능 향상 및 더 엄격한 구문

2025-09-10

Go 1.25는 Go의 JSON 인코딩 및 디코딩 기능을 개선하기 위해 실험적인 `encoding/json/v2` 및 `encoding/json/jsontext` 패키지를 도입합니다. 기존 `encoding/json` 패키지의 부정확한 JSON 구문 처리, 성능 병목 현상 및 API 결함과 같은 문제를 해결합니다. 개선 사항에는 잘못된 UTF-8, 중복 키 및 null 슬라이스/맵에 대한 더 엄격한 처리가 포함됩니다. 스트리밍 처리를 통해 특히 언마샬링 성능이 크게 향상됩니다. 이전 버전과 거의 호환되지만, `GOEXPERIMENT=jsonv2`를 사용하여 테스트하고 피드백을 제공하는 것이 좋습니다.

더 보기
(go.dev)
개발

Go의 네이티브 FIPS 140-3 암호 모듈: 안전하고 간편한 솔루션

2025-07-16

Go 1.24 이상 버전에서는 Geomys와의 공동 개발을 통해 새로운 암호 모듈을 통해 FIPS 140-3 준수를 기본적으로 지원합니다. CAVP 인증서 A6650으로 검증되었고 CMVP 검토 중인 이 모듈은 규제 환경에서 Go 사용자의 이전 마찰점을 해결합니다. 매끄러운 개발자 경험을 제공하며, 최적화된 ECDSA와 AES-256-CTR 기반 NIST DRBG를 사용하여 타협 없는 보안을 자랑합니다. 광범위한 플랫폼과 알고리즘을 지원하며, 이전의 Go+BoringCrypto보다 향상된 기능과 보안을 제공합니다. 이 네이티브 모듈은 Go 개발자에게 FIPS 140-3 준수를 달성하는 가장 쉽고 안전한 방법입니다.

더 보기
(go.dev)
개발 암호 모듈

Go 제네릭: 효율적이고 적응력 있는 트리 구조를 위한 제네릭 인터페이스의 영리한 사용

2025-07-10

이 글에서는 Go의 제네릭 인터페이스의 고급 사용법, 특히 이진 탐색 트리와 같은 데이터 구조를 구축할 때 자기 참조 제네릭 인터페이스를 사용하여 형식 제약 조건을 우아하게 처리하는 방법을 설명합니다. 트리 구조를 예로 들어 `cmp.Ordered`, 사용자 정의 비교 함수, 자기 참조 제네릭 인터페이스의 세 가지 구현 방식을 비교합니다. 마지막으로, 정렬된 집합을 구축하기 위한 `comparable` 제약 조건의 결합과 포인터 수신기에 따른 복잡성을 피하는 방법에 대해 자세히 설명하고, 설계에서 단순성과 가독성을 우선시할 것을 권장합니다.

더 보기
(go.dev)
개발 Go 제네릭

Go의 에러 처리 사가: 구문 전쟁의 종식

2025-06-03

Go팀은 수년간 Go의 장황한 에러 처리를 개선하려는 시도를 해왔지만, 결국 언어 구문을 변경하려는 노력을 포기하기로 결정했습니다. "check/handle", "try", "?" 연산자와 같은 제안들은 모두 광범위한 합의를 얻지 못했습니다. 이 글은 이러한 역사를 자세히 설명하고 합의 부족, 높은 구현 비용, 기존 접근 방식의 적절성을 근거로 결정을 설명합니다. 팀은 구문 설탕을 찾는 것보다 더 나은 에러 처리 메커니즘과 도구에 집중하는 것이 더 생산적이며, 코드의 간결성보다는 실용성과 가독성을 중시해야 한다고 주장합니다.

더 보기
(go.dev)
개발

Go 1.25, 코어 타입 제거 및 언어 사양 단순화

2025-03-26

Go 1.18은 제네릭을 도입했고, 이와 함께 제네릭 오퍼랜드 처리를 단순화하기 위해 "코어 타입"이라는 개념을 도입했습니다. 하지만 이는 언어 사양에 복잡성을 더하고 특정 연산의 유연성을 제한했습니다. Go 1.25는 코어 타입을 제거하고 더 명확하고 간결한 규칙으로 대체하여 언어 사양을 단순화하고 더 강력한 슬라이스 연산 및 향상된 형식 추론과 같은 향후 언어 개선의 길을 엽니다. 이 변경은 기존 Go 프로그램의 동작에는 영향을 미치지 않습니다.

더 보기
(go.dev)
개발 언어 사양

Go 1.24: Wasm 기능 향상 - WASI 리액터와 내보내기 함수

2025-02-14

Go 1.24는 `go:wasmexport` 지시어와 WASI 리액터 구축 기능 추가를 통해 WebAssembly(Wasm) 지원을 크게 향상시켰습니다. 이를 통해 Go 개발자는 함수를 Wasm으로 내보내 호스트 애플리케이션과의 원활한 통합을 가능하게 합니다. 새로운 WASI 리액터 모드는 재초기화 없이 여러 이벤트나 요청에 반응할 수 있는 지속적으로 실행되는 Wasm 모듈을 용이하게 합니다. Wasm의 단일 스레드 특성 및 형식 제한과 같은 제약 사항이 있지만, Go 1.24의 개선으로 더욱 강력하고 다용도의 Go 기반 Wasm 애플리케이션을 위한 길이 열립니다.

더 보기
(go.dev)
개발

Go Protobuf의 새로운 불투명 API가 성능과 안전성을 향상시킵니다

2024-12-16

Go팀은 기존의 Open Struct API와 함께 사용할 수 있는 Go Protobuf의 새로운 불투명 API를 출시했습니다. 이 새로운 API는 생성된 코드와 기반 메모리 표현을 분리하여 성능 향상, 메모리 할당 감소, 지연 디코딩과 같은 최적화를 제공합니다. 구조체 필드를 숨기고 접근자 메서드를 통해서만 액세스함으로써 포인터 관련 버그 및 의도치 않은 공유를 방지합니다. 마이그레이션에는 하이브리드 API 활성화, `open2opaque` 도구 사용, 불투명 API로 전환이 포함됩니다. 기존 Open Struct API는 계속 지원됩니다.

더 보기
(go.dev)
개발