3 Punkte von GN⁺ 2025-05-27 | 2 Kommentare | Auf WhatsApp teilen
  • Hacker News wurde ursprünglich in Arc, einer Lisp-artigen Sprache, implementiert, ist aber in den letzten Monaten auf SBCL (Steel Bank Common Lisp) umgestellt worden
  • Hauptziele dieser Umstellung sind bessere Performance und die Grundlage für Unterstützung von Multicore-Systemen
  • Durch die Entwicklung von Lilt, einem Arc-zu-JS-Compiler, und Clarc, einem Arc-zu-Common-Lisp-Compiler, wurde die Struktur deutlich systematischer
  • Die Veröffentlichung des Quellcodes von Clarc ist vergleichsweise einfach, aber die Freigabe der gesamten HN-Codebasis ist aus Sicherheitsgründen schwierig
  • Mit der neuen Architektur verlief die Umstellung von HN reibungslos, was die Nutzererfahrung verbessert hat

Überblick

  • Hacker News wurde ursprünglich in Arc, einer von Paul Graham entwickelten Lisp-artigen Sprache, geschrieben
  • Arc lief auf Racket, wurde in den letzten Monaten aber auf SBCL (Steel Bank Common Lisp) umgestellt
  • Der Grund dafür war eine Leistungssteigerung

Performance- und Funktionsänderungen

  • In der praktischen Nutzung zeigen sich Performance-Verbesserungen, etwa dadurch, dass die Seitentrennung weggefallen ist
  • Früher war bei langen Kommentar-Threads Paging nötig, jetzt werden sie vollständig auf einmal geladen
  • Möglich wurde diese Veränderung durch die Einführung von Clarc
  • Clarc sorgt dafür, dass HN in Multicore-Umgebungen reibungslos laufen kann
  • Die Entwicklung von Clarc läuft bereits seit mehreren Jahren und nähert sich inzwischen dem Abschluss

Implementierung und Architektur

  • Es gibt Lilt, das Arc nach JS übersetzt, und Clarc, das Arc nach Common Lisp übersetzt
  • Die zugrunde liegende Struktur der bisherigen Arc-Implementierung wurde neu entworfen und Arc in mehrere Ebenen aufgeteilt
    • arc0 wird in einer Systemsprache (Racket, JS, CL) geschrieben
    • arc1 baut auf arc0 auf, arc2 auf arc1
    • Die vollständige Funktionalität wird in der oberen Ebene (arc2) implementiert, die unteren Ebenen bleiben minimal
  • Durch diese Struktur lässt sich Arc in verschiedenen Laufzeitumgebungen leichter neu implementieren

Fragen zur Veröffentlichung des Quellcodes

  • Die Open-Source-Veröffentlichung von Clarc (der Common-Lisp-Implementierung von Arc) ist relativ einfach
    • Möglich wäre das, indem bestehende Arc-Releases auf Clarc portiert werden
    • Eine frühe Beispiel-App für HN ist bereits enthalten und enthält keine HN- oder YC-spezifischen Teile
  • Die gesamte HN-Codebasis enthält jedoch verschiedene Sicherheitsmechanismen, die Missbrauch verhindern sollen
    • Würde der Code veröffentlicht, könnten diese Schutzmechanismen ausgehebelt werden
    • Die sicherheitsrelevanten Teile herauszutrennen wäre ein erheblicher Aufwand

2 Kommentare

 
ilotoki0804 2025-05-30

Ich frage mich, mit welcher Technologie GeekNews läuft, haha.

 
GN⁺ 2025-05-27
Hacker-News-Kommentare
  • Hacker News ist, so die Ansicht, das perfekte Beispiel dafür, wie die Philosophie "Worse is better" auf Social Engineering angewendet wird: Slashdot hatte Ende der 90er deutlich mehr Funktionen und war insgesamt reichhaltiger, doch der Erfolgsfaktor von HN sei der extrem fokussierte Ansatz und das starke Moderationssystem

    • Amüsierte Bewunderung darüber, dass ausgerechnet ein Lisp-System nun zum Vorzeigevertreter von "Worse is better" wird
    • Hervorgehoben wird die Ironie, dass die Plattform auf möglichst wenig Technik betrieben wird und sich das HN-Team stark auf menschliches Eingreifen stützt, zusammen mit der instinktiven Einsicht: „Mehr Technik hilft nicht automatisch allen“
    • HN habe zwar wenige Funktionen, doch es stelle sich die Frage, ob wir wirklich mehr Funktionen brauchen; gerade die geringe Funktionszahl werde positiv als minimalistisch bewertet und erinnere an „less is more“
    • Der Umstand, dass HN keinen Gewinn erwirtschaften muss, helfe dabei erheblich
    • Erwähnung des Zitats von Antoine de Saint-Exupéry, wonach Perfektion nicht dann erreicht ist, wenn man nichts mehr hinzufügen kann, sondern wenn man nichts mehr weglassen kann
  • Hacker News wurde nicht vollständig in Common Lisp neu geschrieben; vielmehr wurde die Arc Runtime in Common Lisp neu implementiert

    • Genau das, so die begeisterte Reaktion, sei eine der großen Stärken von Lisp
  • Arc wurde auf Racket implementiert und begann ursprünglich auf MzScheme (zunächst der Kern von PLT Scheme, später in Racket umbenannt); durch den Beitrag eines Entwicklers namens kogir wurde es auf Racket übertragen

    • Es wird Hintergrundwissen geteilt, dass MzScheme der zentrale Nicht-GUI-Teil von PLT Scheme (dem heutigen Racket) war, und dass man sich angesichts von pgs alten Mailinglisten-Beiträgen immer gefragt habe, warum die Arc-Entwicklung zunächst auf Scheme48 begann und später zu PLT wechselte
    • Die scherzhafte Frage, ob wir nun einmal im Kreis durch alle Lisp-Implementierungen rotieren, mit dem fröhlichen Vergleich einer „seltsamen Version des Schiffs des Theseus“
    • Zweifel daran, ob MzScheme, PLT Scheme und Racket nicht im Grunde ohnehin dasselbe seien
  • Es heißt, Dang trage auch zum Codebestand bei, und vermutlich gebe es darüber hinaus weitere Menschen, die sich seit langer Zeit für HN einsetzen; die HN-Community sei für jemanden die Internet-Community, die ihm am längsten und mit am meisten Freude erhalten geblieben ist, sodass man selbst als bloßer Teilnehmer Dang gern irgendwie helfen oder ihm wenigstens einen Kaffee spendieren würde

    • Man solle jedoch nicht vergessen, dass Hacker News (früher Startup News) faktisch als Marketingabteilung von Y Combinator fungiert, einer der weltweit erfolgreichsten Investmentfirmen, und dass HN-Gründer und ursprünglicher Autor Paul Graham heute mindestens Milliardär ist; dennoch strebe man weiterhin finanzielle Eigenständigkeit an und nehme auch Spenden an
  • Nach der Erklärung, dass Clarc deutlich schneller ist und Multicore besser unterstützt, wird Überraschung darüber geäußert, dass HN zuvor komplett auf einem einzigen Core lief

    • Moderne CPUs seien so schnell, dass selbst 4chan mit 10.000 Zeilen zehn Jahre altem PHP-Spaghetti-Code auf nur einem Server 4 Millionen Nutzer bedient habe; mit einem Mindestmaß an Codequalität, Profiling und Optimierung lasse sich schon mit einem winzigen Teil der CPU-Kerne enorm viel Traffic bewältigen, während die eigentlichen Engpässe meist bei Festplatte und Netzwerk-I/O lägen; da HN nur Text ausliefere, sei das vergleichsweise einfach
    • Der witzige Kommentar, dass jedes Mal, wenn ein Entwickler erkennt, wie aufgebläht und langsam moderne Software ist, ein Engel Flügel bekommt
    • Schock darüber, dass HN tatsächlich auf einem Prozess, einem Core und einem Server lief, mit Link zu einer relevanten HN-Diskussion
    • Der praktische Hinweis, dass man mit moderner CPU-Leistung wirklich sehr weit kommt und schon vor dem Scale-out viel Durchsatz bewältigen kann
    • Verweise auf verschiedene frühere Diskussionen: Link1, Link2, Link3, Link4
  • Als Betreiber einer Website auf Basis des Open-Source-Arc-Codes hofft jemand sehnlichst auf den Einsatz von Clarc

    • Nachfrage, um welche Website es sich handelt
  • Begeisterung darüber, dass sbcl (Steel Bank Common Lisp) wirklich produktionstauglich ist; dazu die Vermutung, dass im Racket-Lager vielleicht keine Bugfixes für Arc gemacht wurden, weil dessen praktischer Einsatz nicht ernsthaft vorgesehen war; außerdem die Einschätzung, man kenne keine anderen Projekte, die Racket produktiv einsetzen, zusammen mit Sympathie für Armed Bear wegen des starken JVM-Bibliotheksökosystems und einem Link zu Armed Bear Common Lisp

    • Dem wird entgegnet, dass die Racket-Community immer äußerst freundlich gewesen sei und alle gemeldeten Bugs gut behoben habe
  • Zur Formulierung „HN runs on top of SBCL since a few months“ wird angemerkt, dass sie sprachlich holprig ist; als korrektes Englisch wird „HN has been running on top of SBCL for a few months now.“ vorgeschlagen

    • Erklärung dazu, dass „since“ mit einem Zeitpunkt verwendet werden sollte, während „a few months“ eine Zeitspanne bezeichnet; natürlicher wären daher „since a few months ago“ oder „as of a few months ago“; außerdem wird analysiert, dass der erste Absatz auch die Zeitformen mischt, weshalb es noch stärker auffällt
  • Neugier, ob Paul Graham oder Robert Morris noch immer an der Entwicklung beteiligt sind; trotz Durchsicht des gesamten Artikels habe man dazu nichts gefunden, und man würde sich gern ansehen, was Arc zu CL (Common Lisp) hinzufügt, mit Verweis auf arclanguage.org

    • Antwort darauf, dass beide Entwickler das Projekt schon vor langer Zeit verlassen haben
  • Positive Einschätzung, dass Common Lisp deutlich praktischer als Racket sei und sich SBCL fast magisch anfühle