더북(TheBook)

C 언어의 디버깅에 익숙한 사람에게는 지그 디버깅도 꽤 괜찮았다. gdb, perf 등 모든 것이 그대로 잘 작동했기 때문이다. 그뿐만 아니라 지그에서 전제 조건과 불변 조건을 단언하는 시스템은 더 정교해서 디버깅 과정이 C 언어보다 조금 더 매끄러웠다. 지그는 러스트가 아니므로 널 포인터 역참조를 기꺼이 허용하며(너무 명백한 경우에는 타입 시스템이 막으려 시도한다), 이미 해제된 메모리에도 접근할 수 있다. 오래 걸리는 디버깅 작업이라는 수상쩍은 즐거움을 누리는 수밖에 없었다. 남은 건 우리, gdb, 아홉 잔째 들이켜는 커피뿐이었다. 그래도 모든 기존 도구가 작동하는 것을 보니 마음이 놓였다.

지그의 놀라운 점 중 하나는 크로스 컴파일, 즉 컴파일러가 실행 중인 환경과 다른 CPU 아키텍처와 운영체제를 대상으로 코드를 컴파일하는 것이 이 언어의 핵심 기능이며 그 과정이 아주 매끄럽다는 것이다. 우리 팀의 클라우드 서버 대부분은 ARM 프로세서에서 실행되며 우리 엔지니어는 x86-64 머신에서 작업하는 편이므로, 로컬에서 다른 아키텍처용으로 바로 컴파일하고 작동하는 것을 확인할 수 있다는 점이 정말 편리했다. ‘지그 덕분에 저희 C++ 프로젝트는 더 많은 아키텍처를 지원하게 되었습니다’는 글을 써서 초능력에 가까운 지그의 크로스 컴파일을 시도해 보도록 영감을 준 저자에게 감사의 인사를 전한다!