世界を動かす技術を、日本語で。

Hacker NewsがCommon Lisp上で動作するようになりました

概要

  • Hacker News は以前 Arc (Racket上)で動作
  • 現在は SBCL 上の Clarc へ移行
  • パフォーマンス向上マルチコア対応 が主な理由
  • ページング廃止 などUIにも変化
  • Clarcのコード は未公開、セキュリティ上の事情

Hacker Newsの技術的変遷

  • Hacker NewsPaul Graham が開発した Arc というLisp方言で構築
  • Arc は当初 Racket 上で動作していたが、現在は SBCL (Steel Bank Common Lisp)へ移行
  • Clarc という新しいArc実装の登場が移行の決め手
  • Clarc はパフォーマンスが高く、 マルチコア対応 も容易
  • HN では長いスレッドの ページング機能 が廃止され、全コメントが一度に表示される仕様へ
  • 過去には「More」ボタンで次のページを読み込む方式を採用
  • 移行の公式アナウンスは少なく、UI変更に気付いたユーザーも多い状況

ClarcとArc実装の詳細

  • ClarcArc-to-Common Lisp のトランスパイラ
  • 他にも Arc-to-JSLilt というプロジェクトが存在
  • Arc実装は段階的に再設計され、 arc0 (最下層)、 arc1 (arc0上)、 arc2 (arc1上)という階層構造
    • arc0 のみ基盤言語(Racket, JS, CL)で記述
    • 上位層ほどArc本来の機能が充実
  • この設計により、異なる基盤への移植や再実装が容易

Clarcの未公開理由と今後

  • Clarc のコードは 未公開
  • 理由は HNのアンチアビューズ対策 が多く含まれ、公開すると効果が薄れるため
  • 秘密部分の切り離しには多大な作業が必要
  • 将来的に 他のArc実装公開時 に分離・公開を検討

まとめと今後の展望

  • Hacker News は技術基盤を刷新し、 性能・拡張性 を大幅に向上
  • UI/UX にも変化が現れ、今後もさらなる改善が期待
  • Clarc や関連技術の一般公開には課題が残るものの、開発は着実に進行

Hackerたちの意見

うーん。それってダークモードが来るってこと?

tampermonkeyとか、自分のスタイルシートを適用できるツールを使えばいいんじゃない?

https://news.ycombinator.com/item?id=23199062

uBlock originフィルター: ! Hacker Newsダークモード news.ycombinator.com##html:style(filter:invert(90%) hue-rotate(180deg)) news.ycombinator.com##body:style(background: white)

sbclは頼りになるやつだね。Racketの人たちは、Arcが実際の生産環境で使うには一般的すぎないって考えてたのかな?実際、Racketを本気で使ってるプロジェクトは他に知らないけど、Armed Bearにはずっと特別な思い入れがあるよ。あのJVMライブラリのエコシステムはすごく広いからね。 https://github.com/armedbear/abcl

Racketの人たちはいつも親切で、何かを直してほしいって頼んでも断られたことがないよ。

SchemeとCommon Lispの根本的な違いに関係してると思う。Schemeは教授たちによって教育用の言語として設計されたけど、Common Lispは商業的な利害に基づいて仕様が決められたんだ。だから、パフォーマンスや使いやすさはお金を意識して作られてる。例えば、大きな違いは、SchemeのREPLはライブシステムを変更するために設計されてないこと。Common LispのREPLはそうなんだ…これがClojureのインスピレーションになってる部分でもあるよ(Clojureは生産システム向けに作られてる)。Racketは素晴らしいエコシステムだけど、良くも悪くも学問的な追求に駆動されてる。だから、新しいプログラミング言語やデータのアイデアは、大学院生が論文の一部としてRacketモジュールとして実装することが多いけど、スケールのためのパフォーマンスエンジニアリングはあまり優先されないことが多いんだ。

つまり、Hacker NewsはCommon Lispで書き直されたわけじゃなくて、ArcのランタイムをCommon Lispで再実装したってことだね。

そういうのがLispの得意なところだよね。

Racketよりもずっと理にかなってると思うよ。Common Lispはもっと実用的だし、SBCLはまるで魔法みたい。

Arcのコードを元にしたウェブサイトを運営してる者としては、Clarcを使えるようになったら嬉しいな。

Hacker Newsは「悪い方が良い」というマントラがソーシャルエンジニアリングに適用された完璧な例だと思う。だって、スラッシュドットは1990年代後半にもっと多くの機能があったしね。HNがうまくいってるのは、ピンポイントな焦点と厳しいモデレーションのおかげだよ。

Hacker Newsで議論の続きを見る