HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

Les meilleurs longs formats de Hacker News, relus plus calmement.

11978 articles Page 349/1198 Sans filtre

Tail-call optimization in C is relatively recent (2025)

Historiquement, la convention d'appel en C laissait au programme appelant le soin de retirer les arguments de la pile, ce qui empêchait l'élimination des appels en position finale. En 1994, les compilateurs C de l'époque ne réalisaient pas cette optimisation pour ce cas d'usage, mais en 2001 Mark Probst a introduit dans GCC une optimisation de type tail-call avec une convention d'appel distincte présentant notamment l'incapacité à gérer les appels indirects. L'auteur n'a pas suivi le sujet pendant des années, mais après avoir lu l'article de Xu et Kjolstad sur la compilation Copy-and-Patch il a testé GCC et Clang et constaté qu'ils peuvent désormais effectuer l'optimisation sur ce type d'appels en position finale. Xu et Kjolstad utilisent cent mille fragments de code dans leur travail alors que Gforth se limite à moins de deux mille variantes, et pouvoir gérer cent mille extraits permettrait d'employer des techniques inaccessibles dans un système basé sur goto*. Cette capacité n'a pas encore été intégrée à Gforth, et l'auteur félicite la communauté Python d'avoir été la première à en profiter.

50k Boat Names

L'auteur a extrait environ 50 000 noms de bateaux issus des données AIS diffusées dans le jeu de données Marine Cadastre de la NOAA. Parmi les quelque 150 000 bateaux uniques analysés, seule une portion affichait un nom, et les types de navires incluent majoritairement des embarcations de plaisance (43 %) et des cargos (14 %). Les appellations reflètent les professions et la situation financière des propriétaires, avec des coûts annuels d'entretien estimés entre 15 000 et 40 000 dollars, et s'inscrivent dans un profil démographique où 82,9 % des ménages propriétaires étaient blancs en 2018. Le corpus recense une grande variété culturelle comprenant jeux de mots nautiques et grivois, références littéraires (Hemingway, Tolkien), noms tirés du cinéma et de la télévision (Star Wars, Jaws, Seinfeld) et hommages à la science‑fiction. Pour produire l'étude, l'auteur a traité un échantillon de 17 ans de données AIS (environ 300 Go par an), en utilisant un notebook Jupyter en Python et l'assistance de Claude Code pour catégoriser les noms et créer un navigateur interactif.

Exploring Claude/GPT Knowledge Cutoffs and Pre-Training Timelines

L'auteur décrit des méthodes de sondage permettant d'inférer des détails d'entraînement des grands modèles en utilisant des requêtes ciblées comme les « Incompressible Knowledge Probes », l'inférence de mélange de données et des questions sur les dates et l'identité. Il rappelle les trois grandes étapes de l'entraînement des LLM : pré‑entraînement massif sur données générales, affinage sur corpus spécialisés, puis post‑entraînement pour façonner le comportement d'assistant. En testant les modèles sur un dataset de faits quotidiens de Wikipédia et d'autres sondages, il estime des dates de coupure de connaissance (« knowledge cutoffs ») et repère des ruptures temporelles pour des familles telles qu'Opus 4.7+ et GPT‑5.6. Les sondages sur la date auto‑déclarée et l'identité des modèles montrent une corrélation avec les estimations factuelles et suggèrent une contamination par des logs de chat publics, entraînant parfois l'auto‑identification comme des modèles concurrents. L'auteur précise que ces résultats restent des estimations approximatives et potentiellement erronées en l'absence de données publiques vérifiables, mais qu'ils offrent néanmoins des indices utiles sur les timelines et la composition des jeux d'entraînement.

The Story of Mac: A Just-So Story

Les macros en Common Lisp permettent de créer des abstractions qui génèrent du code à l'époque de l'expansion des macros, distincte de l'exécution des fonctions au runtime. La fable de Mac illustre que les macros sont des programmes exécutés par le compilateur pour produire le code final qui sera ensuite compilé ou interprété. DEFMACRO définit des macros avec des listes de paramètres destructurantes, et le backquote facilite la construction d'expansions en interpolant et en "spliciant" des listes. L'exemple do-primes montre la conception d'une macro et les fuites d'abstraction courantes — réévaluation multiple des sous-formes, inversion de l'ordre d'évaluation et collisions de noms — qu'on corrige en mémorisant les valeurs, en respectant l'ordre et en utilisant GENSYM. Il est possible d'écrire des macro-macros comme with-gensyms pour automatiser des motifs récurrents, et des macros plus avancées permettent d'exprimer des constructions impraticables autrement.

Launch HN: Stoa Markets (YC S26) – A Marketplace for GPUs and AI Servers

La plateforme centralise l'offre et la demande de cartes GPU en un lieu unique pour la découverte des prix, l'exécution et le règlement des transactions. Elle structure le processus depuis la demande de prix (RFQ) jusqu'au règlement, avec chaque étape enregistrée et documentée. Les utilisateurs décrivent le matériel ou joignent un devis, une IA rédige l'RFQ, des revendeurs vérifiés répondent par des offres fermes et l'acceptation crée un engagement contractuel. Le règlement suit une timeline avec confirmation, paiement bloqué jusqu'à livraison, inspection et obligation de fournir des preuves à chaque étape. La solution s'adresse aux courtiers, opérateurs de datacenter, laboratoires IA, clouds, OEMs, revendeurs, prêteurs et fonds en offrant visibilité sur les niveaux de clearing et en réduisant le risque de contrepartie.

Exploiting System Management Mode with a very long interrupt

L'article montre qu'il est possible de désynchroniser l'entrée en System Management Mode (SMM) en forçant un cœur à exécuter une instruction machine exceptionnellement longue. Le modèle de sécurité du SMM repose sur le fait que tous les cœurs entrent simultanément, mais le firmware attend au plus une seconde pour la synchronisation, ce qui permet à un cœur bloqué de rester hors SMM pendant que les autres y entrent. Un proof-of-concept sur un Ryzen 7 5800H utilise une lecture MMIO large et très lente (vmovdqu depuis une adresse spécifique) pour produire un délai d'environ une seconde et démontrer la désynchronisation. Cette désynchronisation rend exploitables des vulnérabilités SMM de type TOCTOU sans accès matériel, car un cœur extérieur peut modifier des données partagées pendant l'exécution SMM. Les mitigations sont difficiles et contraires aux compromis de fiabilité et de performance, donc l'auteur recommande d'éviter d'exécuter de longues instructions et d'adapter le PoC en retouchant l'instruction lente pour chaque plateforme.

Updated GPG Key for Signing Firefox and Thunderbird Releases

Mozilla a migré vers une nouvelle sous‑clé GPG pour signer certains artefacts Firefox et Thunderbird après qu'une copie non chiffrée de la sous‑clé précédente ait été accidentellement commitée dans un dépôt GitHub privé. L'audit des journaux disponibles n'a montré aucune preuve d'accès non autorisé pendant que la clé était dans le dépôt, dont l'accès était limité à un petit groupe au sein de Mozilla déjà autorisé à utiliser la clé par d'autres moyens. La clé de signature précédente a été révoquée et des mesures de prévention supplémentaires ont été mises en place, et la plupart des utilisateurs n'ont aucune action à effectuer. Deux cas nécessitent toutefois une intervention : les personnes qui vérifient manuellement les signatures GPG doivent importer la nouvelle clé et la révocation, et les utilisateurs de paquets RPM Firefox peuvent devoir supprimer manuellement l'ancienne clé puis importer la nouvelle selon la distribution (Fedora 43+ importe automatiquement après confirmation du fingerprint, tandis que Fedora 42 et antérieurs, RHEL/Rocky/AlmaLinux et openSUSE/SUSE exigent une suppression manuelle du gpg‑pubkey suivie de l'import et de l'actualisation du cache). La nouvelle clé publique a le fingerprint 14F2 6682 D091 6CDD 81E3 7B6D 61B7 B526 D98F 0353, la sous‑clé de signature porte le fingerprint 827E 6586 0867 9618 CD34 9F93 678E 455D 7676 7AA3 avec expiration 2028‑08‑05, et la clé publique ainsi que la révocation sont disponibles depuis l'archive Nightly, keys.openpgp.org ou dans le bloc de clé fourni; après importation de la révocation, les releases signées avec l'ancienne clé ne pourront plus être vérifiées.