HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

11978 articles Page 785/1198 Sans filtre

CPanel's Black Week: 3 New Vulnerabilities Patched After Attack on 44k Servers

Le 8 mai 2026, cPanel a publié un Technical Security Release corrigeant trois vulnérabilités (CVE-2026-29201, CVE-2026-29202 et CVE-2026-29203). Deux des failles (29202 et 29203) sont classées Haute gravité avec un score CVSS de 8.8, tandis que la 29201 est modérée (CVSS 4.3). Ces correctifs interviennent dix jours après le patch d'urgence pour CVE-2026-41940, une faille d'authentification exploitée pour compromettre au moins 44 000 serveurs et déployer le rançongiciel "Sorry". cPanel fournit des étapes de mise à jour (exécuter /scripts/upcp, redémarrer cpsrvd et vérifier la version) et recommande d'auditer les journaux depuis le 23 février et de scanner les répertoires pour les fichiers .sorry en cas d'exposition antérieure. Le cas illustre une concentration récente de divulgations et souligne la nécessité d'activer les mises à jour automatiques, de vérifier les correctifs et d'intégrer la revue des journaux dans les routines opérationnelles.

Distributing Mac software is increasing my cortisol levels

Le développeur a publié un utilitaire en Go pour gérer des profils Claude Code, disponible sur ccode.kronis.dev et Itch.io. Le binaire multiplateforme fonctionne bien sur Linux et raisonnablement sur Windows, mais macOS applique une quarantaine aux téléchargements non signés qui complique la distribution. L'inscription au programme développeur Apple est coûteuse et l'auteur a rencontré un processus d'enrôlement frustrant, notamment des problèmes de capture de pièces d'identité via la webcam et des délais de validation. L'auteur compare ces frictions avec des services nationaux plus pratiques comme SmartID ou eParaksts et critique le coût et les restrictions du mécanisme de signature de code actuel. Il souligne aussi que la signature de code pour Windows et d'autres solutions commerciales reste onéreuse ou restreinte, et préconise des alternatives plus simples telles que l'utilisation de cartes d'identité gouvernementales.

LLMs corrupt your documents when you delegate

Les auteurs étudient la capacité des grands modèles de langage à exécuter des workflows délégués impliquant des modifications documentaires approfondies dans 52 domaines professionnels. Ils présentent un benchmark simulant de longs workflows de délégation couvrant des tâches telles que le codage, la cristallographie et la notation musicale. Une expérience à grande échelle sur 19 modèles montre que les modèles actuels altèrent les documents pendant la délégation, avec des corruptions moyennes de 25 % du contenu pour les modèles de pointe et des échecs plus marqués pour d'autres. Des tests supplémentaires indiquent que l'utilisation d'agents avec outils n'améliore pas les résultats, et que la gravité des dégradations augmente avec la taille du document, la longueur des interactions et la présence de fichiers distracteurs. Les auteurs concluent que les LLMs sont des délégataires peu fiables car ils introduisent des erreurs rares mais graves qui silencieusement corrompent les documents et s'accumulent au fil des interactions.

Making your own programming language is easier than you think (but also harder)

L'auteur a commencé à concevoir son propre langage fin décembre pour faciliter le modding d'un moteur de jeu et par plaisir, en précisant qu'il n'est pas un concepteur professionnel, que le projet est loin d'être prêt pour la production et qu'il est pour l'instant en pause. Le langage, pslang, est impératif, strictement typé et bas niveau avec interopérabilité C, indentation pour la portée, treize types primitifs (entiers signés/unsignés, flottants, bool, unit), tableaux de taille connue et pointeurs immuables par défaut. L'implémentation est organisée en bibliothèques (types, AST, parser, IR, interprèteur et JIT) : le parsing utilise Bison avec une passe séparée pour résoudre l'indentation, l'interpréteur est pour l'instant un tree‑walker et l'auteur a déjà un compilateur JIT AArch64 qui lui a permis, entre autres, d'écrire un traceur Monte‑Carlo d'environ 1 000 lignes de code. L'auteur détaille des difficultés concrètes telles que la sandboxing des extensions, le pont natif avec C, l'ambiguïté des littéraux, la gestion des structs imbriqués dans l'IR et les subtilités d'AArch64 (chargement de constantes, alignement et limites des décalages) qui motivent l'ajout d'un allocateur de registres. Parmi les évolutions prévues figurent un allocateur linéaire de registres, optimisations de l'IR (propagation de constantes, simplification arithmétique, élimination de code mort, inlining), polymorphisme, gestion automatique des ressources, compilation vers exécutables, débogage DWARF, modules et une bibliothèque standard, mais l'auteur travaille dessus à son rythme.

The first microcomputer: The transfluxor-powered Arma Micro Computer from 1962

L'ordinateur Arma, développé au début des années 1960 pour des applications spatiales, était un système compact d'environ 20 livres destiné à la navigation inertielle, au pilotage et au contrôle d'engins. Il utilisait une architecture série inhabituelle de 22 bits basée sur des composants discrets montés sur de petites plaquettes, ce qui réduisait le matériel mais limitait la vitesse malgré une horloge à 1 MHz. Sa mémoire employait des transfluxors à lecture non destructive pour éviter la corruption des programmes, et son jeu d'instructions comprenait des opérations avancées comme la multiplication, la division et la racine carrée. Conçu pour résister aux contraintes des missiles et des avions, il a évolué en une famille d'ordinateurs embarqués utilisés sur des navires, des avions tels que l'E-2C et le Concorde, et dans des systèmes d'inertie commerciaux comme le Litton LTN-51. L'histoire de ce système illustre que la notion de « microordinateur » dépend des définitions et témoigne de l'existence d'une industrie aérospatiale de petits ordinateurs souvent oubliée aujourd'hui.

Show HN: I made a Clojure-like language in Go, boots in 7ms

Il s'agit d'un compilateur bytecode et d'une machine virtuelle pour un dialecte de Clojure écrit en Go, conçus pour produire de petits exécutables autonomes et des applications WebAssembly. Le projet produit des binaires uniques (~10 Mo) et des pages HTML self-contained pour WASM, offre un démarrage rapide (~7 ms avec bytecode précompilé), une empreinte mémoire réduite et des bibliothèques intégrées comme core.async, HTTP, JSON, transit et pods Babashka. Il prend en charge l'interopérabilité avec Go (enregistrement de structs, conversions zéro-coût, canaux Go), l'exécution de pods Babashka pour accéder à l'écosystème existant, et peut être embarqué comme couche de scripting dans des applications Go. La compatibilité Clojure est étendue (95 % des assertions du clojure-test-suite passent), mais certaines fonctionnalités manquent ou divergent — pas de refs/STM, pas d'agents complets, pas de BigDecimal, littéraux taggés du reader non implémentés, et différences sur le comportement numérique, les regex et core.async. Les objectifs incluent une compatibilité idiomatique, la compilation AOT et WASM, un nREPL fonctionnel en WASM, et des outils pour REPL, compilation en bytecode, création de binaires autonomes et génération d'apps WASM.

Show HN: Rust but Lisp

Ce projet propose un frontend en s-expressions qui transpile du code Lisp-like directement en Rust sans runtime ni GC, en conservant la sémantique de Rust (ownership, emprunts, lifetimes, génériques, traits, etc.). L'objectif est d'explorer l'ajout des macros Lisp aux sémantiques de Rust plutôt que de fournir un compilateur de production, avec des limitations notées et des fonctionnalités manquantes prévues. Les macros sont des transformateurs d'expressions s-expression exécutés à la compilation et utilisent quasiquote, unquote et unquote-splicing pour faciliter les macros variadiques sans recourir à proc_macro. La syntaxe couvre structures, enums, impl, traits, closures, boucles, pattern matching, modules, visibilité, lifetimes et turbofish, et permet d'injecter du Rust brut pour les cas non couverts par le frontend. Le dépôt s'obtient sur GitHub et s'installe via cargo install --path ., avec des commandes fournies pour transpiler, compiler et exécuter des fichiers (.lisp → .rs → binaire).

The Serial TTL connector we deserve

De nombreux appareils embarqués exposent des broches UART (RX, TX, GND) accessibles via un adaptateur USB‑TTL pour le débogage bas niveau et la récupération. Laisser des fils Dupont branchés en permanence est peu fiable et dangereux car ils sont fragiles et peuvent réinjecter du courant dans les adaptateurs USB. L'auteur propose d'utiliser des connecteurs Julet (utilisés sur les vélos électriques) étanches M6/M8 comme solution robuste et disponible, avec un indice IP68 et une capacité de courant modeste. Il détaille une mise en œuvre pratique avec des pigtails pré‑câblés, des outils de sertissage, des colliers de serrage pour l'allégement de contrainte et une convention de couleurs/repères pour mapper RX/TX/GND et simplifier l'insertion des câbles. La solution est rétrocompatible grâce aux prises 3/5/6 broches et suppose des niveaux logiques à 3,3 V tout en recommandant d'utiliser des connecteurs distincts ou des adaptateurs de niveau pour d'autres tensions.

Zed Editor Theme-Builder

Le texte présente un composant React en TypeScript destiné à gérer la création et l'affichage de réunions, avec un formulaire, une liste et plusieurs états locaux. Le code définit des interfaces et types ainsi que des props et utilise des hooks comme useState, useRef, useEffect et useCallback pour orchestrer la logique métier. Des chaînes d'excuses prédéfinies sont utilisées pour l'interface et une logique simule la dégradation d'une jauge de "sanity" et la rotation d'excuses lors de la création de réunions. Le fichier contient plusieurs erreurs de syntaxe et de typage, notamment des noms de propriétés incohérents, des types mal assignés et des déclarations incomplètes qui empêchent la compilation. La routine de création de réunion construit un objet meeting et invoque des callbacks mais nécessite des corrections de noms, de types et de valeurs par défaut pour fonctionner correctement.