O Boss4D 1.5.0 marca uma mudança importante na evolução do gerenciador de
dependências para Delphi e Lazarus. A nova versão amplia o projeto para além da
instalação de bibliotecas: ela cria uma base para distribuição verificável,
automação de CI, conformidade de pacotes, proteção de credenciais e execução
nativa em Linux com Free Pascal.
Na prática, o Boss4D passa a acompanhar uma dependência durante um ciclo muito
mais completo: descoberta, resolução de versão, download, instalação,
empacotamento, geração de evidências, validação e publicação.
Neste artigo, veremos o que chegou na versão 1.5.0, por que essas mudanças são
relevantes e como começar a utilizá-las.
O que muda com o Boss4D 1.5.0
Os principais avanços da versão estão organizados em seis áreas:
- registro público de pacotes e protocolo versionado;
- pacotes determinísticos e imutáveis;
- assinatura, proveniência e conformidade;
- CLI nativa para Linux com FPC;
- progresso estruturado e autoatualização segura;
- compatibilidade ampliada com versões do Delphi.
Essas áreas se complementam. Um registro público sem formato verificável seria
apenas uma lista de links. Um pacote imutável sem proveniência teria integridade,
mas pouca rastreabilidade. Uma CLI multiplataforma sem testes nativos poderia
funcionar apenas em condições específicas.
O objetivo da versão 1.5.0 foi integrar essas capacidades em um fluxo coerente.
Um registro público como fonte padrão
A busca de pacotes agora consulta o registro público oficial do Boss4D por
padrão. Isso permite descobrir bibliotecas sem precisar cadastrar manualmente
uma fonte antes da primeira pesquisa:
boss4d search horse
boss4d info Boss4Delphi
O protocolo do registro possui versão explícita e utiliza um índice JSON. Cada
entrada pode declarar nome, repositório, descrição, versão, licença, endereço do
artefato e seu SHA-256.
Fontes adicionais continuam suportadas:
boss4d registry add https://packages.empresa.com/boss4d-index.json
boss4d registry add C:\pacotes\boss4d-index.json
boss4d registry list
Índices públicos, privados, remotos e locais são combinados pelo mesmo serviço
usado pela CLI, pelo catálogo gráfico e pela integração com o RAD Studio.
Se o registro oficial estiver temporariamente indisponível, o Boss4D utiliza um
catálogo inicial offline. A falha de uma fonte também não impede a consulta das
demais. Isso evita que uma indisponibilidade externa paralise o trabalho local.
O que já está disponível no registro
O registro público não é apenas a definição de um protocolo. Seu catálogo
inicial já reúne 55 projetos do ecossistema Delphi e Lazarus.
Entre eles estão:
- frameworks e bibliotecas, como Horse, Dext, RESTRequest4Delphi e Boss4Delphi;
- os middlewares oficiais de JSON, autenticação básica, CORS, streaming, JWT,
tratamento de exceções, logging e compressão do Horse; - providers para CrossSocket, mORMot e OverbyteICS;
- middlewares da comunidade para paginação, ETag, upload, arquivos estáticos,
autenticação, rate limiting, health checks, OpenAPI e validação; - componentes de segurança, como Helmet, redirecionamento HTTPS, RBAC,
sanitização e validação por JSON Schema; - observabilidade com OpenTelemetry e Prometheus;
- recursos compatíveis com Delphi e Lazarus, incluindo DTOs, multipart,
request IDs e compressão.
Algumas pesquisas possíveis:
boss4d search Dext
boss4d search horse
boss4d search prometheus
boss4d search auth
boss4d info horse-opentelemetry
O índice oficial pode ser consultado diretamente no GitHub:
As entradas são validadas para impedir nomes e repositórios duplicados. Quando
uma licença não é declarada de forma verificável pelo projeto, o campo permanece
vazio em vez de receber uma licença presumida.
Como o índice está na branch principal e é consultado remotamente, novos
pacotes podem aparecer no catálogo sem exigir a publicação de uma nova versão
da CLI. Uma nova release do Boss4D só é necessária quando muda o comportamento
do executável ou o protocolo suportado.
Pacotes .b4dpkg determinísticos e imutáveis
Repositórios Git são excelentes para desenvolvimento, mas uma release precisa
representar um estado específico e verificável. Para isso, a versão 1.5.0
introduz o comando boss4d pack:
boss4d pack
boss4d pack --output dist\minha-biblioteca-1.0.0.b4dpkg
O arquivo .b4dpkg utiliza um envelope JSON canônico. Os caminhos são
normalizados e ordenados, e cada arquivo recebe seu próprio SHA-256. O pacote
também possui um digest que representa o conjunto completo.
Arquivos transitórios ou gerados, como .git, modules, dist, saídas do
compilador e dados de scratch, não entram no artefato.
O resultado mais importante é a reprodutibilidade: a mesma árvore de fontes
gera os mesmos bytes e o mesmo SHA-256. Isso permite comparar artefatos
produzidos em momentos diferentes e detectar qualquer alteração no conteúdo.
Esse pacote pode ser enviado pelo fluxo de publicação:
boss4d publish --dry-run
boss4d publish --registry https://registry.exemplo.com/api
O payload de publicação associa o artefato ao seu digest, evitando que o
registro dependa apenas de um estado mutável do repositório.
Proveniência in-toto e assinatura OpenPGP
Ao criar um pacote, o Boss4D também produz uma declaração de proveniência no
formato in-toto Statement v1. Essa declaração relaciona:
- o nome do artefato;
- seu SHA-256;
- a identidade do builder Boss4D;
- a quantidade de arquivos empacotados.
Proveniência e assinatura resolvem problemas diferentes. O SHA-256 comprova a
integridade dos bytes. A proveniência descreve como o artefato foi produzido. A
assinatura associa o pacote a uma identidade criptográfica.
Para assinar um pacote com GPG:
boss4d pack `
--output dist\minha-biblioteca-1.0.0.b4dpkg `
--sign release@empresa.com
O Boss4D gera uma assinatura destacada ASCII .asc e a verifica imediatamente.
Se a verificação falhar, o comando não apresenta o pacote como assinado com
sucesso.
Essa separação torna o modelo de confiança mais claro: checksum, proveniência e
assinatura são evidências complementares, não sinônimos.
Uma suíte pública de conformidade
Um protocolo só é realmente útil quando produtores e consumidores conseguem
validar a mesma interpretação. Por isso, a versão 1.5.0 disponibiliza comandos
de conformidade para registros e pacotes:
boss4d conformance registry registry\index-v1.json
boss4d conformance package dist\minha-biblioteca.b4dpkg
No índice do registro, a validação verifica o schema, os campos obrigatórios e
a associação entre URL do artefato e SHA-256. No pacote, são verificados o
formato, a versão do schema, a segurança dos caminhos, o conteúdo Base64 e o
digest de cada arquivo.
Também é possível gerar um portal HTML estático a partir do índice:
boss4d registry portal registry\index-v1.json registry\index.html
O JSON continua sendo a fonte autoritativa. O HTML é uma projeção para leitura
humana e pode ser hospedado em GitHub Pages, CDN ou qualquer servidor estático.
Metadados recebidos do índice são escapados antes de entrar na página.
Para acompanhar desempenho e determinismo, o projeto inclui um benchmark do
empacotamento:
.\scripts\benchmark-pack.ps1 -Iterations 5
Além de informar tempos mínimo, médio e máximo, o benchmark falha se duas
iterações produzirem digests diferentes.
Boss4D nativo no Linux com Free Pascal
Outro destaque da versão é o primeiro host nativo da CLI para Linux x86-64,
compilado com FPC 3.2.2.
Não se trata de um executável Windows rodando por uma camada de compatibilidade
nem de um cross-compile sem execução real. O código é compilado e testado dentro
de um contêiner Linux:
.\scripts\ci-fpc-linux.ps1
O pipeline executa a suíte FPCUnit e smoke tests dos comandos version eplatform. A release publica o arquivo:
boss4d-linux-x86_64.tar.gz
O host Linux atual oferece:
version;platform;init;installde dependências Git declaradas no manifesto.
Ele já cobre o núcleo necessário para inicializar um projeto e baixar
dependências em ambientes Linux, inclusive em pipelines baseados em contêiner.
A CLI Windows continua sendo o host mais completo para integração com
RAD Studio, GetIt, Windows Credential Manager, coleta da toolchain Delphi no
SBOM e autoatualização pelo instalador. O projeto declara essas diferenças de
capacidade explicitamente, em vez de simular recursos do Windows no Linux.
Essa base permite que novos adaptadores POSIX sejam adicionados gradualmente,
sem acoplar as regras de dependência ao sistema operacional.
Resolução de versões explícita
Faixas SemVer podem ter mais de uma versão compatível. Agora o usuário pode
escolher a política de resolução:
boss4d install --resolution highest
boss4d install --resolution minimal
highest é o comportamento padrão e escolhe a maior versão compatível.minimal seleciona a menor versão estável que atende à faixa.
O resultado é independente da ordem em que as tags são retornadas pelo Git.
Tags inválidas ou incompatíveis são ignoradas, e a revisão escolhida permanece
registrada no lock file.
Essa escolha é útil em cenários diferentes. Projetos que desejam receber a
versão compatível mais recente podem usar highest. Organizações que preferem
reduzir mudanças implícitas em builds corporativos podem adotar minimal.
Credenciais fora do arquivo de configuração
Tokens de GitHub e GitLab não precisam mais ser serializados noboss.cfg.json. No Windows, eles são armazenados pelo Credential Manager sob
identidades específicas do Boss4D.
O arquivo de configuração mantém apenas dados não secretos. As credenciais são
obtidas do cofre somente quando o adaptador Git prepara uma operação
autenticada, e valores sensíveis são mascarados em mensagens de erro.
O contrato do armazenamento é portável. Isso permite que um host POSIX adote,
no futuro, Secret Service ou outro cofre nativo sem alterar o domínio e os
serviços centrais.
Progresso legível por pessoas e por CI
Instalações e downloads agora emitem eventos estruturados por meio de um
reporter thread-safe. O mesmo processo pode ser acompanhado de formas
diferentes:
boss4d install --progress interactive
boss4d install --progress plain
boss4d install --json
boss4d install --quiet
boss4d ci --json
O modo interativo atualiza a operação ativa no terminal. O modo plain gera
linhas estáveis. --json produz JSON Lines, adequado para pipelines e coletores
de log. --quiet desativa os eventos de progresso.
Cada evento identifica operação, pacote, fase, posição atual, total, mensagem
e timestamp. Downloads concorrentes utilizam o mesmo mecanismo sincronizado,
evitando linhas intercaladas e JSON inválido.
Credenciais e tokens não fazem parte dos eventos.
Autoatualização com verificação SHA-256
No Windows, a atualização pode ser iniciada diretamente pela CLI:
boss4d self-update
O comando consulta a release oficial mais recente. Se houver uma versão nova,
ele baixa Boss4D_Setup.exe e SHA256SUMS.txt, calcula o SHA-256 do instalador
e compara os valores antes de executá-lo.
Uma resposta inválida, um artefato ausente, uma falha de download ou um checksum
divergente interrompe o processo. O arquivo rejeitado é removido da área
temporária.
Essa verificação protege contra corrupção e substituição do instalador depois
da publicação. Ela não substitui a segurança do processo de release, mas cria
uma barreira objetiva antes da execução do binário baixado.
Delphi 10.1, 11, 12 e 13
A integração com o RAD Studio agora possui uma implementação compatível com o
Delphi 10.1 Berlin, compilada pelo BDS 17.0 real durante o build de release.
O instalador da versão 1.5.0 detecta e oferece integração para:
- Delphi 10.1 Berlin;
- Delphi 11 Alexandria;
- Delphi 12 Athens;
- Delphi 13 Florence.
Os plugins são compilados pelos toolchains correspondentes, distribuídos em
pastas separadas e registrados apenas nas IDEs selecionadas pelo usuário.
Para versões modernas, permanece disponível a integração completa com os
recursos atuais. O perfil do Delphi 10.1 utiliza uma implementação compatível
com as APIs disponíveis naquela geração.
Testes, SBOM e qualidade da release
A versão 1.5.0 foi validada com:
- 134 testes DUnitX em Win32;
- 134 testes DUnitX em Win64;
- 5 testes FPCUnit executados no Linux;
- compilação da CLI e GUI para Win32 e Win64;
- compilação dos plugins Delphi 10.1, 11, 12 e 13;
- validação de CycloneDX, SPDX, VEX e atestações;
- verificação de reprodutibilidade dos SBOMs;
- SonarQube Quality Gate aprovado.
A release contém o instalador Windows, a CLI Linux x86-64, os SBOMs CycloneDX
e SPDX, as atestações in-toto e um manifesto SHA256SUMS.txt cobrindo todos
esses artefatos.
Como atualizar
Quem já utiliza o Boss4D no Windows pode executar:
boss4d self-update
Também é possível baixar manualmente o instalador ou o pacote Linux na página
da release:
Antes de executar um download manual, compare seu SHA-256 com o valor publicado
em SHA256SUMS.txt.
Conclusão
O Boss4D 1.5.0 não se limita a adicionar comandos. A versão estabelece uma
arquitetura para um ecossistema de pacotes Delphi e Lazarus mais verificável,
portável e preparado para automação.
O registro público facilita a descoberta. Os pacotes imutáveis dão identidade
ao conteúdo. Checksums, assinaturas e proveniência aumentam a rastreabilidade.
A suíte de conformidade torna o protocolo testável. O progresso estruturado
aproxima a CLI dos pipelines modernos. E o host FPC/Linux inicia a expansão do
Boss4D para além do ambiente Windows.
Para equipes que precisam combinar produtividade com auditoria, segurança da
cadeia de fornecimento e builds reproduzíveis, a versão 1.5.0 representa o passo
mais abrangente do projeto até aqui.
Descubra mais sobre Régys Borges da Silveira
Assine para receber nossas notícias mais recentes por e-mail.
Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.