HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

3464 articles Page 65/347 Sans filtre

06:04

The Soul of an Old Machine

L'auteur explique qu'il s'attache au matériel depuis l'adolescence, prenant soin de choisir des appareils aux caractéristiques uniques plutôt que les plus populaires. Il décrit plusieurs appareils qui ont marqué son parcours, notamment un HP Compaq nx6310 qu'il a utilisé durant des années et sur lequel il a installé ses premières distributions Linux. Un MacBook Pro 13 pouces Late 2013, reçu en 2014, est devenu son outil principal grâce à son écran Retina, sa solidité et la compatibilité avec des outils Unix, même s'il montre son âge sur les usages modernes. Pour prolonger la vie de ses appareils il pratique des réparations et des modifications, comme remplacer des composants dans un iPod, souder une résistance sur un NAS ou changer la batterie du MacBook, et il a résolu un problème de Wi-Fi en remplaçant la carte par une Intel AX210 via un adaptateur. Après ces efforts le MacBook continue à servir pour du travail concentré et du développement sous NixOS, et l'auteur conclut que des marques axées sur la réparabilité comme ThinkPad ou Framework répondent à sa recherche d'appareils durables.

06:04

Software Preservation Group: C++ History Collection

Ce site rassemble des documents de conception, du code source et d'autres matériaux relatifs à la naissance, au développement, à la normalisation et à l'utilisation du langage C++. La chronologie présentée retrace les étapes majeures depuis le début de "C with Classes" en 1979 jusqu'à la ratification de la norme ISO en 1998 et aux travaux ultérieurs sur C++0x et ses évolutions. La collection contient des versions historiques de cfront (Release E, 1.0, 2.0, 3.0), leurs codes sources et une documentation détaillée publiés pour la recherche historique avec l'autorisation des ayants droit. On y trouve aussi les documents de standardisation (WG21/ISO), des articles et papiers de Bjarne Stroustrup et d'autres contributeurs, ainsi que des références aux implémentations comme GNU g++ et aux bibliothèques en C++. La page inclut enfin des remerciements à de nombreux contributeurs et archives qui ont fourni les sources, transcriptions et informations historiques utilisées pour compiler la collection.

06:04

How to build a `Git diff` driver

L'auteur explique qu'il existe peu de documentation facilement découvrable sur la création d'une commande externe pour git diff et qu'il présente sa démarche pour combler ce manque. Git diff fournit sept arguments au programme externe (nom de fichier, chemin "avant", SHA-1 "avant", mode "avant", chemin "après", SHA-1 "après", mode "après"), en utilisant /dev/null pour les créations/suppressions et des points pour les champs non pertinents. Dans de nombreux cas la méthode textconv suffit, mais lorsqu'il faut exposer davantage d'informations (par exemple pour des fichiers binaires), il est nécessaire d'utiliser un driver externe qui traite ces sept arguments. Un exemple concret montre un script bash enveloppant oasdiff qui détecte les ajouts/suppressions via /dev/null et appelle oasdiff changelog sur les fichiers temporaires en demandant toujours la couleur. L'article précise que ce script ne gère pas les changements de permissions et recommande éventuellement d'utiliser les sommes SHA-1 pour mettre en cache les diff générés.

06:04

Surelock: Deadlock-Free Mutexes for Rust

L'auteur présente surelock, une bibliothèque Rust préliminaire visant à garantir l'absence d'interblocages à la compilation. Le principe central est un MutexKey linéaire qui porte un état de verrouillage au niveau des types, de sorte que chaque appel .lock() consomme la clé et renvoie une clé attestant des verrous déjà acquis, évitant ainsi les cycles sans analyse globale ni coût d'exécution. Surelock combine deux mécanismes complémentaires : LockSet trie et acquiert atomiquement des verrous du même niveau en s'appuyant sur des LockId stables, tandis que des Level<N> et des contraintes LockAfter imposent par le typage un ordre strict pour l'acquisition incrémentale entre niveaux. L'API propose un usage implicite pratique via lock_scope et un modèle explicite (Locksmith → KeyVoucher → KeyHandle → MutexKey) pour les environnements no_std ou embarqués, et choisit un ordre total Level×LockId plutôt qu'un DAG pour garantir l'absence de deadlocks. La crate, publiée en pré-version et compatible no_std, fournit aussi une échappatoire feature-générée pour des verrouillages non vérifiés et vise à rendre la prévention des interblocages ergonomique en transformant les mauvais usages en erreurs de compilation.

06:03

Simplest Hash Functions

L'article compare les fonctions de hachage cryptographiques à des variantes minimalistes et très rapides comme rapidhash ou une simple addition de mots, en soulignant les dangers face à des entrées malveillantes. Il montre que l'addition sur blocs de 32 bits peut donner des distributions raisonnables pour de longs textes non structurés mais devient très mauvaise pour des données courtes et régulières comme les noms de domaine. L'auteur explique comment la finalisation par multiplication pliée (foldmul) et le chaînage de plusieurs opérations peuvent répartir l'entropie sur les bits et diminuer les collisions observées. Le texte aborde aussi l'importance de l'utilisation des bits hauts ou bas par les tables de hachage et comment le choix d'API et d'implémentation conditionne les exigences sur la qualité du hachage. La conclusion conseille d'adapter la simplicité ou la complexité du hachage au contexte d'utilisation, en privilégiant des méthodes très simples pour des données non adverses et des transformations supplémentaires pour les cas critiques.

06:03

Why meaningful days look like nothing while you are living them

L'auteur raconte une journée grise passée à Kumamoto où il suit un itinéraire entre statues de personnages de One Piece après avoir vu, quelques semaines plus tôt, une photo montrée par une connaissance. Sur le moment, la visite ressemble à une simple promenade sans rituel, ponctuée de statues en bronze et de scènes banales de la vie locale. Des mois plus tard, dans un autre pays et sous l'effet d'une petite dose de champignon, la diffusion en live action de One Piece déclenche chez lui une révélation sur le sens de cette expérience. L'essai analyse comment un récit long et persistant comme One Piece peut jouer le rôle d'une écriture sacrée moderne en accompagnant une génération tout au long de la vie. Il conclut que les pèlerinages peuvent ne pas être reconnus pendant qu'on les vit et que le poids signifiant des gestes ordinaires arrive souvent après, transformant des journées apparemment insignifiantes en moments décisifs.

06:03

Cirrus Labs to join OpenAI

En 2017, j'ai fondé Cirrus Labs dans l'esprit des Bell Labs pour aborder des problèmes d'ingénierie stimulants et en espérant faire émerger une entreprise en tant que sous-produit. La mission était d'aider les ingénieurs avec de nouveaux outils et environnements pour améliorer l'efficacité à l'ère du cloud, et l'entreprise est restée indépendante sans financement extérieur. Entre 2018 et 2022, Cirrus Labs a innové sur l'intégration continue et la virtualisation, notamment avec un système SaaS CI/CD multi‑OS permettant d'utiliser son propre cloud et avec Tart, une solution de virtualisation populaire pour Apple Silicon. Face à l'avènement de l'ingénierie agentique en 2026, l'équipe a accepté de rejoindre OpenAI au sein de l'Agent Infrastructure pour poursuivre et étendre sa mission de création d'outils pour ingénieurs humains et agents. Les sources des outils tels que Tart, Vetu et Orchard seront relicenciées sous une licence plus permissive et sans frais de licence, Cirrus Runners n'accepte plus de nouveaux clients mais restera supporté pour les contrats existants, et Cirrus CI fermera le 1er juin 2026.

06:03

Tofolli gates are all you need

Le principe de Landauer établit une borne inférieure à l'énergie nécessaire pour effacer un bit, E ≥ kB T ln 2, indépendante du support physique. Il n’existe pas de limite inférieure théorique pour l’énergie d’un calcul réversible, et bien que l’effacement d’un bit pratique demande environ un milliard de fois plus d’énergie que la borne de Landauer, les circuits réversibles peuvent néanmoins offrir des gains d’efficacité réels. Une porte de Toffoli prend trois bits en entrée et renvoie trois bits en sortie selon T(a,b,c) = (a,b,c XOR (a AND b)), c’est‑à‑dire qu’elle inverse le troisième bit si et seulement si les deux premiers sont à 1. La porte de Toffoli est son propre inverse et donc réversible, puisque l’appliquer deux fois annule l’effet sur le troisième bit. En envoyant (a,b,1) dans une Toffoli on obtient la NAND en troisième sortie, ce qui permet de construire toute fonction booléenne de manière réversible mais implique souvent d’entrer et de récupérer plus de bits que dans les portes non réversibles.

06:02

Advanced Mac Substitute is an API-level reimplementation of 1980s-era Mac OS

Ce logiciel est une réimplémentation au niveau API du Mac OS des années 1980 qui exécute des applications 68K sans ROM Apple ni logiciel système. Plutôt que d’émuler tout le matériel, il remplace le système d’exploitation (sauf le processeur 680x0) et lance directement les applications sans phase de démarrage. L’architecture est factorisée avec un backend émulateur 68K portable sur systèmes POSIX et un frontend de terminal bitmap fourni par SDL2, complété par des implémentations pour macOS, X11 et fbdev. Le projet prend en charge le graphisme 1‑bit, les régions, les primitives (cercles, lignes, roundrects), les GrafPorts, curseurs, fenêtres, contrôles, menus et dialogues, et il exécute plusieurs jeux et applications Macintosh classiques. Le code source est disponible sur GitHub et le logiciel peut être essayé sur macOS, sous X Window, sur une console framebuffer Linux ou via un client VNC.

06:02

Building a Z-Machine in the worst possible language – Whitebeard's Realm

La Z-machine est une machine virtuelle des années 1980 créée par Infocom pour permettre d'exécuter leurs jeux textuels sur plusieurs architectures. L'auteur a entrepris d'en implémenter une en Elm, ce qui pose un défi car Elm est purement fonctionnel et la Z-machine suppose un accès mémoire direct et une pile distincte. La crainte d'un désastre de performances liée à la copie des structures a été atténuée par l'utilisation des tableaux persistants d'Elm (variante de RRB trie), qui offrent de bonnes performances pour les mises à jour. Le projet fonctionne aujourd'hui: il exécute des fichiers .z3, réussit le test de conformité tchèque et est assez performant pour servir de lecteur d'Interactive Fiction. La bibliothèque propose une interface propre pour charger, exécuter et gérer les événements, avec des exemples (notamment une application node.js/elm avec Zork1) permettant de créer facilement des clients.