HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

3081 articles Page 256/309 Sans filtre

07:02

Parse, Don't Validate and Type-Driven Design in Rust

Cet article présente le motif parse-dont-validate et propose une approche Rust‑centrée qui encode des invariants directement dans les types plutôt que de s’appuyer sur des vérifications à l’exécution. Il montre comment la division par zéro peut panique au runtime et compare des solutions avec Option ou Result pour signaler les échecs de façon explicite. Pour éviter les panics, il introduit le pattern newtype comme NonZeroF32 et NonEmptyVec, afin que les invariants soient établis avant l’exécution et réduire les vérifications répétées. L’article évoque aussi des usages concrets comme String et la désérialisation via des types pour transformer des données en structures sûres plutôt que de s’appuyer sur des validations dynamiques. Enfin, il tire des leçons sur rendre les états illégaux impossibles et privilégier la validation précoce (type-driven design), tout en reconnaissant les limites et les défis de ce paradigme.

07:02

How far back in time can you understand English?

Un homme quitte Londres pour la côte et visite Wulfleet, où il publie un billet de voyage dont la voix se dégrade à travers des siècles d’anglais, comme écrite par des diaristes successifs. L’article précise que l’anglais moderne est globalement stable sur 300 ans, mais que le changement s’observe surtout dans la voix et le style, avec l’apparition et la disparition de signes comme le long s et le thorn. Il explique aussi pourquoi la lecture devient difficile: le vocabulaire latin disparaît progressivement, les terminaisons grammaticales s’estompent et l’ordre des mots évolue. Le récit fictif traverse des périodes allant du XIe au XVe siècle, mettant en scène un Maître démoniaque et une épouse nommée Ælfgifu, et montrant le héros pris au piège par les époques. La conclusion souligne que la langue évolue plus rapidement que le format du blog, et suggère que le blogueur est peut-être encore en train d’écrire quelque part dans le temps.

07:01

How Taalas "prints" LLM onto a chip?

Une startup nommée Taalas a dévoilé un ASIC fixe capable d’exécuter Llama 3.1 8B (quantisation 3/6 bits) à environ 17 000 tokens par seconde, promettant des coûts d’utilisation et une consommation d’énergie dix fois inférieurs à ceux des systèmes GPU et des performances environ dix fois supérieures à l’état de l’art. Le circuit est gravé en dur et ne peut pas être réécrit; il porte les 32 couches du modèle sur la puce et n’utilise pas de mémoire RAM externe, se contentant d’une SRAM interne pour le KV cache et les adaptateurs LoRA. Contrairement au fonctionnement sur GPU, où les poids et les activations circulent via la mémoire VRAM, l’architecture décrit un flux continu de signaux traversant les transistors, soutenu par ce qu’ils appellent un « multiplier magique » sur des données en 4 bits. Pour adapter un modèle, ils n’auraient besoin de personnaliser que les deux couches supérieures, ce qui accélère considérablement le déploiement par rapport à la conception d’un nouveau chip. L’auteur exprime l’espoir que ce type de matériel soit produit en masse et permette l’exécution locale de modèles sans dépendre d’un GPU massif.

07:01

Two Bits Are Better Than One: making bloom filters 2x more accurate

Un filtre de Bloom est une structure probabiliste qui répond à la question de savoir si un élément est définitivement absent de l’ensemble, et il peut produire de faux positifs mais jamais de faux négatifs. Dans Floe, il est utilisé à deux endroits critiques : dans le moteur de stockage avant la décompression des colonnes et lors de la phase de probe des hash joins. L’implémentation naïve était simple mais insuffisante, et la solution retenue regroupe deux bits dans un seul uint32 pour une seule lecture et une opération atomique. Cette approche réduit fortement le taux de faux positifs, passant d’environ 11,7% à environ 5,7%, ce qui évite de décompresser et d’examiner des données inutiles. Le design est fixe et sans allocation dynamique, avec 256 Ko par jointure, garantissant des performances prévisibles et des écritures sans verrou.

07:01

Show HN: Llama 3.1 70B on a single RTX 3090 via NVMe-to-GPU bypassing the CPU

Il s'agit d'un moteur d'inférence LLM efficace, écrit en C++/CUDA, capable d'exécuter des modèles volumineux comme Llama 70B sur une seule RTX 3090 en faisant transiter les couches du modèle via la mémoire GPU et, en option, en utilisant l'E/S NVMe direct qui contourne le CPU. Il emploie une mise en cache adaptative en trois niveaux qui combine des couches résidentes VRAM, du RAM pinning et un fallback NVMe/mmap pour maximiser le débit. En pratique, il peut atteindre des gains importants, jusqu'à 83x plus rapide que le baseline mmap pour 70B sur du matériel grand public, bien que la bande passante PCIe H2D soit le principal goulot d'étranglement. Il prend en charge plusieurs formats quantifiés (Q4_0, Q8_0, Q4_K_M, Q5_K, Q6_K, F16, F32), repose sur zéro dépendance vis-à-vis de PyTorch et intègre des fonctionnalités comme SLEP streaming, le layer skip et le self-speculative decoding. Le projet propose un streaming NVMe direct, un script de configuration système et une feuille de route, sous licence BSD-2-Clause.

07:00

A Botnet Accidentally Destroyed I2P

Le 3 février 2026, le réseau d’anonymat I2P a été inondé par 700 000 nœuds hostiles, l’une des attaques Sybil les plus dévastatrices qu’il ait connues. Le réseau opère normalement avec 15 000 à 20 000 appareils actifs, et les attaquants l’ont submergé par un facteur de 39 à 1. Pour trois années consécutives, I2P a subi des attaques Sybil chaque février, les épisodes de 2023 et 2024 utilisant des routeurs floodfill malveillants et demeurant non attribués. L’attaquant a été identifié comme le botnet IoT Kimwolf, actif fin 2025 et également responsable de l’attaque DDoS record de 31,4 Tbps en décembre 2025. En réponse, l’équipe de développement a publié la version 2.11.0 six jours après le début de l’attaque, intégrant le hybride ML-KEM et le chiffrement post-quantique X25519 par défaut, ainsi que des mesures supplémentaires contre les Sybil, une mise à jour de l’API SAMv3 et des améliorations d’infrastructure.

07:00

Japanese Woodblock Print Search

Ukiyo-e Search est une ressource qui permet de rechercher des gravures sur bois japonaises en utilisant l'image d'une impression ou en téléchargeant une photo, et de voir des impressions similaires dans plusieurs collections. L'outil offre des options telles que Search by Image, Upload a picture et Paste image URL pour faciliter la recherche et indique le nombre de tirages disponibles, comme 223 891. Des améliorations futures sont prévues avec des données plus riches et de meilleures capacités de recherche, et une inscription est proposée pour être averti lorsque de nouvelles fonctionnalités sont prêtes. Le texte retrace l'évolution de l'ukiyo-e avec des périodes clés allant du début du 18e siècle à l'ère moderne, y compris l'éclosion de l'impression en couleur et le Golden Age. On distingue ensuite les périodes Meiji, les mouvements Shin Hanga et Sosaku Hanga, et une présence continue de l'ukiyo-e jusqu'à l'époque contemporaine.

07:00

How I use Claude Code: Separation of planning and execution

Le texte présente un flux de travail de codage assisté qui sépare clairement la planification de l’exécution, et qui interdit à Claude d’écrire du code sans un plan écrit et approuvé. La phase de recherche pousse Claude à lire le code et le système en profondeur et à consigner ses observations dans un fichier research.md persistant. Ensuite, la planification se fait dans plan.md, avec un plan détaillé incluant l’approche et les changements, suivi d’un cycle d’annotations où l’utilisateur insère des notes inline et renvoie le document à Claude pour mises à jour. Avant l’implémentation, une liste de tâches détaillée est ajoutée, puis l’instruction est: tout implémenter et vérifier continuellement les types, sans s’arrêter tant que tout n’est pas terminé. L’utilisateur supervise les propositions, corrige les choix techniques, conserve le plan comme artefact vivant et privilégie des sessions longues pour éviter les dérives et les erreurs d’intégration.