Category: Développement

Pahole : Un outil puissant pour inspecter la disposition en mémoire des structures de données C/C++

2025-04-19

Cet article de blog présente pahole, un outil puissant pour analyser la disposition en mémoire des structures de données C/C++, y compris les détails du padding et de l’alignement. En lisant les informations de débogage DWARF générées par le compilateur, pahole affiche visuellement comment les structures de données sont organisées en mémoire et indique les « trous » insérés par le compilateur pour répondre aux exigences d’alignement de la mémoire. Ceci est crucial pour optimiser l’utilisation du cache du code et réduire le partage faux des lignes de cache. L’article montre également comment installer pahole et comment utiliser ses options de ligne de commande pour analyser les tailles des structures, ajuster l’ordre des membres pour optimiser la disposition en mémoire et explorer les différences de disposition en mémoire avec différentes tailles de ligne de cache.

Construire des vues JavaScript à la manière difficile

2025-04-19
Construire des vues JavaScript à la manière difficile

Cet article présente un modèle pour construire des vues en JavaScript pur, en mettant l'accent sur la maintenabilité, les performances et le plaisir, tout en évitant les complexités des frameworks tels que React, Vue ou lit-html. Cette approche utilise du code impératif direct pour des performances élevées, ne nécessite aucune dépendance, possède une excellente portabilité et maintenabilité, et prend en charge tous les navigateurs. L'article détaille la structure d'un composant de vue, incluant le modèle, la fonction de clonage, la fonction d'initialisation, les variables DOM, les vues DOM, les variables d'état, les fonctions de mise à jour DOM et les fonctions de mise à jour d'état, ainsi que les conventions de nommage et les meilleures pratiques pour garantir la lisibilité et la maintenabilité du code.

Développement Vues

EdgeBit : Agents IA one-shot pour une correction automatique efficace des dépendances

2025-04-18

EdgeBit est une plateforme de sécurité qui aide les équipes d'ingénierie d'applications à trouver et corriger les vulnérabilités de sécurité. La fonctionnalité de correction automatique des dépendances contient un moteur de réactivité extrêmement précis pour identifier l'impact sur votre application. La plupart des mises à jour n'ont aucun impact, de sorte que les ingénieurs utilisant EdgeBit peuvent consacrer leurs efforts aux mises à jour impactantes. Cela se traduit par plus de temps passé « en mission » au lieu de gérer les dépendances. Cet article expliquera comment identifier les zones qui peuvent 1) utiliser des outils ciblés, 2) gérer intelligemment les erreurs et 3) exploiter la persistance d'un agent d'IA pour débloquer des gains d'efficacité massifs, comme nous l'avons fait pour la correction automatique des dépendances, avec des données à l'appui.

Développement

PDCurses : Une bibliothèque Curses open source multiplateforme

2025-04-18
PDCurses : Une bibliothèque Curses open source multiplateforme

PDCurses est une bibliothèque curses en domaine public prenant en charge DOS, OS/2, la console Windows, X11 et SDL. Elle implémente la plupart des fonctions de X/Open et System V R4 curses, permettant de recompiler des programmes curses en mode texte en applications GUI via ses ports X11 et SDL. Principalement distribuée sous forme de code source, des bibliothèques précompilées peuvent également être disponibles. Trouvez la dernière version sur https://pdcurses.org/.

Hommage à Bram Moolenaar : L'histoire de Vi et Vim

2025-04-18
Hommage à Bram Moolenaar : L'histoire de Vi et Vim

Le décès de Bram Moolenaar, créateur de Vim, nous incite à réfléchir à la riche histoire des éditeurs de texte UNIX. Cet article retrace l'évolution de ed à Vim, en racontant les histoires de ed de Ken Thompson, de em de George Coulouris, de vi de Bill Joy et de nombreux clones de vi tels que Stevie et Elvis. Leur développement est étroitement lié à l'évolution d'UNIX et de l'informatique elle-même, illustrant l'esprit durable du logiciel libre. Vim, initialement un portage de Stevie pour Amiga, est devenu un éditeur puissant encore largement utilisé aujourd'hui.

Développement éditeurs UNIX

Python intègre la bibliothèque cryptographique formellement vérifiée HACL*

2025-04-18

Après 2,5 ans de travail, Python a intégré avec succès la bibliothèque cryptographique formellement vérifiée HACL* dans ses implémentations de hachage et HMAC. Cette mise à jour remplace l'implémentation précédente de SHA3, qui contenait une vulnérabilité CVE, et couvre plusieurs algorithmes, notamment Blake2, SHA3 et HMAC, améliorant ainsi considérablement la sécurité de Python. Le projet a surmonté les défis liés à la mise en œuvre des API de streaming et à la construction du système, et a également implémenté la gestion des échecs d'allocation de mémoire. Cela démontre le potentiel de la vérification formelle dans les projets du monde réel à grande échelle.

Développement

Good Karma Kit : faites don de votre puissance de calcul inutilisée pour une bonne cause

2025-04-18

Le Good Karma Kit est un projet Docker Compose qui utilise les ressources CPU, disque et bande passante inutilisées des serveurs pour contribuer à la puissance de calcul de plus de dix projets d'intérêt public. Il inclut des projets de réseau comme Tor et i2p, des projets de calcul distribué tels que BOINC et Folding@home, des projets d'archivage Internet comme ArchiveBox et Kiwix, et des projets de stockage distribué comme IPFS et Storj. Les utilisateurs peuvent choisir les projets auxquels ils souhaitent participer et ajuster l'allocation des ressources. Le projet vise à mettre les ressources inactives au service de causes bénéfiques, en proposant des classements pour encourager la participation. Certains projets sont à but non lucratif, tandis que d'autres offrent des récompenses en cryptomonnaies.

Développement Calcul Distribué

Diagrammes UML déconstruisant l'exemple d'expédition de carga DDD d'Evans

2025-04-18
Diagrammes UML déconstruisant l'exemple d'expédition de carga DDD d'Evans

Ce projet visualise l'exemple d'expédition de carga DDD du livre d'Eric Evans à l'aide de diagrammes UML. Générées à partir du projet dddsample-core de GitHub, ces diagrammes - incluant les diagrammes de classe, de séquence, d'objet et de communication - éclairent l'architecture et le comportement du système, montrant l'interaction entre les composants et la structure du modèle de domaine. Un graphe orienté, créé avec Astah Professional, clarifie davantage les relations entre les éléments. Cette ressource fournit une compréhension pratique et visuelle des principes DDD en action.

Loglan'82 : Un langage de programmation pour la programmation objet et distribuée

2025-04-18

Loglan'82 est un langage de programmation conçu pour la programmation objet et distribuée, offrant des fonctionnalités surpassant celles d'autres langages. Son système de gestion d'objets unique, sûr et efficace, sa prise en charge des classes modulaires, des coroutines et des threads, et sa capacité à distribuer les calculs sur un réseau de machines virtuelles le distinguent. Loglan'82 propose un protocole original de communication et de synchronisation basé sur les objets, appelé « alien call », et résout des problèmes complexes de gestion d'objets, de sémantique des coroutines et d'informatique distribuée. Il convient aux programmeurs ambitieux, aux enseignants et aux chercheurs.

Développement programmation objet

Programmation GPU avec Zig : une approche moderne

2025-04-18

La programmation GPU était autrefois synonyme de lutte avec les compilateurs C++, les SDK volumineux et les chaînes d’outils spécifiques aux fournisseurs. Cela est en train de changer. Vous pouvez désormais écrire du code GPU dans des langages modernes comme Rust et Zig avec moins de couches d’abstraction. Cet article explore l’état actuel des backends GPU de Zig et leurs performances sur Vulkan, OpenCL et les ISA natives. Zig prend en charge SPIR-V, PTX et AMDGCN, permettant la génération de binaires natifs chargeables en cours d’exécution, éliminant ainsi le besoin de CUDA, HIP ou HLSL. Bien que Vulkan et OpenCL soient les principaux environnements SPIR-V, les différences entre eux affectent les taux de réussite des tests de comportement du backend SPIR-V de Zig. Les projets futurs incluent la maturation du backend SPIR-V, la fourniture de liaisons d’exécution CUDA/HIP et l’ajout de plus d’algorithmes GPU à la bibliothèque standard.

Développement

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-04-18
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 s'engage 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

Système de Contraintes Révolutionnaire : Surmonter les Défis des Médias Dynamiques

2025-04-18
Système de Contraintes Révolutionnaire : Surmonter les Défis des Médias Dynamiques

Lors de la phase deux, l’équipe a réussi à surmonter les problèmes de « flottement », d’« explosions » et de faibles performances des systèmes de contraintes. Les techniques utilisées comprenaient la propagation des valeurs connues, l’utilisation de relations linéaires pour réduire les dimensions des variables du solveur et le regroupement des contraintes en clusters résolubles indépendamment. Cela a considérablement amélioré la stabilité et les performances du système. L’équipe a testé plusieurs solveurs et optimisé le système en modifiant la façon dont les valeurs étaient représentées (par exemple, en utilisant des coordonnées polaires). Ces améliorations ont permis la construction de structures mécaniques physiquement précises et un véritable calcul bidirectionnel, jetant les bases de la création de médias dynamiques.

Attune : Hébergement sécurisé et rapide de paquets Linux

2025-04-18
Attune : Hébergement sécurisé et rapide de paquets Linux

Attune est un outil permettant de publier et d'héberger des paquets Linux de manière sécurisée, offrant des options de déploiement auto-hébergé et cloud managé. Son interface en ligne de commande effectue la signature de l'index du dépôt localement, garantissant la sécurité des clés. Les reconstructions incrémentales de l'index le rendent incroyablement rapide. Il prend actuellement en charge les dépôts APT (Debian et Ubuntu), avec plus à venir. Configurez un dépôt APT en environ 5 minutes à l'aide de Docker et de GnuPG.

Objective-C : L'héritage inattendu d'un langage polarisant

2025-04-18
Objective-C : L'héritage inattendu d'un langage polarisant

Le rêve de Leibniz d'une « characteristica universalis » se perpétue dans les langages de programmation. Ce récit relate l'expérience de l'auteur avec Objective-C, un langage verbeux et polarisant qui est devenu inopinément la base de l'écosystème Apple. Malgré les critiques dont il a fait l'objet, la syntaxe unique d'Objective-C et son rôle dans le développement initial d'iOS ont eu un impact durable, comme le partage l'auteur à travers son parcours personnel et le pouvoir surprenant de ce langage souvent négligé.

Développement

Nouvelle API ASN.1 de PyCA Cryptography : vitesse et sécurité

2025-04-18

L'équipe PyCA Cryptography développe une nouvelle API ASN.1 utilisant un analyseur pur Rust pour des performances considérablement améliorées et une réduction des risques de sécurité liés aux différences avec d'autres analyseurs ASN.1. La nouvelle API propose également une interface déclarative de type dataclasses pour une meilleure lisibilité et maintenabilité du code. Cela répond aux lacunes des bibliothèques ASN.1 Python existantes en termes de performances et de sécurité, et offre un meilleur support aux écosystèmes émergents comme Sigstore.

Développement

Écrire du code C, C++ et assembleur moins lent : un guide pratique pour les performances

2025-04-18
Écrire du code C, C++ et assembleur moins lent : un guide pratique pour les performances

Ce référentiel propose des exemples pratiques d’écriture de code C et C++ efficace, couvrant des sujets allant des micro-noyaux aux algorithmes parallèles. Il montre comment tirer parti des fonctionnalités de C++20 et des optimisations du compilateur pour améliorer les performances (par exemple, accélérer les calculs trigonométriques de 40 x), et explore les meilleures pratiques pour éviter les goulots d’étranglement des performances, telles que la gestion efficace de JSON, l’utilisation de conteneurs associatifs STL et le choix du modèle de programmation parallèle approprié. Le projet inclut également des exemples de code pour l’accélération matérielle utilisant l’assembleur, CUDA et FPGA, dans le but d’aider les développeurs à écrire du code plus rapide et plus sûr.

Développement Programmation parallèle

Le bot d'un éditeur de code IA invente une politique, entraînant des annulations d'abonnement

2025-04-18
Le bot d'un éditeur de code IA invente une politique, entraînant des annulations d'abonnement

Un éditeur de code basé sur l'IA, Cursor, a récemment subi des critiques après que son chatbot IA ait inventé une politique de l'entreprise. Un développeur a découvert que le changement d'appareil le déconnectait instantanément de Cursor. En contactant le support, un agent IA nommé "Sam" a affirmé qu'il s'agissait d'une nouvelle fonctionnalité de sécurité. Cependant, une telle politique n'existait pas ; l'IA a inventé l'information, entraînant des plaintes d'utilisateurs et des annulations d'abonnement. Cela souligne les risques de déployer des systèmes IA dans des rôles orientés client sans surveillance humaine, pouvant entraîner des clients frustrés, une confiance endommagée et des pertes financières.

Développement

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-04-18
arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

arXivLabs est un cadre 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 utilisateur. arXiv s'engage 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

Rafale de mises à jour du moteur Defold : nouvelles versions et améliorations de la compilation dans le cloud

2025-04-18
Rafale de mises à jour du moteur Defold : nouvelles versions et améliorations de la compilation dans le cloud

Le moteur de jeu Defold a reçu une série de mises à jour fin 2024 et début 2025, avec les versions 1.9.6, 1.9.7 et 1.9.8. Une vidéo de démonstration des jeux impressionnants créés avec Defold en 2024 a également été publiée. Au-delà des nouvelles versions, Defold a introduit une préversion technique de son API de scripting d'éditeur pour la création d'interfaces utilisateur interactives et a considérablement amélioré ses serveurs de compilation dans le cloud pour simplifier le développement et la maintenance. Ces améliorations visent à accroître la convivialité et l'efficacité de Defold, offrant aux développeurs des outils plus puissants pour le développement de jeux.

Développement Mises à jour

Jai : Un langage de programmation moderne pour développeurs expérimentés

2025-04-18

Un développeur chevronné, ayant travaillé avec de nombreux langages, partage son expérience avec Jai, un langage performant conçu pour les développeurs expérimentés. L'auteur met en avant les points forts de Jai : une syntaxe simple, une compilation extrêmement rapide, de puissantes capacités de métaprogrammation et une compatibilité multiplateforme. Il discute de l'utilisation de Jai en environnement de production et explique pourquoi il reste en version bêta fermée. Globalement, l'auteur salue Jai comme un langage moderne qui améliore l'efficacité des développeurs et permet la création de logiciels de haute qualité et performants.

Développement

Pourquoi j'ai abandonné Sentry auto-hébergé : 16 Go de RAM et une installation complexe ont été les facteurs décisifs

2025-04-18
Pourquoi j'ai abandonné Sentry auto-hébergé : 16 Go de RAM et une installation complexe ont été les facteurs décisifs

L'auteur relate son expérience en abandonnant Sentry auto-hébergé. Initialement, en raison des exigences professionnelles, il a réussi à auto-héberger Sentry. Des années plus tard, en essayant de configurer Sentry auto-hébergé pour un collègue, il a rencontré de nombreux avertissements dans la documentation de Sentry concernant les risques de l'auto-hébergement, ainsi que des exigences de ressources importantes (au moins 16 Go de RAM et plusieurs cœurs). Cela s'est avéré coûteux et incroyablement difficile à maintenir, le processus d'installation impliquant des centaines de lignes de scripts. Les commentaires des utilisateurs en ligne ont confirmé la difficulté de maintenir Sentry auto-hébergé. Finalement, l'auteur a abandonné l'auto-hébergement de Sentry et a décidé de développer une alternative plus légère.

Développement

60 000 lignes de Lua plus tard : Réflexion d'un développeur de jeux

2025-04-18
60 000 lignes de Lua plus tard : Réflexion d'un développeur de jeux

Oleg de Luden.io interviewe Ivan Trusov, programmeur principal du jeu Craftomation 101 basé sur Lua (~60 000 lignes de code développé avec le moteur Defold), sur son expérience. Ivan discute des avantages et des inconvénients de Lua, tels que l'absence d'opérateurs d'incrémentation et de classes, et les index de tableau commençant à 1. Malgré cela, il apprécie la simplicité et la flexibilité de Lua, en particulier ses puissantes « tables », mais remarque que des erreurs d'exécution peuvent survenir dans les grands projets en raison de son typage dynamique. Il compare Lua à Python et C++, et discute de l'utilisation potentielle d'outils d'analyse statique et des mises à jour possibles de Lua (comme Luau). En fin de compte, il constate que Lua fonctionne bien dans Defold, mais pour le prochain projet, il pourrait envisager un langage à typage plus strict pour détecter les erreurs à la compilation.

Développement

Buffer partagé de PostgreSQL : plus de RAM, plus de problèmes ?

2025-04-18
Buffer partagé de PostgreSQL : plus de RAM, plus de problèmes ?

Les machines disposant de centaines de gigaoctets de RAM sont monnaie courante de nos jours. Le buffer partagé de PostgreSQL peut considérablement améliorer les performances, mais son fonctionnement est moins intuitif qu'on pourrait le croire. Cet article examine la stratégie de remplacement de buffer de PostgreSQL, y compris l'algorithme de balayage d'horloge et les stratégies de buffer annulaire. Bien qu'un buffer partagé plus grand puisse sembler bénéfique, les performances peuvent se dégrader au-delà d'un certain seuil (par exemple, 64 Go) car l'algorithme met plus de temps à rechercher des blocs remplaçables. L'article conseille de dimensionner soigneusement le buffer partagé en fonction de la taille des données et de la mémoire du système, en évitant les configurations excessivement grandes qui peuvent créer des goulots d'étranglement.

Développement

L'IA nous transforme en colle : L'anxiété d'un ingénieur logiciel

2025-04-17

Le progrès rapide de l'IA, en particulier des grands modèles de langage, change radicalement le travail quotidien des ingénieurs logiciels. L'auteur, un ingénieur logiciel, a constaté que l'IA peut résoudre rapidement des bogues complexes et refactoriser le code, augmentant l'efficacité mais lui enlevant le plaisir de résoudre des problèmes complexes et de comprendre profondément l'architecture du système. L'auteur prévoit que l'IA excellera dans la plupart des tâches de « pensée linéaire profonde », laissant les humains comme la « colle » qui relie l'IA au monde réel, gérant des tâches routinières telles que la configuration de services cloud ou le câblage de matériel. Il exprime son anxiété quant à l'avenir, craignant que de nombreux emplois disparaissent et que même les nouvelles opportunités impliquent probablement un travail de « colle » répétitif et insatisfaisant.

Développement

Mux : démocratiser la vidéo pour les développeurs

2025-04-17
Mux : démocratiser la vidéo pour les développeurs

Mux construit une infrastructure vidéo pour les développeurs, visant à démocratiser la vidéo en s'attaquant aux problèmes complexes du codage vidéo, du streaming (Mux Video) et de la surveillance (Mux Data). Soutenue par des investisseurs de premier plan comme Coatue et Accel, et bénéficiant d'une équipe expérimentée provenant de Google, YouTube et Twitch, Mux sert une clientèle diversifiée, allant des startups aux entreprises établies comme Reddit et Vimeo. Ils organisent également Demuxed, la principale conférence pour les ingénieurs vidéo.

Gestion sécurisée des variables d'environnement avec des fichiers chiffrés GPG

2025-04-17
Gestion sécurisée des variables d'environnement avec des fichiers chiffrés GPG

Cet outil shell fournit un moyen sécurisé de gérer les variables d'environnement à l'aide de fichiers chiffrés GPG. Il traite le problème courant des outils en ligne de commande qui nécessitent des variables d'environnement contenant des informations sensibles stockées dans des fichiers shell non chiffrés. L'outil permet aux utilisateurs de lire des secrets à partir de fichiers chiffrés et de basculer facilement entre différents comptes. Il prend en charge les connexions imbriquées, met à jour la variable d'environnement `SECRET_LOGIN` et modifie l'invite du shell pour afficher la connexion actuelle. La complétion automatique pour les noms de fichiers disponibles est également incluse.

Développement Outil shell Chiffrement GPG

Val : Un langage de calculatrice à précision arbitraire

2025-04-17
Val : Un langage de calculatrice à précision arbitraire

Val est un langage de calculatrice simple à précision arbitraire, construit sur chumsky et ariadne. Il fonctionne sous Linux, MacOS, BSD et Windows. L'installation est facile via Cargo, ou des binaires précompilés sont disponibles. Val possède une interface en ligne de commande et un REPL avec mise en évidence de la syntaxe, historique persistant et édition de style emacs. Le langage prend en charge les fonctions, les boucles, les instructions conditionnelles et un ensemble riche de fonctions intégrées couvrant les opérations arithmétiques, logiques, de comparaison et de collections. Les types de données incluent les nombres, les booléens, les chaînes et les listes.

Développement

Apprivoiser les événements récurrents iCalendar avec des fonctions de distance

2025-04-17
Apprivoiser les événements récurrents iCalendar avec des fonctions de distance

L'auteur a rencontré un défi en gérant les événements récurrents lors de l'implémentation d'une bibliothèque pour traiter les fichiers iCalendar. iCalendar utilise des règles complexes pour définir les événements récurrents, et les implémentations traditionnelles impliquent généralement d'écrire beaucoup de logique spécifique pour différentes fréquences et paramètres. L'auteur a adopté une approche différente, considérant les règles de récurrence comme des requêtes SQL et empruntant des idées des fonctions de distance signées (SDF) en infographie, représentant les occurrences d'événements à l'aide de fonctions de distance. Cette méthode décompose les règles complexes en fonctions de distance simples, calculant itérativement les heures d'occurrence des événements pour éviter de nombreux jugements conditionnels, ce qui donne un code plus propre et plus facile à maintenir. Bien que l'implémentation initiale n'était pas très efficace, l'auteur l'a optimisée pour gérer les règles de récurrence complexes en millisecondes.

(pwy.io)

TypeScript : Paramètres objet vs. paramètres individuels

2025-04-17

Lors de l'écriture de fonctions en TypeScript, vous pouvez passer des arguments individuellement ou les regrouper dans un objet. Cet article soutient que les paramètres objet sont supérieurs. Les paramètres individuels conduisent à l'ambiguïté et à des problèmes de maintenance à mesure que le nombre de paramètres augmente. Les paramètres objet, comme `{firstName: "John", lastName: "Doe", age: 28, isActive: true}`, offrent clarté, auto-documentation et tirent parti des fonctionnalités d'autocomplétion et de sécurité de type de TypeScript.

Développement paramètres de fonction

Prise en charge de l'écriture et des transactions dans les tables virtuelles SQLite

2025-04-17

Cet article examine en détail l'implémentation de la prise en charge de l'écriture et des transactions dans les tables virtuelles SQLite. En implémentant des hooks tels que xUpdate, xBegin, xSync, xCommit et xRollback, les tables virtuelles peuvent prendre en charge les opérations d'écriture et garantir l'intégrité transactionnelle. L'article explique comment les mécanismes de journal de restauration et de super-journal de SQLite coordonnent les validations atomiques dans les scénarios de base de données unique et multiple, et comment les tables virtuelles participent à ce protocole de validation en deux phases. L'auteur souligne que la durabilité doit être gérée dans xSync, tandis que xCommit et xRollback ne doivent effectuer que des opérations de nettoyage idempotentes, en évitant toute opération susceptible d'échouer.

Développement Tables Virtuelles
1 2 109 110 111 113 115 116 117 214 215