- 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
Ich frage mich, mit welcher Technologie GeekNews läuft, haha.
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
Hacker News wurde nicht vollständig in Common Lisp neu geschrieben; vielmehr wurde die Arc Runtime in Common Lisp neu implementiert
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 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
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
Als Betreiber einer Website auf Basis des Open-Source-Arc-Codes hofft jemand sehnlichst auf den Einsatz von Clarc
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
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
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
Positive Einschätzung, dass Common Lisp deutlich praktischer als Racket sei und sich SBCL fast magisch anfühle