HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

8136 articles Page 1/814 Sans filtre

06:07

KotlinLLM

Ce plugin pour IntelliJ IDEA permet d'expérimenter des Smart macros en Kotlin/JVM, où des appels explicites en Kotlin sont soutenus par du code source Kotlin généré. L'API publique fournit deux macros, asLlm<F,T>(from,hint) pour convertir des valeurs et mockLlm<T>() pour générer des implémentations d'interfaces pouvant évoluer à partir d'interactions d'exécution, et le modèle n'est consulté qu'en cas d'échec du code généré. L'architecture comprend une API publique, une infrastructure statique pour router les appels vers des providers générés et une infrastructure dynamique constituée de fichiers bootstrap, providers, parsers et mocks maintenus par le plugin. Au lancement via une configuration spéciale, le plugin scanne le projet, génère ou met à jour les sources, attache le débogueur via JDI, capture les valeurs au point d'échec, demande à un agent LLM une mise à jour ciblée, compile le code modifié et recharge la classe pour relancer l'appel. L'utilisation requiert IntelliJ IDEA 2025.2.x, JDK 21, une clé OpenAI stockée dans .kotlinllm, la présence du fichier API stable dans le projet et un dossier de sources générées et de builds, et les sources générées sont conçues pour être commitées car les mises à jour sont étroites et portables en Kotlin.

06:07

Adding Go's Defer to the TypeScript Compiler

L'auteur a tenté d'ajouter l'instruction defer de Go au compilateur TypeScript et a réalisé une transformation d'arbre syntaxique pour en émuler le comportement à l'exécution. Il a étendu l'analyseur pour reconnaître DeferStatement, ajouté des vérifications (emplacement dans une fonction, appel valide) et transformé chaque fonction contenant des defer pour maintenir une pile interne de callbacks qui capturent immédiatement le callee, le receiver et les arguments et sont exécutés en LIFO au moment de la sortie. Pour les fonctions async il rejette l'expression "defer await" et, dans la transformation, chaque cleanup différé est attendu séquentiellement pendant le finally; les règles d'erreur imposent que tout cleanup s'exécute, que l'erreur initiale soit préservée et que les erreurs multiples soient regroupées dans un AggregateError. Après avoir traité tous les cas limites l'auteur conclut que defer ne convient probablement pas à TypeScript car en JavaScript les exceptions sont du contrôle de flux et obligent à définir des politiques d'agrégation, de priorité et d'exécution asynchrone absentes en Go. Comme alternative il recommande la proposition ECMAScript d'Explicit Resource Management avec des objets Disposable et la syntaxe using (par exemple using await acquirePermit(sema)), et indique qu'une implémentation MVP de defer existe dans une branche de son fork TypeScript.

06:07

F*: A general-purpose proof-oriented programming language

F* est un langage de programmation orienté preuves, supportant la programmation purement fonctionnelle et effectueuse, et combinant types dépendants, automatisation par solveurs SMT et tactiques interactives. Il compile principalement vers OCaml et peut être extrait vers F#, C ou WebAssembly via KaRaMeL, ou vers de l'assembleur via la chaîne d'outils Vale, et il est implémenté en F* avec un bootstrap en OCaml. Le projet est open source sous licence Apache 2.0, dispose d'un livre et de tutoriels en ligne (y compris sur Low*), de ressources de cours et d'une communauté active sur GitHub, Zulip et une mailing list. F* est employé dans de nombreux projets industriels et académiques — notamment Project Everest, HACL*, ValeCrypt, EverCrypt et EverParse — dont les extraits sont utilisés dans des produits comme Firefox, le noyau Linux, Python, Azure et d'autres systèmes. La recherche portant sur F* couvre la conception du langage et de ses DSLs, les monades de Dijkstra, les logiques de séparation concurrentes, la vérification en sécurité, systèmes et parsing, ainsi que des travaux récents sur l'assistance par IA pour la synthèse de programmes et de preuves.

06:07

Twenty Years of RISC OS Open

Fondée le 20 juin 2006, RISC OS Open Ltd a ouvert progressivement le code d'un système auparavant propriétaire pour permettre la contribution et l'utilisation par la communauté. Au fil des années la communauté a apporté des éléments clés comme les builds nocturnes, des ports matériels (IYONIX, BeagleBoard, Raspberry Pi, Raspberry Pi 2, Pi 4, Pi 400, Titanium), le système de fichiers SD/MMC et le support NVMe, ainsi que de nombreuses améliorations intégrées dans des versions stables successives de RISC OS. Des initiatives communautaires comme le Bounty Scheme, la publication publique du dépôt GitLab et plus de mille merge requests ont structuré le développement collaboratif et accéléré les contributions. En 2019-20 le code a été relicencié sous Apache 2.0 et tout l'historique de développement a été rendu public, ouvrant définitivement RISC OS à un usage et un développement commerciaux et libres. Plus récemment le projet a lancé l'initiative Moonshots pour porter RISC OS en 64 bits, libérer l'intégralité de la RAM sur les Pi 8 Go et réintégrer des outils historiques comme Fortran, tandis que les responsables remercient la vaste communauté pour son rôle central.

06:06

Boris Cherny on Trying to Get Claude Code to Rewrite the Claude App

Boris Cherny, responsable de Claude Code chez Anthropic, a expliqué lors d'une interview à Startup School qu'il explore comment donner à Claude des tâches difficiles et lui faire vérifier son travail en cours. Il a décrit une expérience où il a demandé à Claude Tag, via un runner macOS sur GitHub, de réécrire l'application de bureau Claude, actuellement en Electron, en Swift et d'exécuter une comparaison pixel par pixel entre les versions. Le processus a été lancé il y a plus de deux semaines et, au moment de l'entretien, tournait toujours sans être terminé. L'auteur critique l'approche en estimant qu'une conversion pixel par pixel ne résout que les problèmes techniques et ne corrige pas un mauvais design intrinsèque et des conventions d'interface non natives. Il remet aussi en question l'affirmation selon laquelle l'application Mac est devenue « plutôt géniale », en rapportant une expérience personnelle de lenteur au lancement et de blocage de l'interface.

06:06

Show HN: Mu – Tools for Agents

La plateforme fournit 67 outils d'usage courant (web, actualités, mail, marchés, météo, vidéos, lieux, images, fichiers, calendrier, contacts, etc.) accessibles via un seul point MCP. Ces outils sont des services réels exécutés par l'instance (serveur mail avec SMTP/DKIM, index de recherche, agrégateur de flux, sandbox d'apps, portefeuille), pas de simples wrappers sur des API tierces. On se connecte une fois par MCP (le premier appel renvoie un 401 vers le serveur d'autorisation, ou on peut utiliser un Personal Access Token), et les appels payants débitent un solde de crédits. La même pile (un binaire Go) alimente l'agent, l'application web, la CLI et les apps, et l'ajout d'un service se propage automatiquement à tous les points d'accès via un registre interne. Le projet est open source sous AGPL-3.0, peut être auto-hébergé avec guide d'installation et configuration, et la documentation et la liste des outils sont disponibles sur les pages /docs et /tools.

06:06

A Playable History of Sudoku

Le Sudoku puise ses racines dans les carrés latins, une construction mathématique étudiée notamment par Leonhard Euler. En 1979, le magazine Dell publie Number Place, qui introduit la règle des trois vérifications et est probablement créé par l'architecte Howard Garns. Dans les années 1984–1986, le puzzle arrive au Japon où le magazine Nikoli le rebaptise « Sudoku », limite le nombre d'indices et privilégie la symétrie, façonnant son identité moderne. En 2004, Wayne Gould popularise le jeu en proposant gratuitement des grilles aux journaux, et la rubrique quotidienne du Times lance sa diffusion mondiale. Depuis 2006, le Sudoku s'est institutionnalisé avec des championnats internationaux et une grande variété de variantes qui conservent la logique de preuve pour chaque coup.