Category: Développement

Découvertes Multiples : Le Cas des Arbres Prolly

2025-07-01
Découvertes Multiples : Le Cas des Arbres Prolly

Les arbres Prolly, une structure de données nouvelle et cruciale pour Dolt, n'ont pas été inventés une seule fois, mais au moins quatre fois indépendamment. Du projet bup d'Avery Pennarun en 2009 (qui précède même Noms), à la création du terme par Noms en 2015, aux « arbres de recherche Merkle » d'Inria en 2019 et aux « arbres Merkle définis par le contenu » de l'université DePaul en 2020, la même structure de données fondamentale est apparue à plusieurs reprises dans différents contextes. Cela met en évidence le phénomène courant des découvertes multiples en science et souligne le rôle de la demande dans l'innovation technologique. Les auteurs, de DoltHub, discutent de ce phénomène et de ses implications pour la technologie future, en utilisant leur propre expérience avec les arbres Prolly comme étude de cas.

Bloqueur de traduction YouTube Open Source

2025-07-01
Bloqueur de traduction YouTube Open Source

Ce complément YouTube open source empêche la traduction automatique sur YouTube. Il conserve les titres et descriptions des vidéos dans leur langue d'origine, utilise par défaut la piste audio originale (y compris les Shorts), et vous permet de choisir votre langue de sous-titres (ou les désactive si indisponible ; les sous-titres générés automatiquement sont toujours ignorés), garantissant une expérience de visionnage authentique.

Développement

Pluto : Un dialecte Lua amélioré

2025-07-01
Pluto : Un dialecte Lua amélioré

Pluto est un dialecte puissant de Lua conçu pour la programmation générale. Il offre un développement accéléré grâce à une bibliothèque standard améliorée et de nouvelles fonctionnalités syntaxiques telles que les instructions switch, les opérateurs composés et les expressions ternaires. Bien que largement compatible avec Lua 5.4, un mode de compatibilité résout les conflits potentiels liés aux nouveaux mots clés. Pluto exécute le bytecode Lua et la plupart des fonctionnalités de Pluto génèrent du bytecode compatible avec Lua. Une documentation complète, les outils et les détails sur les améliorations sont disponibles sur son site Web open source. Essayez-le dans l'environnement de jeu interactif du navigateur ou téléchargez des binaires précompilés.

Développement

Améliorer les CLIs Rust : une conception pilotée par les types pour la robustesse et la maintenabilité

2025-07-01
Améliorer les CLIs Rust : une conception pilotée par les types pour la robustesse et la maintenabilité

Cet article préconise une approche pilotée par les types pour la construction d’interfaces en ligne de commande (CLI) en Rust à l’aide de la crate clap. Au lieu de s’appuyer sur l’analyse de chaînes de caractères, l’auteur recommande de définir l’interface CLI à l’aide du système de types de Rust. Cela présente plusieurs avantages clés : amélioration de la maintenabilité et de la lisibilité du code, réduction de la surface de test et meilleur support des simulations pour les tests unitaires, et facilité du versionnement sémantique. L’article détaille les fonctionnalités derive et env de clap, montrant comment définir des arguments de ligne de commande et des variables d’environnement à l’aide de types, ce qui donne des CLIs plus robustes et plus faciles à maintenir.

Développement

Hooks Claude Code : Extension des fonctionnalités avec des commandes shell personnalisées

2025-07-01
Hooks Claude Code : Extension des fonctionnalités avec des commandes shell personnalisées

Claude Code introduit des hooks, des commandes shell définies par l'utilisateur qui s'exécutent à différents stades de son cycle de vie. Cela permet un contrôle déterministe du comportement de Claude Code, garantissant que des actions telles que la mise en forme automatique du code, la journalisation et les vérifications d'autorisations personnalisées se produisent toujours. Les hooks transforment les suggestions en code fiable au niveau de l'application, améliorant la fonctionnalité et simplifiant les flux de travail. Bien que puissants, les utilisateurs doivent prioriser la sécurité et s'assurer que les commandes sont sûres et fiables.

Développement Commandes shell

Qualcomm open-source EUD : Débogage sur puce via USB

2025-07-01
Qualcomm open-source EUD : Débogage sur puce via USB

Qualcomm a discrètement publié le code source de son interface de débogage USB embarquée (EUD), permettant aux développeurs d'effectuer un débogage SWD directement via USB sans outils JTAG externes. Intégré dans presque tous les SoC Qualcomm depuis ~2018, EUD fournit un accès de débogage aux CPU et aux coprocesseurs Hexagon. Bien que le code source initial présentait quelques problèmes de compilation, la communauté les a rapidement résolus. Prenant actuellement en charge des puces telles que Snapdragon 845, 855 et 865, il simplifie le débogage d'U-Boot et du monde sécurisé, mais le support de débogage du noyau est limité, et le support SMP est incomplet.

Développement

arXivLabs : Collaboration communautaire sur les fonctionnalités d'arXiv

2025-07-01
arXivLabs : Collaboration communautaire sur les fonctionnalités d'arXiv

arXivLabs est un cadre permettant le développement collaboratif et le partage de nouvelles fonctionnalités d'arXiv directement sur le site web. Les participants doivent adhérer aux valeurs d'arXiv : ouverture, communauté, excellence et confidentialité des données utilisateur. Vous avez une idée pour améliorer la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Nimtable : Le plan de contrôle pour Apache Iceberg™

2025-07-01
Nimtable : Le plan de contrôle pour Apache Iceberg™

Nimtable est une plateforme légère et facile à utiliser pour surveiller, optimiser et gérer votre entrepôt de données de type lac basé sur Iceberg. Son interface Web simplifie la navigation dans les tables, l'exécution des requêtes, l'analyse de la distribution des fichiers et l'optimisation des dispositions de stockage. Prenant en charge plusieurs catalogues (REST Catalog, AWS Glue, tables AWS S3 et PostgreSQL) et une intégration transparente avec les stockages d'objets tels que S3, Nimtable offre des requêtes interactives, une assistance IA (y compris des résumés de tables générés par IA et des suggestions intelligentes), une analyse de la distribution des fichiers et des fonctionnalités d'optimisation des tables (telles que la compaction des fichiers et la gestion de l'expiration des snapshots).

Développement Gestion de Données

Génériques typés en C : une utilisation astucieuse des unions

2025-07-01
Génériques typés en C : une utilisation astucieuse des unions

Cet article présente une technique pour implémenter des structures de données génériques typées en C, en utilisant des unions pour associer des informations de type à une structure de données générique. L’auteur illustre l’approche avec une liste chaînée, montrant comment les macros et les unions permettent la vérification de type à la compilation, évitant l’insécurité de type et le gonflement du code des méthodes génériques traditionnelles. Des comparaisons sont faites avec les approches `void*` et les membres de tableau flexibles, aboutissant à une solution qui fournit une sécurité de type à la compilation, ce qui entraîne des erreurs de compilation lorsque des types incorrects sont ajoutés.

Développement

Optimisation du compilateur LLVM assistée par l'IA : une histoire de sérialisation ASN.1

2025-07-01

Lors de la maintenance d'une bibliothèque Rust pour la sérialisation ASN.1 DER, l'auteur a découvert du code inefficace dans le calcul de la longueur des entiers. Il a expérimenté avec Claude IA pour optimiser le code et a utilisé l'outil de vérification formelle Alive2 pour valider les résultats. Étonnamment, Claude IA a même aidé à générer un correctif pour une optimisation du compilateur LLVM, qui a passé la revue de code et a finalement été soumis au projet LLVM. Cela démontre l'immense potentiel de l'IA dans le développement de logiciels, en particulier dans l'optimisation des compilateurs, tout en soulignant l'importance de la revue manuelle lors de l'utilisation d'outils d'IA.

Développement

Ingénierie inverse du BotID de Vercel : un système anti-bot étonnamment basique ?

2025-06-30

Cet article explore le nouveau système anti-bot de Vercel, BotID, en se concentrant sur son mode Basique gratuit. L'auteur révèle que les mécanismes de détection actuels de ce mode sont étonnamment rudimentaires et facilement contournables en manipulant les propriétés du navigateur. Bien que BotID collecte divers signaux, dont les empreintes digitales du navigateur et les informations GPU, le traitement de ces signaux est basique, ce qui rend inefficace la détection des bots sophistiqués. L'auteur suppose que Vercel utilise le mode Basique pour collecter discrètement des données afin d'entraîner de futurs modèles anti-bot plus robustes. Le mode Deep Analysis payant, utilisant les scripts anti-bot de Kasada, est considérablement plus complexe que le mode Basique.

Développement

TokenDagger : une implémentation ultra-rapide de TikToken d'OpenAI

2025-06-30
TokenDagger : une implémentation ultra-rapide de TikToken d'OpenAI

TokenDagger propose une alternative haute performance à TikToken d'OpenAI, optimisée pour le traitement de texte à grande échelle. Les benchmarks montrent que TokenDagger atteint une vitesse jusqu'à 4 fois supérieure pour la tokenisation de code et une augmentation de débit de 2x par rapport à TikToken. Utilisant un moteur d'expressions régulières PCRE2 optimisé et un algorithme BPE simplifié pour atténuer l'impact sur les performances des grands vocabulaires de jetons spéciaux, TokenDagger fournit un remplacement direct. L'installation et les tests de performance sont simples avec quelques commandes.

Développement

Ensō (Vampire Oculte Keanu) en Beta Publique

2025-06-30
Ensō (Vampire Oculte Keanu) en Beta Publique

La nouvelle version d'Ensō, de nom de code "Vampire Oculte Keanu", est désormais disponible pour les tests publics ! Cette version se concentre sur une interface utilisateur simplifiée, une accessibilité améliorée et une confidentialité renforcée. De nouvelles fonctionnalités incluent un "mode cafétéria" pour masquer le texte, plusieurs thèmes axés sur l'accessibilité et un moteur de rendu de texte amélioré. Les mises à jour futures comprendront la prise en charge RTL et bien plus encore, mais cette version améliore considérablement l'expérience utilisateur.

Alias de pointeurs C et optimisation du compilateur : un jeu de sécurité du code source

2025-06-30
Alias de pointeurs C et optimisation du compilateur : un jeu de sécurité du code source

Cet article approfondit l’impact de l’aliasing de pointeurs sur l’optimisation des programmes en C. L’aliasing de pointeurs fait référence à deux pointeurs pointant vers le même objet mémoire. Les compilateurs, lors de l’optimisation du code, doivent effectuer une analyse d’alias pour déterminer si les pointeurs sont des alias. Une mauvaise évaluation peut entraîner des erreurs de programme ou une dégradation des performances. L’article utilise un exemple de calcul réciproque pour illustrer que lorsque deux pointeurs peuvent être des alias, le compilateur ne peut pas effectuer certaines optimisations, car cela peut modifier l’algorithme du programme. L’auteur discute également des mécanismes en C qui aident à l’analyse d’alias, tels que le qualificateur de pointeur restrict et le qualificateur volatile, ainsi que des techniques d’analyse d’alias avancées, telles que l’analyse d’alias basée sur le type et l’analyse d’alias basée sur le flux. Enfin, l’auteur propose un nouveau modèle d’analyse d’aliasing de pointeurs qui prend en compte la durée de vie du pointeur et le flux d’informations, dans le but d’améliorer l’efficacité d’optimisation du compilateur et la sécurité du programme.

Modélisation des limites de débit d'API en tant qu'inégalités diophantiennes

2025-06-30

Cet article explore une approche mathématique, utilisant les inégalités diophantiennes, pour résoudre les problèmes de limitation de débit d'API. L'auteur utilise un scénario avec une limite de 10 requêtes par heure et trois tentatives de nouvelle tentative par tâche comme exemple, montrant comment transformer le problème d'ordonnancement des tâches en un problème de faisabilité entière. En analysant le modèle de nouvelle tentative de tâche et les fenêtres de temps, l'auteur établit un modèle d'inégalité et utilise Go pour écrire un programme qui détermine si une nouvelle tâche peut être planifiée en toute sécurité sans dépasser la limite de débit. L'article mentionne également l'optimisation de l'algorithme pour réduire la complexité temporelle de O(n^2) à O(n*log(n)).

Compilation croisée de liaisons Raylib Lisp et de jeux pour Windows à partir de Linux

2025-06-30

Cet article détaille le processus de compilation croisée de code C et d'un programme SBCL Lisp pour Windows à partir de Linux, utilisant Wine pour exécuter un SBCL Windows dans un Emacs basé sur Linux, et chargeant des fichiers .dll dans l'image Lisp pour produire un exécutable .exe. L'auteur décrit la compilation croisée de code C à l'aide de mingw-w64-toolchain, la configuration de la bibliothèque Raylib pour la compilation croisée afin de générer des fichiers .dll, l'installation et l'utilisation de SBCL sous Wine, l'utilisation de vend pour la gestion des dépendances et, enfin, l'utilisation de sb-ext:save-lisp-and-die pour créer l'exécutable Windows.

Développement

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-06-30
arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

arXivLabs est un framework permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données des utilisateurs. arXiv est engagé envers ces valeurs et ne travaille qu'avec des partenaires qui les respectent. Vous avez une idée de projet qui ajoutera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Gestion des erreurs en Rust : évolution des énumérations monolithiques vers des ensembles d’erreurs élégants

2025-06-30

La gestion des erreurs en Rust a été un sujet de débat. L’approche traditionnelle consistant à définir de vastes énumérations d’erreurs par module ou par crate conduit à un code volumineux et difficile à maintenir. Cet article explore des alternatives : représenter les erreurs individuelles par des structures et gérer les ensembles d’erreurs à l’aide d’outils tels que le crate `error_set`. `error_set` simplifie la définition et la conversion des énumérations d’erreurs au moyen de macros, en prenant en charge la composition et les relations de sous-ensembles entre les ensembles d’erreurs pour une gestion des erreurs plus propre et plus efficace. Même si un travail supplémentaire est toujours nécessaire pour les erreurs complexes nécessitant des informations supplémentaires, `error_set` offre une approche plus élégante et plus facile à maintenir pour la gestion des erreurs en Rust.

Développement

Despatcheur d'événements en processus rapide pour Go

2025-06-30
Despatcheur d'événements en processus rapide pour Go

Ce package Go fournit un despacheur d'événements en processus haute performance, idéal pour découpler les modules et permettre le traitement asynchrone des événements. Avec des vitesses 4 à 10 fois plus rapides que les canaux (traitant des millions d'événements par seconde !), il prend en charge les opérations synchrones et asynchrones, en privilégiant la simplicité. Parfait pour le découplage des modules intra-processus, le pub/sub léger et les scénarios à haut débit, mais pas adapté à la communication inter-processus, à la persistance des événements ou au routage avancé.

Mise à l'échelle des builds de conteneurs clients avec l'API Depot

2025-06-30
Mise à l'échelle des builds de conteneurs clients avec l'API Depot

De nombreuses plateformes SaaS doivent exécuter du code pour le compte de leurs clients, ce qui pose des défis pour la construction de conteneurs. Cet article montre comment construire des outils avec l'API Depot pour créer des environnements de build isolés pour une plateforme SaaS multi-locataire. À l'aide d'un client Go, vous pouvez créer des projets, gérer les caches de projets, récupérer les métriques de build et les journaux. L'API Depot utilise Buf.build, offrant des bibliothèques clientes pour plusieurs langages, ce qui facilite l'intégration dans les infrastructures existantes. L'article détaille la création, la suppression et la réinitialisation des caches de projets, la récupération des métriques de build et des détails des étapes, permettant en fin de compte une infrastructure de conteneurs clients évolutive et sécurisée.

Développement build de conteneurs

Dataclasses Python : `kw_only=True` pour une meilleure maintenabilité et extensibilité

2025-06-30

Les dataclasses de Python offrent un moyen pratique de créer des classes de données, mais la méthode `__init__` par défaut utilise des arguments positionnels, ce qui peut entraîner des difficultés de maintenance et d'extension. Cet article présente le paramètre `kw_only=True`, qui impose l'utilisation d'arguments nommés, évitant ainsi les problèmes causés par les modifications de l'ordre des arguments et permettant aux sous-classes d'ajouter des champs obligatoires de manière flexible. Bien que ce paramètre ait été introduit en Python 3.10, l'article propose également une solution pour la compatibilité avec les versions antérieures.

Développement

Mauvais interprétation de Knuth : « L’optimisation prématurée est la racine de tous les maux »

2025-06-30
Mauvais interprétation de Knuth : « L’optimisation prématurée est la racine de tous les maux »

Cet article approfondit la signification réelle de la célèbre citation de Donald Knuth : « L’optimisation prématurée est la racine de tous les maux ». En analysant des exemples de l’article de Knuth sur l’utilisation des instructions goto et la mise en œuvre de multiensembles, l’auteur montre que cette citation ne décourage pas entièrement les petites optimisations. Des expériences comparant différentes implémentations révèlent que même des optimisations mineures (comme le déroulement des boucles) peuvent générer des gains de performance significatifs pour le code critique et les fonctions de bibliothèque fréquemment utilisées, selon les résultats des tests de performance. L’auteur préconise, en fin de compte, l’utilisation de fonctions de bibliothèque standard bien optimisées pour éviter les efforts d’optimisation inutiles et tirer parti des capacités d’optimisation des compilateurs modernes.

Le Livre des Shaders : Un guide pas à pas pour les shaders de fragments

2025-06-30
Le Livre des Shaders : Un guide pas à pas pour les shaders de fragments

Le Livre des Shaders, écrit par Patricio Gonzalez Vivo et Jen Lowe, est un guide pas à pas pour comprendre les shaders de fragments. Il aborde en douceur les complexités de ce sujet abstrait. Le livre inclut des biographies des auteurs et remercie de nombreux contributeurs et traducteurs qui ont permis la création de versions en plusieurs langues.

Développement

Contourner la détection de machine virtuelle des logiciels malveillants : simulation d’un ventilateur CPU via un SMBIOS personnalisé

2025-06-30

Les logiciels malveillants vérifient souvent l’absence de composants matériels généralement non émulés dans les machines virtuelles (comme un ventilateur CPU) pour éviter l’analyse. Cet article détaille comment contourner cette détection en modifiant les données SMBIOS de la machine virtuelle pour simuler un ventilateur CPU. L’auteur explique minutieusement les étapes pour les environnements Xen et QEMU/KVM, notamment l’obtention des données SMBIOS, la création d’un fichier SMBIOS personnalisé et la configuration de la VM. L’article souligne également la nécessité de gérer en plus les données du SMBIOS de type 28 (sonde de température) dans Xen pour une tromperie réussie du WMI.

Développement Sécurité VM

NativeJIT : Un compilateur JIT hautes performances pour Bing

2025-06-30
NativeJIT : Un compilateur JIT hautes performances pour Bing

NativeJIT est une bibliothèque open source et multiplateforme pour la compilation juste-à-temps hautes performances d'expressions impliquant des structures de données C. Développée par l'équipe Bing pour une utilisation dans le moteur de recherche Bing, elle est essentielle pour le score des documents en fonction des correspondances de mots clés et de l'intention de l'utilisateur. Légère et rapide, elle ne dépend que de l'environnement d'exécution C++ standard et fonctionne sous Linux, OSX et Windows. Son code optimisé, en particulier son allocation de registres, permet le traitement efficace des requêtes à grande échelle.

Développement

Machine de développement économique avec Ampere Altra

2025-06-30
Machine de développement économique avec Ampere Altra

Ayant besoin d'une machine de développement avec prise en charge de la taille de page 64k, l'auteur a construit un système basé sur Ampere Altra. Il a choisi une carte mère AsrockRack ALTRA8BUD-1L2T, un processeur Q80-30 d'occasion (80 cœurs, 3,0 GHz), un refroidisseur Arctic Freezer 4U-M et huit barrettes de RAM SK Hynix HMA82GR7CJR8N-XN de 16 Go. Après quelques dépannages, le système a démarré avec succès. Il a également sélectionné un boîtier et une alimentation appropriés, ajoutant du stockage NVME et une carte graphique. Le coût total était d'environ 1800 €, légèrement supérieur au budget. Les projets futurs incluent l'installation de Fedora 42, la création de machines virtuelles RHEL et CentOS Stream, des expériences avec différentes GPU et l'utilisation comme poste de travail.

Développement Machine de Développement

Analyse de performances LLVM-MCA : pièges de l’optimisation de la vectorisation

2025-06-29
Analyse de performances LLVM-MCA : pièges de l’optimisation de la vectorisation

L’auteur a rencontré un problème de baisse de performances lors de la vectorisation de code à l’aide d’ARM NEON. Le code initial utilisait cinq instructions de chargement (5L), tandis que la version optimisée utilisait deux instructions de chargement et trois instructions d’extension (2L3E) pour réduire les accès mémoire. Curieusement, la version 2L3E était plus lente. L’utilisation de LLVM-MCA pour l’analyse de performances a révélé que 2L3E provoquait des goulots d’étranglement dans les unités d’exécution du processeur, une utilisation inégale des ressources et des dépendances d’instructions plus fortes, entraînant une régression des performances. La version 5L a offert de meilleures performances grâce à une utilisation plus équilibrée des ressources et à des instructions de chargement indépendantes. Cette étude de cas souligne comment des optimisations apparemment judicieuses peuvent entraîner une baisse des performances si l’on ne tient pas compte de la contention des ressources du processeur et des dépendances des instructions ; LLVM-MCA s’avère un outil précieux pour analyser ces problèmes.

Développement vectorisation

Filtres de Bloom : Une structure de données probabiliste pour une recherche efficace d'appartenance à un ensemble

2025-06-29

Les filtres de Bloom sont des structures de données probabilistes conçues pour tester l'appartenance à un ensemble de manière rapide et efficace en mémoire. Ils utilisent plusieurs fonctions de hachage pour mapper les éléments à des bits dans un vecteur de bits. Si tous les bits correspondants sont à 1, l'élément *peut* être présent ; sinon, il est définitivement absent. Bien qu'ils soient sujets aux faux positifs, leur vitesse et leur efficacité spatiale les rendent idéaux pour les grands ensembles de données. Cet article détaille les principes des filtres de Bloom, la sélection de la fonction de hachage, le dimensionnement, les applications et des exemples d'implémentation dans divers systèmes.

Développement

Octelium : Une plateforme d'accès Zero Trust révolutionnaire

2025-06-29
Octelium : Une plateforme d'accès Zero Trust révolutionnaire

Octelium est une plateforme unifiée, gratuite et open source, auto-hébergée, pour l'accès aux ressources Zero Trust, conçue comme une alternative moderne aux VPN et outils similaires. Elle est incroyablement polyvalente, fonctionnant comme un VPN à configuration zéro, une plateforme ZTNA, une infrastructure de tunnels sécurisés, une passerelle API, une passerelle IA, un PaaS pour l'hébergement sécurisé et anonyme d'applications conteneurisées, une passerelle Kubernetes, et même une infrastructure de homelab. Octelium offre une architecture Zero Trust (ZTA) évolutive pour un accès sécurisé basé sur l'identité, conscient de la couche application (L7), sans secret, via des tunnels WireGuard/QUIC et un accès public sans client.

Développement Alternative VPN

La guerre secrète des droits d'auteur derrière le Plug and Play de Windows 95

2025-06-29
La guerre secrète des droits d'auteur derrière le Plug and Play de Windows 95

Implémenter le Plug and Play dans Windows 95 n'a pas été une mince affaire. Pour faire fonctionner l'ancien matériel avec la nouvelle fonctionnalité, les ingénieurs ont utilisé des solutions ingénieuses. Un exemple amusant a impliqué des fabricants ajoutant la chaîne "Not Copyright Fabrikam Computer" à leur BIOS. C'était une astuce intelligente pour tromper la vérification de licence de LitWare Word Processor, débloquant la version complète sans être un PC Fabrikam sous licence. Cela met en évidence les défis de la compatibilité des anciens PC et les efforts déployés par les fabricants pour obtenir des licences de logiciels.

Développement
1 2 49 50 51 53 55 56 57 214 215