Category: Développement

Améliorations majeures de MSVC Address Sanitizer (ASan)

2025-02-25
Améliorations majeures de MSVC Address Sanitizer (ASan)

Microsoft a considérablement amélioré la qualité de MSVC Address Sanitizer (ASan). Ils ont transféré avec succès les principales parties d'ASan vers LLVM, permettant une intégration plus rapide des améliorations de la communauté LLVM. De plus, ils ont intégré ASan dans la base de code MSVC, y compris le compilateur, l'éditeur de liens et les outils, permettant la détection des problèmes de sécurité mémoire en intégration continue. Visual Studio 2022 version 17.13 inclut de nombreux correctifs, réduisant les faux positifs, améliorant les rapports d'erreurs et gérant les scénarios multi-processus.

Développement

Xcode se connecte constamment à Internet : problèmes de confidentialité et ralentissements de la compilation

2025-02-25

Le développeur Jeff Johnson a découvert qu’Xcode se connecte fréquemment aux serveurs Apple lors de la compilation de projets, ce qui entraîne des ralentissements, notamment lors de la phase de « Collecte des données d’approvisionnement ». En désactivant les connexions à developerservices2.apple.com à l’aide de Little Snitch, il a résolu le problème de vitesse de compilation. Il a également constaté qu’Xcode se connecte à d’autres serveurs Apple, tels que devimages-cdn.apple.com et appstoreconnect.apple.com, au lancement et à l’ouverture de projets, apparemment sans nécessité et potentiellement en transmettant des informations sur le développeur à Apple. Jeff soutient qu’Xcode agit comme un mécanisme de collecte d’analyses de développeurs, compromettant ainsi la confidentialité des développeurs.

Développement Vitesse de compilation

HTTP/2 : Pourquoi cela n'a pas d'importance dans les serveurs HTTP Ruby

2025-02-25

Cet article discute de la pertinence de la prise en charge d'HTTP/2 dans les serveurs HTTP Ruby tels que Puma. L'auteur soutient que si le principal avantage d'HTTP/2, le multiplexage pour des temps de chargement de page plus rapides, est significatif sur Internet, il offre peu d'avantages sur un réseau local. La faible latence et les connexions longue durée sur un réseau local minimisent l'impact du slow start TCP. De plus, la fonctionnalité de push du serveur HTTP/2 s'est avérée préjudiciable et a été remplacée par la fonctionnalité 103 Early Hints plus élégante. L'auteur préconise de laisser la gestion d'HTTP/2 aux équilibreurs de charge ou aux proxies inversés, simplifiant ainsi le déploiement et la maintenance du serveur d'applications.

Développement Performances Réseau

LLPlayer : Un lecteur multimédia multilingue pour l'apprentissage des langues

2025-02-25

LLPlayer est un lecteur multimédia open source conçu pour l'apprentissage des langues. Il offre un affichage double des sous-titres, une génération de sous-titres en temps réel grâce à l'IA (99 langues compatibles), une traduction en temps réel (134 langues), la reconnaissance de sous-titres OCR, la prise en charge de nombreux formats vidéo et de sous-titres, une recherche instantanée de mots, et bien plus encore. Tirant parti de technologies telles qu'OpenAI Whisper, Google Translate, DeepL et ffmpeg, LLPlayer offre une grande efficacité et inclut une barre latérale de sous-titres et une protection anti-spoilers. Tout le code est écrit en C# pour une personnalisation facile.

Développement sous-titres

DeepEP : une bibliothèque de communication efficace pour Mixture-of-Experts

2025-02-25
DeepEP : une bibliothèque de communication efficace pour Mixture-of-Experts

DeepEP est une bibliothèque de communication conçue pour Mixture-of-Experts (MoE) et le parallélisme d'experts (EP), offrant des noyaux GPU all-to-all à haut débit et faible latence (expédition et combinaison MoE). Elle prend en charge les opérations à faible précision, y compris FP8. Optimisée pour l'algorithme de gate à limitation de groupe dans DeepSeek-V3, DeepEP fournit des noyaux pour le transfert de bande passante de domaine asymétrique (par exemple, NVLink vers RDMA). Ces noyaux atteignent un débit élevé, adaptés aux tâches d'entraînement et de préremplissage de l'inférence. Le contrôle du nombre de SM (Streaming Multiprocessors) est également pris en charge. Pour le décodage d'inférence sensible à la latence, des noyaux à faible latence utilisant du RDMA pur minimisent les retards. Une méthode de chevauchement communication-calcul basée sur des hooks est incluse, sans occuper de ressources SM. La bibliothèque est testée avec InfiniBand et est théoriquement compatible avec RoCE.

Développement Communication GPU

Les blogs sont-ils encore pertinents à l'ère de l'IA ?

2025-02-25
Les blogs sont-ils encore pertinents à l'ère de l'IA ?

Cet article explore la valeur des blogs à l'ère de ChatGPT et d'autres outils d'IA. Bien que l'IA puisse facilement accéder et synthétiser des informations, les blogs restent précieux : ils consolident les connaissances, aident les autres, construisent une marque personnelle (bien que cela soit difficile à réaliser uniquement avec des blogs), procurent un sentiment d'accomplissement et constituent un portfolio d'écriture démontrant des compétences de pensée, ce qui profite au développement professionnel. L'auteur soutient que le principal impact de l'IA sur les blogs est de réduire le sentiment d'accomplissement lié à l'interaction avec les lecteurs, mais cela n'invalide pas la valeur globale des blogs.

Développement

Débat entre Oncle Bob et John Ousterhout sur la conception de logiciels

2025-02-25
Débat entre Oncle Bob et John Ousterhout sur la conception de logiciels

Robert "Oncle Bob" Martin et John Ousterhout ont eu un débat animé sur les principes de conception de logiciels, couvrant des sujets clés tels que la longueur des méthodes, les commentaires de code et le développement piloté par les tests (TDD). Ils ont vivement débattu du degré de décomposition du code, de la nécessité des commentaires et des avantages et inconvénients du TDD, en utilisant des exemples de code et des scénarios spécifiques pour étayer leurs arguments. Ce débat souligne l'importance des compromis dans la conception de logiciels et la nécessité d'éviter les extrêmes lorsqu'on cherche la concision et la lisibilité.

Création d'un DSL de générateur HTML en Lua : Une approche astucieuse

2025-02-24
Création d'un DSL de générateur HTML en Lua : Une approche astucieuse

Cet article montre comment construire un langage spécifique à un domaine (DSL) en Lua pour générer du HTML. L'auteur utilise intelligemment les caractéristiques syntaxiques de Lua, telles que les parenthèses optionnelles et l'enchaînement de fonctions, ainsi que les environnements de fonctions et les méta-tables, pour créer une solution concise et élégante pour la génération de HTML. Une méta-méthode `__index` personnalisée génère dynamiquement des fonctions de balises HTML, et une fonction `append_all` concatène les chaînes de manière efficace. Le résultat est un DSL de générateur HTML entièrement fonctionnel, améliorant considérablement la lisibilité du code et l'efficacité du développement. L'article souligne également l'importance cruciale de l'échappement HTML pour prévenir les vulnérabilités de sécurité.

Développement Générateur HTML

Electro : Visionneuse d'images légère et ultra-rapide

2025-02-24
Electro : Visionneuse d'images légère et ultra-rapide

Electro est une visionneuse d'images légère et ultra-rapide construite avec Rust. Conçue pour une expérience développeur optimale, elle intègre un terminal de commande et affiche instantanément les images locales et hébergées sur le web. Sa force principale est ses performances inégalées : les images se chargent presque instantanément. Electro est open-source et facilement extensible, permettant aux développeurs de contribuer au code ou de construire leurs propres versions.

Développement visionneuse d'images

Le niveau gratuit de Geocodio : équilibre entre prévention des abus et utilisateurs légitimes

2025-02-24
Le niveau gratuit de Geocodio : équilibre entre prévention des abus et utilisateurs légitimes

Geocodio maintient un niveau gratuit malgré le risque d'abus. Initialement, un blocage simple basé sur l'IP a entraîné une mauvaise expérience utilisateur et une perte de temps pour le support. Ils sont passés à un système de notation du risque granulaire, utilisant des dizaines de facteurs (navigateur, adresse IP, adresse e-mail, etc.) pour identifier et gérer automatiquement les inscriptions à haut risque. Les inscriptions à risque moyen peuvent être soumises à des CAPTCHAs ou à une vérification d'adresse e-mail. Ce système minimise l'intervention manuelle, en équilibrant sécurité et expérience utilisateur, garantissant ainsi la pérennité du niveau gratuit.

Au-delà des bases de données vectorielles : traitement efficace des embeddings de texte avec Parquet et Polars

2025-02-24
Au-delà des bases de données vectorielles : traitement efficace des embeddings de texte avec Parquet et Polars

Cet article présente une méthode de traitement efficace des embeddings de texte sans recourir aux bases de données vectorielles. L’auteur utilise des fichiers Parquet pour stocker des données tabulaires contenant les embeddings de cartes Magic : The Gathering et leurs métadonnées, et exploite la bibliothèque Polars pour une recherche rapide de similarités et un filtrage des données. La fonctionnalité de copie zéro de Polars et son excellent support des données imbriquées rendent cette approche plus rapide et plus efficace que les méthodes traditionnelles CSV ou Pickle, en maintenant de hautes performances même lors du filtrage du jeu de données. L’auteur compare d’autres méthodes de stockage, telles que CSV, Pickle et NumPy, et conclut que Parquet combiné à Polars est le choix idéal pour gérer les embeddings de texte de taille moyenne, les bases de données vectorielles n’étant nécessaires que pour les jeux de données extrêmement volumineux.

Développement embeddings de texte

Neut : un langage de programmation fonctionnel avec gestion statique de la mémoire

2025-02-24

Neut est un langage de programmation fonctionnel doté d'une gestion statique de la mémoire, combinant habilement la prise en charge complète du λ-calcul, la gestion automatique prévisible de la mémoire et l'absence d'annotations dans le système de types. Contrairement à la gestion des ordures traditionnelles, Neut utilise une approche dirigée par les types pour gérer les ressources. Le compilateur garantit que chaque variable est utilisée exactement une fois, en traduisant les types en fonctions capables de supprimer ou de copier des valeurs. Même lorsque la copie est nécessaire, Neut évite les surcharges inutiles en utilisant l'opérateur de T-nécessité en logique modale, similaire aux emprunts de Rust. Neut compile en LLVM IR et en binaires, et possède un serveur LSP intégré, un formateur de code et une expérience de prototypage rapide similaire aux langages de script. Son système de modules unique distingue les modules à l'aide des condensés de tarballs et définit les identités des modules à l'aide d'informations de version.

arXivLabs : Projets expérimentaux avec des collaborateurs de la communauté

2025-02-24
arXivLabs : Projets expérimentaux avec des collaborateurs de la communauté

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 apportera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Introduction au calcul stochastique : des pas discrets à l'aléatoire continu

2025-02-24

Cet article de blog propose une introduction accessible au calcul stochastique, en commençant par le triangle de Pascal et la loi binomiale pour construire l'intuition du mouvement brownien et du calcul d'Itô. Il explique la signification physique et la dérivation mathématique du mouvement brownien, introduit le lemme d'Itô et les équations différentielles stochastiques (EDS), et aborde le calcul de Stratonovich. L'article contient de nombreuses illustrations et exemples de code, ce qui le rend idéal pour ceux qui souhaitent explorer le calcul stochastique.

Un bug caché dans DOS 3.3 SYS.COM : le mystère de la corruption des images disque NetDrive

2025-02-24

Cet article détaille l’enquête de l’auteur sur un bug dans la commande système DOS 3.3 `SYS.COM`. Cette commande copie le code de chargeur d’amorçage sur un disque, mais lorsqu’elle est utilisée avec des images disque virtuelles NetDrive, elle corrompt l’image. Grâce à une analyse minutieuse, l’auteur a découvert que `SYS.COM` ne vérifie pas le code de retour d’un appel Generic IOCTL utilisé pour obtenir les paramètres du disque. Lorsque cet appel échoue (par exemple, le pilote NetDrive ne prend pas en charge la fonction), `SYS.COM` écrit par erreur des données indésirables dans le secteur d’amorçage du disque, corrompant l’image. Ce bug ne se manifeste que sur certains types d’images disque (par exemple, les images de disque dur), car DOS tente de récupérer des informations de géométrie du disque, tandis que les images de disquette ne le font pas. L’auteur identifie finalement la cause racine du bug et explique les conditions dans lesquelles il se produit.

Développement

Ente : hébergez une alternative à Google Photos et maîtrisez votre vie privée

2025-02-24
Ente : hébergez une alternative à Google Photos et maîtrisez votre vie privée

Cet article de blog explique comment auto-héberger Ente, une alternative open source à Google Photos, en déployant son serveur sur un cluster Kubernetes et le frontend sur GitHub Pages. Il fournit le code nécessaire, les fichiers de configuration et les instructions pour configurer une base de données Cloudnative-PG, ainsi que la récupération des secrets depuis AWS Parameter Store. Bien que techniquement exigeant, il est idéal pour les utilisateurs familiers avec Kubernetes et qui privilégient la confidentialité. L'article couvre également la création d'une image Docker personnalisée à l'aide de GitHub Actions et la gestion des référentiels GitHub avec Terraform.

Développement

Emacs 30.1 : Compilation native, support Android et plus encore

2025-02-24
Emacs 30.1 : Compilation native, support Android et plus encore

Emacs 30.1 est arrivé, riche en nouvelles fonctionnalités et améliorations. La compilation native est désormais activée par défaut, ce qui entraîne une amélioration significative des performances. Le support complet d'Android est également disponible, ainsi que de nombreuses améliorations pour les écrans tactiles. Parmi les autres points forts, citons un analyseur JSON intégré, une meilleure complétion du minibuffer, une intégration améliorée du protocole URI du mode Org et d'innombrables améliorations de la qualité de vie. Cette version marque un progrès majeur pour Emacs.

Développement Compilation native

Rust dans le noyau Linux : Progression lente, débat houleux

2025-02-24
Rust dans le noyau Linux : Progression lente, débat houleux

L'intégration de Rust dans le noyau Linux, bien qu'initialement prometteuse, a rencontré des vents contraires importants. Malgré l'approbation de Linus Torvalds en 2022, la progression a été lente en raison de la résistance des développeurs expérimentés du noyau réticents à apprendre un nouveau langage et d'obstacles non techniques. Récemment, la démission d'Hector Martin, chef du projet Asahi Linux, en raison des obstacles à la mise en œuvre de Rust, a enflammé un débat intense. Bien que Torvalds reconnaisse le potentiel de Rust, il souligne que l'adoption ne sera pas forcée, suggérant qu'une solution nuancée est en cours d'élaboration.

Développement Langage de Programmation

Construire un client BitTorrent à partir de zéro : un projet de week-end

2025-02-24

Cet article détaille un projet de week-end pour construire un client BitTorrent. Il explique le protocole BitTorrent, en couvrant la découverte des pairs, l’analyse des fichiers .torrent (Bencode), la communication avec les trackers, l’échange de poignées de main avec les pairs et le téléchargement des morceaux de fichiers. L’auteur utilise Go et fournit des extraits de code clés, notamment un analyseur Bencode, un générateur de requêtes de trackers, un analyseur de messages et une gestion des téléchargements concurrents. Des détails techniques tels que les bitfields, les requêtes de blocs et les pipelines sont abordés, en soulignant le traitement concurrentiel et la gestion de l’état. Bien que certains codes soient omis, l’article fournit une feuille de route claire pour construire un client BitTorrent.

Développement

openCFS : Un outil de simulation multiphysique open source mature

2025-02-24

openCFS est un outil de modélisation et de simulation multiphysique basé sur la méthode des éléments finis, bénéficiant de 20 ans de développement axé sur la recherche. Son cœur est utilisé dans la recherche scientifique et les applications industrielles. Ses fonctionnalités clés incluent la prise en charge de divers champs physiques et de leurs couplages, des techniques de maillage non conformes, l'optimisation structurelle, un échange de données flexible, une entrée XML scriptable et de puissantes bibliothèques intégrées. Un ensemble complet d'exemples, une suite de tests exhaustive et son utilisation dans des cours universitaires facilitent son apprentissage. Une communauté active et le support commercial d'EnSimTech UG garantissent son développement continu et son accessibilité.

Le Mystère du Trait de Soulignement dans `target='_blank'`

2025-02-24

Vous êtes-vous déjà demandé pourquoi `target='_blank'` nécessite ce tiret bas ? Avant HTML5, les développeurs utilisaient `` pour créer des fonctionnalités similaires à celles des SPA, en divisant la fenêtre en cadres avec des ID uniques. L'attribut `target` spécifiait dans quel cadre charger un lien. `_blank` n'était pas un nom de cadre ; il instruisait le navigateur à ouvrir une nouvelle fenêtre (les onglets n'étaient pas courants à l'époque). Le tiret bas dénotait une valeur spéciale, pas un cadre. Bien que `` soit obsolète, la convention `_blank` persiste.

Développement

JSON : Un choix pragmatique pour une sortie lisible par machine sous Unix

2025-02-24

L'auteur préconise l'utilisation de JSON comme format de sortie lisible par machine, basé sur son expérience de suppression d'e-mails d'une file d'attente de messagerie Postfix. Bien qu'il ne soit pas parfait, JSON offre plusieurs avantages pratiques sur les systèmes Unix : clarté, large compatibilité, support étendu des outils et conversion facile vers d'autres formats. Pour les nouveaux programmes, l'auteur suggère que l'utilisation de JSON uniquement est l'approche la plus simple, évitant les complexités de la conception de formats personnalisés et favorisant l'interopérabilité entre les programmes Unix.

arXivLabs : Collaboration communautaire pour de nouvelles fonctionnalités arXiv

2025-02-24
arXivLabs : Collaboration communautaire pour de nouvelles fonctionnalités arXiv

arXivLabs est un cadre expérimental permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur le site web. Les individus et les organisations travaillant 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

OBS Studio et Fedora Flatpak règlent leur différend

2025-02-24
OBS Studio et Fedora Flatpak règlent leur différend

Un conflit entre l'équipe d'OBS Studio et les développeurs de Fedora Linux concernant la version Fedora Flatpak d'OBS Studio a été résolu. Une menace juridique initiale avait aggravé la situation, mais les deux parties ont entamé des discussions. L'équipe d'OBS Studio a retiré sa demande de suppression de propriété intellectuelle ou de changement de nom de l'application Fedora Flatpak. À l'avenir, elles collaboreront pour résoudre les problèmes techniques restants, notamment les régressions du runtime Qt, les mécanismes de signalement des bogues et les problèmes liés à l'accélération matérielle, au fallback X11 et aux plugins.

Développement

OpenAI admet : même les modèles d'IA les plus avancés ne peuvent pas remplacer les programmeurs humains

2025-02-24
OpenAI admet : même les modèles d'IA les plus avancés ne peuvent pas remplacer les programmeurs humains

Un nouveau document d'OpenAI révèle que même les modèles de langage les plus avancés (LLM), tels que GPT-4 et Claude 3.5, sont incapables de gérer la plupart des tâches d'ingénierie logicielle. Les chercheurs ont utilisé un nouveau benchmark, SWE-Lancer, comprenant plus de 1400 tâches d'ingénierie logicielle provenant du site Upwork. Les résultats ont montré que ces modèles ne pouvaient résoudre que des problèmes superficiels, sans pouvoir trouver les bogues ou les causes profondes dans les projets plus importants. Bien que les LLM soient rapides, leur précision et leur fiabilité sont insuffisantes pour remplacer les programmeurs humains, ce qui contredit les prédictions du PDG d'OpenAI, Sam Altman.

Développement

Algorithme de fenêtre glissante efficace : solution O(n) avec des files d’attente fonctionnelles

2025-02-24

Cet article présente un algorithme efficace pour résoudre les problèmes de fenêtre glissante à l’aide de techniques de programmation fonctionnelle. En construisant des files d’attente fonctionnelles basées sur deux piles et en tirant parti des propriétés des monoides, l’algorithme calcule diverses statistiques des fenêtres glissantes, telles que le maximum, le minimum ou la somme, en temps O(n). L’article détaille la mise en œuvre de piles et de files d’attente annotées par des monoides, fournit des exemples de code et se conclut par plusieurs défis algorithmiques connexes.

Développement fenêtre glissante

LeetArxiv : LeetCode pour les articles Arxiv – Guides de codage pratiques pour la recherche

2025-02-24
LeetArxiv : LeetCode pour les articles Arxiv – Guides de codage pratiques pour la recherche

LeetArxiv propose des guides de codage hebdomadaires et étape par étape basés sur des articles Arxiv, destinés aux programmeurs en transition vers des carrières de recherche. Une étude de cas se concentre sur l’implémentation de la Transformée en Cosinus Discrète (DCT) AAN d’un article de 1981. Le guide fournit une implémentation en C (facilement adaptable à d’autres langages) détaillant l’équation DCT-II et les optimisations AAN : réduction des calculs coûteux en cosinus, exploitation de la symétrie, utilisation de constantes précalculées et activation du parallélisme. La présentation couvre l’organigramme et le code de l’algorithme, rendant la recherche complexe accessible grâce à des exercices pratiques de codage.

FlashMLA : Un noyau de décodage MLA efficace pour les GPU Hopper

2025-02-24
FlashMLA : Un noyau de décodage MLA efficace pour les GPU Hopper

FlashMLA est un noyau de décodage MLA hautement efficace optimisé pour les GPU Hopper, conçu pour servir des séquences de longueur variable. Atteignant jusqu'à 3000 Go/s en configuration limitée par la mémoire et 580 TFLOPS en configuration limitée par le calcul sur H800 SXM5 en utilisant CUDA 12.6, FlashMLA utilise une précision BF16 et un kvcache paginé avec une taille de bloc de 64. Inspiré par les projets FlashAttention 2&3 et Cutlass, FlashMLA offre des améliorations de performance significatives pour le traitement de séquences à grande échelle.

Développement Décodage MLA

Miracle ! J'ai trouvé un bug dans la fonction de tri !

2025-02-24
Miracle ! J'ai trouvé un bug dans la fonction de tri !

L'auteur raconte une expérience incroyable dans ses années de programmation : il a trouvé un bug dans la fonction `sort()` intégrée de JavaScript ! Ce bug a causé des résultats de tri incorrects, le laissant perplexe pendant longtemps. Finalement, il a signalé le bug à l'équipe de Code Studio, qui a répondu rapidement et l'a corrigé. Cette histoire illustre de manière vivante que même les logiciels système apparemment parfaits peuvent avoir des bugs, et les programmeurs doivent garder un esprit sceptique, en cherchant constamment la cause racine des problèmes au lieu de blâmer aveuglément le compilateur ou le système.

Développement fonction sort

Briser la barrière du temps linéaire : l’essor des algorithmes sous-linéaires

2025-02-24

Les algorithmes de temps linéaire ont longtemps été considérés comme la norme en matière de résolution de problèmes. Cependant, avec la prévalence des ensembles de données massifs, les algorithmes sous-linéaires gagnent en importance. Ces algorithmes ne lisent qu’une infime fraction des données d’entrée, ce qui semble impossible. S’il existe des algorithmes sous-linéaires déterministes pour certains problèmes, la plupart nécessitent une randomisation et fournissent des solutions approximatives. Des progrès récents ont été réalisés sur divers problèmes, notamment les problèmes classiques d’optimisation et les tests de propriétés. Des techniques telles que le lemme de régularité de Szemerédi et les approximations matricielles de faible rang se révèlent utiles pour concevoir des algorithmes sous-linéaires, mais il reste encore beaucoup à comprendre sur leur portée et leurs limites.

1 2 152 153 154 156 158 159 160 214 215