Category: Développement

AgentAPI : Une API HTTP unifiée pour contrôler les agents de codage

2025-04-17
AgentAPI : Une API HTTP unifiée pour contrôler les agents de codage

AgentAPI est une puissante API HTTP conçue pour contrôler les agents d'IA de codage tels que Claude Code, Goose, Aider et Codex. Elle fournit une interface de chat unifiée, permettant l'interaction via de simples appels d'API. Les utilisateurs peuvent même construire un serveur MCP où un agent contrôle un autre. AgentAPI gère automatiquement la sortie du terminal, supprime les informations redondantes et l'analyse en messages individuels, simplifiant ainsi l'interaction. Bien que les LLM puissent sortir des SDK officiels à l'avenir, AgentAPI vise à être un adaptateur universel, permettant aux développeurs de basculer facilement entre les agents d'IA de codage.

Développement

Ubuntu 25.04 : Plucky Puffin s’envole avec des améliorations de performances et de sécurité

2025-04-17
Ubuntu 25.04 : Plucky Puffin s’envole avec des améliorations de performances et de sécurité

Canonical a publié Ubuntu 25.04, nommé « Plucky Puffin », qui inclut GNOME 48, une expérience d’installation et de démarrage améliorée, et un nouveau « devpack » pour le framework Spring. Cette version offre des améliorations de performances pour les charges de travail d’IA sur les GPU Intel et la prise en charge du calcul confidentiel utilisant AMD SEV-SNP. Le noyau Linux 6.14 comprend une planification améliorée et un nouveau pilote NTSYNC pour de meilleures performances des jeux Windows sur Wine et Proton. Ubuntu 25.04 inclut également les dernières chaînes d’outils, une gestion améliorée et des contrôles réseau, ainsi qu’une prise en charge étendue des processeurs Intel Core Ultra et du matériel ARM64.

Développement

Serveur MCP pour exécuter du code Python dans un sandbox

2025-04-17
Serveur MCP pour exécuter du code Python dans un sandbox

Cet article présente un serveur Model Context Protocol (MCP) qui exécute du code Python dans un bac à sable (sandbox) à l'aide de Pyodide dans Deno, offrant ainsi une isolation du système d'exploitation. Le serveur prend en charge plusieurs modes : entrée/sortie standard (stdio), événements envoyés par le serveur (SSE) et un mode de préchauffement pour les tests et le déploiement. Un exemple utilisant PydanticAI montre comment interagir avec les LLM via un agent utilisant ce serveur MCP.

Développement

Vulnérabilité critique du serveur SSH Erlang/OTP permettant l'exécution de code à distance non authentifiée

2025-04-17

Une vulnérabilité critique (CVE-2025-32433) a été découverte dans le serveur SSH Erlang/OTP, permettant l'exécution de code à distance (RCE) non authentifiée. Les versions antérieures à OTP-27.3.3, OTP-26.2.5.11 et OTP-25.3.2.20 sont affectées. Les attaquants peuvent exploiter une faille dans le traitement des messages du protocole SSH pour obtenir un accès non autorisé et exécuter des commandes arbitraires sans identifiants. Des correctifs sont disponibles ; mettez à jour vers OTP-27.3.3, OTP-26.2.5.11 ou OTP-25.3.2.20 ou une version ultérieure.

Développement

Plongez au cœur de 3FS : le système de fichiers distribué open source de DeepSeek

2025-04-17

DeepSeek a publié 3FS (Fire-Flyer File System), un système de fichiers distribué. Cet article explique les systèmes de fichiers distribués et l’architecture de 3FS. 3FS se compose de quatre types de nœuds : Meta (gestion des métadonnées), Mgmtd (serveur de gestion), Stockage et Client. Il utilise le protocole CRAQ (Chain Replication with Apportioned Queries) pour une cohérence forte. L’article analyse les caractéristiques de performance de 3FS et décrit les orientations futures des tests de performance et des améliorations.

Développement

go-mcp : Un SDK Go Typé pour le Développement de Serveurs MCP

2025-04-17
go-mcp : Un SDK Go Typé pour le Développement de Serveurs MCP

go-mcp est un SDK Go qui simplifie le développement de serveurs MCP (Model Context Protocol). Son interface intuitive et typée assure un processus agile. La génération de code garantit le typage statique pour les outils et les paramètres de prompt, détectant les erreurs à la compilation. L'API claire et le design convivial facilitent l'apprentissage et l'utilisation. Le projet inclut des exemples et une documentation complets, prenant en charge des fonctionnalités telles que les outils, les prompts, la gestion des ressources et la journalisation. Bien que l'ajout dynamique d'outils ne soit pas actuellement supporté, le développement futur inclura le traitement par lots, le transport HTTP transmissible et les notifications de progression. Le projet est sous licence MIT.

Développement

Temps de compilation Rust : de 25 minutes à 2 minutes

2025-04-17
Temps de compilation Rust : de 25 minutes à 2 minutes

L’équipe Feldera a rencontré des temps de compilation excessivement longs lors de la compilation de code Rust généré à partir de SQL à grande échelle. Un programme SQL de 8 562 lignes traduit en ~100 000 lignes de Rust prenait 25 minutes à compiler. Des techniques telles que l’effacement de type et la déduplication de code ont produit des améliorations minimes. La solution est venue en divisant le code Rust généré en 1 106 crates plus petits, permettant une compilation parallèle et réduisant considérablement le temps de compilation à moins de 2 minutes, en utilisant pleinement les processeurs multinœuds.

Configuration d'un environnement de développement Linux sur Apple Silicon avec UTM

2025-04-17
Configuration d'un environnement de développement Linux sur Apple Silicon avec UTM

Ce guide explique comment configurer un environnement de développement Linux sur les Macs équipés de la puce Apple Silicon à l'aide de machines virtuelles UTM. Après avoir installé UTM et cdrtools via Homebrew, un script cloud-init automatise l'installation d'outils de développement essentiels tels que Git, Docker et la configuration de l'accès SSH. L'article détaille la création de la VM, l'importation des images, la configuration du script cloud-init et la suppression des lecteurs temporaires, pour obtenir un environnement de développement Linux fonctionnel.

Développement

Programmation différentiable : une plongée profonde à partir des principes fondamentaux

2025-04-17

Cet article fournit une explication complète de la programmation différentiable, en commençant par la définition des dérivées en calcul et en progressant vers des concepts tels que les gradients, les dérivées directionnelles et les matrices jacobiennes. Il détaille trois méthodes de différenciation : la différenciation numérique, la différenciation symbolique et la différenciation automatique (modes avant et arrière), en comparant leurs forces et leurs faiblesses. Enfin, il montre comment la différenciation automatique en mode arrière, combinée à la descente de gradient, peut résoudre des problèmes d’optimisation du monde réel à l’aide d’un exemple de débrouillage d’image.

arXivLabs : Projets expérimentaux avec des collaborateurs communautaires

2025-04-17
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 utilisateur. 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

Au-delà de NP : un problème de complexité plus intuitif

2025-04-17
Au-delà de NP : un problème de complexité plus intuitif

L'auteur remet en question l'utilisation du problème de l'arrêt comme exemple canonique d'un problème plus difficile que NP-complet, arguant qu'il est confus et peu intuitif. Bien qu'indécidable, la vérification d'une réponse « oui » au problème de l'arrêt peut être effectuée en exécutant le programme pendant un nombre fini d'étapes. Une alternative plus facile à comprendre est présentée : déplacer une pièce sur une grille infinie pour atteindre un point cible. Ce problème est PSPACE-complet en dimensions inférieures, mais sa complexité explose avec l'augmentation des dimensions, atteignant finalement la complétude d'ACKERMANN, démontrant visuellement une complexité bien au-delà des problèmes NP.

Formance : Réinventer l'interaction entre développeurs et finances

2025-04-17
Formance : Réinventer l'interaction entre développeurs et finances

Formance a pour mission de redéfinir la manière dont les développeurs interagissent avec l'argent en tant que primitif de première classe et composent avec la finance. Actuellement caché dans des infrastructures autorisées et verrouillées par les fournisseurs, l'argent doit être reconfiguré pour donner aux entreprises axées sur les produits la capacité de créer des applications financières innovantes. Avec la plateforme Formance, nous mettons des primitives agnostiques entre les mains des ingénieurs et de leurs équipes. Ces primitives sont disponibles sous forme de packages open source et peuvent être connectées au partenaire financier de votre choix. Formance est nativement globale et sert des entreprises du monde entier, 24h/24 et 7j/7, pour construire et mettre à l'échelle leurs applications financières.

Développement

Pourquoi les Frameworks sont Mauvais : Plaidoyer pour les Bibliothèques

2025-04-17
Pourquoi les Frameworks sont Mauvais : Plaidoyer pour les Bibliothèques

Cet article explore les principes de conception de bibliothèques fonctionnelles, en se concentrant sur la composition et l'évitement des rappels. L'auteur soutient que les frameworks sont difficiles à composer, à explorer et à tester, et qu'ils restreignent la structure du code. En revanche, les bibliothèques offrent un meilleur contrôle au développeur, encouragent l'exploration interactive et prennent en charge plusieurs niveaux d'abstraction. En utilisant un moteur de jeu comme exemple, l'article montre comment les workflows asynchrones et la programmation événementielle peuvent atténuer les inconvénients des rappels. Des exemples comme FsLab illustrent la composabilité des bibliothèques. Finalement, l'auteur préconise la construction de bibliothèques composables et faciles à explorer au lieu de frameworks rigides.

Trésors cachés dans stdint.h de C : au-delà de limits.h pour les définitions de types entiers

2025-04-17
Trésors cachés dans stdint.h de C : au-delà de limits.h pour les définitions de types entiers

Cet article de blog relate la découverte inattendue de l’auteur concernant les définitions de types entiers en apprenant le C. Au début du C, la taille des entiers variait considérablement selon les architectures, ce qui a conduit les fournisseurs de compilateurs à créer des définitions de types personnalisées, telles que types.h de Microware. Plus tard, la norme ANSI C a introduit stdint.h, fournissant des définitions de types standard comme uint32_t et des définitions de valeurs maximales comme INT_MAX de limits.h. Cependant, l’auteur a récemment découvert que stdint.h contient également des définitions telles que INT8_MAX et UINT32_MAX, qui peuvent être utilisées directement pour définir les valeurs maximale et minimale des types entiers de tailles spécifiques, rendant le code plus portable et évitant les erreurs dues aux différences de plateforme.

Développement types entiers

La concurrence en Haskell : échapper à l'enfer des threads

2025-04-17

Cet article relate le parcours de l'auteur, du développement de systèmes embarqués en C/C++/Rust à Haskell, en soulignant les avantages de Haskell dans la programmation concurrente. Haskell utilise des threads verts et des E/S pilotées par événements, évitant les complexités des modèles de threads traditionnels. Grâce au package `async` et à la STM (Software Transactional Memory), Haskell offre une approche plus propre et plus sûre pour les tâches concurrentes. Des fonctions comme `concurrently`, `race` et `mapConcurrently`, ainsi que des structures de données telles que `TVar` et `TBQueue`, simplifient les opérations concurrentes et évitent les problèmes courants de concurrence, tels que les blocages et les conditions de concurrence.

Développement

Bibliothèque de fonctions trigonométriques en Nix pur : abandon de Python pour des performances améliorées

2025-04-17
Bibliothèque de fonctions trigonométriques en Nix pur : abandon de Python pour des performances améliorées

Pour calculer la latence réseau entre ses 17 nœuds VPS sans tests ping manuels, l’auteur a tenté d’approximer la latence en calculant la distance physique entre les coordonnées des nœuds à l’aide de Nix. Comme les fonctions trigonométriques natives manquaient dans Nix, il a implémenté les fonctions sin, cos, tan, arctan et sqrt en Nix pur et a utilisé la formule de Haversine pour calculer les distances et les latences. Ce projet évite les dépendances externes telles que Python, améliorant ainsi l’efficacité et la reproductibilité.

Développement Trigonométrie

Classes de Types en Kotlin et Validation de Données : Une Approche Basée sur Arrow

2025-04-17
Classes de Types en Kotlin et Validation de Données : Une Approche Basée sur Arrow

Cet article explore l'utilisation des classes de types en Kotlin pour la validation de données. Prenant l'exemple d'un système de validation de portefeuilles d'utilisateurs pour une startup Fintech, l'auteur montre comment construire un framework de validation générique et réutilisable à l'aide de la bibliothèque Arrow Kt et des récepteurs de contexte de Kotlin. L'article compare les approches orientées objet et les classes de types, soulignant les avantages des classes de types pour la maintenabilité et l'extensibilité, et montre comment utiliser le type `EitherNel` d'Arrow pour la gestion fonctionnelle des erreurs. La fonction `zipOrAccumulate` est détaillée.

Au revoir Spotify ! Mon voyage vers l’auto-hébergement de ma musique

2025-04-17
Au revoir Spotify ! Mon voyage vers l’auto-hébergement de ma musique

Fatigué de Spotify, je me suis lancé à la recherche du remplaçant idéal. J’ai essayé Winamp, foobar2000, et j’ai même créé mon propre lecteur de musique web, avant de me décider pour Jellyfin. Jellyfin est un serveur multimédia auto-hébergé qui me permet d’accéder à ma bibliothèque musicale à tout moment et en tout lieu, sans dépendre des services de streaming. Bien qu’il nécessite une certaine configuration technique, c’est étonnamment facile, même sur un vieux ordinateur. Combiné à des applications mobiles, l’écoute hors ligne est un jeu d’enfant. Cela m’a non seulement donné une autonomie numérique, mais a également ouvert la voie à l’auto-hébergement d’autres applications, comme Immich pour la gestion de photos.

Développement lecteur de musique

Paradoxe de compression ZFS : blocs logiques vs. blocs physiques

2025-04-17

Un fichier zéro de 256 Ko créé avec `dd` sur un système de fichiers ZFS avec compression activée présente un comportement étrange : `ls -l` affiche sa taille comme étant de 256 Ko, mais `ls -s` et `ls -slh` affichent une taille beaucoup plus petite, presque nulle. Cela est dû à la compression efficace de ZFS, qui se traduit par un nombre minimal de blocs physiques. L’article explore trois manières de mesurer la taille d’un fichier : la taille logique (en octets), le nombre de blocs physiques et le nombre de blocs logiques. Il souligne que le champ `st_blocks` de POSIX ne précise pas quelle taille doit être rapportée, ce qui peut entraîner des modifications de la valeur de `st_blocks` lors du déplacement de fichiers entre systèmes de fichiers, et même une expansion potentielle de la taille du fichier dépassant la capacité du nouveau système de fichiers.

Développement

Moteurs de requête de bases de données : Push vs. Pull

2025-04-16

Cet article explore les différences entre les moteurs de requête de bases de données basés sur le push et le pull. Les systèmes basés sur le pull, similaires au modèle itérateur, sont pilotés par le consommateur, où les données sont récupérées à la demande. Les systèmes basés sur le push, à l'inverse, sont pilotés par le producteur, poussant activement les données vers les opérateurs en aval. Les systèmes basés sur le push excellent dans la gestion des plans de requête en forme de DAG (par exemple, la clause WITH de SQL) grâce à leur capacité à pousser efficacement les données vers plusieurs opérateurs en aval, évitant les calculs redondants et la mise en mémoire tampon inutile. Cependant, les systèmes basés sur le pull offrent des avantages lorsqu'il s'agit de gérer certains algorithmes (comme les jointures de fusion et les clauses LIMIT). L'article examine également l'efficacité du cache, la simplicité du code et l'adéquation de chaque modèle dans différents scénarios, concluant qu'aucun n'est universellement supérieur, le choix dépendant des exigences spécifiques.

Développement moteur de requête

Plandex : Agent de codage IA pour les grands projets

2025-04-16
Plandex : Agent de codage IA pour les grands projets

Plandex est un outil de développement IA basé sur un terminal conçu pour gérer les grandes tâches de codage qui couvrent plusieurs étapes et de nombreux fichiers. Traitant jusqu'à 2 millions de jetons de contexte directement (~100 000 par fichier), il peut indexer des répertoires avec 20 millions de jetons ou plus à l'aide de cartes de projet tree-sitter. Un bac à sable de révision de diff cumulatif maintient les modifications générées par l'IA séparées jusqu'à ce qu'elles soient prêtes, et l'exécution des commandes est contrôlée pour faciliter la restauration et le débogage. Plandex combine des modèles d'Anthropic, OpenAI, Google et de fournisseurs open source, offrant à la fois une autonomie totale et un contrôle granulaire, ce qui le rend résistant aux complexités des grands projets. Il dispose d'un mode de chat conscient du projet, d'une intégration Git et d'une interface CLI conviviale pour les développeurs.

Développement grands projets

Optimisation de programmes : quatre approches avant de réécrire

2025-04-16

L’exécution lente des programmes est un problème courant pour les programmeurs. L’auteur, s’appuyant sur des années d’expérience en optimisation, présente quatre approches : 1. Utiliser un meilleur algorithme ; 2. Utiliser une meilleure structure de données ; 3. Utiliser un système de bas niveau ; 4. Accepter une solution moins précise. L’article utilise le tri à bulles et le tri par sélection comme exemples pour illustrer l’importance du choix des algorithmes, en soulignant la nécessité de prendre en compte des facteurs pratiques lors du choix des structures de données et des langages de programmation. L’auteur met en garde contre l’optimisation prématurée et souligne l’importance d’un profilage rigoureux avant de tenter une optimisation.

Codex : Un agent de codage léger pour votre terminal

2025-04-16
Codex : Un agent de codage léger pour votre terminal

Codex est un agent de codage léger qui s'exécute dans votre terminal, utilisant l'API OpenAI pour un raisonnement de code au niveau de ChatGPT. Il offre des modes interactifs et non interactifs, automatisant la complétion du code, l'exécution, l'installation des dépendances et même la génération de tests unitaires. Un bac à sable robuste assure la sécurité. Les utilisateurs peuvent personnaliser les instructions et les modes d'approbation, gérant des tâches allant d'explications de code simples à des refactorisations complexes. Compatible avec plusieurs systèmes d'exploitation et open source pour les contributions de la communauté, Codex simplifie les flux de travail de développement.

Développement

Licence Llama 3.3 : respectez-vous vraiment les termes ?

2025-04-16
Licence Llama 3.3 : respectez-vous vraiment les termes ?

Commercialisé comme open-source, le modèle Llama 3.3 de Meta est pourtant soumis à une licence contenant des restrictions que de nombreux développeurs ignorent. L’article souligne l’obligation d’afficher clairement « Built with Llama » lors de la distribution du modèle ou de ses dérivés, et de préfixer le nom des modèles dérivés par « Llama- ». De plus, la politique d’utilisation acceptable exige la divulgation des risques connus du système d’IA, tels que les biais ou les inexactitudes, aux utilisateurs finaux. L’auteur incite les développeurs à lire attentivement la licence et à décider s’ils souhaitent s’y conformer ou non, afin d’éviter d’éventuels problèmes juridiques.

Codex CLI d'OpenAI : un agent de codage IA local

2025-04-16
Codex CLI d'OpenAI : un agent de codage IA local

OpenAI a lancé Codex CLI, un agent de codage local s'exécutant depuis votre terminal. Connectant les modèles d'OpenAI (y compris les nouveaux o3 et o4-mini) au code et aux tâches locaux, Codex CLI permet à l'IA d'écrire, d'éditer du code et d'effectuer des actions comme le déplacement de fichiers. Ceci représente une étape vers la vision d'OpenAI d'un « ingénieur logiciel agent ». Open source et léger, Codex CLI est soutenu par un programme de subventions API d'un million de dollars pour les projets de développement logiciel. Bien que les outils de codage IA présentent des risques inhérents, Codex CLI offre une nouvelle approche de la programmation assistée par IA.

Développement

RakuAST : Une réécriture herculéenne d'un frontend de compilateur

2025-04-16

Le projet RakuAST a entrepris une réécriture complète et une refonte du frontend du compilateur du langage de programmation Raku. L'auteur a abordé le projet en corrigeant systématiquement les tests d'échec des spécifications, un par un. Cela a impliqué de traiter les complexités de la syntaxe de Raku, y compris les méthodes privées, les méta-méthodes et les appels de méthodes hyper. Le plus grand obstacle a été le timing et le séquençage complexes nécessaires au sein du processus de compilation de Raku, nécessitant un contrôle précis de l'ordre de compilation des composants. Plus de 900 commits plus tard, le projet a atteint avec succès son objectif principal. De plus, il a initialisé le compilateur, permettant l'auto-compilation, ce qui a présenté d'autres défis dans la gestion des dépendances circulaires et les complexités de la vaste bibliothèque standard. Le succès du projet a été facilité par les contributions de plusieurs membres de la communauté.

Développement

Résolution de la crise CVE : certification professionnelle et signalement obligatoire des vulnérabilités

2025-04-16

L'expiration imminente du contrat CVE de la MITRE a suscité une controverse, conduisant à une proposition visant à améliorer la sécurité des logiciels. Le système CVE actuel est en proie à des rapports imprécis, ce qui diminue sa valeur. L'auteur suggère un système basé sur les attributs des vulnérabilités plutôt que sur les scores, ainsi qu'une certification d'ingénieur logiciel professionnel (PSWE). L'incapacité à signaler précisément les vulnérabilités dans un délai imparti entraînerait la révocation de la licence, ce qui inciterait à signaler les problèmes. La proposition inclut le financement et la formation des futurs PSWEs, en abordant les préoccupations d'accessibilité, créant ainsi un scénario gagnant-gagnant pour la sécurité des logiciels et la durabilité des projets FOSS.

Redécouvrir l'UCSD p-System : une légende de compilation multiplateforme

2025-04-16
Redécouvrir l'UCSD p-System : une légende de compilation multiplateforme

L'auteur revient sur l'UCSD p-System, un système d'exploitation et un compilateur multiplateforme des années 1970. Il a atteint la portabilité sur diverses machines (de PDP-11 à Apple II) grâce à sa machine virtuelle p-machine. L'auteur partage ses expériences personnelles avec Apple Pascal et UCSD Pascal au lycée et prévoit de reconstruire un émulateur p-machine en Rust, pour perpétuer son héritage et résoudre les problèmes de documentation manquante et de dépendances de compilateurs obsolètes dans les outils existants.

Développement

Agents 12 facteurs : principes pour construire des applications LLM fiables

2025-04-16
Agents 12 facteurs : principes pour construire des applications LLM fiables

Cet article explore les principes de construction de logiciels fiables, évolutifs et faciles à maintenir, basés sur les LLM : les agents 12 facteurs. L’auteur soutient que les frameworks d’agents existants sont insuffisants en production, et que de nombreux « agents d’IA » sont principalement constitués de code déterministe parsemé d’étapes LLM. Il propose des principes pour construire des agents plus robustes, en soulignant une approche modulaire consistant à intégrer de petits concepts d’agents modulaires dans les produits existants, évitant ainsi les réécritures complètes inefficaces. Cet article est une lecture précieuse pour les ingénieurs et les entrepreneurs axés sur le développement d’applications d’IA.

Développement

ActorCore : Serveur sans serveur avec état fonctionnant partout

2025-04-16
ActorCore : Serveur sans serveur avec état fonctionnant partout

ActorCore est un framework TypeScript permettant de créer facilement des applications avec état, des agents d'IA, des applications collaboratives ou locales. Il élimine le besoin de bases de données et d'ORM, offrant des vitesses de lecture/écriture ultrarapides en stockant l'état sur la même machine que le calcul. Déployez sur Rivet, Cloudflare, Bun, Node.js, et plus encore. Des événements intégrés à faible latence permettent des mises à jour d'état en temps réel et la diffusion de changements. Son stockage de données en périphérie exclusif offre des interactions instantanées. Bien qu'il ne soit pas actuellement idéal pour l'OLAP, les data lakes, les bases de données de graphes et les données hautement relationnelles, il s'améliore constamment et vise à devenir la méthode universelle pour construire et mettre à l'échelle les applications serverless avec état.

Développement modèle acteur
1 2 110 111 112 114 116 117 118 214 215