- Hacker News était auparavant implémenté en Arc, un langage de la famille Lisp, mais a migré ces derniers mois vers SBCL (Steel Bank Common Lisp)
- L’objectif principal de cette transition est d’améliorer les performances et d’ouvrir la voie au support du multicœur
- Le développement de Lilt, un convertisseur Arc-vers-JS, et de Clarc, un convertisseur Arc-vers-Common Lisp, a permis de rendre l’architecture plus structurée
- La publication du code source de Clarc est relativement simple, mais celle de l’ensemble de la base de code de HN reste difficile pour des raisons de sécurité
- Grâce à cette nouvelle architecture, HN a effectué une transition en douceur, améliorant l’expérience utilisateur
Vue d’ensemble
- Hacker News a été initialement développé dans Arc, un langage de la famille Lisp créé par Paul Graham
- Arc était implémenté sur Racket, mais a récemment migré vers SBCL (Steel Bank Common Lisp) au cours des derniers mois
- La raison de ce changement est l’amélioration des performances
Performances et évolutions fonctionnelles
- Des gains de performance sont constatés dans l’usage réel, notamment avec la disparition de la pagination
- Autrefois, les longs fils de commentaires nécessitaient une pagination, alors qu’ils sont désormais chargés en une seule fois
- Cette évolution a été rendue possible par l’introduction de Clarc
- Clarc permet à HN de fonctionner correctement dans un environnement multicœur
- Le développement de Clarc se poursuit depuis plusieurs années et approche récemment de sa phase finale
Méthode d’implémentation et architecture
- Il existe Lilt, qui convertit Arc en JS, et Clarc, qui convertit Arc en Common Lisp
- L’architecture sous-jacente de l’implémentation Arc existante a été repensée afin de découper Arc en plusieurs niveaux de développement
- arc0 est écrit dans un langage système (Racket, JS, CL)
- arc1 est écrit au-dessus de arc0, et arc2 au-dessus de arc1
- L’ensemble des fonctionnalités est implémenté au niveau supérieur (arc2), tandis que les niveaux inférieurs sont réduits au minimum
- Grâce à cette structure, il devient plus facile de réimplémenter Arc sur différents runtimes
Questions liées à la publication du code source
- La publication open source de Clarc (l’implémentation Common Lisp d’Arc) est relativement simple
- Elle est possible en portant une version existante d’Arc vers Clarc
- Une application d’exemple HN des premières versions est déjà incluse, sans parties spécifiques à HN ou à YC
- En revanche, l’ensemble de la base de code de HN intègre plusieurs mécanismes de sécurité destinés à prévenir les abus
- Si le code était publié, ces protections risqueraient d’être neutralisées
- Isoler les parties liées à la sécurité représenterait une charge importante
2 commentaires
Je me demande avec quelle technologie GeekNews fonctionne, haha
Commentaire Hacker News
L’idée que Hacker News est un exemple parfait de la philosophie « Worse is better » appliquée à l’ingénierie sociale, avec le constat qu’à la fin des années 90, Slashdot proposait bien plus de fonctionnalités et de richesse, mais que le succès de HN tient à un focus extrêmement resserré et à un système de modération solide
Précision que Hacker News n’a pas été entièrement réécrit en Common Lisp, mais que c’est le runtime Arc qui a été réimplémenté en Common Lisp
Rappel qu’Arc a été implémenté sur Racket, qu’il a d’abord démarré sur MzScheme (au départ le cœur de PLT Scheme, renommé plus tard en Racket), avant d’être porté sur Racket grâce à la contribution d’un développeur nommé kogir
Impression que Dang contribue aussi à la base de code, et qu’il doit sûrement y avoir d’autres personnes qui se dévouent depuis longtemps à HN ; témoignage selon lequel la communauté HN est pour cette personne la communauté internet la plus durable et la plus agréable qu’elle ait connue, au point de vouloir aider Dang d’une façon ou d’une autre, ou au moins lui offrir un café, même en tant que simple participant
Après avoir lu que Clarc est bien plus rapide et gère mieux le multicœur, surprise d’apprendre que HN tournait jusque-là entièrement sur un seul cœur
En tant qu’exploitant d’un site web construit avec le code open source d’Arc, expression d’un fort espoir de pouvoir utiliser Clarc
Réaction admirative affirmant que sbcl (Steel Bank Common Lisp) est du vrai matériel de production ; hypothèse selon laquelle l’écosystème Racket ne corrigeait peut-être pas les bugs parce qu’il ne considérait pas Arc comme un usage de production ; remarque disant n’avoir entendu parler d’aucun autre projet utilisant Racket en production, avec en parallèle une affection marquée pour Armed Bear et son solide écosystème de bibliothèques JVM, plus partage du lien vers Armed Bear Common Lisp
Signalement d’une maladresse linguistique dans la phrase « HN runs on top of SBCL since a few months », avec suggestion que l’anglais correct serait « HN has been running on top of SBCL for a few months now. »
Curiosité sur le fait de savoir si Paul Graham ou Robert Morris participent encore au développement ; la personne dit avoir parcouru tout l’article sans trouver de mention à ce sujet, et vouloir examiner ce qu’Arc ajoute à CL (Common Lisp), avec le lien arclanguage.org
Évaluation positive selon laquelle Common Lisp est bien plus pratique que Racket, et que SBCL donne presque une impression de magie