Facebook a ouvert le code du projet DotSlash

Facebook a annoncé l'open source de dotslash, un utilitaire de ligne de commande conçu pour faciliter la distribution d'un ensemble de fichiers exécutables pour différentes plateformes. L'utilitaire est conçu pour exécuter des scripts qui automatisent le téléchargement d'un fichier exécutable adapté à la plate-forme actuelle, en vérifiant son intégrité et son exécution. Le code de l'utilitaire est écrit en Rust et est distribué sous les licences MIT et Apache 2.0.

L'utilitaire résout des problèmes similaires aux scripts shell pour lancer des fichiers exécutables pour la plate-forme actuelle, mais élimine en même temps le besoin d'inclure des fichiers exécutables pour toutes les plates-formes prises en charge dans le package. DotSlash vous permet également de stocker des informations sur les fichiers exécutables collectés dans un référentiel avec le code, tout en plaçant les fichiers eux-mêmes sur des serveurs de démarrage séparés, ce qui évite l'augmentation de la taille du référentiel et réduit la charge sur le système d'entrée/sortie lors de l'exécution. opérations de clonage.

Lors de l'utilisation de DotSlash, l'ensemble des fichiers exécutables spécifiques à la plate-forme est remplacé par un seul script qui inclut une description de la logique de sélection du fichier exécutable par rapport aux plates-formes prises en charge. Après avoir exécuté un script DotSlash, le fichier exécutable requis pour la plate-forme actuelle est téléchargé dynamiquement, décompressé, vérifié par rapport à un hachage cryptographique et stocké dans un cache local pour les exécutions ultérieures. Les fichiers sont transférés sous forme compressée. Les scripts DotSlash peuvent être générés automatiquement pour les versions publiées sur GitHub.

Un exemple de script DotSlash pour la distribution des builds Node.js 18.19.0 pour les plateformes macOS ARM64, macOS x86_64 et Linux x86_64 : #!/usr/bin/env dotslash { "name": "node-v18.19.0", " plateformes” : { "macos-aarch64": { "size": 40660307, ​​​​"hash": "blake3", "digest": "6e2ca33951e586e7670016dd9e503d028454bf9249d5ff556347c3d98c347c34", "format": "tar.gz", "path": " node-v18.19.0-darwin-arm64/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-arm64. Tar.gz "}]}," macOS-x86_64 ": {" size ": 42202872," hash ":" Blake3 "," digest ":" 37521058114e7f71e0de3fe8042c8fa7908305e9115488c6c29b514f9cd2a24c "," chemin " : "node-v18.19.0 .64-darwin-x18.19.0/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v64-darwin- x86.tar.gz "}]}," Linux-X64_44694523 ": {" Size ": 3," Hash ":" Blake72 "," Digest ":" 81B3FC30A7B1BEDC09A3A4478FAFC1A02B5 Tar.gz "," path " : "node -v0-linux-x04/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v15/node-v23- linux-x3.tar .gz" } ] } } }

Source: opennet.ru

Ajouter un commentaire