9 февраля, 2015 года вышла версия 6.3 beta Xcode.

Это бета-версия включает в себя значительно улучшенную версию Swift компилятора, а также новые возможности самого языка Swift. Для полного списка изменений, прочтите примечания к выпуску. Этот пост будет посвящен основным новшествам.

Улучшения компилятора

Компилятор Swift 1.2 был спроектирован, чтобы быть более стабильным и повысить производительность во всех отношениях. Эти изменения также помогут испытать больше удовольствия при работе с Swift в Xcode. Некоторые из наиболее заметных улучшений включают в себя:

  • Инкрементальная сборка - Исходные файлы, которые не изменились, больше не будут повторно компилироваться по умолчанию, что значительно уменьшит время создания для наиболее распространенных случаев. Большие структурные изменения кода все еще могут потребовать повторной сборки нескольких файлов.
  • Более быстрый запуск - Debug сборки генерируют бинарные файлы, которые запускаются значительно быстрее, и новая оптимизация будет еще более ощутимой для Release сборок.
  • Улучшенная диагностика компилятора - Более понятные сообщения об ошибках и предупреждениях наряду с новым fix-it функционалом, упростит написание кода
  • Улучшение стабильности - Наиболее часто встречаемые падения компилятора были устранены. Вы также должны заметить меньшее количество предупреждений SourceKit в редакторе Xcode.

Новые возможности языка

В Swift 1.2, язык был доработан для обеспечения безопасного и предсказуемого поведения.. Мы также продолжаем совершенствовать взаимодействие Swift и Objective-C. Некоторые из наиболее важных новшеств:

  • as! для failable приведения типов - Теперь приведение типов, которое может вызвать аварийное завершение приложения во время выполнения теперь объявляется с новым оператором as! для того, чтобы сделать потенциальные проблемы заметными для мэйнтейнеров и тех, кто просматривает Ваш код.
  • Nullability теперь может быть описана в Objective-C заголовках - Новые расширения Objective-C в Clang позволяет выразить Nullability указателей и блоков в вашем Objective-C API. Вы можете создать Objective-C фреймворк, который будет прекрасно работать со SWIFT-кодом, и улучшит Ваши возможности при миксовании с Objective-C кодом в одном проекте.
  • Перечисления теперь могут быть экспортированы в Objective-C с помощью атрибута objc - Для примера, следующий Swift код:

    @objc enum Bear: Int {
    	case Black, Grizzly, Polar
    }

    импортируется в Objective-C как:

    typedef NS_ENUM(NSInteger, Bear) {
    	BearBlack, BearGrizzly, BearPolar
    };
  • let константы теперь более функциональны - Новое правило, что константы, которые инициализируются с использованием ключевого слова let, должны быть инициализированы перед использованием, и они могут быть только инициализированны, а не переназначены или изменены после инициализации.

    Это позволяет использовать такие паттерны как:

    let x : SomeThing
    if condition {
    	x = foo()
    } else {
    	x = bar()
    }
    use(x)

    Формально это требует использования var, даже если не происходит никакого изменения значения. Свойства были упущены в этой модели для упрощения их семантики в инициаллизаторах.

  • Более функциональное разворачивание опциональных переменных с if let - Конструкция if let теперь позволяет разворачивать несколько опциональных переменных за один раз, также как и находиться внутри условий. Это позволяет использовать операторы управления одним потоком без лишней вложенности.
  • Новая родная структура данных - Неупорядоченная коллекция уникальных элементов, которые соединяет с NSSet и обеспечивают семантику значений таких как массив и словарь.

Резюме

Мы ценим все отчеты об ошибках, которы вы нам отправили, и ожидаем, что многие из наиболее распространенных проблем были устранены в бета-версии. Swift 1.2 является важным шагом вперед как для языка так и для средств разработки.
Это обновление содержит некоторые изменения, которые требуют рефакторинга, поэтому Xcode 6.3 включает в себя утилиту для автоматизации этого процесса. Чтобы начать миграцию, откройте меню Правка, затем выберите Преобразовать > В Swift 1.2 ...

Добавить комментарий