Compartilhar via


Histórico de lançamentos do Objective Sharpie

3.4 (11 de outubro de 2017)

Baixar v3.4.0

  • Suporte para Xcode 9: iOS 11, macOS 10.13, tvOS 11 e watchOS 4
  • Problemas com SIMD e tgmath agora devem ser corrigidos
  • A telemetria foi removida completamente

3.3 (3 de agosto de 2016)

  • Suporte para Xcode 8 Beta 4, iOS 10, macOS 10.12, tvOS 10 e watchOS 3.
  • Atualizado para a última compilação mestre do Clang (2016-08-02)
  • Persista as opções de envio de telemetria de sharpie pod bind até sharpie bind.

3.2 (14 de junho de 2016)

  • Suporte para Xcode 8 Beta 1, iOS 10, macOS 10.12, tvOS 10 e watchOS 3.

3.1 (31 de maio de 2016)

  • Suporte para CocoaPods 1.0
  • Maior confiabilidade de ligação dos CocoaPods criando primeiro um nativo .framework e depois ligando isso
  • Copie os CocoaPods .framework e a definição de vinculação em um Binding diretório para facilitar a integração com os projetos de vinculação Xamarin.iOS e Xamarin.Mac

3.0 (5 de outubro de 2015)

  • Suporte para novos Objective-C recursos de linguagem, incluindo genéricos leves e anulabilidade, conforme introduzido no Xcode 7
  • Suporte para os SDKs iOS e Mac mais recentes.
  • Suporte à criação e análise de projetos Xcode! Agora você pode passar um projeto Xcode completo para o Objective Sharpie e ele fará o seu melhor para descobrir a coisa certa a fazer (por exemplo). sharpie bind Project.xcodeproj -sdk ios
  • Suporte CocoaPods ! Agora você pode configurar, construir e vincular CocoaPods diretamente do Objective Sharpie (por exemplo sharpie pod init ios AFNetworking && sharpie pod bind, ).
  • Ao vincular frameworks, os módulos Clang serão habilitados se o framework os suportar, resultando na análise mais correta de um framework, já que a estrutura do framework é definida por seu module.modulemap.
  • Para projetos Xcode que criam um produto de estrutura, analisar esse produto em vez de destinos de produto intermediário como destinos de não-estrutura em um projeto Xcode ainda pode ter ambiguidades que não podem ser resolvidas automaticamente.

2.1.6 (17 de março de 2015)

  • Vinculação de expressão de operador binário fixo: o lado esquerdo da expressão foi trocado incorretamente pelo lado direito (por exemplo, 1 << 0 foi incorretamente ligado como 0 << 1). Obrigado a Adam Kemp por perceber isso!
  • Corrigido um problema com NSInteger e NSUInteger sendo vinculado como int e uint em vez de nint e nuint no i386, -DNS_BUILD_32_LIKE_64 agora é passado para Clang para fazer a objc/NSObjCRuntime.h análise funcionar como esperado no i386.
  • A arquitetura padrão para SDKs do Mac OS X (por exemplo -sdk macosx10.10, ) agora é x86_64 em vez de i386, portanto -arch , pode ser omitida, a menos que a substituição do padrão seja desejada.

2.1.0 (15 de março de 2015)

  • sizeof As expressões C cujo tipo de argumento não é mapeado para um tipo primitivo C# serão avaliadas em Clang e vinculadas como um literal inteiro para evitar a geração de C# inválido.
  • Corrigir Objective-C sintaxe para propriedades cujo tipo é um bloco (Objective-C código aparece nos comentários acima de declarações vinculadas).
  • Vincule tipos deteriorados como seu tipo original (int[] decai para durante a int* análise semântica em Clang, mas vincule-o como o original como escrito int[] em vez disso).

Muito obrigado a Dave Dunkin por relatar muitos dos bugs corrigidos nesta versão pontual!

2.0.0: 9 de março de 2015

O Objective Sharpie 2.0 é uma grande versão que apresenta um driver e analisador aprimorados baseados em Clang e um novo mecanismo de ligação baseado em NRefactory. Esses componentes aprimorados fornecem ligações muito melhores, particularmente em relação à vinculação de tipos. Muitas outras melhorias foram feitas que são internas ao Objective Sharpie, o que renderá muitos recursos visíveis para o usuário em versões futuras.

O Objective Sharpie 2.0 é baseado no Clang 3.6.1.

Aprimoramentos de vinculação de tipo

  • Objective-C agora há suporte. Isso inclui blocos anônimos/embutidos e blocos nomeados via typedef. Os blocos anônimos serão vinculados como System.Action ou System.Func delegados, enquanto os blocos nomeados serão vinculados como tipos fortemente nomeados delegate .

  • Há uma heurística de nomenclatura aprimorada para enums anônimos que são imediatamente precedidos por uma typedef resolução para um tipo integral embutido, como long ou int.

  • Os ponteiros C agora são vinculados como ponteiros C# unsafe em vez de System.IntPtr. Isso resulta em mais clareza na vinculação para quando você deseja transformar parâmetros de ponteiro em outref parâmetros. Nem sempre é possível inferir se um parâmetro deve ser out ou ref, portanto, o ponteiro é mantido na associação para permitir uma auditoria mais fácil.

  • Uma exceção à associação de ponteiro acima é quando um ponteiro de 2 classificações para um Objective-C objeto é encontrado como um parâmetro. Nesses casos, a convenção é predominante e o parâmetro será vinculado como out (por exemplo NSError **error , → out NSError error).

Verificar atributo

Você geralmente descobrirá que as ligações produzidas pelo Objective Sharpie agora serão anotadas com o [Verify] atributo. Esses atributos indicam que você deve verificar se a Objective Sharpie fez a coisa correta, comparando a vinculação com a declaração C/Objective-C original (que será fornecida em um comentário acima da declaração vinculada).

A verificação é recomendada para todas as declarações vinculadas, mas é provavelmente necessária para declarações anotadas com o [Verify] atributo. Isso ocorre porque, em muitas situações, não há metadados suficientes no código-fonte nativo original para inferir a melhor forma de produzir uma associação. Talvez seja necessário fazer referência à documentação ou aos comentários de código dentro dos arquivos de cabeçalho para tomar a melhor decisão de vinculação.

Consulte a documentação Verificar atributos para obter mais detalhes.

Outras melhorias notáveis

  • using As instruções agora são geradas com base em tipos vinculados. Por exemplo, se um NSURL foi vinculado, uma using Foundation; instrução também será gerada.

  • struct e union as declarações passarão a ser vinculadas, usando o truque para os [FieldOffset] sindicatos.

  • Os valores de enum com inicializadores de expressão constante agora serão vinculados corretamente; a expressão completa é traduzida para C#.

  • Métodos e blocos variádicos agora estão vinculados.

  • As estruturas agora são suportadas por meio da -framework opção. Consulte a documentação sobre Binding Native Frameworks para obter mais detalhes.

  • Objective-C o código-fonte será detectado automaticamente agora, o que deve eliminar a necessidade de passar -ObjC ou -xobjective-c para Clang manualmente.

  • O uso do módulo Clang (@import) agora é detectado automaticamente, o que deve eliminar a necessidade de passar -fmodules para o Clang manualmente para bibliotecas que usam o novo suporte a módulos no Clang.

  • A API unificada do Xamarin agora é o destino de vinculação padrão; use a -classic opção para direcionar a API Clássica somente de 32 bits.

Correções de bugs notáveis

  • Corrigir instancetype vinculação quando usado em uma Objective-C categoria
  • Categorias de nome Objective-C completo
  • Protocolos de prefixo Objective-C com I (por exemplo, INSCopying em vez de NSCopying)

1.1.35: 21 de dezembro de 2014

Correções de bug secundárias.

1.1.1: 15 de dezembro de 2014

A versão 1.1.1 foi a primeira grande versão após 1,5 anos de uso interno e desenvolvimento no Xamarin após a prévia inicial do Objective Sharpie em abril de 2013. Esta versão é a primeira a ser geralmente considerada estável e utilizável para uma ampla variedade de bibliotecas nativas, apresentando um novo back-end Clang.