REPL и отладчик
Сообщество Swift.org использует отладчик LLDB, чтобы предоставить богатый REPL и среду отладки для языка Swift. Swift тесно связан с версией Swift-компилятора, встроенной в отладчик. Тесная интеграция компилятора и отладчика позволяет точно инспектировать типы Swift, а также полностью использовать возможности вычисления выражений в контексте быстро развивающегося языка.
Однако, из-за этой тесной интеграции, разработчики обязаны использовать соответствующую пару компилятора и отладчика, созданных с использованием одних и тех же исходных кодов. Отладка с использованием любой другой версии LLDB может привести к непредсказуемым результатам.
Почему объединить REPL и отладчик?
Несколько мотивирующих факторов способствовали решению использовать Swift-отладчик в качестве основы для Swift REPL.
-
Интегрированная отладка. Наиболее очевидным преимуществом является то, что Swift REPL также является полнофункциональным отладчиком. Легко объявить функцию, установить в ней точку останова и затем вызвать её. Когда выполнение останавливается на точке останова, все возможности отладчика сразу доступны.
1> func answer() -> Int { 2. return 42 3. } 4> :b 2 4> answer() Execution stopped at breakpoint. Enter LLDB commands to investigate (type help for assistance.) 1 func answer() -> Int { -> 2 return 42 3 } -
Восстановление после сбоя. Критические ошибки в Swift обычно приводят к немедленному завершению процесса, что имеет смысл для ошибок программиста в производственном коде, но нежелательно в интерактивном контексте. Swift REPL поддерживает исследование ошибок с помощью полного отладчика или размотку для немедленного восстановления.
1> ["One", "Two"][2] fatal error: Array index out of range Execution interrupted. Enter Swift code to recover and continue. Enter LLDB commands to investigate (type :help for assistance.) -
Надежное вычисление выражений. Поддержка полного спектра сценариев REPL в отладчике поставила высокую планку для вычислителя выражений. В результате, выражения в отладчике имеют доступ ко всему спектру возможностей языка Swift и могут свободно объявлять любые допустимые конструкции языка.
-
Согласованный формат вывода. Стратегия, используемая для текстового представления значений в REPL, разделяется с отладчиком, обеспечивая согласованный вывод даже для пользовательских типов.
Поддержка Xcode Playground
Разработчики Swift могут подходить к языку различными способами. Помимо традиционного компилятора командной строки и интерактивного REPL, одним из самых ранних способов взаимодействия для многих разработчиков было использование игровых площадок в Xcode. До Swift 3.0 и Xcode 8 это было возможно только с версией Swift, включённой в Xcode. Проект Xcode Playground Support позволяет построить цепочку инструментов Swift, включающую все необходимое для интеграции с опытом игровых площадок Xcode 8. Поддержка Playground будет включена в соответствующие снимки. Скачайте снимок, установите его и выберите цепочку инструментов, чтобы работать с последними функциями Swift в игровых площадках Xcode.
Проект создаёт два фреймворка:
-
PlaygroundSupport. Этот фреймворк определяет API, к которому может быть явным образом обращён код игровой площадки для взаимодействия с Xcode. Например: это типично для игровых площадок, которые идентифицируют определённый вид для отображения в реальном времени анимации или взаимодействия, и когда игровые площадки автоматически переходят между страницами при выполнении определённых критериев.
-
PlaygroundLogger. Этот проект используется неявно для записи значений, представляющих интерес на строчно-базовом уровне, и передачи их Xcode. Вызовы автоматически вставляются в код игровой площадки, так что явное обращение не требуется.
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/lldb/