HN Digest
Briefing personnel.

Lire vite.
Garder l'essentiel.

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

11615 articles Page 949/1162 Sans filtre

Everything old is new again: memory optimization

L'article note qu'une forte demande de mémoire a rendu la RAM des appareils grand public plus limitée et a relancé l'intérêt pour l'optimisation de l'utilisation de la mémoire. L'exemple étudié consiste à écrire un script qui ouvre un fichier texte encodé en UTF-8, le découpe en mots selon les espaces, compte les occurrences et affiche les mots triés par fréquence décroissante. Une implémentation Python concise (moins de 30 lignes) affiche un pic de consommation d'environ 1,3 Mo sur un petit fichier (le README du dépôt). Une version native en C++ utilisant des string_view, mmap et une table de hachage pour les clés atteint un pic d'environ 100 Ko, soit environ 7,7 % de la consommation de la version Python. L'auteur précise que la comparaison est partiellement injuste en raison des coûts des environnements d'exécution et affirme qu'en supprimant le support des exceptions le binaire C++ pourrait descendre à ~21 Ko, soit une réduction potentielle d'environ 98,4 %.

Capability-Based Security for Redox: Namespace and CWD as Capabilities

L'article présente un projet visant à réimplémenter la gestion des espaces de noms et du répertoire de travail courant (CWD) dans Redox OS en utilisant des capacités. Dans Redox OS, les services système sont fournis par des « schemes » en espace utilisateur et relibc offre une couche de compatibilité POSIX tout en gérant des descripteurs de fichiers internes. Avant la transition, le noyau gérait l'espace de noms en liant des noms de schemes aux processus et relibc stockait le CWD comme chaîne, ce qui exigeait la conversion des chemins relatifs en chemins absolus et le parsage des chemins par le noyau. La nouvelle architecture place un gestionnaire d'espace de noms (nsmgr) en userspace et représente l'espace de noms par un descripteur de fichier; nsmgr reçoit les openat, extrait le scheme et transmet les descripteurs, ce qui évite au noyau de connaître ou d'analyser les noms de schemes. relibc conserve désormais le CWD comme descripteur (capabilité), ce qui permet de traiter les chemins relatifs sans reconstruction, d'appliquer des restrictions comme O_RESOLVE_BENEATH pour prévenir les échappements et de simplifier le noyau tout en renforçant la sécurité.

Type Construction and Cycle Detection

Le code Go est d'abord analysé en un AST puis vérifié par le vérificateur de types qui construit pour chaque type une représentation interne afin de vérifier la validité des types et des opérations à la compilation. La construction de types est normalement effectuée en profondeur et produit des types « complets » dont on peut décomposer en toute sécurité les détails, mais les définitions récursives introduisent des types incomplets dont la décomposition est indéfiniment retardée. Certaines expressions de valeur peuvent produire des valeurs incomplètes (par exemple T{}), et les opérations qui décomposent ces valeurs—comme le calcul d'une taille de tableau via unsafe.Sizeof ou l'indexation—créent des dépendances cycliques illégitimes exposées par des erreurs de cycle. Pour résoudre cela, le compilateur vérifie désormais la complétude des types au niveau des expressions amont qui peuvent produire des valeurs incomplètes (conversions, appels, assertions, réceptions, accès map, déréférences, etc.), et il signale une erreur et retourne un opérande invalide si la complétude fait défaut. Cette détection systématique des cycles, introduite dans Go 1.26, a simplifié l'algorithme de construction des types, corrigé plusieurs plantages du compilateur et rendu l'outil plus robuste tout en préparant des améliorations futures.

Desk for people who work at home with a cat

Une entreprise japonaise a conçu un bureau qui intègre des espaces destinés aux chats afin de faciliter le partage du poste de travail entre l'humain et l'animal. Le bureau comprend un espace à deux niveaux sur le côté droit avec des accès latéraux et une capacité de charge de 20 kilogrammes pour la section supérieure. Un autre espace pour le chat se trouve sous le plateau, devant les genoux de la personne assise, et il est relié au niveau supérieur pour permettre au chat de circuler et de venir sur les genoux sans gêner l'utilisateur. Les concepteurs ont également prévu un trou sur le dessus pour que le chat puisse passer la tête, ainsi que des passages pour câbles et un emplacement pouvant accueillir une tour PC (qui occupe la moitié inférieure de l'espace à deux niveaux). Le bureau est vendu au Japon environ 24 800 yens et peut être accompagné d'une tour pour chat vendue séparément à 16 862 yens, tous deux disponibles sur Amazon Japon.

People inside Microsoft are fighting to drop mandatory Microsoft Account

Hier, Microsoft a dévoilé un ensemble de changements importants pour Windows 11 visant à traiter des plaintes courantes comme les performances lentes, les mises à jour peu fiables, le surpoids lié à l'IA et la présence excessive de publicités. Ces améliorations n'enlèvent toutefois pas l'obligation actuelle de configurer une connexion Internet et de se connecter avec un compte Microsoft lors de l'installation initiale. L'article interroge les utilisateurs pour savoir s'ils profiteraient d'une plus grande liberté sur l'utilisation d'un compte en ligne, en précisant que l'auteur apprécie la synchronisation avec OneDrive et la connexion automatique à Edge et Office. Le maintien de cette exigence de compte Microsoft reste un point de friction important pour de nombreux utilisateurs malgré les autres améliorations annoncées. Les lecteurs sont invités à partager leurs avis et à en discuter sur le subreddit r/WindowsCentral.

Fets and Crosses: Tic-Tac-Toe built from 2458 discrete transistors

Un jeu de morpion a été conçu et simulé dans Logisim avec modes joueur contre joueur et joueur contre ordinateur, détection de toutes les victoires/nuls et validation des coups. L'IA du moteur a d'abord été implémentée par une ROM d'adresses 18 bits inefficace, puis remplacée par un module purement combinatoire capable de jeu parfait. La version matérielle repose sur 19 bascules, des cellules logiques dessinées sous KiCad et deux PCB en deux couches avec routage Manhattan, le projet exploitant au total 2458 transistors discrets. L'assemblage a été réalisé manuellement en trois révisions en utilisant un stylet de préhension par vide pour accélérer le placement, puis cinq exemplaires ont été produits après correction des problèmes de soudure. Le moteur combinatoire utilise 64 vérifications de situations et une logique de blocage séquentielle (ensemble 1074 transistors), et il a été validé par un banc de test STM32 et un script Python qui a joué toutes les parties sans perdre.