- 프랑스의 컴퓨터 학교에서 5년간 공부하고 20년간 프리랜서 개발자로 활동함
- 주로 Ruby on Rails로 클라이언트 프로젝트 작업 수행
-
Common Lisp을 배우기 시작하면서 ASN.1 파서를 생성하는 서버 관리 프로토콜 작성
- Common Lisp에서 C 코드를 생성하여 SNMP 서버 개발
- 그 이후 Common Lisp 기반으로 여러 프로젝트 작성:
-
cl-unix-cybernetics – GitHub에서 가장 많은 별을 받은 프로젝트
-
cl-streams 및 cffi-posix 개발
-
cl-facts – 트리플 스토어로, Common Lisp 그래프 데이터베이스 역할 수행
- 빠르고, 원자적 트랜잭션, 중첩 가능한 트랜잭션 지원
-
unwind-protect과 호환됨
- 단 3개의 매크로만 배우면 사용 가능
- European Lisp Symposium (ELS)에서 발표
- Common Lisp 개발에 집중하면서 클라이언트를 잃었지만, Lisp의 가능성에 큰 확신을 가짐
가상 머신(VM)과 컨테이너의 한계
- 전문가들이 VM 및 컨테이너의 문제점 지적:
- VM은 불필요한 CPU와 대역폭 낭비
- Linux의 cgroups 기반 컨테이너는 원격 명령 실행(RCE) 및 권한 상승 취약점 존재
- 매년 새로운 보안 취약점 발견
- OpenBSD를 선호하면서 Terraform, Ansible 같은 DevOps 도구의 문제 피함
Common Lisp의 한계와 성능 문제
- Clojure 등에서 GC(가비지 컬렉터)로 인해 성능 문제 발생:
- 수천 개의 유닛을 처리하는 전략 게임 개발 시 실패 사례 발생
- JVM의 GC는 성능 및 비용 문제를 수반함
C로의 전환 결정
- Common Lisp의 성능 및 이식성 한계 인식:
- Linux, OpenBSD, GTK+, GNOME 모두 C로 작성됨
- 결국 성능과 이식성 문제를 해결하기 위해 C로 전환
새로운 언어 KC3 개발
-
libc3 유틸리티 라이브러리 개발 → C3 언어 → KC3로 명칭 변경
- KC3의 특징:
- 인터프리터 (ic3) 및 컴파일러 (c3c) 존재
- UTF-8 버퍼에서 데이터 구조 생성 및 역변환
- 방어적 프로그래밍 → 초기부터 버그 최소화
- 보안 문제 없음
- enum 태그된 union 기반의 데이터 타입 시스템
KC3 기반 성과
-
cl-facts를 C89로 포팅:
- Covid-19 기간 동안 개발 완료
- 트리플 추가, 삭제, 재귀 쿼리 시스템, 트랜잭션, 로깅, 지속성 등 구현
- 알고리즘 타입을 위한 파서 및 생성기 작성:
- 구조체, 연결 리스트, 맵, 해시 테이블, 복소수, 튜플, 코드 블록 등 포함
- José Valim (Elixir 창시자)에게 큰 영감 받음
-
ikc3 – KC3 평가 결과 출력하는 REPL
-
kc3_httpd – MVC 프레임워크 기반 웹 서버 개발
- 현재 블로그 페이지도 kc3_httpd로 제공
- 문서화 웹사이트 작성 → KC3의 Markdown to HTML 변환기 사용
결론
- Common Lisp에서 얻은 경험을 기반으로 C로 전환
- KC3는 성능, 보안, 이식성에서 뛰어난 성과를 거둠
- 앞으로 KC3와 관련된 추가 매크로 및 예제 제공 예정