HN Digest
Briefing personnel.

Edition quotidienne

Lire vite. Garder l'essentiel.

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

3702 articles Page 110/371 Sans filtre

06:08

Porting Go's strings package to C

L'auteur a entrepris de porter la bibliothèque standard de Go en C, en commençant par io puis par les packages bytes et strings pour obtenir des fonctionnalités utiles au-delà du simple sous-ensemble traduisible. Il a d'abord porté des dépendances pures comme math/bits et unicode/utf8 en prenant soin des différences de syntaxe, notamment la priorité des opérateurs de décalage entre Go et C. Pour la gestion mémoire il a introduit un interface d'allocateur mem_Allocator avec Alloc, Realloc et Free, fourni une instance système fondée sur calloc/realloc/free et fait de l'allocateur un paramètre explicite pour les fonctions qui allouent. Il a porté les types (Buffer, Builder, Reader) et ajouté un framework de benchmarks et un Tracker d'allocations, puis corrigé des régressions de performance en remplaçant des parcours naïfs par memchr et en réglant des problèmes de type de retour et d'inlining pour strings.Builder. Au final les versions C l'emportent souvent en performances sur Go, la conversion a mêlé traductions simples et défis d'architecture mémoire et d'optimisation, et l'auteur propose Solod pour écrire du Go compilable en C avec gestion manuelle de la mémoire.

06:07

SOM: A minimal Smalltalk for teaching of and research on Virtual Machines

Le système SOM et ses variantes ont été largement utilisés dans la recherche pour expérimenter et évaluer des machines virtuelles et des techniques d'optimisation d'interpréteurs. Des travaux ont porté sur la réflexion complète, les protocoles métaobjet, l'adaptation de machines virtuelles et des approches de méta-compilation comme le traçage et l'évaluation partielle. Plusieurs variantes adressent la concurrence et les modèles d'acteurs, notamment SOMNS et ActorSOM, ainsi que l'intégration multi-paradigme pour le débogage et les architectures many-core. SOM a servi de base pour des expérimentations pratiques telles que l'extension SOM++ avec un ramasse-miettes générationnel, l'implémentation du langage Grace aboutissant à Moth, et des environnements réflexifs comme TruffleMATE. Son usage pédagogique et académique est notable, avec des cours et travaux à Århus, Lancaster, TU Darmstadt et le Hasso Plattner Institute, et des publications décrivant des variantes comme CSOM et OOVM/Resilient Smalltalk.

06:07

Adobe modifies hosts file to detect whether Creative Cloud is installed

Si vous utilisez Windows ou macOS et avez installé Creative Cloud, le fichier hosts contient désormais plusieurs entrées ajoutées par Adobe. Adobe utilise ces entrées pour détecter si Creative Cloud est installé lorsqu'un visiteur charge leur site web. Le mécanisme consiste à tenter de charger une image via JavaScript depuis l'URL https://detect-ccd.creativecloud.adobe.com/cc.png et à observer si la requête aboutit. Si l'entrée DNS correspondante est présente dans le fichier hosts, le navigateur se connecte à leur serveur et Adobe en conclut que l'application est installée, sinon le chargement échoue. Cette méthode remplace une technique précédente qui interrogeait http://localhost:<ports>/cc.png, abandonnée après que Chrome a commencé à bloquer l'accès au réseau local.

06:07

What happens when a destructor throws

L'article explique le rôle des destructeurs dans l'idiome RAII pour assurer la libération automatique des ressources. Les destructeurs n'ont pas de valeur de retour, ce qui complique la remontée d'erreurs et conduit généralement à privilégier la journalisation ou un état d'erreur plutôt que de lancer une exception. Depuis C++11 les destructeurs sont implicitement noexcept(true), donc s'ils laissent sortir une exception sans être marqués noexcept(false), l'exécution appelle std::terminate et aucun catch n'est atteint. Un destructeur marqué noexcept(false) peut propager une exception lorsqu'aucune autre exception n'est active et celle-ci peut être interceptée, mais si un destructeur lance une exception pendant le déroulement de la pile (stack unwinding) alors std::terminate est toujours appelé. La conclusion est qu'il est fortement déconseillé de lancer des exceptions depuis un destructeur : il faut plutôt consigner l'erreur, stocker un état d'échec ou reporter le traitement, et n'utiliser noexcept(false) qu'avec la certitude qu'aucun déroulement de pile n'aura lieu.

06:07

Eighteen Years of Greytrapping – Is the Weirdness Finally Paying Off?

L'auteur décrit une expérience de greytrapping commencée en 2007 utilisant spamd et greylisting pour attirer et analyser les envois indésirables. La collecte s'appuie sur des journaux de serveurs (SMTP, SSH, POP3) complétée depuis 2024 par la génération synthétique d'adresses extraites de /dev/random et par des transformations de chaînes pour alimenter les pièges. Les chiffres annuels montrent une croissance massive avec des pics liés à des campagnes, et le nombre total de spamtraps dépasse plusieurs millions, franchissant même celui des habitants de la Norvège en août 2025. L'auteur constate que la centralisation du courrier en cloud modifie le paysage et que spamd, limité à IPv4, manque de visibilité sur le trafic IPv6, ce qui restreint l'efficacité de la méthode. Il conclut que greylisting et greytrapping restent utiles dans leurs limites, propose des ressources pratiques pour qui veut exploiter son propre service de courrier et invite au dialogue sur les listes et données publiées.

06:07

The team behind a pro-Iran, Lego-themed viral-video campaign

L'année dernière, la chaîne YouTube Akhbar Enfejari (Explosive News) a commencé à publier des contenus numériques politiques et moralisateurs, mêlant commentaires d'influenceur et animations générées par intelligence artificielle. En février, elle a rencontré un succès viral en publiant des vidéos de propagande A.I. au style « Lego » caricaturant des dirigeants mondiaux et célébrant des frappes contre les États-Unis et Israël. Ces clips, souvent grossiers et conspirationnistes, ont été massivement partagés, repris par des comptes liés à l'État iranien et par des médias russes, et ont attiré un large public occidental. Les responsables affirment être un collectif étudiant indépendant, tandis que des médias ont noté des relais par des organes d'État et des indices laissant suspecter des liens sans preuve définitive. YouTube et Instagram ont ensuite supprimé les comptes pour violation des règles, mais les vidéos restent disponibles sur d'autres plateformes et le groupe a commencé à diffuser en anglais sous un nouveau nom.

06:06

Dear Heroku: Uhh What's Going On?

Judoscale et d'autres partenaires développeurs expriment leur confusion après un billet annonçant une transition vers un modèle de "sustaining engineering" axé sur stabilité et support et l'arrêt des nouveaux contrats Enterprise. Cette communication paraît contradictoire avec des évolutions récentes de la plateforme, comme l'augmentation des tailles de slug, des améliorations SSL et la refonte de l'interface en ligne de commande. Ils demandent des explications claires et directes sur ce que signifie "sustaining engineering", souhaiteraient l'ouverture d'une feuille de route publique et connaître les priorités techniques à court et moyen terme. Ils demandent aussi que Heroku précise son intention commerciale, en particulier si l'objectif est de se concentrer sur la facturation directe avec une équipe réduite ou de cesser les investissements majeurs tout en assurant la maintenance. Enfin, ils signalent que plusieurs équipes envisagent de migrer leurs services et demandent une clarification rapide sur l'avenir de la plateforme.

06:06

Show HN: TTF-DOOM – A raycaster running inside TrueType font hinting

Le projet implémente un moteur de raycasting à la manière de DOOM en utilisant le programme de hinting des polices TrueType, qui sert de machine virtuelle Turing-complète pour dessiner en 3D. Le fichier de police contient un moteur DDA écrit en bytecode TrueType qui repositionne seize barres verticales du glyphe A via des instructions SCFS pour produire une perspective sur une carte 16x16, et l'ensemble tient dans 6,5 Ko. Un compilateur transforme un DSL proche du C en assemblage de hinting (FDEF, CALL, RS, WS, etc.), injecte tables sin/cos et données de carte, et gère l'allocation en slots de stockage et l'arithmétique fixed-point. Le rendu des murs est effectué par la police tandis que le JavaScript gère la logique du jeu (positions, ennemis, tirs) en envoyant les coordonnées via font-variation-settings, et l'auteur a dû contourner des bizarreries du VM TrueType comme le F26Dot6, des MUL/DIV non intuitifs, l'absence de WHILE, les limites de pile et le comportement de cache du navigateur. Le dépôt GitHub contient le code et des instructions pour lancer la démo locale et le projet est distribué sous licence Apache 2.0.