3 points par GN⁺ 2025-05-27 | 2 commentaires | Partager sur WhatsApp
  • 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

 
ilotoki0804 2025-05-30

Je me demande avec quelle technologie GeekNews fonctionne, haha

 
GN⁺ 2025-05-27
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

    • Amusement devant le fait que les systèmes Lisp deviennent enfin les représentants emblématiques du « Worse is better »
    • Mise en avant de l’ironie d’exploiter la plateforme sur un socle technique aussi minimal que possible, tout en s’appuyant sur l’intervention humaine pour l’exploitation de HN, avec cette intuition que « avoir plus de technologie n’aide pas forcément tout le monde »
    • HN a peu de fonctionnalités, mais cela amène à se demander si nous avons réellement besoin de davantage de fonctions ; appréciation positive de ce minimalisme rendu possible précisément par ce faible nombre de fonctionnalités, ce qui rappelle l’expression « less is more »
    • L’idée que le fait que HN n’ait pas besoin d’être rentable aide énormément
    • Mention de la citation d’Antoine de Saint-Exupéry selon laquelle la perfection n’est pas atteinte lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer
  • 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

    • Admiration pour le fait que ce genre de chose est précisément ce que Lisp fait de mieux
  • 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

    • Avis selon lequel MzScheme était la partie essentielle (hors GUI) de PLT Scheme, aujourd’hui Racket, et curiosité de longue date sur le fait que, d’après les archives de la mailing list de l’époque, pg avait commencé le développement d’Arc sur Scheme48 avant de passer à PLT
    • Question amusée de savoir si l’on est en train de faire le tour de toutes les implémentations Lisp, avec la métaphore d’une « étrange version du bateau de Thésée »
    • Question sur le fait de savoir si MzScheme, PLT Scheme et Racket ne sont pas en pratique essentiellement la même chose
  • 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

    • Rappel qu’il faut aussi garder à l’esprit que Hacker News, autrefois Startup News, sert de fait de département marketing à Y Combinator, l’une des sociétés d’investissement les plus prospères au monde, et que Paul Graham, fondateur de HN et auteur original, est aujourd’hui au minimum milliardaire ; malgré cela, le site continue à viser l’autonomie financière et accepte aussi des dons
  • 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

    • Explication selon laquelle les CPU modernes sont si rapides que même 4chan a pu servir 4 millions d’utilisateurs avec 10 000 lignes de code PHP spaghetti vieilles de dix ans sur un seul serveur ; avec un minimum de qualité de code, de profiling et d’optimisation, il est possible d’absorber un trafic énorme avec une fraction minime des cœurs CPU, les véritables goulots d’étranglement étant le plus souvent le disque et les E/S réseau ; HN est en plus relativement simple à servir puisqu’il ne livre essentiellement que du texte
    • Commentaire spirituel selon lequel chaque fois qu’un développeur réalise à quel point les logiciels modernes sont devenus énormes et lents, un ange gagne des ailes
    • Stupeur face au fait que HN tournait réellement sur un seul processus, un seul cœur et un seul serveur, avec ajout d’un fil HN connexe
    • Conseil très concret : si l’on exploite correctement les CPU modernes, on peut obtenir d’excellentes performances et absorber beaucoup de charge avant même de devoir passer à un scale-out
    • Partage de diverses discussions passées : lien1, lien2, lien3, lien4
  • 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

    • Question demandant de quel site il s’agit
  • 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

    • Réponse indiquant que la communauté Racket a toujours été très aimable et a bien corrigé tous les bugs qui lui étaient signalés
  • 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. »

    • Explication que « since » s’emploie avec un point dans le temps, alors que « a few months » désigne une durée, ce qui rend la tournure maladroite ; « since a few months ago » ou « as of a few months ago » seraient plus naturels, et l’analyse ajoute que le premier paragraphe mélange aussi les temps verbaux, ce qui rend la chose encore plus visible
  • 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

    • Réponse indiquant que les deux développeurs ont quitté le projet depuis longtemps
  • Évaluation positive selon laquelle Common Lisp est bien plus pratique que Racket, et que SBCL donne presque une impression de magie