# Swift.org Blog: REPL Support for Swift Packages

**URL:** <https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792>\
**Category:** Package Manager\
**Created:** [October 8, 2018, 8:40pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792 "2018-10-08T20:40:29Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aciid](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/aciid/32/429_2.png) [@Aciid](https://forums.swift.org/u/Aciid)\
**Post date:** [October 8, 2018, 8:40pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/1 "2018-10-08T20:40:29Z")

</div>

Hi,

There is a new blog post titled [REPL Support for Swift Packages](https://swift.org/blog/swiftpm-repl-support/) on the [Swift.org](http://Swift.org) website. It discusses the new REPL support that was recently merged to SwiftPM.

Feel free to use this thread for any questions or discussions.

---

<div class="post-metadata">

**Author:** ![torquato](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/torquato/32/1203_2.png) [@torquato](https://forums.swift.org/u/torquato)\
**Post date:** [October 8, 2018, 10:52pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/2 "2018-10-08T22:52:27Z")

</div>

Will this affect Xcode Playgrounds in any way? Maybe in future releases? Like drag & drop a SwiftPM package from the finder onto/ into a Playground to experiment with it there?

---

<div class="post-metadata">

**Author:** ![twof](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/twof/32/1628_2.png) [@twof](https://forums.swift.org/u/twof)\
**Post date:** [October 9, 2018, 12:49am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/3 "2018-10-09T00:49:09Z")

</div>

`swift run --repl` provides the option to import targets, but what are your thoughts on automatically importing targets? Being able to run code before showing a prompt might also be a good option, and could yield some interesting tooling.

---

<div class="post-metadata">

**Author:** ![Aciid](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/aciid/32/429_2.png) [@Aciid](https://forums.swift.org/u/Aciid)\
**Post date:** [October 9, 2018, 12:52am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/4 "2018-10-09T00:52:49Z")

</div>

> [@twof](#):
>
> `swift run --repl` provides the option to import targets, but what are your thoughts on automatically importing targets?

Yeah, I was also thinking of a similar thing where we would pre-import the root package's targets. I'll try to discuss the possibilities with @Jim_Ingham soon.

> [@twof](#):
>
> Being able to run code before showing a prompt might also be a good option, and could yield some interesting tooling

What kind of scenarios are you thinking? Like boilerplate-y setup code?

---

<div class="post-metadata">

**Author:** ![twof](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/twof/32/1628_2.png) [@twof](https://forums.swift.org/u/twof)\
**Post date:** [October 9, 2018, 1:25am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/5 "2018-10-09T01:25:49Z")

</div>

Specifically there was talk of setting up a `vapor console` similar to `rails console` where users could execute ORM queries and whatnot.

Something like:

```swift
$ vapor console
> Todo.query(on: conn).all()
[{id:1, title: "Wash The Dog"},{id:2, title:"take out the trash"}]
>

```

The details are a little fuzzy, but for that to work you'd need to import a few things (Fluent, Vapor, The app itself), run configurations, and retain a database connection (`let conn = databaseConnection`).

I'll `--repl` up and running so I can give you a more solid answer.

I'm sure folks would think of other uses too, but that's what I'm looking at right now.

---

<div class="post-metadata">

**Author:** ![twof](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/twof/32/1628_2.png) [@twof](https://forums.swift.org/u/twof)\
**Post date:** [October 9, 2018, 1:35am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/6 "2018-10-09T01:35:25Z")

</div>

Any idea what might be going wrong here?

```swift
$ swift run --repl
Compile CYaml src/writer.c
Compile CYaml src/emitter.c
Compile CYaml src/scanner.c
Compile CYaml src/parser.c
Compile CYaml src/api.c
Compile CYaml src/reader.c
Compile Swift Module 'Yams' (16 sources)

Linking ./.build/x86_64-apple-macosx10.10/debug/libYams__REPL.dylib
ld: unexpected token: !tapi-tbd-v3 file '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks//CoreFoundation.framework/CoreFoundation.tbd' for architecture x86_64

<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)

$ swift -v
Apple Swift version 4.2-dev (LLVM aeaaca98ed, Clang 1ddef2249a, Swift 20bb815b62)
Target: x86_64-apple-darwin17.7.0
/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2018-10-03-a.xctoolchain/usr/bin/lldb "--repl=-enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -color-diagnostics"

```

---

<div class="post-metadata">

**Author:** ![Aciid](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/aciid/32/429_2.png) [@Aciid](https://forums.swift.org/u/Aciid)\
**Post date:** [October 9, 2018, 1:47am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/7 "2018-10-09T01:47:02Z")

</div>

Interesting. I can't really reproduce this but it most likely due to a difference in OS or Xcode installation. Can you try it with the latest Xcode beta? Also, please file a JIRA!

---

<div class="post-metadata">

**Author:** ![twof](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/twof/32/1628_2.png) [@twof](https://forums.swift.org/u/twof)\
**Post date:** [October 9, 2018, 2:24am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/8 "2018-10-09T02:24:34Z")

</div>

[https://bugs.swift.org/browse/SR-8946](https://bugs.swift.org/browse/SR-8946)

Any other logs or info I can grab for you?

---

<div class="post-metadata">

**Author:** ![DevAndArtist](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/devandartist/32/287_2.png) [@DevAndArtist](https://forums.swift.org/u/DevAndArtist)\
**Post date:** [October 9, 2018, 6:51am UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/9 "2018-10-09T06:51:46Z")

</div>

Might be a bunch of silly questions:

- Is there a way to integrate REPL in to custom tooling?
- Does REPL provide a way to observe it's output?

REPL support for SwiftPM looks almost like Xcode Playground without the UI layer.

---

<div class="post-metadata">

**Author:** ![shaneqi](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/shaneqi/32/5114_2.png) [@shaneqi](https://forums.swift.org/u/shaneqi)\
**Post date:** [October 31, 2018, 10:35pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/10 "2018-10-31T22:35:51Z")

</div>

Isn't this feature included in Xcode 10.1 (swift 4.2.1)?

I updated my Xcode to 10.1 and tried to use this feature by `swift run --repl`, but got `error: unknown option --repl; use --help to list available options`

```swift
Bold:~ shane$ swift --version
Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1)
Target: x86_64-apple-darwin18.2.0
Bold:~ shane$ swift package --version
Apple Swift Package Manager - Swift 4.2.0 (swiftpm-14460.2)

```

---

<div class="post-metadata">

**Author:** ![Aciid](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/aciid/32/429_2.png) [@Aciid](https://forums.swift.org/u/Aciid)\
**Post date:** [October 31, 2018, 10:41pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/11 "2018-10-31T22:41:34Z")

</div>

Nope, this feature aligns with Swift 5 release.

---

<div class="post-metadata">

**Author:** ![shaneqi](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/shaneqi/32/5114_2.png) [@shaneqi](https://forums.swift.org/u/shaneqi)\
**Post date:** [October 31, 2018, 10:43pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/12 "2018-10-31T22:43:34Z")

</div>

Got it, look forward to it. Thanks!

---

<div class="post-metadata">

**Author:** ![peebles](https://avatars.discourse-cdn.com/v4/letter/p/ebca7d/32.png) [@peebles](https://forums.swift.org/u/peebles)\
**Post date:** [January 7, 2019, 9:03pm UTC](https://forums.swift.org/t/swift-org-blog-repl-support-for-swift-packages/16792/13 "2019-01-07T21:03:17Z")

</div>

I am trying this "run --repl" on an Ubuntu 18.04 dev machine:

```
# swift --version 
Swift version 5.0-dev (LLVM f63b283c71, Clang 41ac4c4262, Swift bbfc0649ed)
Target: x86_64-unknown-linux-gnu

# git clone https://github.com/krzyzanowskim/CryptoSwift.git
# cd CryptoSwift
# swift run --repl
<unknown>:0: error: unable to execute command: <unknown>

```

Not sure where to go from here.
