Go 1.27의 JSON v2, 구문 처리와 Go 값 변환을 분리
Go 1.27에는 `encoding/json/v2`와 `encoding/json/jsontext`가 안정판으로 포함됐습니다. `jsontext`는 JSON 토큰과 값을 스트리밍 처리하고, `json/v2`는 이를 Go 값과 연결합니다. 옵션과 사용자 정의 메서드도 이 구조를 따르며, 기존 `encoding/json`이 계속 지원돼 호출부별로 이전할 수 있습니다.
언어와 프레임워크, SDK와 개발 방식·도구의 변화를 다룹니다.
Go 1.27에는 `encoding/json/v2`와 `encoding/json/jsontext`가 안정판으로 포함됐습니다. `jsontext`는 JSON 토큰과 값을 스트리밍 처리하고, `json/v2`는 이를 Go 값과 연결합니다. 옵션과 사용자 정의 메서드도 이 구조를 따르며, 기존 `encoding/json`이 계속 지원돼 호출부별로 이전할 수 있습니다.
TinyGo 저장소에서 2019년부터 이어진 직렬화 지원 요청 이슈 #447이 완료로 닫혔습니다. TinyGo 0.44.0-dev에서 encoding/json과 encoding/gob으로 기본 구조체를 인코딩한 뒤 다시 읽는 사례가 성공했지만, 모든 기능과 자료형의 호환성을 뜻하지는 않습니다.
Go 1.28 개발 버전은 HTTP/2 연결에서 처리할 일이 없을 때 연결 담당 goroutine을 종료하고, 새 작업이 오면 다시 실행하는 파킹 기능을 추가했습니다. 한 머신에서 유휴 연결 5,000개를 측정한 결과, 파킹을 켜면 같은 바이너리에서 RSS가 84.7~92.6MiB 줄고 goroutine은 5,000개 감소했습니다.
Go 백엔드와 플랫폼 내장 WebView를 쓰는 앱 개발 프레임워크 Wails가 v3.0.0을 출시했습니다. 다중 창과 네이티브 메뉴, 서비스 바인딩 생성, 서버 빌드를 지원하며 모바일은 실험 단계입니다. v2에서 옮기려면 앱 구조와 바인딩을 포팅해야 합니다.
gohawk는 Go 코드에서 리소스 관리, 동시성, 오류 처리 문제를 찾는 정적 분석기입니다. 심벌릭 힙 모델로 객체 참조와 별칭을 추적하며, 개발자는 Docker와 Kubernetes 분석에 걸린 시간으로 각각 약 13초와 76초라고 밝혔습니다.
gopls가 사용자 입력을 받아 여러 단계로 진행하는 리팩터링을 지원합니다. Go 팀은 이를 특정 편집기에 묶이지 않는 LSP 표준 제안으로 설계했으며, 구조체 태그 수정과 인터페이스 메서드 생성 등을 지원합니다. gopls v0.24.0과 VS Code용 Go 확장 v0.56.0에서 사용할 수 있습니다.
Go 1.27의 net/http.Transport는 닫을 때 읽지 않은 HTTP/1 응답 본문을 최대 256KB, 50ms 동안 비동기로 읽어 연결 재사용을 돕습니다. 본문을 읽지 않고 상태 코드만 확인하는 예제는 Go 1.26보다 약 5배 빨라졌습니다.
Go의 netip.Addr에는 IPv4 주소를 IPv4-mapped IPv6 주소로 바꾸는 To6() 메서드가 없습니다. 글쓴이는 권장되는 AddrFrom16(ip.As16()) 방식이 네이티브 구현보다 약 8배 느린 이유를 분석하고, 컴파일러 최적화로 성능 차이를 없애는 방법과 그 과정의 부작용을 설명합니다.
Phuong Le의 영상은 Go 1.24 맵에 도입된 Swiss Tables 구조를 단계별로 설명합니다. 해시 분할과 제어 바이트 검사부터 테이블 확장, 기존 맵과의 벤치마크까지 다루며, Go 맵 내부 구조를 이해하려는 개발자에게 유용한 자료입니다.
Uber는 Go 런타임의 스택 확장으로 CPU를 많이 쓰던 서비스에 프로파일 기반 스택 크기 조정을 적용했습니다. 고루틴 시작 스택을 2KB에서 32KB로 바꾼 뒤 스택 확장으로 발생하던 CPU 사용량을 10% 미만에서 1% 미만으로 낮췄습니다.
Go 패키지 경로에 GitHub 같은 호스팅 주소를 직접 쓰면 저장소 이전 때 import 경로도 바꿔야 합니다. 글쓴이는 자체 도메인과 Go 메타 태그를 사용해 경로를 고정하고, 뒤에서 연결할 Git 호스팅 서비스를 바꾸는 방법을 소개합니다.
Go 동시성의 주요 개념을 실행 가능한 예제로 정리한 미니북입니다. 고루틴과 채널부터 동기화, 테스트, 스케줄링, 진단 도구까지 빠르게 훑으며, 데이터 경쟁과 경쟁 조건의 차이도 설명합니다.
Go 1.27은 CPU별 벡터 크기와 명령어 차이를 감추는 실험적 SIMD 패키지 `simd`를 도입합니다. 공통 연산과 에뮬레이션으로 여러 아키텍처에서 코드를 재사용하며, 성능과 지원 기능은 하드웨어와 연산에 따라 달라집니다.
Go와 Windows API로 마우스·키보드 입력을 흉내 내 Teams 상태를 초록색으로 유지하는 도구를 소개합니다. 댓글에서는 PowerShell 한 줄로도 같은 동작을 구현할 수 있다는 의견과, 절전 방지 API만으로는 Teams 상태가 바뀌지 않는다는 지적이 나옵니다.