Hacker News가 이제 Common Lisp 위에서 구동됨

2 weeks ago 4

  • 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은 더 강력한 성능과 향상된 사용자 환경을 확인할 수 있음

Read Entire Article