[GDC] 3월 두번째 뉴스레터
안녕하세요, Go Developer Community 입니다. 벌써 3월, 2023년의 1분기가 지났습니다. 저는 그다지 만족스러운 상황은 아닌데, 여러분들은 부디 좋은 수확이 있었을 거라 기대합니다. |
|
|
고 언어의 웹소켓 라이브러리들에 대한 포스트
druva는 클라우드 기반 데이터 보호 및 관리 솔루션을 제공하는 회사입니다.
druva는 매일 새로운 도전에 직면하는 중, 양방향 실시간 통신을 백만 단위의 고객에게 제공하기 위해 고 언어로 웹소켓 에코 시스템을 계획했다고 합니다.
|
|
|
초 고성능 json 스캐너
romshark는 jscan이라는 json 포맷의 문자열을 빠르게 스캔할 수 있는 라이브러리를 공개했습니다.
marshal, unmarshal은 지원하지 않지만, 단순 순회에 대해서 매우 강력한 성능을 자랑합니다.
무조건 모든 키를 가져와야 한다면 한번 시도해볼만 하지 않을까요?
|
|
|
openAI in Go
openAI의 API를 통해 서비스를 래핑한 고 언어 라이브러리가 등장 했습니다.
이전에도 없던 것은 아니었지만, openAI의 대부분의 API에 대응할 수 있기에, 고 언어 기반 AI 서비스를 시작하는데 큰 도움이 될 것으로 기대됩니다.
|
|
|
고 언어에서의 깊은 복사
고 언어에서의 깊은 복사는 때때로 복잡한 과정을 겪습니다.
예를 들어, 어떤 구조체 내부의 포인터의 경우에 포인터만 복사 하기 때문에, 원치 않은 상황을 겪을 수 있습니다.
근데 이건 깊은 복사랑 큰 차이 없는 거 아니냐구요? 그럴 수도 있죠.
|
|
|
새로운 타입의 템플릿
a-h의 templ은 고 언어에 기존에 없던 형식의 템플릿을 제공합니다.
templ 확장자의 파일에, 마치 jsx처럼 고 코드와 html 코드가 혼재된 형태로 작성합니다!
심지어 비주얼 스튜디오 코드를 사용하고 있다면, 전용 language server도 이용할 수 있습니다!
|
|
|
구조체를 효율적으로 정렬하자
고 언어에도 구조체 패딩이 존재합니다.
C 언어와 달리 일반적으로 압축도 하지 않아서, 잘 모르고 필드를 막 나열하면 필요 이상으로 메모리를 사용할 수 있습니다.
그걸 체크하기 위한 간단한 도구를 소개해 드리겠습니다.
|
|
|
앞으로 더 빨라진 cgo를 즐기세요
여태까지 고 언어 런타임은 cgo를 통해 실행되는 C 쓰레드에 하나의 M을 할당했습니다.
그리고 해당 C 쓰레드가 시스템 콜을 호출하거나 고 언어의 함수를 호출하기라도 한다면 새로운 M을 할당받아서 처리했었습니다.
그리고 즉시 반환했죠.
하지만 곧 상황이 달라집니다. 단순히 할당받은 M을 C 쓰레드가 죽을 때까지 재활용하는 것으로 성능 최적화가 이루어집니다.
이 결과, 최근에 이루어진 벤치마크 테스트에서 6.5배, 28배의 성능 향상을 보였습니다.
|
|
|
표준 로그 라이브러리의 진화
zap, zerolog, logrus의 공통점이라고 하면 structured log를 지원한다는 점일 겁니다.
여태 고 언어의 표준 로그 라이브러리는 구조화된 로그는 고사하고, 로그 레벨도 구분이 안되어 있었습니다.
하지만 slog 프로포절이 통과되어 얼마 가지 않아 저희는 더욱 진보된 로그 라이브러리를 표준 라이브러리에서 만나게 될 전망입니다.
|
|
|
|
Go Developer Community를 구독하고 이메일로 받아보세요
Go Developer Community에서 발송하는 뉴스레터입니다.