-
Hacker News는 기존에는 Arc라는 Lisp 계열 언어로 구현되었으나 최근 몇 달간 SBCL(Common Lisp) 로 전환됨
- 이번 전환의 주요 목적은 성능 향상과 멀티코어 지원 가능성 확보임
- Arc-to-JS 변환기인 Lilt와 Arc-to-Common Lisp 변환기인 Clarc 개발로 인해 구조가 더욱 체계화됨
- Clarc의 소스코드 공개는 비교적 용이하나, HN 전체 코드베이스는 보안상의 이유로 공개가 어려움
- 새로운 구조로 HN이 부드럽게 전환되어 사용자 경험이 개선됨
개요
- Hacker News는 원래 Paul Graham이 만든 Arc라는 Lisp 계열 언어로 개발되었음
- Arc는 Racket 위에서 구현되었으나, 최근 몇 달간 SBCL(Common Lisp) 로 전환됨
- 그 이유는 성능 향상을 위해서임
성능 및 기능 변화
- 페이지 분할이 없어지는 등, 실사용 관점에서 성능 개선이 확인됨
- 과거에는 긴 댓글 스레드에서 페이징이 필요했으나, 지금은 한 번에 모두 로드되는 방식으로 변화함
- 이러한 변화는 Clarc의 도입으로 가능함
- Clarc는 멀티코어 환경에서 HN이 원활하게 구동될 수 있게 해줌
- Clarc 개발은 여러 해 동안 진행되어왔으며, 최근 마무리 단계에 가까워짐
구현 방식 및 구조
- Arc를 JS로 변환해주는 Lilt, 그리고 Arc를 Common Lisp으로 변환하는 Clarc가 존재함
- 기존 Arc 구현의 하위 구조를 재설계하여 Arc를 여러 단계로 나눠 개발함
-
arc0는 시스템 언어(Racket, JS, CL)로 작성
-
arc1은 arc0 위에서, arc2는 arc1 위에서 작성
- 상위 단계(arc2)에서 전체 기능 구현, 하위 단계는 최소화
- 이러한 구조 덕분에 다양한 런타임에서 Arc를 재구현하기가 쉬워짐
소스코드 공개 관련 이슈
- Clarc(Arc의 Common Lisp 구현체)의 오픈소스 공개는 상대적으로 쉬움
- 기존 Arc 릴리스를 Clarc로 포팅하면 가능
- 초기 버전 HN 샘플 앱은 이미 포함되어 있어, HN이나 YC-specific 부분은 없음
- 그러나 HN 전체 코드베이스는 악용 방지를 위한 여러 보안 메커니즘이 내장되어 있음
- 코드가 공개되면 이 부분이 무력화될 위험이 있음
- 보안 관련 부분을 분리하는 작업은 큰 부담임
결론
- HN은 Common Lisp(SBCL) 위로 무리없이 전환되어 운영 중임
- 앞으로 Arc의 여러 구현체가 더 공개될 가능성 존재
- 이번 전환을 통해 HN은 더 강력한 성능과 향상된 사용자 환경을 확인할 수 있음