Segurança

12 fev, 2019

Swift 5 chega com melhorias na segurança da memória

Publicidade

Com o lançamento do Swift 5, a Apple trouxe novos recursos de segurança para sua linguagem de programação. A novidade da vez é a possibilidade de trabalhar com configurações mais avançadas exclusividade em run-time.

O recurso visa melhorar a segurança da memória ao impedir que uma variável seja acessada por um nome diferente durante a modificação de seu valor, explicou Andrew Trick, engenheiro de software na Apple, em no portal de desenvolvimento Swift.

O recurso estava disponível em builds do Swift 4, mas os aplicativos que não foram totalmente testados no debug podem ser afetados pela atualização, afirmou Trick.

Ele também explicou que em situações onde a intenção do desenvolvedor pode ser ambígua, o compilador não pode garantir o comportamento de um aplicativo. Por exemplo, uma variável que é lida e chamada dentro do mesmo escopo que está modificado causaria violação de exclusividade em run-time com esse novo recurso.

“Diagnósticos de compile-time (estático) detectam muitas violações de exclusividade comuns, mas diagnósticos run-time (dinâmico) também devem detectar violações envolvendo escaping closures, propriedades de class types, propriedades estáticas e variáveis globais”, afirmou Trick.

Enquanto esses tipos de violação de exclusividade que o compilador poderia detectar aumentou ao longo das sucessivas versões do Swift 4, o Swift 4.2 os tornou mais visíveis com o aviso de erro de acesso exclusivo.

“O Swift 5 conserta os buracos restantes no modelo da linguagem e o reforça completamente.”, acrescentou Trick.

Para aqueles aplicativos que não foram totalmente testados no debug, Trick disse que a sobrecarga devido às verificações de acesso podem causar uma pequena perda de performance, mas se é mensurável, os desenvolvedores devem criar um bug report.

“Como uma diretriz geral, evite acessar propriedades de classe dentro dos ciclos de performance mais críticos – particularmente em objetos diferentes em cada iteração de ciclo, e se não for possível,  tornar a classe de propriedades privada ou interna pode ajudar o compilador a provar que nenhum outro código acessa a mesma propriedade dentro do loop”, concluiu.

Mais exemplos e informações podem ser encontrados neste link.