Como funcionam os builds incrementais no Swift
(medium.com)Pode ser resumido da seguinte forma.
-
Desde o Xcode 10, os builds incrementais funcionam por arquivo com base no
llbuild. -
Nos logs de build do Xcode, pode parecer que não há diferença, mas o sistema analisa as dependências, compara valores de hash da interface e gera arquivos de objeto
.o. Claro, se a implementação mudar, eles serão gerados novamente. -
Se o valor de hash da interface de outro arquivo-fonte do qual ele depende for o mesmo, o arquivo de objeto não é gerado.
-
As informações de dependência de arquivos Swift podem ser verificadas no arquivo
.swiftdeps. -
Uma parte do
swiftmoduleé criada por arquivo comopartial, e, no momento do link, o módulo inteiro é unido. -
Diferentemente de um build Java com Gradle, dividir por ISP não significa que ele será separado por interface e que apenas os arquivos alterados serão compilados.
-
Ao compilar arquivos-fonte Swift, os arquivos cuja implementação mudou são recompilados, mas, como as dependências são identificadas com foco nas declarações, só são recompilados os casos que dependem de arquivos cujas declarações mudaram.
Ainda não há comentários.