HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

7182 articles Page 428/719 Sans filtre

06:03

How to make Firefox builds 17% faster

Le post explique que buildcache peut désormais mettre en cache la génération des bindings C++ à partir des fichiers .webidl de Firefox grâce à son système de plugins Lua. Le pas WebIDL est exécuté via python3 -m mozbuild.action.webidl et produit des milliers de fichiers déterministes à partir des .webidl, ce qui en fait un bon candidat pour le cache. Avec le correctif du Bug 2027655, le Makefile passe conditionnellement $(CCACHE) via py_action quand MOZ_USING_BUILDCACHE est défini, permettant à buildcache d'intercepter l'action en la lançant comme buildcache python3 -m ... . Le wrapper Lua webidl.lua identifie la commande, énumère les entrées (file-lists.json, codegen.json, .webidl et scripts) et les sorties générées, et utilise le mode direct_mode pour hasher les fichiers et rejouer ou stocker les résultats. Les mesures montrent qu'avec buildcache et le plugin WebIDL un build clobber chaud passe à 1m12s, et l'auteur décrit comment activer les wrappers via lua_paths ou BUILDCACHE_LUA_PATH et augmenter max_local_entry_size pour les gros éléments.

06:03

Make tmux pretty and usable (2024)

L'article explique que tmux se personnalise simplement en éditant le fichier tmux.conf (par défaut ~/.tmux.conf) et que la configuration peut être partagée au niveau système si besoin. Il propose des réglages pratiques comme remapper le préfixe de C-b à C-a et éventuellement remapper la touche Caps Lock en Ctrl pour rendre les raccourcis moins gênants. L'auteur montre des bindings pour faciliter le fractionnement et la navigation des panneaux, par exemple | et - pour diviser les fenêtres, Alt+flèches pour passer d'un panneau à l'autre, ainsi qu'un raccourci pour recharger rapidement la configuration. D'autres options suggérées incluent l'activation du mode souris, la désactivation du renommage automatique des fenêtres et des ajustements visuels (bordures, barre de statut, messages) avec couleurs nommées ou en 256 couleurs. Enfin l'article renvoie vers des ressources pour aller plus loin, comme des dépôts de dotfiles sur GitHub, le wiki tmux et la page de manuel man tmux.

06:03

Write less code, be more responsible

L'auteur note que le discours sur la programmation assistée par IA est omniprésent et évolue très rapidement, rendant difficile d'y échapper. Après avoir expérimenté des outils comme Codex et GitHub Copilot, il a constaté que la dépendance totale provoquait confusion et perte de maîtrise, et a adopté une vérification commit par commit. Il privilégie désormais une approche mixte consistant à confier à l'IA les tâches ennuyeuses ou lentes tout en écrivant lui‑même les parties créatives et en effectuant une relecture finale pour garantir la qualité. Il exprime des inquiétudes quant à la qualité et à la maintenabilité de nombreux projets produits rapidement avec l'IA et appelle les développeurs à assumer la responsabilité de ce qu'ils publient. Les questions de licence et d'éthique liées au code généré par l'IA restent non résolues, mais il recommande de continuer à construire sérieusement en considérant l'IA comme un outil et non comme un substitut à la créativité et au travail.

06:03

Hacker compromises A16Z-backed phone farm, calling them the 'antichrist'

Un pirate a compromis un système backend de Doublespeed et a tenté de programmer la publication de mèmes attaquant a16z, selon des captures d'écran vues par 404 Media. Les captures montrent un mème disant «a16z is the antichrist» et indiquent l'exfiltration d'environ 47 Mo de données ainsi que la possibilité de publier depuis des centaines de comptes et 413 téléphones. Doublespeed a déclaré avoir rapidement sécurisé un ancien système de mise en file des publications, affirmant qu'aucune publication non autorisée n'a finalement été mise en ligne et qu'aucun impact étendu client n'a été constaté. La startup, financée par a16z via le programme Speedrun, utilise des fermes de téléphones et l'IA pour créer et gérer des influenceurs factices sur TikTok et prévoit d'étendre ces services à X et Instagram. Doublespeed avait déjà été piratée en décembre 2025, révélant des centaines de comptes actifs souvent employés pour promouvoir des produits sans transparence sur leur nature publicitaire.

06:03

US appeals court declares 158-year-old home distilling ban unconstitutional

La cour d'appel du 5e circuit des États-Unis a jugé inconstitutionnelle l'interdiction fédérale vieille d'environ 158 ans sur la distillation domestique. Le jugement a été rendu en faveur de la non-profit Hobby Distillers Association et de quatre de ses membres, qui avaient fait valoir le droit de distiller pour consommation personnelle ou comme loisir. L'interdiction, issue d'une loi de 1868 visant notamment à prévenir l'évasion fiscale, prévoyait des peines pouvant aller jusqu'à cinq ans de prison et une amende de 10 000 dollars. La juge Edith Hollan Jones a estimé que l'interdiction réduisait en fait les recettes fiscales, manquait de principe limitant et permettrait au Congrès de pénaliser de nombreuses activités domestiques sous prétexte de taxation. La décision confirme en appel un jugement de juillet 2024 du tribunal de district qui avait été temporairement suspendu en vue de l'appel, et le ministère de la Justice n'a pas commenté immédiatement.

06:02

Rust Threads on the GPU

VectorWare annonce qu'ils ont réussi à exécuter std::thread de Rust sur le GPU en mappant chaque thread sur un warp. Ils expliquent que le modèle d'exécution GPU diffère du CPU et que rendre la concurrence explicite via des threads facilite la sécurité et l'intégration avec les abstractions Rust existantes. L'implémentation associe chaque std::thread à un warp (seul le warp 0 est actif au départ, spawn réveille un warp et join attend sa fin) ; la technique a été démontrée sur NVIDIA mais s'applique à d'autres architectures. Cette approche prévient la divergence en veillant à ce que chaque warp exécute le même code, préserve l'emprunt et les durées de vie Rust, et ouvre une grande partie de l'écosystème Rust (bibliothèques basées sur threads et async) au matériel GPU. Les limites incluent le nombre fini de warps, des coûts de synchronisation, une consommation mémoire pour les piles et un risque de sous-utilisation des lanes, et l'équipe prévoit de publier des mitigations et de supporter d'autres langages à l'avenir.

06:02

Nothing Ever Happens: Polymarket bot that always buys No on non-sports markets

Ce projet est un bot Python asynchrone conçu pour acheter des positions "No" sur des marchés yes/no autonomes non sportifs de Polymarket. Le code est organisé en répertoires bot/ pour l'exécution et la stratégie nothing_happens, scripts/ pour les outils opérationnels et tests/ pour la couverture unitaire et de régression. L'exécution scanne les marchés standalone, cherche des entrées NO sous un prix plafond configurable, suit les positions ouvertes, propose un tableau de bord et persiste l'état de récupération lorsque l'envoi d'ordres est activé. La transmission réelle d'ordres exige trois variables d'environnement strictes (BOT_MODE=live, LIVE_TRADING_ENABLED=true et DRY_RUN=false) et des secrets supplémentaires (clé privée, adresse du funder, URL de base de données et RPC Polygon), sinon le bot utilise un client d'échange en mode papier. L'installation et la configuration reposent sur requirements.txt, des fichiers config.json et .env locaux (avec un chemin configurable via CONFIG_PATH), des scripts de déploiement pour Heroku et des utilitaires fournis pour l'inspection de la base de données, l'export, l'historique du portefeuille et l'analyse des logs.

06:02

Design and implementation of DuckDB internals

Ce cours de 15 semaines, élaboré par Torsten Grust pour des étudiants de premier cycle à l'Université de Tübingen, propose du matériel pédagogique disponible sur un dépôt GitHub. Il parcourt une sélection d'internes du système relationnel DuckDB en se concentrant sur des thèmes choisis plutôt que sur une couverture exhaustive. Le plan de cours couvre l'installation, le spectre de performance des requêtes, la gestion de la mémoire et des agrégations groupées, le tri de grandes tables, l'ART pour l'indexation, l'exécution de plans et le pipeline, l'exécution vectorisée ainsi que la réécriture et l'optimisation des requêtes. Des compétences SQL de base suffisent pour suivre le fil rouge du cours, la plupart des requêtes restant dans le bloc SELECT-FROM-WHERE-GROUP BY-HAVING. La bibliothèque associée référence également des ressources complémentaires telles que des conférences et des podcasts liés au projet.

06:02

I shipped a transaction bug, so I built a linter

Un bug fréquent consiste à exécuter des opérations hors d'une transaction en appelant le dépôt externe (par ex. s.repo) au lieu du dépôt transactionnel (tx), ce qui peut provoquer une corruption silencieuse des données. Ce problème est difficile à détecter car le code compile et les tests passent en isolation, tandis que les défaillances surviennent de façon aléatoire sous charge et échappent souvent aux revues de code. Pour l'attraper à la compilation, l'auteur a écrit un linter personnalisé basé sur le framework go/analysis qui parcourt l'AST, identifie les appels Transaction et suit le paramètre tx via son types.Object. Le linter analyse les appels et leurs arguments, signale les appels de méthodes dont le receveur est un dépôt non transactionnel et remonte l'analyse récursivement dans les fonctions utilitaires en évitant les boucles infinies. Le projet est testé avec analysistest, distribué via singlechecker et intégré au CI et au runner de tâches, il a trouvé des violations réelles en quelques jours et l'auteur recommande d'envisager des linters personnalisés pour les motifs de code fragiles.