Spec-Zone.ru › Swift

Стандартная библиотека

Стандартная библиотека Swift определяет базовый уровень функциональности для написания программ на Swift. Документация стандартной библиотеки в настоящее время размещена на сайте Apple Developer.

Стандартная библиотека Swift, вместе с её тестами и встроенной документацией, является частью основного репозитория Swift на GitHub.

Предварительная версия стандартной библиотеки

Пакет предварительной версии стандартной библиотеки предоставляет ранний доступ к новым добавлениям в стандартную библиотеку. Когда новые API стандартной библиотеки, которые могут быть реализованы как автономная библиотека, принимаются через процесс Swift Evolution, они публикуются как отдельные пакеты и включаются в пакет предварительной версии, который действует как обобщающая библиотека. В настоящее время пакет предварительной версии включает следующие отдельные пакеты:

Пакет Описание
SE0270_RangeSet Операции над несмежными поддиапазонами коллекций, такими как subranges(where:) и moveSubranges(_:to:), а также поддерживающий тип RangeSet.
SE0288_IsPower Расширяет BinaryInteger методом isPower(of:), который возвращает, является ли целое число степенью другого.

Проектирование стандартной библиотеки

Стандартная библиотека Swift включает в себя ряд типов данных, протоколов и функций, включая фундаментальные типы данных (например, Int, Double), коллекции (например, Array, Dictionary) вместе с протоколами, которые их описывают, и алгоритмами, которые на них действуют, символы и строки, и низкоуровневые примитивы (например, UnsafeMutablePointer). Реализация стандартной библиотеки находится в подкаталоге stdlib/public внутри репозитория Swift, который далее подразделяется на:

  • Ядро стандартной библиотеки: Ядро стандартной библиотеки (реализовано в stdlib/public/core), включая определения всех типов данных, протоколов, функций и т.д.

  • Выполнение: Выполнение поддержки языка (реализовано в stdlib/public/runtime), которое расположено между компилятором и ядром стандартной библиотеки. Оно отвечает за реализацию многих динамических функций языка, таких как приведение типов (например, для операторов as! и as?), метаданных типов (для поддержки дженериков и рефлексии) и управления памятью (выделение объектов, подсчёт ссылок и т. д.). В отличие от библиотек более высокого уровня, среда выполнения написана в основном на C++ или (при необходимости для межплатформенного взаимодействия) Objective-C.

  • Наложения SDK: Специфичные для платформ Apple, наложения SDK (реализованы в stdlib/public/Platform) предоставляют Swift-специфические дополнения и модификации существующих фреймворков Objective-C для улучшения их сопоставления в Swift. В частности, наложение Foundation предоставляет дополнительную поддержку взаимодействия с кодом Objective-C.

Стандартная библиотека Swift написана на Swift, но поскольку это код Swift самого низкого уровня в стеке — ответственный за реализацию основных типов данных, на которых строится другой код Swift, — он немного отличается от обычного кода Swift. Некоторые из отличий включают:

  • Доступ к встроенным функциям компилятора: Модуль Builtin, который в основном доступен только стандартной библиотеке, предоставляет встроенные функции компилятора (например, для прямого создания инструкций SIL) и типы данных (например, «сырые» указатели, примитивные целые типы LLVM), необходимые для реализации типов данных, фундаментальных для программирования на Swift.

  • Видимость часто управляется соглашением: Декларации стандартной библиотеки часто нуждаются в большей видимости, чем обычно желательно, из-за способа компиляции и оптимизации стандартной библиотеки. Например, модификаторы private никогда не используются. Более важно, что часто необходимо сделать что-то public, даже если это не предназначено как часть публичного интерфейса. В таких случаях следует использовать ведущую подчёркивание, чтобы указать, что публичный API предназначен для закрытого использования. Политика управления доступом в стандартной библиотеке документирована в docs/AccessControlInStdlib.rst.

  • Повторный код использует gyb: gyb — это простой инструмент для генерации повторяющегося кода из шаблона, который часто используется в стандартной библиотеке. Например, он используется для создания определений целых типов различных размеров (Int8, Int16, Int32, Int64 и т. д.) из единственного источника.

  • Тестирование тесно связано с компилятором: Стандартная библиотека и компилятор развиваются вместе и тесно связаны. Изменения в основных типах данных (например, Array или Int) могут потребовать изменений со стороны компилятора, и наоборот, поэтому набор тестов стандартной библиотеки хранится в той же структуре каталогов, что и компилятор, в test/stdlib и validation-test/stdlib.

The Swift Programming Language, Copyright © 2014-2025 Apple Inc.
Swift and the Swift logo are trademarks of Apple Inc.

Documentation for Swift 6.0.3


https://www.swift.org/documentation/standard-library/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API