O Facebook abriu o código do projeto DotSlash

O Facebook anunciou o código aberto do dotslash, um utilitário de linha de comando projetado para facilitar a distribuição de um conjunto de arquivos executáveis ​​para diferentes plataformas. O utilitário foi projetado para executar scripts que automatizam o download de um arquivo executável adequado à plataforma atual, verificando sua integridade e execução. O código do utilitário é escrito em Rust e distribuído sob as licenças MIT e Apache 2.0.

O utilitário resolve problemas semelhantes aos scripts de shell para iniciar arquivos executáveis ​​para a plataforma atual, mas ao mesmo tempo elimina a necessidade de incluir arquivos executáveis ​​para todas as plataformas suportadas no pacote. DotSlash também permite armazenar informações sobre os arquivos executáveis ​​coletados em um repositório junto com o código, enquanto coloca os próprios arquivos em servidores de inicialização separados, o que evita o crescimento do tamanho do repositório e reduz a carga no sistema de entrada/saída ao executar operações de clonagem.

Ao usar o DotSlash, o conjunto de arquivos executáveis ​​específicos da plataforma é substituído por um único script que inclui uma descrição da lógica de seleção do arquivo executável em relação às plataformas suportadas. Depois de executar um script DotSlash, o arquivo executável necessário para a plataforma atual é baixado dinamicamente, descompactado, verificado em um hash criptográfico e armazenado em um cache local para execuções subsequentes. Os arquivos são transferidos em formato compactado. Os scripts DotSlash podem ser gerados automaticamente para versões publicadas no GitHub.

Um exemplo de script DotSlash para distribuição de compilações Node.js 18.19.0 para as plataformas macOS ARM64, macOS x86_64 e Linux x86_64: #!/usr/bin/env dotslash { “name”: “node-v18.19.0”, “ plataformas”: { "macos-aarch64": { "size": 40660307, ​​​​"hash": "blake3", "digest": "6e2ca33951e586e7670016dd9e503d028454bf9249d5ff556347c3d98c347c34", "format": "tar.gz", "path": " nó- v18.19.0 -darwin-arm64/bin/node", "provedores": [ { "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", "format": "tar .gz", "caminho" : "node-v18.19.0 .64-darwin-x18.19.0/bin/node", "provedores": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v64-darwin- x86.tar.gz " } ] }, "linux-x64_44694523": { "size": 3, "hash": "blake72", "digest": "81b3fc30a7b1bedc09a3a4478fafc1a02b5e0ebf04ad15ea23d3b9e89212dc18.19.0", "format": " tar.gz", " caminho ": "node -v64-linux-x18.19.0/bin/node", "providers": [ { "url": "https://nodejs.org/dist/v18.19.0/node-v64- linux-xXNUMX.tar.gz" } ] } } }

Fonte: opennet.ru

Adicionar um comentário