정보기술

Go 문법으로 C 코드 생성하는 'Solod' 언어 공개...가비지 컬렉션 없는 시스템 프로그래밍 위한 Go-C 트랜스파일러

2026년 4월 7일
2분
thumbnail.webp
Go 문법의 편의성과 C의 성능·제어를 결합한 시스템 프로그래밍 언어
[한국정보기술신문] Go 언어의 문법을 사용하면서 C11 코드로 변환하는 프로그래밍 언어 'Solod(So)'가 오픈소스로 공개됐다. 이 언어는 Go의 타입 안전성과 도구 지원을 유지하면서 가비지 컬렉션 없는 시스템 프로그래밍을 가능하게 한다.

Go 문법으로 C 성능 확보

Solod는 Go 언어의 엄격한 부분집합으로, 소스 코드를 사람이 읽기 쉬운 C 코드로 트랜스파일한다. 개발팀은 "C로 시스템 프로그래밍을 하되, Go의 문법과 타입 안전성, 도구 지원을 활용한다"는 목표를 제시했다.
트랜스파일러는 Go 소스를 C11 헤더 파일(.h)과 구현 파일(.c)로 변환한다. Go 구조체는 C typedef 구조체가 되고, 메서드는 void 포인터 리시버를 가진 함수로 변환된다. Go의 string 타입은 커스텀 'so_String' 구조로 매핑된다.

런타임 없는 제로 오버헤드 설계

Solod는 가비지 컬렉션을 포함한 런타임을 제거해 성능을 확보했다. 벤치마크 결과 생성된 코드는 "일반적으로 Go와 동등하거나 더 빠른" 성능을 보인다고 개발팀은 밝혔다.
기본적으로 스택 기반 메모리 할당을 사용하며, 힙 할당은 표준 라이브러리를 통한 명시적 선택이 필요하다. 이런 설계로 성능이 중요한 애플리케이션에서 가비지 컬렉션 오버헤드를 완전히 제거했다.

구조체와 인터페이스 지원, 고루틴은 제외

현재 지원하는 기능은 구조체, 메서드, 인터페이스, 슬라이스와 고정 크기 배열, 다중 반환값, defer 문, 기본 제어 흐름이다.
반면 채널과 고루틴, 클로저나 람다 함수, 제네릭은 지원하지 않는다. 가비지 컬렉션도 설계상 제외됐다. 개발팀은 이런 제한을 통해 시스템 프로그래밍에 적합한 명확한 메모리 관리를 제공한다고 설명했다.

C 코드와 직접 연동 가능

Solod의 핵심 장점은 네이티브 C 상호 운용성이다. CGO 오버헤드 없이 C에서 So 코드를 호출하고 So에서 C 함수를 호출할 수 있다. 생성된 C 코드는 가독성이 높아 프로덕션 환경에서 사용하고 디버깅하기에 적합하다.
기존 C 코드베이스와 통합이 필요한 프로젝트나 임베디드 시스템 개발, 수동 메모리 관리가 필요한 성능 중심 애플리케이션에 활용할 수 있다.

설치와 사용법

설치는 Go가 필요하며 go install solod.dev/cmd/so@latest 명령으로 가능하다. 일반적인 작업 흐름은 Go 모듈 생성, Solod 의존성 추가, So 호환 패키지를 사용한 Go 코드 작성, so translate 또는 so build 명령으로 트랜스파일 또는 컴파일하는 순서다.
개별 파일이 아닌 모듈 단위로 작동하며, Go 도구와의 호환성을 유지한다. LSP, 문법 강조, go test 등 기존 Go 개발 환경을 그대로 활용할 수 있다.

초기 단계이지만 활발한 개발

현재 프로젝트 상태는 기본 Go 기능을 가진 트랜스파일러와 저수준 표준 라이브러리가 완성됐고, 핵심 표준 라이브러리 패키지들이 개발 중이다. 맵, 강화된 트랜스파일러, 완전한 윈도우 지원이 계획돼 있다.
GitHub에서 368회 커밋과 385개 스타, 8개 포크를 기록하며 초기 단계지만 활발한 개발이 진행되고 있다. 프로젝트는 단순함과 명확한 설계 선택을 강조하며, 언어 명세와 표준 라이브러리 레퍼런스, 인터랙티브 플레이그라운드를 제공한다.
한국정보기술신문 정보기술분과 전호재 기자 news@kitpa.org