Category: Développement

Vrai parallélisme avec état mutable global en Ruby

2025-03-25

Cet article explore comment atteindre un véritable parallélisme avec des structures de données concurrentes en Ruby, en surmontant la limitation des primitives intégrées de Ruby qui ne prennent pas en charge l'état mutable global pour la concurrence. L'auteur démontre une méthode pour y parvenir, nécessitant une familiarité avec Ruby, Rust et C, ainsi que quelques outils supplémentaires. Des exemples de code sont disponibles sur GitHub et nécessitent une version récente de Ruby (la branche master est recommandée pour la compilation locale), Rust et des compilateurs C.

Développement

Risque de sécurité sur GitHub Actions : la vulnérabilité des balises mutables

2025-03-25
Risque de sécurité sur GitHub Actions : la vulnérabilité des balises mutables

Une attaque récente sur l'action GitHub Actions tj-actions/changed-files a mis en évidence une faille de sécurité. En modifiant une balise Git mutable, les attaquants ont pu injecter du code malveillant et divulguer des secrets provenant des journaux de build, qui sont publics pour les référentiels publics. L'auteur partage un script shell pour auditer les actions GitHub Actions utilisées, soulignant l'importance d'utiliser des ID de commit immuables pour la sécurité. Le script analyse les fichiers YAML de workflow pour identifier et compter les actions, en privilégiant celles provenant de grandes organisations ou les scripts écrits par l'auteur lui-même plutôt que d'autres moins fiables. L'auteur préconise de privilégier les actions des grandes organisations et d'écrire des scripts personnalisés lorsque cela est possible.

Développement

Accélération x100 : Garbage collection et GPU en Python

2025-03-25
Accélération x100 : Garbage collection et GPU en Python

Cet article explique comment l’auteur a réussi à accélérer un programme Python de 100 fois grâce à des optimisations de code simples. Le programme initial utilisait NumPy pour le calcul parallèle, mais il était lent et gourmand en mémoire en raison d’une mauvaise gestion de la mémoire. En implémentant un simple mécanisme de garbage collection pour libérer les variables intermédiaires inutilisées, l’auteur a réduit le temps d’exécution de 40 secondes à 10 secondes, diminuant ainsi considérablement l’utilisation de la mémoire. Ensuite, en utilisant CuPy pour déplacer le calcul sur le GPU, le temps d’exécution a été réduit à 1,5 seconde, démontrant une amélioration spectaculaire des performances.

Jakt : Un langage de programmation système sécurisé en mémoire

2025-03-25
Jakt : Un langage de programmation système sécurisé en mémoire

Jakt est un nouveau langage de programmation système sécurisé en mémoire, actuellement transpilé en C++. Il utilise des stratégies telles que le comptage automatique des références, le typage fort et la vérification des limites pour garantir la sécurité de la mémoire, en évitant les pointeurs bruts. Jakt met l'accent sur la lisibilité du code avec un système de modules flexible et une syntaxe claire. Il prend en charge les structs, les classes, les enums, la correspondance de motifs, les génériques, la surcharge d'opérateurs et la gestion des exceptions, ainsi que des fonctionnalités puissantes au moment de la compilation, telles que l'exécution des fonctions au moment de la compilation. Bien qu'il soit encore en développement, Jakt vise à équilibrer les performances, la sécurité et la productivité des développeurs.

Développement

Macros X : L’arme secrète de génération de code du compilateur Chapel

2025-03-25

Le compilateur Chapel utilise intelligemment les macros X pour simplifier considérablement la génération de code. L’article prend pour exemples l’internement de chaînes et la hiérarchie de classes AST, montrant comment les macros X génèrent élégamment de grandes quantités de code répétitif. Cela inclut la déclaration et l’initialisation de plus de 100 variables de chaînes et la génération de code de modèle visiteur pour les nœuds AST. Les macros X y parviennent en définissant des macros dans des fichiers d’en-tête, qui sont ensuite inclus dans le code, augmentant ainsi la maintenabilité et l’évolutivité du code. Même la génération d’une hiérarchie de classes Python est facilement gérée. L’article conclut en discutant des avantages et des inconvénients de cette approche, en notant que, même si les dépendances sont plus fortes, la nature déclarative rend le code plus lisible et plus facile à maintenir.

Développement Compilateur Chapel

Polypane : Concevez, déboguez et testez des sites web en un seul endroit

2025-03-25
Polypane : Concevez, déboguez et testez des sites web en un seul endroit

Polypane est un outil de développement web puissant qui vous permet de construire, de déboguer et de tester tous les aspects de votre site web sans changer de contexte. Il prend en charge la conception adaptative, les vérifications d'accessibilité, la vérification des métadonnées et les tests de performance. Affichez tous les viewports à la fois, des écrans mobiles aux moniteurs 5K ; obtenez des commentaires instantanés sur la structure, les métadonnées et l'accessibilité ; et testez facilement différentes vues, comme les modes clair et sombre. Toutes les actions sont reflétées sur tous les appareils pour un flux de travail simplifié.

Hann : Une bibliothèque de recherche de plus proches voisins approximatifs ultrarapide pour Go

2025-03-25
Hann : Une bibliothèque de recherche de plus proches voisins approximatifs ultrarapide pour Go

Hann est une bibliothèque de recherche de plus proches voisins approximatifs (ANN) hautes performances pour Go. Elle propose diverses structures de données d'index (HNSW, PQIVF, RPT) pour des recherches de similarité efficaces dans des espaces de haute dimension, agissant comme un composant central pour les bases de données vectorielles. Boostez vos applications Go avec des capacités de recherche de similarité en mémoire rapide. Prend en charge plusieurs calculs de distance (euclidienne, Manhattan, cosinus), l'enregistrement et le chargement d'index et les opérations en bloc.

Le projet de recherche Marginalia reçoit une deuxième subvention NLNet

2025-03-25

Le projet de recherche Marginalia a reçu une deuxième subvention de NLNet ! Ce financement permettra de soutenir la majeure partie de la feuille de route du projet pour 2025. Le développement à plein temps est en cours depuis l'été 2023, et cette subvention assure un temps de développement supplémentaire et prolonge considérablement le calendrier du projet. Plus de détails à suivre.

Développement financement du projet

La revue des applications Apple : un frein pour les développeurs ?

2025-03-25
La revue des applications Apple : un frein pour les développeurs ?

Cet article critique le processus de révision de l’App Store d’Apple, arguant que son inefficacité empêche les développeurs de tirer parti des outils d’IA pour le développement et la publication rapides d’applications. Avec l’essor des outils de développement assistés par l’IA, la vitesse de développement de logiciels a considérablement augmenté, mais le processus de révision des applications d’Apple reste fastidieux, poussant les développeurs vers des plateformes alternatives comme React Native ou des déploiements dans le cloud. L’auteur suggère qu’Apple, si elle ne souhaite pas perdre ses développeurs et, par conséquent, sa position sur le marché, doit améliorer son processus de révision des applications.

Développement

Codeur Agentif Minimaliste en 200 Lignes de TypeScript

2025-03-25

Un codeur agentif minimaliste, mycoder-mini, construit à l'aide du LLM Claude 3 d'Anthropic, est implémenté en seulement 200 lignes de TypeScript. Il reçoit des invites de l'utilisateur, génère des commandes shell via Claude 3, les exécute et itère jusqu'à ce que la tâche soit terminée. Bien qu'il soit limité par l'exécution synchrone, l'absence d'intégration de navigateur et un ensemble d'outils restreint, mycoder-mini démontre clairement les principes fondamentaux de la programmation agentive, offrant un excellent point de départ pour apprendre et explorer des systèmes plus sophistiqués.

Développement Programmation Agentive

IngressNightmare : Vulnérabilités critiques affectant des milliers de clusters Kubernetes

2025-03-25
IngressNightmare : Vulnérabilités critiques affectant des milliers de clusters Kubernetes

Wiz Research a découvert une série de vulnérabilités d'exécution de code à distance non authentifiées (dénommées #IngressNightmare) dans Ingress NGINX Controller pour Kubernetes. L'exploitation permet un accès non autorisé à tous les secrets de tous les espaces de noms, pouvant mener à la prise de contrôle du cluster. Environ 43 % des environnements cloud sont vulnérables, avec plus de 6 500 clusters affectés, dont des entreprises du Fortune 500, exposant publiquement des composants vulnérables. Il est crucial d'appliquer des correctifs immédiatement. Les mesures d'atténuation incluent la mise à jour vers la dernière version d'Ingress NGINX Controller ou la désactivation du composant du contrôleur d'admission.

Le SDK Freedesktop supprime l'extension OpenH264 : litiges sur les brevets et risques de sécurité

2025-03-25
Le SDK Freedesktop supprime l'extension OpenH264 : litiges sur les brevets et risques de sécurité

Cet article détaille la suppression de l'extension OpenH264 du SDK Freedesktop. Initialement, pour résoudre les problèmes de brevets H.264, libopenh264 de Cisco a été utilisé via une extension Flatpak. Cependant, cette approche a présenté des défis : un certificat SSL invalide, des risques de sécurité et des mises à jour difficiles. Le SDK Freedesktop a intégré le décodage H.264 dans l'extension codecs-extra, qui inclut d'autres bibliothèques de codecs et s'installe automatiquement en tant qu'extension d'exécution. Cela a résolu les nombreux problèmes liés à l'extension OpenH264, réduisant la surcharge de maintenance et améliorant la sécurité.

Développement SDK Freedesktop

Reconstruire la bibliothèque standard C++ à partir de zéro : le projet Pystd

2025-03-25
Reconstruire la bibliothèque standard C++ à partir de zéro : le projet Pystd

Fatigué des temps de compilation épouvantables et de l’illisibilité de la bibliothèque standard C++ (STL), un développeur open source a décidé de créer un remplacement à partir de zéro : Pystd. En s’inspirant de la bibliothèque standard Python, il a implémenté progressivement la gestion des fichiers, la manipulation des chaînes, la validation UTF-8, les tables de hachage, les vecteurs et le tri. Le résultat ? Une application fonctionnelle en moins de 1000 lignes de code, comparable à la version STL. Pystd offre des temps de compilation considérablement plus rapides et des tailles d’exécutables plus petites. Un schéma de versionnage unique (par exemple, pystd2025) assure une stabilité ABI parfaite, facilitant les mises à jour et la maintenance future.

Développement Bibliothèque standard

L'art perdu des messages de commit : un guide pour des commits Git efficaces

2025-03-25

Cet article critique la pratique courante consistant à rédiger des messages de commit Git vagues, tels que « corriger un bogue » ou « mettre à jour le code ». Il souligne l’importance de messages de commit clairs pour la collaboration d’équipe et le débogage futur. L’article détaille un format standardisé pour les messages de commit, notamment le type (feat, fix, chore, etc.), la portée, la description courte, les points détaillés et le pied de page, avec plusieurs exemples. L’auteur encourage les développeurs à prendre l’habitude de rédiger des messages de commit de haute qualité pour créer un historique de projet clair et compréhensible.

Développement Messages de commit

Triforce : Un formateur de faisceau pour les ordinateurs portables Apple Silicon

2025-03-25
Triforce : Un formateur de faisceau pour les ordinateurs portables Apple Silicon

Triforce implémente un formateur de faisceau adaptatif à réponse de distorsion minimale et à variance minimale pour le réseau de microphones des ordinateurs portables Apple Silicon. Les réseaux de microphones d'Apple (triangle ou ligne droite) sont trop sensibles et omnidirectionnels, nécessitant une formation de faisceau pour isoler les signaux souhaités et réduire le bruit de fond. Ce projet vise à fournir un formateur de faisceau accessible, potentiellement moins performant que l'implémentation d'Apple, mais avec des dépendances minimales et ouvert aux contributions de la communauté.

Développement formation de faisceau

Vibe-Eyes : Donner la vue aux LLMs dans les jeux de navigateur

2025-03-25
Vibe-Eyes : Donner la vue aux LLMs dans les jeux de navigateur

Vibe-Eyes est un serveur MCP innovant permettant aux grands modèles de langage (LLM) de « voir » ce qui se passe dans les jeux et applications basés sur navigateur. Il utilise une architecture client-serveur : un client léger de navigateur capture le contenu du canevas et les informations de débogage, les envoyant via WebSockets à un serveur Node.js. Le serveur vectorise les images en SVG compacts, les mettant à disposition des LLMs via le protocole de contexte de modèle (MCP). Cela permet aux LLMs de « voir » l'application et de fournir une assistance de débogage riche en contexte, améliorant ainsi considérablement l'efficacité du « vibe coding ».

Développement

Il est temps d'arrêter de construire des bases de données KV

2025-03-25
Il est temps d'arrêter de construire des bases de données KV

L'auteur critique les bases de données clé-valeur pour leur simplicité excessive et leur manque de puissance expressive, ce qui les rend difficiles à utiliser. Bien que populaires auprès des fournisseurs de moteurs de stockage, les bases de données clé-valeur ne sont que des blocs de construction pour des modèles de données raisonnables, obligeant les utilisateurs à les construire à partir de zéro, souvent avec des résultats sous-optimaux. L'auteur propose un compromis : une base de données embarquée avec des enregistrements typés, séparant les schémas logiques et physiques, mais en écrivant des requêtes contre le schéma physique. Cela évite les planificateurs de requêtes complexes, prend en charge les modifications de schéma asynchrones et le changement de disposition. Cette approche équilibre l'indépendance des données avec la simplicité nécessaire aux systèmes embarqués, offrant une alternative convaincante aux simples magasins clé-valeur et aux complexités des bases de données relationnelles complètes.

Développement

Modelica : Modélisation élégante des systèmes cyber-physiques complexes

2025-03-25

Modelica est un langage de modélisation pour les systèmes cyber-physiques, prenant en charge la connexion acausale de composants régis par des équations mathématiques pour la modélisation à partir de principes premiers. Sa structure orientée objet facilite la réutilisation des modèles et simplifie la modélisation de systèmes complexes avec des composants mécaniques, électriques, électroniques, magnétiques, hydrauliques, thermiques, de contrôle, électriques ou de process. Les ressources d'apprentissage comprennent des guides en ligne, des livres et la bibliothèque standard Modelica, qui propose des conventions de codage et de nombreux modèles existants pour l'apprentissage et la pratique. L'utilisation de Modelica nécessite un outil implémentant le langage et l'accès à des bibliothèques de modèles.

MRubyD : Une machine virtuelle mruby en C# pour une intégration transparente avec les moteurs de jeu

2025-03-24
MRubyD : Une machine virtuelle mruby en C# pour une intégration transparente avec les moteurs de jeu

MRubyD est une nouvelle machine virtuelle mruby implémentée en C# pur, conçue pour une intégration transparente avec les moteurs de jeu basés sur C#. Tirant parti des fonctionnalités modernes de C#, elle offre des performances élevées et une grande extensibilité, en priorisant la compatibilité avec l'API Ruby. Actuellement en version préliminaire, certaines fonctionnalités telles que les types et les méthodes intégrés, ainsi que la visibilité privée/protégée, sont en cours de développement. Installez-la via `dotnet add package MRubyD` et explorez ses fonctionnalités grâce aux exemples fournis. Un compilateur mruby natif est nécessaire pour compiler le code source .rb en bytecode .mrb.

Développement

Bibliothèque d'autorisation flexible : RBAC, ABAC et ReBAC combinés

2025-03-24
Bibliothèque d'autorisation flexible : RBAC, ABAC et ReBAC combinés

Une bibliothèque d'autorisation flexible combinant des politiques de contrôle d'accès basées sur les rôles (RBAC), les attributs (ABAC) et les relations (ReBAC). Elle prend en charge la composition des politiques (ET, OU, NON), le traçage détaillé de l'évaluation et une API de construction fluide, avec la sécurité des types et la prise en charge asynchrone. Ajoutez facilement plusieurs politiques telles que RBAC et ABAC, et créez des politiques personnalisées à l'aide de PolicyBuilder. Des exemples illustrent RBAC, ReBAC et les combinateurs de politiques.

Développement autorisation

FaunaDB ferme ses portes et passe en open source après un financement de 27 millions de dollars

2025-03-24
FaunaDB ferme ses portes et passe en open source après un financement de 27 millions de dollars

FaunaDB, une startup de base de données qui a levé 27 millions de dollars, a annoncé la fermeture de ses services fin mai, passant à un modèle open source. L'entreprise, qui comptait 25 000 développeurs utilisant sa base de données serverless combinant puissance relationnelle et flexibilité documentaire, a invoqué le coût élevé du déploiement d'un service de base de données mondial et le contexte économique actuel pour justifier cette décision. Les clients existants seront progressivement transférés. La version open source inclura la technologie principale de la base de données, prenant en charge les documents JSON avec des fonctionnalités relationnelles comme les jointures, les clés étrangères et l'application de schémas, ainsi que son langage de requête FQL. Certains observateurs estiment qu'une approche open source dès le départ aurait pu conduire à un plus grand succès.

Développement

Vulnérabilité critique dans Kubernetes Ingress-Nginx : risque d’exécution de code arbitraire

2025-03-24

Plusieurs vulnérabilités critiques ont été découvertes dans Kubernetes Ingress-Nginx, la plus grave (CVE-2025-1974) ayant un score CVSS de 9.8, permettant l’exécution de code arbitraire et une fuite potentielle de secrets à l’échelle du cluster. Toutes les versions antérieures à la v1.11.5 et à la v1.12.1 sont affectées. Il est fortement recommandé de mettre à niveau immédiatement vers la dernière version ou de désactiver temporairement le contrôleur d’admission de validation pour réduire le risque.

Développement

Le Rêve Pastoral du Programmeur : Échapper au Code, Embrasser la Terre ?

2025-03-24

De nombreux programmeurs rêvent de poser leurs claviers et de se consacrer à un travail manuel, comme la menuiserie ou l'agriculture. Cet article explore les raisons de ce phénomène, suggérant qu'il provient de l'épuisement des pratiques de travail modernes du logiciel et d'une réévaluation de l'idéal de « l'homme qui s'est fait lui-même » dans la culture américaine. L'auteur, s'appuyant sur son expérience personnelle, analyse les complexités de ce désir, reconnaissant à la fois l'idéalisation romantique de la vie rurale et ses dures réalités. En fin de compte, l'auteur soutient que trouver un sens au travail ne réside pas uniquement dans la production économique, mais aussi dans la construction de la communauté et un esprit de service.

Développement programmeurs vie rurale

Le Défi Prospero : rendu de surfaces implicites avec des performances extrêmes

2025-03-24
Le Défi Prospero : rendu de surfaces implicites avec des performances extrêmes

Le Défi Prospero invite les développeurs à rendre une surface implicite définie par 7866 expressions mathématiques le plus rapidement possible. Les participants explorent diverses techniques d’optimisation, notamment l’analyse préalable des expressions, l’accélération Numba, le calcul sur GPU et la compilation LLVM, en utilisant des outils tels que Python, Numpy, CUDA et des compilateurs JIT. Les solutions ont atteint des temps de rendu en millisecondes et ont considérablement réduit la consommation de mémoire. Le défi encourage l’expérimentation et le partage des résultats pour faire progresser l’état de l’art du rendu des surfaces implicites.

Développement surface implicite

Construire une API de messagerie idempotente avec River

2025-03-24

Cet article montre comment construire une API de messagerie sécurisée et idempotente à l'aide de River. De nombreux services de messagerie manquent d'API garantissant l'idempotence, ce qui entraîne des courriels en double ou manquants. En tirant parti des fonctionnalités de River et en combinant des ID de compte uniques avec des clés d'idempotence, l'auteur obtient l'envoi de courriels idempotents. Même en cas d'erreurs réseau entraînant des nouvelles tentatives, l'envoi d'un courriel est garanti une seule fois. L'article détaille l'implémentation, couvrant la définition des arguments de travail, la création des travailleurs, la gestion des demandes en double et la sécurité de la correspondance des paramètres. L'API résultante est concise, efficace et prête pour la production, évitant de nombreux problèmes courants d'envoi de courriels.

Lilly : Une alternative simplifiée à Vim/Neovim

2025-03-24
Lilly : Une alternative simplifiée à Vim/Neovim

Lilly est un éditeur de texte en développement, visant à être une alternative légère à Vim et Neovim. Il se concentre sur les fonctionnalités essentielles, éliminant l'écosystème complexe des plugins Lua pour une expérience utilisateur plus simple et accessible. Une version pré-alpha est disponible, et les tests montrent zéro fuite de mémoire. Les contributions et les commentaires sont les bienvenus.

Développement alternative à Vim

Maîtriser Delphi 5 : Une rétrospective de 25 ans

2025-03-24

Marco Cantu a publié une édition annotée 2025 gratuite de son classique « Maîtriser Delphi 5 ». Le livre de 1139 pages contient 475 notes de bas de page et des dizaines de nouvelles captures d'écran comparant les anciennes et les nouvelles interfaces de l'IDE et des applications. Bien qu'une partie du code ne compile pas, la plupart des programmes fonctionnent toujours, témoignage de l'héritage durable de Delphi. Ce cadeau à la communauté célèbre le 30e anniversaire de Delphi et propose un voyage nostalgique à travers son histoire.

Développement Rétrospective

PicoRuby : Une implémentation légère de Ruby pour microcontrôleurs

2025-03-24
PicoRuby : Une implémentation légère de Ruby pour microcontrôleurs

PicoRuby est une implémentation légère de mruby avec une faible empreinte mémoire : 256 Ko de ROM et moins de 128 Ko de RAM (architecture 32 bits). Hautement portable, elle ne dépend que des bibliothèques C standard et prend en charge les microcontrôleurs tels que le Raspberry Pi Pico. Encore en développement, elle fournit une documentation de l'API, des vidéos de démonstration et des outils de compilation. La commande `rake` génère trois exécutables : `picorbc` (compile du Ruby en code de machine virtuelle mruby), `picoruby` (exécute du code Ruby directement) et `r2p2` (à usage spécifique). Développé par HASUMI Hitoshi et Monstarlab avec le soutien du programme de subventions de la Ruby Association.

Développement Ruby embarqué

Magic Todo : Liste de tâches intelligente alimentée par l'IA

2025-03-24

Magic Todo est une application de liste de tâches intelligente qui non seulement permet d'enregistrer des tâches comme une liste de tâches ordinaire, mais qui divise également automatiquement les tâches en étapes en fonction d'un niveau de piquant (🌶️) que vous définissez. Plus c'est piquant, plus la ventilation est détaillée. Elle catégorise automatiquement les tâches de niveau supérieur avec des emojis et permet de filtrer par catégorie ou par statut d'achèvement. Chaque élément propose des fonctions d'édition, de suppression, d'ajout de sous-tâches et d'estimation, avec un réarrangement par glisser-déposer. Des fonctions supplémentaires incluent la synchronisation des appareils, les options d'exportation, l'annulation/la réexécution et les actions en bloc.

LangGraph : construire un assistant de codage IA flexible et respectueux des meilleures pratiques

2025-03-24
LangGraph : construire un assistant de codage IA flexible et respectueux des meilleures pratiques

Qodo a construit un assistant de codage IA en utilisant le framework LangGraph, en équilibrant la flexibilité avec le respect des meilleures pratiques de codage. Initialement, ils utilisaient des flux prédéfinis pour les tâches de codage, mais avec l'arrivée de LLM plus puissants comme Claude Sonnet 3.5, ils sont passés à l'approche basée sur les graphes de LangGraph. LangGraph permet de construire des agents allant de totalement ouverts à des flux déterministes entièrement structurés, permettant à Qodo d'ajuster la structure de ses flux en fonction des capacités du LLM. L'API propre du framework, les composants réutilisables et la gestion d'état intégrée ont simplifié le développement et prennent en charge la persistance, les points de contrôle et les points de branchement. Bien que la documentation et les tests présentent quelques défis, LangGraph a fourni une base solide pour que Qodo construise un assistant de codage IA robuste.

Développement
1 2 130 131 132 134 136 137 138 214 215