LLDB and Swift

Hi all,

Earlier today, you may have heard that Swift went open source over at swift.org. I just wanted to take a moment to mention the Swift debugger and REPL and how they relate to LLDB.

Swift’s Debugger and REPL are built on LLDB’s source-level plug-in architecture. As such, the Swift Debugger repository at github.com/apple/swift-lldb naturally contains the LLDB source from llvm.org’s LLDB repository, plus additions for Swift language support. We merge regularly and make every attempt to minimize our differences with llvm.org’s LLDB. For more information on how we’re handling this, have a look at swift.org/contributing/#llvm-and-swift.

As we’ve worked hard to make it straightforward to develop additive-only language support in LLDB, the Swift support can readily be found by finding the new files in the swift-lldb repository vs. those found at llvm.org/svn/llvm-project/lldb/trunk. For the rest of the LLDB files in common, we do still have a small number of diffs in github.com/apple/swift-lldb vs. llvm.org TOT. We will work through upstreaming these quickly. I’ll touch on some of those differences briefly here:

  • Several minor places where full language abstraction hasn’t yet occurred, where we’re explicitly checking for Swift-related details. Abstracting out those remaining places and providing the hooks in llvm.org LLDB will benefit all languages.

  • Printed-form version string handling. The ‘lldb -v’ and ‘(lldb) version’ commands create a different version string in both Xcode and cmake-based Swift LLDB. We will work to incorporate this into llvm.org LLDB once the language/component version support info is properly abstracted out.

  • Test infrastructure. There are a few places where Swift language support (e.g. swift compiler flags, runtime support directories, etc.) are added in order to enable building Swift-based test inferiors. We may be able to rearrange things to make those language-specific additions more readily pluggable in the core LLDB test runner.

We look forward to upstreaming the differences in common files in the coming days and weeks.

Please feel free to contact me if you have any questions.



Very nice. Congrats on your release!

Thanks, Kamil!