Поделиться через


Журнал выпусков Objective Sharpie

3.4 (11 октября 2017 г.)

Скачать версию 3.4.0

  • Поддержка Xcode 9: iOS 11, macOS 10.13, tvOS 11 и watchOS 4
  • Проблемы с SIMD и tgmath теперь должны быть исправлены
  • Телеметрия удалена полностью

3.3 (3 августа 2016 г.)

  • Поддержка Xcode 8 Beta 4, iOS 10, macOS 10.12, tvOS 10 и watchOS 3.
  • Обновлено до последней главной сборки Clang (2016-08-02)
  • Сохранение параметров отправки телеметрии в sharpie pod bindsharpie bind.

3.2 (14 июня 2016 г.)

  • Поддержка Xcode 8 Beta 1, iOS 10, macOS 10.12, tvOS 10 и watchOS 3.

3.1 (31 мая 2016 г.)

  • Поддержка CocoaPods 1.0
  • Улучшена надежность привязки CocoaPods путем создания собственного и .framework последующего привязки.
  • Копирование CocoaPods .framework и определение привязки в Binding каталог, чтобы упростить интеграцию с проектами привязки Xamarin.iOS и Xamarin.Mac

3.0 (5 октября 2015 г.)

  • Поддержка новых Objective-C функций языка, включая упрощенные универсальные шаблоны и допустимость null, как представлено в Xcode 7
  • Поддержка последних пакетов SDK для iOS и Mac.
  • Поддержка создания и анализа проекта Xcode! Теперь вы можете передать полный проект Xcode в Objective Sharpie, и он сделает все возможное, чтобы выяснить правильное действие (например, sharpie bind Project.xcodeproj -sdk ios).
  • Поддержка CocoaPods ! Теперь вы можете настроить, построить и привязать CocoaPods непосредственно из Objective Sharpie (например, sharpie pod init ios AFNetworking && sharpie pod bind).
  • Если платформы привязки, модули Clang будут включены, если платформа поддерживает их, что приводит к наиболее правильному анализу платформы, так как структура платформы определяется его module.modulemap.
  • Для проектов Xcode, создающих продукт платформы, анализ этого продукта вместо промежуточных целевых объектов продукта в качестве целевых объектов, отличных от платформы в проекте Xcode, может по-прежнему иметь неоднозначность, которая не может быть разрешена автоматически.

2.1.6 (17 марта 2015 г.)

  • Исправлена привязка выражения двоичного оператора: левая сторона выражения была неправильно заменена правой рукой (например 1 << 0 , неправильно привязана как 0 << 1). Спасибо Адаму Кемпу за то, что это замечает!
  • Исправлена проблема с NSInteger привязкой и NSUInteger привязкой как int и uint вместо nintnuint i386; -DNS_BUILD_32_LIKE_64 теперь передается в Clang, чтобы сделать синтаксический анализ objc/NSObjCRuntime.h работой, как ожидалось в i386.
  • Архитектура по умолчанию для пакетов SDK для Mac OS X (например -sdk macosx10.10, ) теперь x86_64 вместо i386, поэтому -arch их можно исключить, если не переопределить значение по умолчанию.

2.1.0 (15 марта 2015 г.)

  • sizeof Выражения C, тип аргумента которых не сопоставляется с примитивным типом C#, будут оцениваться в Clang и привязаны как целочисленный литерал, чтобы избежать создания недопустимого C#.
  • Исправьте Objective-C синтаксис свойств, тип которых является блоком (Objective-C код отображается в комментариях выше ограничивающих объявлений).
  • Привязка разложенных типов в качестве исходного типа (int[] распадается во int* время семантического анализа в Clang, но привязывает его как исходное как написанное int[] ).

Благодарим Дэйв Данкин за отчеты о многих ошибках, исправленных в этом выпуске!

2.0.0: 9 марта 2015 г.

Objective Sharpie 2.0 — это основной выпуск, который включает улучшенный драйвер и синтаксический анализ на основе Clang и новый механизм привязки на основе NRefactory. Эти улучшенные компоненты обеспечивают гораздо лучшие привязки, особенно вокруг привязки типов. Многие другие улучшения были сделаны, которые являются внутренними для Objective Sharpie, что даст множество видимых пользователем функций в будущих выпусках.

Objective Sharpie 2.0 основан на Clang 3.6.1.

Улучшения привязки типов

  • Objective-C Теперь поддерживаются блоки. Сюда входят анонимные или встроенные блоки и блоки с именем.typedef Анонимные блоки будут привязаны как System.Action или System.Func делегаты, а именованные блоки будут привязаны как строго delegate именованные типы.

  • Существует улучшенная эвристика именования для анонимных перечислений, которые немедленно предшествуют typedef разрешению встроенного целочисленного типа, например long или int.

  • Указатели C теперь привязаны как указатели C# unsafe , а не System.IntPtr. Это приводит к более четкости привязки, когда может потребоваться превратить параметры указателя в out или ref параметры. Невозможно всегда определить, должен ли параметр быть out или ref, поэтому указатель сохраняется в привязке, чтобы упростить аудит.

  • Исключение из приведенной выше привязки указателя заключается в том, что в качестве параметра обнаруживается указатель на 2 ранга Objective-C . В этих случаях соглашение является преобладающим, и параметр будет привязан как out (например NSError **error , → out NSError error).

Проверка атрибута

Часто вы найдете, что привязки, созданные Objective Sharpie, теперь будут аннотированы атрибутом [Verify] . Эти атрибуты указывают на то, что вы должны убедиться , что Objective Sharpie сделал правильное действие, сравнивая привязку с исходным объявлением C/Objective-C (которое будет предоставлено в комментарии выше ограничивающего объявления).

Проверка рекомендуетсядля всех ограничивающих объявлений, но, скорее всего, требуется для объявлений, аннотированных атрибутом[Verify]. Это связано с тем, что во многих ситуациях в исходном исходном коде недостаточно метаданных, чтобы определить, как лучше всего создать привязку. Возможно, вам потребуется ссылаться на документацию или комментарии кода в файлах заголовков, чтобы принять оптимальное решение о привязке.

Дополнительные сведения см. в документации по проверке атрибутов .

Другие заметные улучшения

  • using Теперь операторы создаются на основе привязанных типов. Например, если привязка связана NSURL , using Foundation; то также будет создана инструкция.

  • struct и union объявления теперь будут привязаны, используя [FieldOffset] трюк для профсоюзов.

  • Значения перечисления с инициализаторами константных выражений теперь будут правильно привязаны; Полное выражение преобразуется в C#.

  • Теперь привязываются методы и блоки Variadic.

  • Теперь платформы поддерживаются с помощью -framework параметра. Дополнительные сведения см. в документации по Binding Native Frameworks .

  • Objective-C исходный код будет автоматически обнаружен, что должно исключить необходимость передачи -ObjC или -xobjective-c в Clang вручную.

  • Использование модуля Clang (@import) теперь обнаруживается автоматически, что должно исключить необходимость передачи -fmodules в Clang вручную для библиотек, которые используют поддержку нового модуля в Clang.

  • Теперь Xamarin Unified API является целевым объектом привязки по умолчанию; -classic используйте параметр для 32-разрядного классического API.

Исправления важных ошибок

  • Исправление instancetypeObjective-C привязки при использовании в категории
  • Полные категории имен Objective-C
  • Протоколы префикса Objective-C с I (например, INSCopying вместо NSCopying)

1.1.35: 21 декабря 2014 г.

Исправлены незначительные ошибки.

1.1.1: 15 декабря 2014 г.

1.1.1 был первым основным выпуском после 1,5 лет внутреннего использования и разработки в Xamarin после первоначальной предварительной версии Objective Sharpie в апреле 2013 года. Этот выпуск является первым, который обычно считается стабильным и пригодным для использования для широкого спектра собственных библиотек, в котором представлен новый серверный сервер Clang.