Category: Développement

État actuel d'HTTP/3 : défis et opportunités sur la voie de l'adoption

2024-12-16
État actuel d'HTTP/3 : défis et opportunités sur la voie de l'adoption

Les spécifications HTTP/3 sont terminées, mais attendent leur publication finale. Le support côté serveur est étonnamment élevé, notamment parmi les principaux sites web. De grands acteurs comme Cloudflare ont activé HTTP/3, et les navigateurs le prennent largement en charge. Cependant, le support côté client, comme dans curl, reste incomplet, en grande partie en raison du développement retardé des bibliothèques TLS compatibles avec QUIC. Le support QUIC d'OpenSSL a été retardé, tandis que des alternatives comme BoringSSL et quictls présentent des limitations. Bien qu'HTTP/3 promette des améliorations de vitesse, les avantages réels dépendent des conditions du réseau. L'adoption généralisée dépend de la publication des spécifications et de bibliothèques TLS matures.

Développement

Vec::drain de Rust : exploitation de Drop pour la sécurité

2024-12-16
Vec::drain de Rust : exploitation de Drop pour la sécurité

Cet article explore en profondeur la méthode Vec::drain de Rust et son implémentation Drop, illustrant comment la propriété prévient les bogues subtils, liés à la mémoire ou autres. Vec::drain optimise les performances en maintenant une référence mutable au vecteur original et en ne lisant/mettant à jour que le stockage original. La clé réside dans l'implémentation Drop de la structure Drain, qui utilise un DropGuard pour garantir que, même si l'itérateur est abandonné prématurément, les éléments restants sont déplacés en toute sécurité vers le vecteur original, assurant ainsi la sécurité mémoire. L'article explique en détail les aspects d'implémentation de Drain et DropGuard, en traitant des cas spéciaux comme les types de taille nulle et la provenance des pointeurs.

Développement

Le nouveau mode --shuffle de GNU Make : découverte de bogues cachés dans les compilations parallèles

2024-12-16

Pendant onze ans, des bogues difficiles à reproduire ont affecté les compilations parallèles dans GNU Make. Inspiré par cela, un nouveau mode `--shuffle` a été développé pour réorganiser aléatoirement les cibles du Makefile, simulant un ordre de compilation non déterministe. Cela a révélé efficacement des bogues cachés dans plus de 30 paquets, notamment gcc, vim et ghc. Désormais intégré à GNU Make 4.4, ce mode est accessible via `make --shuffle` ou la variable d’environnement `GNUMAKEFLAGS=--shuffle`. Cette fonction puissante aide les développeurs à identifier et à résoudre les problèmes de compilation parallèle, soulignant l’amélioration continue des outils de développement logiciel.

Nouveau système d'équilibrage de charge de Google, PReQuaL : au-delà de l'équilibrage de charge du processeur

2024-12-16

Google Research a présenté PReQuaL (Probing to Reduce Queuing and Latency), un nouveau système d'équilibrage de charge, à la NSDI 2024. Contrairement à l'équilibrage de charge du processeur traditionnel, PReQuaL sonde activement la latence du serveur et les requêtes actives pour sélectionner les serveurs, réduisant ainsi considérablement la latence de queue, les taux d'erreur et la consommation de ressources sur des systèmes tels que YouTube. Déployé sur YouTube depuis plus d'un an, PReQuaL a considérablement amélioré l'utilisation du système. Cette approche innovante remet en question la sagesse conventionnelle et offre un nouveau paradigme pour les systèmes distribués hautes performances.

Développement équilibrage de charge

Un voyage d'ingénierie logicielle en CAO et impression 3D : un support de webcam surdimensionné

2024-12-16

Un ingénieur logiciel chevronné, las du monde virtuel de la programmation, aspirait à créer dans le monde réel. Il a acquis une imprimante 3D Bambu Lab X1C et a rapidement maîtrisé l'impression 3D. Il a ensuite commencé à apprendre le logiciel de CAO Fusion 360, découvrant avec surprise que ses concepts de contraintes ressemblaient aux contraintes de l'interface utilisateur iOS, et la conception CAO paramétrique faisant écho à la programmation fonctionnelle. Son premier projet : un support de webcam surdimensionné pour résoudre le problème de la webcam obstruant son écran. Ce projet lui a non seulement procuré la joie de l'impression 3D et de la conception CAO, mais aussi une compréhension approfondie de la fabrication, des matériaux et d'autres détails à prendre en compte lors de la phase de conception.

Développement impression 3D conception CAO

Adélie Linux 1.0-BETA6 disponible : compatibilité améliorée et fonctionnalités enrichies

2024-12-16
Adélie Linux 1.0-BETA6 disponible : compatibilité améliorée et fonctionnalités enrichies

Adélie Linux a publié sa version 1.0-BETA6, prenant en charge les architectures ARM, POWER et x86 32 et 64 bits, couvrant ainsi les smartphones, les consoles de jeux et les superordinateurs. Cette version comprend plus de 35 nouveaux paquets, des mises à jour pour GCC 13, LLVM 18, Rust 1.80 et le noyau Linux 6.6 LTS, ainsi qu'une prise en charge améliorée de GRUB et de Wayland. De nombreux bogues ont été corrigés et l'expérience utilisateur a été améliorée. Bien que quelques problèmes connus persistent, l'équipe Adélie travaille activement sur leurs solutions et apprécie les rapports de bogues et les commentaires.

Développement distribution Linux

Cyphernetes : Automatisation de la gestion des clusters Kubernetes natifs dans le cloud

2024-12-16

Cyphernetes est un projet qui automatise la gestion des clusters Kubernetes natifs dans le cloud. Il réduit considérablement la complexité opérationnelle en simplifiant les processus de déploiement, de mise à niveau et de gestion. Imaginez mettre à l'échelle votre cluster sans effort pour gérer les pics de trafic, réparer automatiquement les pannes et garantir la stabilité du service, le tout sans intervention manuelle. Cyphernetes agit comme un administrateur expert des clusters Kubernetes, protégeant vos applications 24h/24 et 7j/7, vous permettant de vous concentrer sur l'innovation.

Navigateur Dillo : 25 ans d'histoire, une histoire de résurrection

2024-12-16

Le navigateur web Dillo, né en 1999, a résisté à 25 ans de développement. Il a stagné plusieurs fois, mais a persévéré. Initialement dirigé par Jorge Arellano Cid, il a traversé des phases majeures de GTK et FLTK, avec des changements de développeurs clés et le projet connaissant des hauts et des bas. En 2024, Rodrigo Arias Mallo a repris le flambeau, et avec l'aide de la communauté, a lancé la version 3.1.1, ramenant ce navigateur vétéran sous les feux de la rampe. L'histoire de Dillo illustre l'esprit de l'open source et est une histoire légendaire d'héritage technologique et d'innovation.

Développement navigateur open source

Hyperbola GNU/Linux-libre : Un système d'exploitation léger axé sur la liberté et le support à long terme

2024-12-15

Hyperbola GNU/Linux-libre est un projet de système d'exploitation communautaire visant à fournir une distribution à support long terme entièrement libre, stable, sécurisée, simple et légère. Il utilise la gestion des paquets d'Arch Linux et les correctifs de sécurité de Debian, conformément aux directives de distribution de systèmes libres GNU. Il prend en charge les architectures i686 et x86_64 et prévoit de sortir un système basé sur BSD, HyperbolaBSD. Les dernières nouvelles incluent la poursuite du support des systèmes 32 bits, l'arrêt de l'utilisation des correctifs de Debian au-delà de la version 12 et des inquiétudes exprimées concernant la déclaration de la Free Software Foundation sur l'apprentissage automatique.

Carte des projets GitHub : Visualisation de plus de 400 000 projets

2024-12-15
Carte des projets GitHub : Visualisation de plus de 400 000 projets

Le développeur Anvaka a créé une carte interactive visualisant plus de 400 000 projets GitHub à l'aide de données publiques. Le projet utilise la similarité de Jaccard pour calculer les relations entre les projets et l'algorithme de Leiden pour le clustering. Le résultat est une représentation visuellement impressionnante de l'écosystème GitHub, permettant aux utilisateurs de rechercher et d'explorer les connexions entre les projets, révélant ainsi leur complexité et leur richesse.

Développement relations entre projets

Vercel lance ƒun : un environnement d'exécution local pour les fonctions Serverless

2024-12-15
Vercel lance ƒun : un environnement d'exécution local pour les fonctions Serverless

Vercel a lancé ƒun, un environnement d'exécution local pour le développement de fonctions serverless, permettant aux développeurs d'émuler l'environnement AWS Lambda localement. ƒun prend en charge plusieurs environnements d'exécution, notamment Node.js et Python, permettant des tests et un débogage rapides des fonctions serverless sans déploiement dans le cloud. Bien que ƒun s'efforce de se rapprocher de l'environnement Lambda réel, il existe quelques différences clés, notamment en matière de sandbox de processus et de permissions utilisateur.

Glisser-déposer des images dans Bevy 0.15 sur le Web

2024-12-15

Cet article explique comment intégrer les API natives du web via WASM avec Bevy 0.15 pour permettre le glisser-déposer d'images dans un navigateur web. Il détaille l'utilisation de wasm-bindgen, gloo et bevy_channel_trigger pour gérer les événements DOM en Rust, extraire les données des fichiers et les transmettre au moteur Bevy pour le chargement et le rendu des images. Le processus est similaire à l'implémentation JavaScript, mais utilise les capacités de Rust, en gérant les erreurs et les fuites de mémoire des écouteurs d'événements. Le résultat est une application web Bevy capable de charger et d'afficher des images PNG déposées.

Développement Développement Web

Indicateur de concentration pour programmeurs : Naissance de FlowLight

2024-12-15

Inspiré par un article de recherche sur l’impact des interruptions au travail, le programmeur Shae Erisson a créé un système DIY appelé FlowLight pour indiquer si un programmeur est dans un état de concentration « flux ». Le système surveille le temps d’inactivité dans l’éditeur Emacs ; lorsque le programmeur est inactif pendant une période, la LED d’une carte Adafruit MagTag change de couleur (vert pour inactif, rouge pour occupé). Erisson a également écrit un serveur HTTP en CircuitPython pour contrôler à distance la couleur de la LED et afficher l’état. Bien que le système puisse être amélioré, notamment avec un suivi plus précis du temps d’inactivité et un affichage plus attrayant, il aide efficacement les programmeurs à éviter les interruptions et à améliorer leur productivité.

Développement programmeur concentration flux

Programme WASM contourne le sandbox du système de fichiers node:wasi

2024-12-15
Programme WASM contourne le sandbox du système de fichiers node:wasi

Ce projet présente une preuve de concept montrant comment un programme WASM peut contourner la restriction du répertoire preopens dans node:wasi pour accéder à des fichiers en dehors du sandbox. Normalement, les programmes WASM sont limités à l'accès aux répertoires préouverts. Cependant, en utilisant des liens symboliques pour remplacer des fichiers à un moment précis et en exécutant un processus externe, cette limitation peut être contournée. Ce n'est pas une vulnérabilité de sécurité pratique dans node:wasi, mais plutôt un cas limite potentiel. Le projet souligne qu'il ne faut pas compter sur node:wasi pour empêcher complètement un code malveillant d'accéder à des fichiers externes.

Développement

Optimisation du GPU MacOS : gaspillage de ressources pour la vitesse

2024-12-15

Le développeur d'Anukari a rencontré un goulot d'étranglement lors de l'optimisation des performances du GPU sous MacOS. En raison du contrôle limité du système sur les performances du GPU, le mécanisme de régulation des performances du GPU d'Apple a affiché de mauvaises performances dans le cas d'utilisation d'Anukari, entraînant des problèmes audio. Le développeur a mis en œuvre une solution de contournement : consacrer un warp de threadgroup du GPU à des calculs inutiles pour « tromper » le système et augmenter la fréquence d'horloge du GPU, réduisant ainsi considérablement la latence audio et améliorant les performances. Bien que grossière, cette méthode s'est avérée efficace pour résoudre les problèmes de performances sous MacOS. Cependant, les améliorations de performances ont varié considérablement entre les différents DAW (Ableton et GarageBand), nécessitant une optimisation supplémentaire.

Les grands modèles de langage mettront-ils fin à la programmation ?

2024-12-15

Les progrès récents des grands modèles de langage (LLM) ont suscité un débat sur l'obsolescence de la programmation. Cet article plaide contre cette vision trop optimiste. En se concentrant sur la complexité computationnelle de la synthèse de programmes, l'auteur démontre que la génération de code correct est un problème PSPACE-complet, ce qui signifie que même des entrées de taille modérée peuvent nécessiter un temps exponentiel. Bien que les LLM puissent assister les programmeurs et améliorer l'efficacité, leurs limitations inhérentes les empêchent de remplacer complètement les programmeurs humains. Le cœur de la programmation reste la résolution de problèmes et la conception de systèmes, ce qui exige l'ingéniosité et la créativité humaines.

L'informatique optimiste : une voie vers un meilleur logiciel

2024-12-15

Cet essai explore le concept d'« informatique optimiste », non pas comme un optimisme aveugle, mais comme une convergence de plusieurs idées puissantes : simplicité et facilité d'utilisation (« boot to kill »), principes local-first et autonomisation de l'utilisateur. L'auteur soutient qu'en limitant les dépendances, en simplifiant les flux de travail, en créant une expérience transparente de « ça fonctionne » et en donnant aux utilisateurs plus de contrôle, nous pouvons construire un logiciel plus fiable, plus sûr et plus durable. Cette philosophie s'applique aussi bien aux utilisateurs individuels qu'au développement de logiciels d'entreprise, visant en fin de compte un monde numérique qui respecte la vie privée et la propriété des données de l'utilisateur.

Développement informatique optimiste

Spark contre DuckDB contre Polars : comparaison des performances pour les charges de travail petites et moyennes

2024-12-15
Spark contre DuckDB contre Polars : comparaison des performances pour les charges de travail petites et moyennes

Cet article compare les moteurs de traitement de données Spark, DuckDB et Polars, en évaluant leurs performances, leur coût et leur facilité de développement sur des ensembles de données de 10 Go et 100 Go. Les résultats montrent que pour les ensembles de données volumineux et les tâches ETL, Spark reste dominant grâce à ses capacités de calcul distribué et à son écosystème mature. DuckDB et Polars excellent dans les requêtes interactives et l'exploration de données sur des ensembles de données plus petits. L'auteur recommande une approche stratégique de mix-and-match, utilisant Spark pour les ETL, DuckDB pour les requêtes interactives et Polars pour les scénarios de niche, en adaptant le choix du moteur aux besoins spécifiques.

Moteur d'inférence LLM rapide construit à partir de zéro

2024-12-15

Cet article détaille le parcours de l'auteur dans la construction d'un moteur d'inférence LLM à partir de zéro en utilisant C++ et CUDA, sans recourir à aucune bibliothèque. Ce processus a permis une plongée profonde dans la pile complète de l'inférence LLM, des noyaux CUDA à l'architecture du modèle, montrant comment les optimisations affectent la vitesse d'inférence. L'objectif était de créer un programme capable de charger les poids de modèles open-source courants et d'effectuer une inférence mono-lot sur un seul serveur CPU+GPU, en améliorant itérativement le débit de jetons pour surpasser llama.cpp. L'article décrit méticuleusement les étapes d'optimisation sur la CPU et le GPU, notamment le multithreading, la quantification des poids, le SIMD, la fusion des noyaux et la quantification du cache KV, tout en analysant les goulots d'étranglement et les défis. Le résultat final atteint des performances proches de l'état de l'art pour l'inférence LLM locale.

Développement inférence LLM

Privilégier le code jetable aux documents de conception : une approche de développement logiciel plus efficace

2024-12-15
Privilégier le code jetable aux documents de conception : une approche de développement logiciel plus efficace

En développement logiciel, la méthode traditionnelle consistant à utiliser un document de conception suivi d'un développement incrémental n'est pas toujours efficace. L'auteur Doug Turnbull propose une approche de "binge coding" : implémenter rapidement un prototype à l'aide d'une PR temporaire, obtenir rapidement des retours de l'équipe, affiner la conception, puis la décomposer progressivement en PRs déployables. Cette méthode encourage l'itération rapide, la détection précoce des problèmes et considère le code lui-même comme la meilleure documentation. Même si les documents de conception restent utiles dans certaines situations, l'auteur préconise de "montrer plutôt que de raconter", en utilisant des prototypes de code pour une validation et une itération rapides afin d'obtenir un développement logiciel plus efficace.

Développement prototype de code

Le Secret des Équipes Performantes : Les Systèmes de Mémoire Transactive

2024-12-15
Le Secret des Équipes Performantes : Les Systèmes de Mémoire Transactive

Cet article explore la pierre angulaire des équipes performantes : les systèmes de mémoire transactive (SMT). Il ne s’agit pas de la force de mémoire individuelle, mais de la manière dont les équipes partagent et utilisent efficacement les connaissances et les compétences de leurs membres. Trois types de mémoire d’équipe sont présentés : la mémoire de travail, la mémoire à long terme et la mémoire transactive, en mettant l’accent sur la façon dont le SMT améliore les performances de l’équipe. Le SMT comprend deux éléments : les schémas de collaboration et l’expertise individuelle. En construisant un SMT, les équipes libèrent l’intelligence collective et surmontent l’impact des changements de membres. L’article recommande des méthodes telles que le Capability Comb, le Manuel d’équipe et la pratique délibérée pour aider les équipes à établir et à améliorer rapidement leur SMT.

Composants Web Isomorphiques : Rendu Côté Serveur Simplifié

2024-12-15
Composants Web Isomorphiques : Rendu Côté Serveur Simplifié

La croyance de longue date selon laquelle le rendu côté serveur des composants web est difficile a été remise en question. Cet article montre comment réaliser le rendu côté serveur de composants web existants en utilisant intelligemment Happy DOM pour émuler un environnement de navigateur. Deux méthodes sont détaillées : l’utilisation de la balise `` pour un rendu direct et l’émulation du DOM pour exécuter le code du composant et générer du HTML. L’auteur souligne les avantages de cette approche : compatibilité avec tous les composants web, robustesse en cas de défaillance de JavaScript et absence de dépendance à des frameworks spécifiques. Cela résout le problème du rendu côté serveur pour les composants web, en offrant une solution flexible et robuste.

SVC16 : L'ordinateur virtuel le plus simple défie les programmeurs

2024-12-15
SVC16 : L'ordinateur virtuel le plus simple défie les programmeurs

SVC16 est un ordinateur virtuel minimaliste 16 bits conçu pour une simplicité maximale. Il ne possède pas de registres CPU, effectuant toutes les opérations dans un seul bloc de mémoire. L'ensemble d'instructions est extrêmement simplifié, sans fonctionnalités sophistiquées comme le son ou la taille d'écran variable. Les programmeurs sont mis au défi d'écrire eux-mêmes du code machine et des compilateurs, créant des prouesses incroyables avec les outils les plus simples. Le projet fournit un émulateur pour exécuter des programmes créés par l'utilisateur et même des jeux. C'est un projet parfait pour apprendre les principes de bas niveau de l'informatique et améliorer ses compétences en programmation.

Railgun Labs dévoile Unicorn : une bibliothèque d'algorithmes Unicode haute performance

2024-12-15

Railgun Labs a publié Unicorn, une bibliothèque d'algorithmes Unicode à haute vitesse, reconnue pour sa rapidité, son intégrabilité, sa compatibilité multiplateforme et sa sécurité. Unicorn prend en charge de nombreux algorithmes Unicode, notamment la normalisation, la conversion de casse, le classement et la segmentation, et fournit des décodeurs, des encodeurs et des validateurs pour les encodages UTF-8, UTF-16 et UTF-32. La bibliothèque est entièrement personnalisable et a été testée de manière exhaustive pour garantir sa précision et sa fiabilité. Elle est conforme à la norme MISRA C :2012 et est principalement thread-safe.

Faille de sécurité dans l'accès Internet de Home Assistant

2024-12-15

Frederik Braun a tenté d'utiliser Home Assistant pour le contrôle à distance de sa maison intelligente, mais a découvert une faille de sécurité importante. Bien que Home Assistant propose l'authentification par nom d'utilisateur/mot de passe et l'authentification à deux facteurs, son incapacité à gérer les URL avec des identifiants intégrés et son obligation d'être déployé sur le chemin racine empêchent l'ajout de couches de sécurité supplémentaires, telles que l'authentification du serveur web ou des chemins obscurs. Cela laisse la sécurité de Home Assistant entièrement dépendante de ses mécanismes internes, ce qui crée un risque de sécurité. L'auteur appelle la communauté Home Assistant à améliorer la flexibilité de sa configuration de sécurité.

Développement Sécurité Accès distant

XFCE 4.20 disponible : prise en charge expérimentale de Wayland et nombreuses améliorations

2024-12-15

Après près de deux ans de développement, XFCE 4.20 est officiellement sorti ! Cette version se concentre sur la préparation de la base de code pour Wayland, offrant désormais une prise en charge expérimentale de Wayland pour la plupart des composants, bien qu'elle en soit encore à ses débuts et soit recommandée aux utilisateurs expérimentés. XFCE 4.20 propose également de nombreuses nouvelles fonctionnalités, corrections de bogues et améliorations, notamment un meilleur scaling des icônes, une vue d'icônes plus performante et un gestionnaire de fichiers Thunar amélioré. Il est important de noter que la prise en charge de Wayland est encore incomplète, certains composants et fonctionnalités n'étant pas encore portés.

Développement Environnement de bureau

Implémentation d'un système d'objets simple à partir de zéro en Ruby

2024-12-15

Cet article explique comment construire un système d'objets simple en Ruby sans utiliser de classes. L'auteur utilise intelligemment des fonctions anonymes et des tables de hachage pour implémenter des concepts clés de la POO, tels que la recherche de méthodes, l'héritage prototypal, les mixins et la métaprogrammation. En commençant par une fonction constructrice, l'article montre comment simuler des variables privées et des interfaces publiques, recréant efficacement un comportement similaire aux classes et à l'héritage. Grâce à des exemples de code clairs, les lecteurs apprennent à créer des objets, définir des méthodes, implémenter l'héritage et les mixins, et même construire une fonctionnalité de métaprogrammation rudimentaire semblable à `attr_accessor` de Ruby. C'est un guide pratique pour comprendre les fondamentaux des systèmes d'objets.

TeaVM 0.11.0 publié : nouveau backend WebAssembly

2024-12-15

TeaVM 0.11.0 est sorti, avec un nouveau backend WebAssembly comme fonctionnalité principale. L’ancien backend WebAssembly, bien que fonctionnel, a été peu adopté en raison de gains de performances insignifiants et d’une mauvaise expérience développeur. Le nouveau backend, tirant parti de la proposition WebAssembly GC, résout ces problèmes, améliorant l’interaction avec les API JS du navigateur et réduisant la taille du fichier binaire. Bien qu’il soit actuellement un peu moins riche en fonctionnalités que le backend JS, il prend déjà en charge JSO (API d’interaction Java-to-JS), dans le but d’atteindre la parité dans la prochaine version. Cette version inclut également des corrections de bogues dans l’implémentation de BitSet et ajoute la prise en charge de diverses API JS, telles que la lecture de fichiers, les événements tactiles, l’API Popover et Navigator.sendBeacon.

Développement

Adieu aux réunions infinies : une nouvelle approche du développement logiciel à haute vitesse

2024-12-15

Fatigué des réunions sans fin et des planifications interminables ? Cet article présente une méthode de développement logiciel hautement efficace : centrée sur le code, itérative et rapide. L’auteur utilise la pâtisserie comme exemple pour illustrer le concept d’obtention de la solution optimale grâce à l’expérimentation rapide, aux tests fréquents et à l’amélioration continue. Cette méthode met l’accent sur la réduction de la documentation, l’expression des idées directement dans le code, l’utilisation de données simulées et d’outils de rechargement à chaud pour accélérer le développement, et l’amélioration de la lisibilité du code grâce à un style de code concis et à des conventions de nommage. L’auteur préconise de diviser les projets en fichiers exécutables indépendamment, de minimiser les temps de redémarrage et d’utiliser les outils de langage par défaut pour le débogage. Bien que cette méthode puisse ressembler à un « laboratoire chaotique », elle permet de mener à bien des projets efficacement et d’éviter la redondance et l’inefficacité des méthodes traditionnelles.

1 2 207 208 209 210 212 214 215