3 ポイント 投稿者 GN⁺ 2025-05-27 | 2件のコメント | WhatsAppで共有
  • Hacker News は従来、Arcという Lisp系言語 で実装されていたが、ここ数か月で SBCL(Steel Bank Common Lisp) へ移行した
  • 今回の移行の主な目的は、性能向上 とマルチコア対応の可能性の確保
  • Arc-to-JS変換器の Lilt と、Arc-to-Common Lisp変換器の Clarc の開発により、構造がより体系化された
  • Clarcのソースコード公開は比較的容易だが、HN全体のコードベースは セキュリティ上の理由 から公開が難しい
  • 新しい構成によってHNは スムーズに移行 し、ユーザー体験が改善された

概要

  • Hacker Newsはもともと Paul Graham が作った Arc というLisp系言語で開発されていた
  • Arcは Racket 上で実装されていたが、ここ数か月で SBCL(Steel Bank 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固有の部分はない
  • しかし HN全体のコードベース には悪用防止のためのさまざまな セキュリティ機構 が組み込まれている
    • コードが公開されると、この部分が無力化される危険がある
    • セキュリティ関連部分を分離する作業は大きな負担となる

2件のコメント

 
ilotoki0804 2025-05-30

GeekNews はどんな技術で動いているのか気になりますねw

 
GN⁺ 2025-05-27
Hacker Newsの意見
  • Hacker Newsは「Worse is better」という哲学がソーシャルエンジニアリングに適用された完璧な例だという考え。90年代末のSlashdotのほうがはるかに多様な機能と豊かさを備えていたが、HNの成功要因は極度に絞り込まれたフォーカスと強力なモデレーションシステムだという評価

    • ついにLispシステムが「Worse is better」の代表格になるのか、という冗談めいた感嘆
    • 可能な限り最小限の技術の上でプラットフォームを運営し、人間の介入に依存するHN運営陣のアイロニーに注目し、「技術が多ければ皆の役に立つわけではない」という本能的な認識
    • HNは機能が少ないが、本当にもっと多くの機能が必要なのかという疑問。機能が少ないおかげでむしろミニマリズム的だという肯定的評価で、「less is more」という言葉を思い出す
    • HNには収益を上げる必要がないことが大きな助けになっているという考え
    • 完璧さとは新しいものを追加するときではなく、これ以上削るものがなくなったときに達成される、というAntoine de Saint-Exupéryの名言への言及
  • Hacker NewsがCommon Lispで全面的に書き直されたのではなく、Arc RuntimeがCommon Lispで再実装されたという事実

    • こういう部分こそLispが最も得意とするところだという感嘆
  • ArcはRacket上に実装されており、もともとはMzScheme(当初はPLT Schemeのコアで、後にRacketへ改名)から始まり、kogirという開発者の貢献でRacketへ移行したという背景知識の共有

    • MzSchemeがPLT Scheme(現Racket)の中核(non-GUI)部分であり、pgが昔のメーリングリストでの投稿履歴を見る限りScheme48上でArc開発を始め、その後PLTへ移ったようなので、その点がずっと気になっていたという意見
    • 私たちはすべてのLisp実装を一周しているのだろうか、という疑問と、「奇妙なテセウスの船」バージョンという愉快な比喩
    • MzScheme、PLT Scheme、Racketは実質的に同じものではないのかという疑問
  • Dangがコードベースにも貢献していると聞いており、そのほかにもHNのために長年献身してきた人がいるのだろうという考え。HNコミュニティは自分にとって最も長く、そして最も楽しく残っているインターネットコミュニティだという体験から、単なる参加者であってもDangに何か役立つことをしたい、あるいはコーヒーでもおごりたいという気持ち

    • 覚えておくべき点として、Hacker News(以前はStartup News)は事実上、世界的にも最も成功した投資会社の1つであるY Combinatorのマーケティング部門の役割を果たしていること、そしてHN創業者であり原作者でもあるPaul Grahamが現在少なくとも億万長者であること。それにもかかわらず、独自の財政的自立を引き続き目指し、寄付も受け付けているという点
  • Clarcのほうがはるかに高速でマルチコア対応も優れているという説明を見て、HNが以前はすべてシングルコアで動いていたという事実に驚きを表明

    • 最新のCPUは非常に高速なので、4chanも10年前のPHPスパゲティコード1万行とサーバー1台で400万ユーザーを処理していたという話。最低限のコード品質とプロファイリング、最適化さえできていれば、CPUコアのごく一部だけでも膨大なトラフィックを処理でき、ボトルネックの大半はディスクとネットワークI/Oだという現実の指摘。HNはテキストしか配信しないので比較的容易だという説明
    • 開発者が現代のソフトウェアがどれほど肥大化し遅くなっているかに気づくたび、天使が羽を得る、という気の利いたコメント
    • HNが実際に1プロセス、1コア、1サーバーで動いていたという点への衝撃。関連HN議論へのリンク付き
    • 最新CPUをきちんと活用すれば性能は本当に高く、スケールアウトの前でもかなりの処理量をさばけるという実践的な助言
    • さまざまな過去の議論へのリンク リンク1, リンク2, リンク3, リンク4 を提示
  • オープンソースのArcコードで作ったウェブサイト運営者として、Clarcをぜひ使いたいという強い願望

    • そのサイトはどこなのかという質問
  • sbcl(Steel Bank Common Lisp)は本当に実運用向けだという感嘆。Racket陣営ではArcの実運用を想定しておらず、バグ修正をしていなかったのではないかという推測。Racketを実運用で使うほかのプロジェクトを聞いたことがないという評価と、Armed Bearへの愛着(強力なJVMライブラリエコシステム)とともに Armed Bear Common Lisp へのリンク共有

    • Racketコミュニティはいつも非常に親切で、依頼したあらゆるバグをしっかり修正してくれたという体験の共有
  • 「HN runs on top of SBCL since a few months」という文の言語的な不自然さの指摘。正しい英語は「HN has been running on top of SBCL for a few months now.」だという提案

    • 「since」は時点(at a point in time)と一緒に使うのが適切で、「a few months」は期間(length of time)なので不自然だという説明。「since a few months ago」や「as of a few months ago」などのほうが自然であり、さらに最初の段落で時制も混在しているため、なおさら目立つという分析
  • いまだにPaul GrahamやRobert Morrisが開発に参加しているのか気になる、記事全体を読んだが言及を確認できず、CL(Common Lisp)にArcが何を付け加えているのか見てみたいという興味から、arclanguage.org へのリンクを提示

    • 2人の開発者はすでにずっと前にプロジェクトを離れている、という回答
  • RacketよりもCommon Lispのほうがはるかに実用的で、SBCLはまるで魔法のようだという肯定的評価