A Apple apresentou a linguagem de programação Swift 6.0

A Apple publicou o lançamento da linguagem de programação Swift 6.0. Compilações oficiais foram preparadas para Linux (Ubuntu 20.04/22.04/24.04, Debian 12, Fedora 39, Amazon Linux 2, RHEL 9), Windows 10 e macOS (Xcode). O código-fonte é distribuído sob a licença Apache 2.0.

Swift combina os melhores elementos de C e Objective-C e fornece um modelo de objeto compatível com Objective-C (o código Swift pode ser misturado com código C e Objective-C), mas difere no uso de alocação automática de memória, controle de estouro de variável , e arrays, proteção contra o uso de variáveis ​​​​não inicializadas e bloqueio de acesso à memória após sua liberação, o que aumenta significativamente a confiabilidade e segurança do código. Swift também oferece muitas técnicas modernas de programação, como encerramentos, programação genérica, expressões lambda, tuplas e tipos de dicionário, operações de coleta rápida e elementos de programação funcional.

A implementação do Swift é construída usando tecnologias do projeto gratuito LLVM. Para garantir alto desempenho, os programas Swift são compilados em código de máquina, que em testes demonstra desempenho 30% mais rápido que o código Objective-C. Em vez de um coletor de lixo, o Swift usa contagem de referências de objetos. O pacote inclui o Swift Package Manager, que fornece ferramentas para distribuição de módulos e pacotes com bibliotecas e aplicações na linguagem Swift, gerenciamento de dependências, download automatizado, montagem e vinculação de componentes.

Principais mudanças na nova versão:

  • Foi adicionado um novo modo de isolamento de dados, que fornece proteção em nível de compilador contra condições de corrida que ocorrem ao acessar dados de threads simultâneos. Quando esse modo está habilitado, o compilador verifica se os dados processados ​​pela execução simultânea do código são seguros para uso ou possuem bloqueios adequados.
  • É proposta uma versão experimental simplificada da linguagem Embedded Swift, destinada à criação de aplicações para sistemas embarcados e microcontroladores. No compilador, a montagem em um novo modo é implementada para plataformas de destino ARM e RISC-V e permite gerar arquivos executáveis ​​​​mais compactos, que consomem menos memória e separados, que não estão vinculados ao tempo de execução.
  • É proposta uma nova biblioteca de sincronização, que fornece uma API de baixo nível para organizar a execução paralela de código, execução atômica de operações e uso de mutexes.
  • Adicionado suporte para lançamentos digitados, possibilitando especificar o tipo de erro retornado na fase de definição da função. Por exemplo, abaixo está uma definição de função que retorna uma instância Record ou um erro do tipo ParseError: func parseRecord(from string: String) throws(ParseError) -> Record { // … }
  • É possível usar código genérico que possa funcionar simultaneamente com tipos copiáveis ​​e não copiáveis ​​(os tipos não copiáveis ​​podem ter apenas um proprietário, o que permite aumentar o desempenho ao substituir as verificações de propriedade pela proibição de cópia de recursos).
  • Portabilidade aprimorada com código C++ em áreas como tipos somente movimentação, métodos virtuais, argumentos padrão e tipos de biblioteca padrão adicionais (como std::map e std::optional).
  • Implementados tipos inteiros de 128 bits com e sem sinal.
  • A biblioteca Foundation é unificada em todas as plataformas suportadas (Linux, Windows, macOS) e pode ser usada em aplicativos portáteis. As implementações dos tipos JSONDecoder, URL, Calendar, FileManager e ProcessInfo foram reescritas em Swift.
  • Uma nova biblioteca Swift Testing foi adicionada, fornecendo uma API para escrever e executar testes.
  • O suporte para plataformas Linux e Windows foi significativamente expandido. Adicionada a capacidade de criar arquivos executáveis ​​totalmente vinculados estaticamente para Linux que não usam dependências externas (o SDK estático para Linux foi implementado). O teste é fornecido no Debian, Fedora e Ubuntu 24.04.

Fonte: opennet.ru

Adicionar um comentário