Guild icon
swift-developers-japan
main / swiftbot-sandbox
Avatar
omochimetaru 4/2/2018 5:50 AM
@swiftbot print("hello channel")
Avatar
swiftbot BOT 4/2/2018 5:50 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
5:50 AM
hello channel
Avatar
@swiftbot let hoge = "hoge" dump(hoge)
Avatar
swiftbot BOT 4/2/2018 5:53 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
5:53 AM
- "hoge"
Avatar
Kishikawa Katsumi 4/2/2018 6:17 AM
Targetの出力は不変だから消して良さそう。
Avatar
さっき @omochimetaru が書いてたトリプルクォートぶっ壊すので無限コンパイルされたりしないですか?
Avatar
omochimetaru 4/2/2018 6:21 AM
@t.ae botからbotにメンションさせるってこと?
Avatar
はい。
Avatar
omochimetaru 4/2/2018 6:21 AM
悪い事思いつくね。
Avatar
たしかにできそう
6:22 AM
Swift で Swift コードを出力してコンパイルとか…
Avatar
omochimetaru 4/2/2018 6:22 AM
そうかそこは実行結果だから・・・
Avatar
Kishikawa Katsumi 4/2/2018 6:23 AM
もし可能だとすると防ぐにはbot自身の発言かどうかを見たらいいのかな。
Avatar
omochimetaru 4/2/2018 6:23 AM
とりあえずはそうですね。
Avatar
クワインだ
🔁 2
Avatar
omochimetaru 4/2/2018 6:24 AM
同じようなボットがサーバーにもう一人いるときはキャッチボールできちゃうので
6:24 AM
もうひと工夫必要そうですが。
Avatar
相互呼び出し末尾再帰最適化っぽい
Avatar
@swiftbot print("\n``"+"`\n\n@swiftbot#4647 \n``"+"`swift\nprint(\"hello\")\n") ```
Avatar
swiftbot BOT 4/2/2018 8:16 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
8:16 AM
@swiftbot#4647 print("hello") ```
Avatar
@swiftbot print("hoge\n``"+"`\n\n@swiftbot#4647 \n``"+"`swift\nprint(\"hello\")\n``"+"`")
Avatar
swiftbot BOT 4/2/2018 8:17 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
8:17 AM
hoge @swiftbot#4647 print("hello") ```
🤔 1
Avatar
pre texts @swiftbot print("hello")
Avatar
swiftbot BOT 4/2/2018 8:26 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
8:26 AM
hello
Avatar
@swiftbot print("hoge\n``"+"`\n\n<@4647> \n``"+"`swift\nprint(\"hello\")\n``"+"`")
Avatar
swiftbot BOT 4/2/2018 8:28 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
8:28 AM
hoge @Unknown print("hello") ```
Avatar
print("hoge\n`"+"\n\n<@!swiftbot> \n`"+"swift\nprint("hello")\n`"+"")
8:32 AM
@swiftbot print("hoge\n``"+"`\n\n<@!swiftbot> \n``"+"`swift\nprint(\"hello\")\n``"+"`")
8:32 AM
@swiftbot print("hoge\n``"+"`\n\n<@!swiftbot> \n``"+"`swift\nprint(\"hello\")\n``"+"`")
Avatar
swiftbot BOT 4/2/2018 8:32 AM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
8:32 AM
hoge <@!swiftbot> print("hello") ```
Avatar
Kishikawa Katsumi 4/2/2018 9:13 AM
https://anidiots.guide/getting-started/your-basic-bot.html Bot同士でキャッチボールをしてしまうことの対策はちゃんと基本テクのところに書いてあった。 内容はやっぱりbotの発言かどうかをチェックするとのこと。 Botceptionっていうらしい?
9:14 AM
あと私いま旅行中ですぐにSSHできないことが多いので、もし無限ループになってもすぐ止められないです。
Avatar
norio_nomura 4/2/2018 9:26 AM
これ、バックエンドのAPIへ普通にcurlでアクセスできちゃうのですね。
Avatar
Kishikawa Katsumi 4/2/2018 9:49 AM
https://swift-playground.kishikawakatsumi.com API もWeb UIも公開してます。
Avatar
@Kishikawa Katsumi そういえば https://swift-playground.kishikawakatsumi.com/ の初期コードの import Foundation がなくても良いように見えるのが気になってたんですが、これは Fundationimport できることを示すためとかでしょうか?
Avatar
Kishikawa Katsumi 4/2/2018 9:54 AM
あまり深い意味はないんですけど、いういう意図もあります。あとは見栄えとか。
🙂 1
Avatar
もしかしたらコードを修正する過程の消し忘れかもとも思ったので、 Foundation の何かを使ってたらわかりやすいかもしれません。 round とかの関数だと使いやすそうです。
Avatar
Kishikawa Katsumi 4/2/2018 10:04 AM
そうですね。ちょっと考えてみます。
Avatar
norio_nomura 4/2/2018 10:07 AM
APIがvalidationなしにcommandをexecへ渡している様に見えるのですが、大丈夫ですか? https://github.com/kishikawakatsumi/swift-playground/blob/master/sandbox.js#L56 (edited)
Contribute to swift-playground development by creating an account on GitHub.
Avatar
Kishikawa Katsumi 4/2/2018 10:15 AM
SwiftとSwiftcだけにチェックすべきですね。ありがとうこざいます。
10:18 AM
どうもBot側のチェックと同じものを書く必要があると思ってたのですが、忘れてる気がしますね。
10:18 AM
コマンド以外のパラメータについても。
Avatar
Kishikawa Katsumi 4/2/2018 4:00 PM
#### Release note:
  • パラメータのバリデーションを改善しました。 Thanks @norio_nomura
  • Botへのメンションで、コードブロックがあればswiftの言語指定がなくても実行するようにしました。
  • バージョン表記からTargetの行を取り除きました。
  • Bot自身の投稿は無視するようにしました。 Thanks @t.ae
4:00 PM
@swiftbot help
Avatar
swiftbot BOT 4/2/2018 4:00 PM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
Kishikawa Katsumi 4/2/2018 5:21 PM
@swiftbot
Avatar
swiftbot BOT 4/2/2018 5:21 PM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
対応ありがとうございます。今の所メンション送る手段が見つかりませんでしたが……
12:22 AM
@swiftbot let 🐣 = "hiyoko" print("🐣 = \(🐣)")
😍 1
Avatar
swiftbot BOT 4/3/2018 12:22 AM
Swift version 4.1 (swift-4.1-RELEASE)
12:22 AM
🐣 = hiyoko
Avatar
Kishikawa Katsumi 4/5/2018 7:19 PM
@swiftbot versions
Avatar
swiftbot BOT 4/5/2018 7:19 PM
Available Swift versions: 2018-04-04-a 2018-04-03-a 2018-04-02-a 2018-04-01-a 2018-03-31-a 4.1 4.0.3 3.1.1 3.0.2
Avatar
Kishikawa Katsumi 4/5/2018 7:20 PM
とりあえず最新のスナップショットを追加したのと、ショートカットで--version=latest--version=stableというのを使えるようにしました。latestは最新のスナップショット、stableは最新のリリースバージョンが動きます。 (edited)
7:21 PM
@swiftbot --version=latest func fibonacci(number: Int) -> Int { if number <= 1 { return number } else { return fibonacci(number: number - 1) + fibonacci(number: number - 2) } } print(fibonacci(number: 10))
Avatar
swiftbot BOT 4/5/2018 7:21 PM
Swift version 4.2-dev (LLVM 0d52728a8a, Clang b9ad4239d1, Swift a1eb1fe24c)
7:21 PM
55
Avatar
omochimetaru 4/5/2018 9:13 PM
@swiftbot import Foundation func exec(_ cmd: [String]) -> String { let process = Process() process.executableURL = URL(fileURLWithPath: cmd[0]) let pipe = Pipe() process.standardOutput = pipe process.arguments = Array(cmd[1...]) try! process.run() let handle = pipe.fileHandleForReading let data = handle.readDataToEndOfFile() let str = String(data: data, encoding: .utf8) ?? "<binary>" return str } print(exec(["/bin/ls", "-al"]))
Avatar
swiftbot BOT 4/5/2018 9:13 PM
Swift version 4.1 (swift-4.1-RELEASE)
9:13 PM
/usercode/main.swift:5:5: error: value of type 'Process' has no member 'executableURL' process.executableURL = URL(fileURLWithPath: cmd[0]) ^~~~~~~ ~~~~~~~~~~~~~ /usercode/main.swift:10:10: error: value of type 'Process' has no member 'run' try! process.run() ^~~~~~~ ~~~
Avatar
omochimetaru 4/5/2018 9:15 PM
@swiftbot import Foundation func exec(_ cmd: [String]) -> String { let process = Process() process.launchPath = cmd[0] let pipe = Pipe() process.standardOutput = pipe process.arguments = Array(cmd[1...]) process.launch() let handle = pipe.fileHandleForReading let data = handle.readDataToEndOfFile() process.waitUntilExit() let str = String(data: data, encoding: .utf8) ?? "<binary>" return str } print(exec(["/bin/ls", "-al"]))
Avatar
swiftbot BOT 4/5/2018 9:15 PM
Swift version 4.1 (swift-4.1-RELEASE)
9:15 PM
total 76 drwxr-xr-x 1 root root 4096 Apr 5 21:15 . drwxr-xr-x 1 root root 4096 Apr 5 21:15 .. -rwxr-xr-x 1 root root 0 Apr 5 21:15 .dockerenv drwxr-xr-x 1 root root 4096 Apr 1 12:25 bin drwxr-xr-x 2 root root 4096 Apr 12 2016 boot drwxr-xr-x 5 root root 340 Apr 5 21:15 dev drwxr-xr-x 1 root root 4096 Apr 5 21:15 etc drwxr-xr-x 2 root root 4096 Apr 12 2016 home drwxr-xr-x 1 root root 4096 Apr 1 12:26 lib drwxr-xr-x 2 root root 4096 Feb 28 19:14 lib64 drwxr-xr-x 2 root root 4096 Feb 28 19:13 media drwxr-xr-x 2 root root 4096 Feb 28 19:13 mnt drwxr-xr-x 2 root root 4096 Feb 28 19:13 opt dr-xr-xr-x 130 root root 0 Apr 5 21:15 proc drwx------ 2 root root 4096 Feb 28 19:14 root drwxr-xr-x 1 root root 4096 Feb 28 19:14 run drwxr-xr-x 1 root root 4096 Apr 1 12:25 sbin drwxr-xr-x 2 root root 4096 Feb 28 19:13 srv dr-xr-xr-x 13 root root 0 Apr 5 21:15 sys drwxrwxrwt 1 root root 4096 Apr 5 21:15 tmp drwxrwxrwx 2 1000 1000 4096 Apr 5 21:15 usercode drwxr-xr-x 1 root root 4096 Mar 29 21:57 usr drwxr-xr-x 1 root root 4096 Feb 28 19:14 var
Avatar
omochimetaru 4/5/2018 9:16 PM
@swiftbot import Foundation func exec(_ cmd: [String]) -> String { let process = Process() process.launchPath = cmd[0] let pipe = Pipe() process.standardOutput = pipe process.arguments = Array(cmd[1...]) process.launch() let handle = pipe.fileHandleForReading let data = handle.readDataToEndOfFile() process.waitUntilExit() let str = String(data: data, encoding: .utf8) ?? "<binary>" return str } print(exec(["/bin/cat", ".dockerenv"]))
Avatar
swiftbot BOT 4/5/2018 9:16 PM
Swift version 4.1 (swift-4.1-RELEASE)
9:16 PM
Avatar
omochimetaru 4/5/2018 9:16 PM
@swiftbot import Foundation func exec(_ cmd: [String]) -> String { let process = Process() process.launchPath = cmd[0] let pipe = Pipe() process.standardOutput = pipe process.arguments = Array(cmd[1...]) process.launch() let handle = pipe.fileHandleForReading let data = handle.readDataToEndOfFile() process.waitUntilExit() let str = String(data: data, encoding: .utf8) ?? "<binary>" return str } print(exec(["/bin/ls", "-alR", "usercode"]))
Avatar
swiftbot BOT 4/5/2018 9:16 PM
Swift version 4.1 (swift-4.1-RELEASE)
9:16 PM
usercode: total 20 drwxrwxrwx 2 1000 1000 4096 Apr 5 21:16 . drwxr-xr-x 1 root root 4096 Apr 5 21:16 .. -rw-r--r-- 1 root root 0 Apr 5 21:16 errors -rw-r--r-- 1 root root 0 Apr 5 21:16 log -rw-rw-r-- 1 1000 1000 483 Apr 5 21:16 main.swift -rwxrwxr-x 1 1000 1000 164 Apr 5 21:16 script.sh -rw-r--r-- 1 root root 71 Apr 5 21:16 version
Avatar
omochimetaru 4/5/2018 9:17 PM
@swiftbot import Foundation func exec(_ cmd: [String]) -> String { let process = Process() process.launchPath = cmd[0] let pipe = Pipe() process.standardOutput = pipe process.arguments = Array(cmd[1...]) process.launch() let handle = pipe.fileHandleForReading let data = handle.readDataToEndOfFile() process.waitUntilExit() let str = String(data: data, encoding: .utf8) ?? "<binary>" return str } print(exec(["/bin/cat", "usercode/script.sh"]))
Avatar
swiftbot BOT 4/5/2018 9:17 PM
Swift version 4.1 (swift-4.1-RELEASE)
9:17 PM
#!/bin/bash swift --version > /usercode/version exec 1> "/usercode/log" exec 2> "/usercode/errors" $@ /usercode/main.swift mv /usercode/log /usercode/completed
Avatar
Kishikawa Katsumi 4/6/2018 3:07 AM
Docker内の環境のリソースの使用を制限した方がいいかなという気もしますが、どうですかね? 今は時間制限も大して厳しくはないし、踏み台的な使い方がされてしまったりするのはありそうと思っています。
Avatar
ネットワークにはアクセスできないようにした方がいいかもしれませんね。
Avatar
Kishikawa Katsumi 4/6/2018 3:25 AM
そうですね。それを制限しておけば外に迷惑をかけることはないはず?
Avatar
Docker 詳しくないですが、隔離されてるのでそのはずかと。あとは CPU とかメモリの使用量を制限しておけば、時間制限もあるし、何されても大体大丈夫そうな気がします。
3:30 AM
Wandbox がどうしてるかという話が↓にありました。 https://qiita.com/melpon/items/e871abb8cd2b15558a53#%E7%89%9B%E8%88%8E
Wandbox は、オンラインでコンパイルや実行が試せるサービスで、主に私(@melponn) と [@kikairoya](...
Avatar
Kishikawa Katsumi 4/6/2018 4:28 AM
週末ちょっと対策しましょ
Avatar
Kishikawa Katsumi 4/6/2018 5:59 AM
@swiftbot import Foundation let semaphore = DispatchSemaphore(value: 0) let url = URL(string: "http://httpbin.org/get")! let task = URLSession.shared.dataTask(with: url) { (data, response, error) in defer{ semaphore.signal() } if let error = error { print(error) return } print(response!.url!) print(String(data: data!, encoding: .utf8)!) }; task.resume() semaphore.wait()
Avatar
swiftbot BOT 4/6/2018 5:59 AM
Swift version 4.1 (swift-4.1-RELEASE)
5:59 AM
http://httpbin.org/get { "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "deflate, gzip", "Accept-Language": "en", "Connection": "close", "Host": "httpbin.org", "User-Agent": "swift (unknown version) curl/7.47.0" }, "origin": "138.68.23.220", "url": "http://httpbin.org/get" }
Avatar
Kishikawa Katsumi 4/6/2018 5:59 AM
普通にネットワークアクセスできるんだな。。。
😱 3
Avatar
omochimetaru 4/6/2018 9:47 AM
@swiftbot print(“hello iPad”)
Avatar
swiftbot BOT 4/6/2018 9:47 AM
Swift version 4.1 (swift-4.1-RELEASE)
9:47 AM
/usercode/main.swift:1:20: error: unicode curly quote found, replace with '"' print(“hello iPad”) /usercode/main.swift:1:7: error: unicode curly quote found, replace with '"' print(“hello iPad”)
Avatar
omochimetaru 4/6/2018 9:47 AM
ああああ
9:49 AM
@swiftbot print("hello from iPad")
Avatar
swiftbot BOT 4/6/2018 9:49 AM
Swift version 4.1 (swift-4.1-RELEASE)
9:49 AM
hello from iPad
Avatar
スマートじゃない引用符ワロタ
Avatar
norio_nomura 4/6/2018 3:18 PM
@swiftbot --options="format" if true { print("hello") }
Avatar
swiftbot BOT 4/6/2018 3:18 PM
Swift version 4.1 (swift-4.1-RELEASE)
3:18 PM
if true { print("hello") }
Avatar
Kishikawa Katsumi 4/7/2018 1:33 AM
@swiftbot import Foundation let semaphore = DispatchSemaphore(value: 0) let url = URL(string: "http://httpbin.org/get")! let task = URLSession.shared.dataTask(with: url) { (data, response, error) in defer{ semaphore.signal() } if let error = error { print(error) return } print(response!.url!) print(String(data: data!, encoding: .utf8)!) }; task.resume() semaphore.wait()
Avatar
swiftbot BOT 4/7/2018 1:33 AM
Swift version 4.1 (swift-4.1-RELEASE)
1:33 AM
URLError(_nsError: Could not resolve host: httpbin.org)
Avatar
Kishikawa Katsumi 4/7/2018 1:33 AM
とりあえずネットワークを無効にしてみた。
😀 1
Avatar
Taketo Sano 4/8/2018 1:56 AM
@swiftbot import SwiftyMath
Avatar
swiftbot BOT 4/8/2018 1:56 AM
Swift version 4.1 (swift-4.1-RELEASE)
1:56 AM
/usercode/main.swift:1:8: error: no such module 'SwiftyMath' import SwiftyMath ^
😅 1
Avatar
Kishikawa Katsumi 4/8/2018 1:57 AM
作業中です。
Avatar
Taketo Sano 4/8/2018 2:00 AM
すいません、つい気持ちが先走ってw
Avatar
Kishikawa Katsumi 4/8/2018 2:12 AM
@Taketo Sano 現状のコードだとUbuntuではarc4randomがないのでビルドできなくて(arc4randomはBSDならある) https://github.com/kishikawakatsumi/SwiftyMath/commit/c5d8dc1dd1da145459477df1d2a9a60327da6c38 のようにlibbsdに依存するか、arc4randomじゃないrandom生成器を使うかのどちらかの対応が必要です。暗号的乱数でもなさそうなので依存パッケージを増やすほどでもないかなという気もしますが、ここのRandomってどういう性質のものですかね?
Avatar
Taketo Sano 4/8/2018 2:15 AM
なるほど!
2:16 AM
テスト用に例えばランダムな行列を生成するのとかに使ってました。
2:16 AM
ランダムが arc4random でないといけない必要性は特にありません。
Avatar
Kishikawa Katsumi 4/8/2018 2:22 AM
とりあえず暫定版として、
2:22 AM
@swiftbot --version=4.1a --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath typealias F5 = IntegerQuotientRing<_5> F5.printAddTable() F5.printMulTable()
Avatar
swiftbot BOT 4/8/2018 2:22 AM
Swift version 4.1 (swift-4.1-RELEASE)
2:22 AM
+ | 0 1 2 3 4 -------------------------- 0 | 0 1 2 3 4 1 | 1 2 3 4 0 2 | 2 3 4 0 1 3 | 3 4 0 1 2 4 | 4 0 1 2 3 * | 0 1 2 3 4 -------------------------- 0 | 0 0 0 0 0 1 | 0 1 2 3 4 2 | 0 2 4 1 3 3 | 0 3 1 4 2 4 | 0 4 3 2 1
Avatar
Taketo Sano 4/8/2018 2:23 AM
キタコレ! 🤩
Avatar
Kishikawa Katsumi 4/8/2018 2:23 AM
@Taketo Sano あとで使い勝手はもうちょっと考えますけど、とりあえず^のように特殊なSwiftバージョンとオプションを指定して使ってみてください。そもそもやりたいことはこれで満たせるのかとか知りたいです。
Avatar
Taketo Sano 4/8/2018 2:24 AM
@swiftbot import SwiftyTopology
Avatar
swiftbot BOT 4/8/2018 2:24 AM
Swift version 4.1 (swift-4.1-RELEASE)
2:24 AM
/usercode/main.swift:1:8: error: no such module 'SwiftyTopology' import SwiftyTopology ^
Avatar
Taketo Sano 4/8/2018 2:24 AM
あ、なるほど
2:25 AM
今出先なので後で試してみます!
Avatar
Kishikawa Katsumi 4/8/2018 2:25 AM
ここでインポートしてるのはdSwiftyMathなのでSwiftyTopologyは入ってるんじゃないかな。。。?
2:26 AM
@swiftbot --version=4.1a --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath let a = 𝐐(4, 5) // 4/5 let b = 𝐐(3, 2) // 3/2 print(a + b) // 23/10
Avatar
swiftbot BOT 4/8/2018 2:26 AM
Swift version 4.1 (swift-4.1-RELEASE)
2:26 AM
23/10
Avatar
Kishikawa Katsumi 4/8/2018 2:27 AM
Chatbotで使えるということはWebでも使えるんですけど今のところWebにはSwiftのバージョンを切り替える方法やオプションを渡す手がないですね。。。
2:29 AM
テスト用に例えばランダムな行列を生成するのとかに使ってました。
ランダムが arc4random でないといけない必要性は特にありません。 なるほど。じゃあarc4randomとrandを切り替えるような実装の方が簡単でいいかな?
2:35 AM
うーん、SwiftyTopologyは含まれてないっぽいですね。。。
Avatar
Taketo Sano 4/8/2018 2:36 AM
@swiftbot --version=4.1a --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath import SwiftyTopology let S = SimplicialComplex.sphere(dim:3) print(S.detailDescription)
Avatar
swiftbot BOT 4/8/2018 2:36 AM
Swift version 4.1 (swift-4.1-RELEASE)
2:36 AM
S^3 { 0: v₁, v₂, v₃, v₄, v₀ 1: (v₁, v₂), (v₁, v₃), (v₂, v₃), (v₁, v₄), (v₂, v₄), (v₃, v₄), (v₀, v₂), (v₀, v₃), (v₀, v₄), (v₀, v₁) 2: (v₁, v₂, v₃), (v₁, v₂, v₄), (v₁, v₃, v₄), (v₂, v₃, v₄), (v₀, v₂, v₃), (v₀, v₂, v₄), (v₀, v₃, v₄), (v₀, v₁, v₃), (v₀, v₁, v₄), (v₀, v₁, v₂) 3: (v₁, v₂, v₃, v₄), (v₀, v₂, v₃, v₄), (v₀, v₁, v₃, v₄), (v₀, v₁, v₂, v₄), (v₀, v₁, v₂, v₃) }
Avatar
Kishikawa Katsumi 4/8/2018 2:36 AM
あ、できた。
Avatar
Taketo Sano 4/8/2018 2:36 AM
大丈夫です!
Avatar
Kishikawa Katsumi 4/8/2018 2:36 AM
なるほどー
Avatar
Taketo Sano 4/8/2018 2:37 AM
@swiftbot --version=4.1a --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath import SwiftyTopology let S = SimplicialComplex.sphere(dim:3) let H = Homology(S, Int.self) print(H.detailDescription)
Avatar
swiftbot BOT 4/8/2018 2:37 AM
Swift version 4.1 (swift-4.1-RELEASE)
2:37 AM
H(S^3; 𝐙) = { 0 : 𝐙, [v₄], 1 : 0, [], 2 : 0, [], 3 : 𝐙, [-1(v₀, v₁, v₃, v₄) + -1(v₁, v₂, v₃, v₄) + (v₀, v₁, v₂, v₄) + -1(v₀, v₁, v₂, v₃) + (v₀, v₂, v₃, v₄)] }
Avatar
Taketo Sano 4/8/2018 2:37 AM
素晴らしい😆 chat bot で homology が計算できる時代💖
Avatar
Kishikawa Katsumi 4/8/2018 2:38 AM
(何が素晴らしいのかさっぱりわかりませんが🙇🏻😜)めっちゃ便利ですね!
😂 1
2:39 AM
ごめんなさい。これを機会に数学を教えてください。
Avatar
Taketo Sano 4/8/2018 2:39 AM
是非!
2:40 AM
いずれ SwiftyMath を使って Swifter 向けの数学講座をやりたいです😆
Avatar
Kishikawa Katsumi 4/8/2018 2:41 AM
いいですね。 とりあえずいきなりトポロジーに行くのは無理そうですね。前提となる知識がもっと必要そう。
Avatar
Taketo Sano 4/8/2018 2:42 AM
線型代数だけで行けます!(線型代数の導入も SwiftyMath でできる予定👍
Avatar
Kishikawa Katsumi 4/8/2018 2:44 AM
まず線形代数なんですね。私は数III数Cを学んでないのでそこからですね。
Avatar
Taketo Sano 4/8/2018 2:46 AM
せっかく Swift で作ってるので、ベクトルを指で動かしたりしてインタラクティブに学べるようなものにしたい💪 (edited)
😍 1
Avatar
Kishikawa Katsumi 4/8/2018 5:00 AM
@swiftbot import SwiftyMath import SwiftyTopology let S = SimplicialComplex.sphere(dim:3) let H = Homology(S, Int.self) print(H.detailDescription)
Avatar
swiftbot BOT 4/8/2018 5:00 AM
Swift version 4.1 (swift-4.1-RELEASE)
5:00 AM
H(S^3; 𝐙) = { 0 : 𝐙, [v₄], 1 : 0, [], 2 : 0, [], 3 : 𝐙, [-1(v₁, v₂, v₃, v₄) + -1(v₀, v₁, v₃, v₄) + (v₀, v₁, v₂, v₄) + (v₀, v₂, v₃, v₄) + -1(v₀, v₁, v₂, v₃)] }
Avatar
Taketo Sano 4/8/2018 5:01 AM
お!
Avatar
Kishikawa Katsumi 4/8/2018 5:01 AM
@Taketo Sano デフォルトでSwiftyMathをリンクするようにしました。importだけ書けばOKです。
5:04 AM
他の人には影響ないと思いますが、もし何か問題を見つけたら教えてください。 デフォルトのオプションを与えているという仕組みなので、--optionsを別の何かで上書きすると以前と同じバニラのSwift環境が使えます。 SwiftyMathをリンクしているのは今の所stable (== 4.1)のみです。
Avatar
Kishikawa Katsumi 4/8/2018 5:18 AM
上で私間違ったこと書いてて、arc4randomは明示的なシードの初期化がいらないってだけで暗号論的に安全な乱数を返すわけではないですね😅
Avatar
Taketo Sano 4/9/2018 6:01 AM
rand() 使おうとしたら 'rand()' is unavailable in Swift: Use arc4random ってでますね…(それで arc4random にしたんでした) (edited)
Avatar
omochimetaru 4/9/2018 6:04 AM
@Kishikawa Katsumi arc4randomは暗号論的安全じゃないですか? man arc4random DESCRIPTION These functions use a cryptographic pseudo-random number generator to generate high quality random bytes very quickly.
Avatar
Taketo Sano 4/9/2018 6:06 AM
drand48() は使えた。これなら Ubuntu でもビルドできるんですかね?
Avatar
omochimetaru 4/9/2018 6:06 AM
https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator よく見るのは CSPRNG ですけど CPRNGとも言うようです
A cryptographically secure pseudo-random number generator (CSPRNG) or cryptographic pseudo-random number generator (CPRNG) is a pseudo-random number generator (PRNG) with properties that make it suitable for use in cryptography. Most cryptographi...
Avatar
Kishikawa Katsumi 4/9/2018 6:06 AM
ほんとだ。arc4randomってAppleのRC4実装って意味だったのか。
😀 1
6:07 AM
@Taketo Sano やってみてください。swiftbotで実行できればOK
Avatar
Taketo Sano 4/9/2018 6:07 AM
あ、そっかw
6:07 AM
@swiftbot print(drand48())
Avatar
swiftbot BOT 4/9/2018 6:07 AM
Swift version 4.1 (swift-4.1-RELEASE)
6:07 AM
/usercode/main.swift:1:7: error: use of unresolved identifier 'drand48' print(drand48()) ^~~~~~~
Avatar
Taketo Sano 4/9/2018 6:07 AM
damepo
Avatar
Kishikawa Katsumi 4/9/2018 6:08 AM
どうかな。importが足りないとかの可能性。
Avatar
Taketo Sano 4/9/2018 6:08 AM
@swiftbot import Foundation print(drand48())
Avatar
swiftbot BOT 4/9/2018 6:08 AM
Swift version 4.1 (swift-4.1-RELEASE)
6:08 AM
3.90798504668055e-14
Avatar
Taketo Sano 4/9/2018 6:08 AM
お!
6:09 AM
いけますね👍
Avatar
Kishikawa Katsumi 4/9/2018 6:09 AM
@swiftbot import Glibc print(drand48())
Avatar
swiftbot BOT 4/9/2018 6:09 AM
Swift version 4.1 (swift-4.1-RELEASE)
6:09 AM
3.90798504668055e-14
Avatar
omochimetaru 4/9/2018 6:10 AM
HISTORY The original version of this random number generator used the RC4 (also known as ARC4) algorithm. In OS X 10.12 it was replaced with the NIST-approved AES cipher, and it may be replaced again in the future as cryptographic techniques advance. A good mnemonic is ``A Replacement Call for Random''. 訳すと RC4(ARC4とも言う)アルゴリズムの実装だけど OS10.12で AESに変わったし、後にまた変わるから、 A Replacement Call For Random の略として覚えると良いよ (edited)
😀 1
Avatar
Kishikawa Katsumi 4/9/2018 6:10 AM
drandはシードの初期化が必要かな。
6:10 AM
A Replacement Call For Random
Hahaha
(edited)
Avatar
Taketo Sano 4/9/2018 6:17 AM
@swiftbot import Foundation srand48(time(nil)) print(drand48())
Avatar
swiftbot BOT 4/9/2018 6:17 AM
Swift version 4.1 (swift-4.1-RELEASE)
6:17 AM
0.918770220204355
Avatar
Taketo Sano 4/9/2018 6:17 AM
@swiftbot import Foundation srand48(time(nil)) print(drand48())
Avatar
swiftbot BOT 4/9/2018 6:17 AM
Swift version 4.1 (swift-4.1-RELEASE)
6:17 AM
0.272781763532297
Avatar
Taketo Sano 4/9/2018 6:17 AM
これでいけそうですかね👍
6:18 AM
初期化を呼び出すタイミングはこんなんでいいんでしょうかw private var randInit = false private func rand() -> Double { if !randInit { srand48(time(nil)) randInit = true } return drand48() }
Avatar
Kishikawa Katsumi 4/9/2018 6:18 AM
メソッド名を後付けで別の解釈にするというのはおもしろいな。
Avatar
omochimetaru 4/9/2018 6:19 AM
たしかにw 互換性の取り方としては珍しいw
Avatar
Kishikawa Katsumi 4/9/2018 6:19 AM
めっちゃ実装によったメソッド名をつけたのがそもそもアレなんだけどrandom()は名前空間自体がもういっぱいいっぱいなのでしょうがないんでしょう。
Avatar
omochimetaru 4/9/2018 6:20 AM
@Taketo Sano 逆にMacだと動かなそうなので、arc4randomとそれをOSで切り替えるラッパーを作ると良いです。 (edited)
😯 1
Avatar
いわゆる語呂合わせか、面白い
Avatar
Taketo Sano 4/9/2018 6:22 AM
@omochimetaru まじですか?手元ではコンパイル通ってるんですが。
Avatar
omochimetaru 4/9/2018 6:22 AM
あ、ほんとですか、じゃあ大丈夫です。
Avatar
Taketo Sano 4/9/2018 6:39 AM
@Kishikawa Katsumi arc4random 未使用版 push しました ✋ 時間のあるときにでも更新お願いします 🙏
👌 1
Avatar
@swiftbot extension Never: ExpressibleByNilLiteral { public init(nilLiteral: ()) { self = unsafeBitCast((), to: Never.self) } } let a: Never = nil print(a)
Avatar
swiftbot BOT 4/9/2018 7:39 AM
Swift version 4.1 (swift-4.1-RELEASE)
7:39 AM
/usercode/main.swift:9:7: warning: will never be executed print(a) ^ /usercode/main.swift:7:16: note: a call to a never-returning function let a: Never = nil ^ /usercode/main.swift:2:12: warning: will never be executed public init(nilLiteral: ()) { ^ /usercode/main.swift:2:12: note: a call to a never-returning function public init(nilLiteral: ()) { ^ Segmentation fault (core dumped)
Avatar
Kishikawa Katsumi 4/9/2018 7:40 AM
Segmentation fault!
Avatar
やべえ
Avatar
Xcodeのplaygroundだとこうなので * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) * frame #0: 0x00007fffaba7aa9b libobjc.A.dylib`_objc_msgSend_uncached + 11 frame #1: 0x00007fff9865d231 Foundation`-[NSPlaceholderString initWithString:] + 107 frame #2: 0x00000001036ca007 PlaygroundLogger`function signature specialization <Arg[0] = Dead> of static PlaygroundLogger.LoggingPolicyStack.get() -> PlaygroundLogger.LoggingPolicyStack + 151 frame #3: 0x00000001036c3f22 PlaygroundLogger`function signature specialization <Arg[1] = Owned To Guaranteed and Exploded> of playground_log_hidden + 98 frame #4: 0x00000001036c365b PlaygroundLogger`playground_log_hidden + 27 frame #5: 0x00000001041db0a7 $__lldb_expr158`Never.init(nilLiteral=() @ scalar) at MyPlayground.playground:4
7:41 AM
libobjcなのでlinux環境だとどうなるんかなーと
Avatar
omochimetaru 4/9/2018 7:41 AM
まあunsafeBitCast使えば別にどんな死でも起きるでしょ (edited)
7:42 AM
CatなDogとか作り放題だし
Avatar
Kishikawa Katsumi 4/9/2018 7:42 AM
コンパイルだけだと起こらないから実行時か。
Avatar
omochimetaru 4/9/2018 7:42 AM
Never作っちゃったら、いろんな前提が壊れるから終わる
Avatar
@swiftbot extension Never: ExpressibleByNilLiteral { public init(nilLiteral: ()) { self = unsafeBitCast((), to: Never.self) print("わいわい") } } let a: Never = nil print(a)
Avatar
swiftbot BOT 4/9/2018 7:42 AM
Swift version 4.1 (swift-4.1-RELEASE)
7:42 AM
/usercode/main.swift:10:7: warning: will never be executed print(a) ^ /usercode/main.swift:8:16: note: a call to a never-returning function let a: Never = nil ^ /usercode/main.swift:2:12: warning: will never be executed public init(nilLiteral: ()) { ^ /usercode/main.swift:2:12: note: a call to a never-returning function public init(nilLiteral: ()) { ^ /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fa0085a4390] /usr/lib/swift/linux/libswiftCore.so(swift_conformsToProtocol+0x30)[0x7fa004780730] /usr/lib/swift/linux/libswiftCore.so(+0x39c05f)[0x7fa00477205f] /usr/lib/swift/linux/libswiftCore.so(+0x39b82d)[0x7fa00477182d] /usr/lib/swift/linux/libswiftCore.so(+0x2e518a)[0x7fa0046bb18a] Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret /usercode/main.swift -disable-objc-interop -I /usr/lib/swift/clang/include/ -I /vendor/SwiftyMath/.build/release/ -I /vendor/swift-package-libbsd/ -module-name main -ldSwiftyMath Segmentation fault (core dumped)
Avatar
なんか変わったぞ
7:43 AM
Xcodeだと"わいわい"出てくるぞ わいわい Playground execution failed: error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=EXC_I386_GPFLT). The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation. * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT) * frame #0: 0x00007fffaba7c64e libobjc.A.dylib`_object_remove_assocations + 24 frame #1: 0x00007fffaba7c603 libobjc.A.dylib`objc_destructInstance + 105 frame #2: 0x000000011048e398 libswiftCore.dylib`swift_deallocClassInstance + 24 frame #3: 0x000000011048e2f0 libswiftCore.dylib`_swift_release_dealloc + 16 frame #4: 0x000000010e437012 PlaygroundLogger`function signature specialization <Arg[0] = Dead> of static PlaygroundLogger.LoggingPolicyStack.get() -> PlaygroundLogger.LoggingPolicyStack + 162 frame #5: 0x000000010e430f22 PlaygroundLogger`function signature specialization <Arg[1] = Owned To Guaranteed and Exploded> of playground_log_hidden + 98 frame #6: 0x000000010e43065b PlaygroundLogger`playground_log_hidden + 27 frame #7: 0x000000010e4680af $__lldb_expr160`Never.init(nilLiteral=() @ scalar) at MyPlayground.playground:4
Avatar
Unsafe bit castでDogをCatに改造すると
7:46 AM
結構面白いことになる
Avatar
omochimetaru 4/9/2018 7:53 AM
同じシグネチャのメソッドならそのまま呼び出せるみたいなね。
Avatar
var foo: Foo { return x } と func foo() -> Foo { return x }の扱いが、前者はフィールドとして定義されているのでunsafeBitCastしても同じものが呼ばれるが、後者は実質的には第一引数にselfを与えるstatic funcなのでunsafeBitCastで違うものが呼ばれる、とか。
Avatar
var foo: Foo { return x } じゃなくて let foo: Foo = x だった。
8:25 AM
@swiftbot struct Cat { let face: String = "😺" func bark() -> String { return "にゃーん" } } struct Dog { let face: String = "🐶" func bark() -> String { return "わんわん" } } let cat = unsafeBitCast(Dog(), to: Cat.self) print(cat.face) print(cat.bark())
Avatar
swiftbot BOT 4/9/2018 8:25 AM
Swift version 4.1 (swift-4.1-RELEASE)
8:25 AM
🐶 にゃーん
Avatar
omochimetaru 4/9/2018 8:27 AM
@swiftbot struct Cat { let face: String = "😺" func bark() -> String { return "\(face): にゃーん" } } struct Dog { let face: String = "🐶" func bark() -> String { return "\(face): わんわん" } } let cat = unsafeBitCast(Dog(), to: Cat.self) print(cat.face) print(cat.bark())
Avatar
swiftbot BOT 4/9/2018 8:28 AM
Swift version 4.1 (swift-4.1-RELEASE)
8:28 AM
🐶 🐶: にゃーん
Avatar
omochimetaru 4/9/2018 8:28 AM
@swiftbot struct Cat { let face: String = "😺" func bark() -> String { return "\(face): にゃーん" } } struct Dog { let face: String = "🐶" func bark() -> String { return "\(face): わんわん" } } let cat = unsafeBitCast(Dog(), to: Cat.self) print(cat.bark())
Avatar
swiftbot BOT 4/9/2018 8:28 AM
Swift version 4.1 (swift-4.1-RELEASE)
8:28 AM
🐶: にゃーん
Avatar
omochimetaru 4/9/2018 8:28 AM
ははは
Avatar
Kishikawa Katsumi 4/9/2018 8:28 AM
これは正しい挙動でいいんですよね?
Avatar
letで定数として定義しても、値に対してのプロパティなら、ちゃんと値に対してメモリ確保されてるのがわかる。正しいと思います。
Avatar
omochimetaru 4/9/2018 8:30 AM
structのメソッド呼び出しは非仮想だから cat. の型に関係なく固定でcat用のメソッドが呼ばれてますね (edited)
8:31 AM
unsafeBitCastの使用自体が正しくないから、その時点で何も正しくないともいえるし、その行を正しいとみなすなら何も壊れてない
Avatar
そもそもStructのメソッド呼び出しは動的ディスパッチにすると無駄すぎなので
8:31 AM
あとはletでちゃんとメモリ確保されてるなーというのがわかるのその2
8:31 AM
@swiftbot struct One { let one = 1 } struct OneTwoThree { let one = 1 let two = 2 let three = 3 } print(MemoryLayout.size(ofValue: One())) print(MemoryLayout.size(ofValue: OneTwoThree()))
Avatar
swiftbot BOT 4/9/2018 8:31 AM
Swift version 4.1 (swift-4.1-RELEASE)
8:31 AM
8 24
Avatar
omochimetaru 4/9/2018 8:32 AM
たしかに意味的にはオブジェクト内部に値持つ必要はないよな
Avatar
そうそう、ちょっと気になった。持たないといけない理由あるのかなーとか
8:33 AM
ABI互換とかはどうなんだろう
Avatar
omochimetaru 4/9/2018 8:34 AM
あー
8:34 AM
リザイレンスでは
8:34 AM
letでもgetterになっていて
8:34 AM
ABI互換を取りたいかも?
8:34 AM
あ、でもstructだとそもそもサイズが変わっちゃって無理か。
Avatar
うん、気になったのはletがちゃんとpropertyとして成立していて
8:35 AM
でもこれCodableからは除去されるんだよね
8:35 AM
だからその辺上手いことやってるのはどこに仕掛けがあるんやろか、って思った
Avatar
omochimetaru 4/9/2018 8:35 AM
Codableはまあゴリゴリ書かれてるからletは除外してるんじゃないか
8:36 AM
そもそもそのケースってinitから代入もできないから
8:36 AM
CodableでDecodeしようがなくない
8:36 AM
あれ、できるっけ
Avatar
initで定義されるletとフィールドに直埋めのletがCodableでは違う扱いになってるのが (edited)
8:36 AM
しかしメモリレイアウトは同じだった、っていう点がおもろい
Avatar
omochimetaru 4/9/2018 8:37 AM
@swiftbot struct Cat { let age: Int = 3 init() { self.age = 5 } } print(Cat())
Avatar
swiftbot BOT 4/9/2018 8:37 AM
Swift version 4.1 (swift-4.1-RELEASE)
8:37 AM
/usercode/main.swift:5:18: error: immutable value 'self.age' may only be initialized once self.age = 5 ^ /usercode/main.swift:2:9: note: initial value already provided in 'let' declaration let age: Int = 3 ^ /usercode/main.swift:2:5: note: change 'let' to 'var' to make it mutable let age: Int = 3 ^~~ var
Avatar
omochimetaru 4/9/2018 8:40 AM
letで書いておけば、あとでvarになったときにも
8:40 AM
メモリレイアウト互換性が保たれるっていう
8:40 AM
ABI仕様があれば、実用性もある仕様になると思う
8:41 AM
Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.
Avatar
ふむふむ
Avatar
omochimetaru 4/9/2018 8:41 AM
いまはまだ
8:41 AM
特に確定してない
8:41 AM
Define layout algorithms for structs
Avatar
norio_nomura 4/10/2018 4:56 AM
docker-compose使ってローカルのDockerで岸川さんのswift-playgroundを実行できる様になった。
Avatar
Kishikawa Katsumi 4/10/2018 4:56 AM
@norio_nomura Docker in dockerになります?
Avatar
norio_nomura 4/10/2018 4:57 AM
イメージの重複が嫌だったのでホストとソケット共有です。
Avatar
Kishikawa Katsumi 4/10/2018 4:58 AM
Macから、ホストとなるDocker(A)でLinuxを動かして、その中でリクエストごとのDocker(B)を起動して、AのソケットをBと共有、ですか? (edited)
Avatar
norio_nomura 4/10/2018 5:00 AM
docker-compose.yml version: '3' services: playground: build: . environment: HOST_PWD: ${PWD} ports: - "80:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - .:/playground command: ["sh", "-c", "npm install && npm start"] Dockerfile FROM docker:latest RUN apk --update add bash nodejs && rm -rf /var/cache/apk/* WORKDIR /playground
😁 1
5:01 AM
githubへ上げた方が早いね。
Avatar
Kishikawa Katsumi 4/10/2018 5:03 AM
前に似たようなことをしようとした時、Playgroundが都度起動するDockerのoutput(/usercode/completeとerrors)がうまく外のDockerから取れなかったんですけど、そこうまくいってます? (edited)
5:04 AM
環境変数HOST_PWDにホストのディレクトリを持たせ、それをsandboxに渡してます。
5:07 AM
run.shの起動は/playground/run.sh 30 -v /Users/norio/github/swift-playground/temp/6e4fd5db976425e7d17a:/usercode -v /playground/vendor:/vendor:ro norionomura/swiftlint:swift-4.1 sh /usercode/script.sh swiftな感じに。
5:11 AM
docker:dindにすればホストのパスは要らないけど、docker:dindだとホストの/var/lib/docker/volumesにデータが溜まっていくらしく、それを避けたかった。
Avatar
Kishikawa Katsumi 4/10/2018 5:12 AM
なるほど。Docker comopseで全部まとめてセットアップできると便利ですね。これをベースにNginxとSSLもまとめると、GitHubのPRベースで誰でもSwiftbotに自分の好きなフレームワークを追加したりできるかな?
Avatar
norio_nomura 4/10/2018 5:20 AM
最初はDinDのコンテナもあったのですが、結局HOST_PWDの自動取得くらいにしかdocker-composeを活かせてないですね。
Avatar
norio_nomura 4/10/2018 5:41 AM
とりあえず、optionsexecへ文字列結合されて渡されてるところが心配。
5:43 AM
options="; docker run -v /:/host_root ubuntu cat /host_root/etc/passwd;"とかすると、そのまま実行されてしまわないかな?
Avatar
Kishikawa Katsumi 4/10/2018 5:46 AM
optionsは検討の余地ありですね。swiftcと任意のオプション、を使えると便利かなと思ったけど、今までで使われてるのはバージョン指定くらいだから任意のオプションはナシにしてもいいかも。
Avatar
一応使う手順を書いておくと docker pull norionomura/swiftlint:swift-4.1 # 利用するswiftイメージをあらかじめpull git clone https://github.com/norio-nomura/swift-playground.git -b docker-compose cd swift-playground docker-compose up してブラウザで http://localhost を開く。
Avatar
@swiftbot func hoge() -> Never { return unsafeBitCast((), to: Never.self) } let voidNever = unsafeBitCast((), to: Never.self) // ① guard 1 == 0 else { hoge() } print("hello")
Avatar
swiftbot BOT 4/11/2018 4:13 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:13 AM
/usercode/main.swift:11:7: warning: will never be executed print("hello") ^ /usercode/main.swift:7:7: note: condition always evaluates to false guard 1 == 0 else { ^ Fatal error: Can't unsafeBitCast between types of different sizes Current stack trace: 0 libswiftCore.so 0x00007fcacbd63750 _swift_stdlib_reportFatalError + 171 1 libswiftCore.so 0x00007fcacbad1ad6 <unavailable> + 1366742 2 libswiftCore.so 0x00007fcacbd0c383 <unavailable> + 3703683 3 libswiftCore.so 0x00007fcacbad1ad6 <unavailable> + 1366742 4 libswiftCore.so 0x00007fcacbc3dd80 <unavailable> + 2858368 5 libswiftCore.so 0x00007fcacbad16b0 _fatalErrorMessage(_:_:file:line:flags:) + 19 7 swift 0x0000000000fed1ce <unavailable> + 12505550 8 swift 0x0000000000ff1692 <unavailable> + 12523154 9 swift 0x00000000004d9076 <unavailable> + 888950 10 swift 0x00000000004c35d3 <unavailable> + 800211 11 swift 0x00000000004beecc <unavailable> + 782028 12 swift 0x00000000004778c4 <unavailable> + 489668 13 libc.so.6 0x00007fcace27c740 __libc_start_main + 240 14 swift 0x0000000000475179 <unavailable> + 479609 /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fcacfb52390] /usr/lib/swift/linux/libswiftCore.so(+0x2b9d80)[0x7fcacbc3dd80] /usr/lib/swift/linux/libswiftCore.so(_T0s18_fatalErrorMessages5NeverOs12StaticStringV_A2E4fileSu4lines6UInt32V5flagstF+0x13)[0x7fcacbad16c3] [0x7fcacff820ec] /usr/bin/swift[0xfed1ce] /usr/bin/swift[0xff1692] /usr/bin/swift[0x4d9076] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] ...
4:13 AM
2.27 KB
Avatar
@swiftbot func hoge() -> Never { return unsafeBitCast((), to: Never.self) } let voidNever = unsafeBitCast((), to: Never.self) // ① //guard 1 == 0 else { // hoge() //} print("hello")
Avatar
swiftbot BOT 4/11/2018 4:14 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:14 AM
hello
Avatar
guardのあるなしで①の行が実行時にクラッシュするかどうか変わる
4:14 AM
なんですかこれは
Avatar
omochimetaru 4/11/2018 4:16 AM
@swiftbot func hoge() -> Never { return unsafeBitCast((), to: Never.self) } let voidNever = unsafeBitCast((), to: Never.self) // ① hoge() print("hello")
Avatar
swiftbot BOT 4/11/2018 4:16 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:16 AM
/usercode/main.swift:9:7: warning: will never be executed print("hello") ^ /usercode/main.swift:7:1: note: a call to a never-returning function hoge() ^ Fatal error: Can't unsafeBitCast between types of different sizes Current stack trace: 0 libswiftCore.so 0x00007fc5595c8750 _swift_stdlib_reportFatalError + 171 1 libswiftCore.so 0x00007fc559336ad6 <unavailable> + 1366742 2 libswiftCore.so 0x00007fc559571383 <unavailable> + 3703683 3 libswiftCore.so 0x00007fc559336ad6 <unavailable> + 1366742 4 libswiftCore.so 0x00007fc5594a2d80 <unavailable> + 2858368 5 libswiftCore.so 0x00007fc5593366b0 _fatalErrorMessage(_:_:file:line:flags:) + 19 7 swift 0x0000000000fed1ce <unavailable> + 12505550 8 swift 0x0000000000ff1692 <unavailable> + 12523154 9 swift 0x00000000004d9076 <unavailable> + 888950 10 swift 0x00000000004c35d3 <unavailable> + 800211 11 swift 0x00000000004beecc <unavailable> + 782028 12 swift 0x00000000004778c4 <unavailable> + 489668 13 libc.so.6 0x00007fc55bae1740 __libc_start_main + 240 14 swift 0x0000000000475179 <unavailable> + 479609 /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fc55d3b7390] /usr/lib/swift/linux/libswiftCore.so(+0x2b9d80)[0x7fc5594a2d80] /usr/lib/swift/linux/libswiftCore.so(_T0s18_fatalErrorMessages5NeverOs12StaticStringV_A2E4fileSu4lines6UInt32V5flagstF+0x13)[0x7fc5593366c3] [0x7fc55d7e708c] /usr/bin/swift[0xfed1ce] /usr/bin/swift[0xff1692] /usr/bin/swift[0x4d9076] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] ...
4:16 AM
2.25 KB
Avatar
omochimetaru 4/11/2018 4:16 AM
guard関係ある?hogeの呼び出しで落ちるというだけじゃない。
Avatar
あー、guardは関係ないか。
4:16 AM
①の行で落ちるのがおかしくない?
4:16 AM
hoge()の中で落ちるんじゃないの って感じ
4:17 AM
Avatar
omochimetaru 4/11/2018 4:18 AM
voidNeverの生成自体が削除されてるのかな
Avatar
ここで落ちましたってマーカーつく場所がおかしい?
Avatar
omochimetaru 4/11/2018 4:19 AM
その可能性もある
4:19 AM
@swiftbot let voidNever = unsafeBitCast((), to: Never.self) // ① print("hello")
Avatar
swiftbot BOT 4/11/2018 4:19 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:19 AM
hello
Avatar
omochimetaru 4/11/2018 4:20 AM
@swiftbot func f() { let voidNever = unsafeBitCast((), to: Never.self) // ① print("hello") } f()
Avatar
swiftbot BOT 4/11/2018 4:20 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:20 AM
hello
4:20 AM
/usercode/main.swift:2:5: warning: initialization of immutable value 'voidNever' was never used; consider replacing with assignment to '_' or removing it let voidNever = unsafeBitCast((), to: Never.self) // ①
Avatar
returnするときに評価が走るからそのタイミングで落ちる
Avatar
omochimetaru 4/11/2018 4:20 AM
@swiftbot help
Avatar
swiftbot BOT 4/11/2018 4:20 AM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
@swiftbot func hoge() -> Never { return unsafeBitCast((), to: Never.self) // 落ちるならこっちじゃないの } _ = unsafeBitCast((), to: Never.self) // ここで落ちる hoge()
Avatar
swiftbot BOT 4/11/2018 4:20 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:20 AM
Fatal error: Can't unsafeBitCast between types of different sizes Current stack trace: 0 libswiftCore.so 0x00007f380f961750 _swift_stdlib_reportFatalError + 171 1 libswiftCore.so 0x00007f380f6cfad6 <unavailable> + 1366742 2 libswiftCore.so 0x00007f380f90a383 <unavailable> + 3703683 3 libswiftCore.so 0x00007f380f6cfad6 <unavailable> + 1366742 4 libswiftCore.so 0x00007f380f83bd80 <unavailable> + 2858368 5 libswiftCore.so 0x00007f380f6cf6b0 _fatalErrorMessage(_:_:file:line:flags:) + 19 7 swift 0x0000000000fed1ce <unavailable> + 12505550 8 swift 0x0000000000ff1692 <unavailable> + 12523154 9 swift 0x00000000004d9076 <unavailable> + 888950 10 swift 0x00000000004c35d3 <unavailable> + 800211 11 swift 0x00000000004beecc <unavailable> + 782028 12 swift 0x00000000004778c4 <unavailable> + 489668 13 libc.so.6 0x00007f3811e7a740 __libc_start_main + 240 14 swift 0x0000000000475179 <unavailable> + 479609 /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f3813750390] /usr/lib/swift/linux/libswiftCore.so(+0x2b9d80)[0x7f380f83bd80] /usr/lib/swift/linux/libswiftCore.so(_T0s18_fatalErrorMessages5NeverOs12StaticStringV_A2E4fileSu4lines6UInt32V5flagstF+0x13)[0x7f380f6cf6c3] [0x7f3813b80080] /usr/bin/swift[0xfed1ce] /usr/bin/swift[0xff1692] /usr/bin/swift[0x4d9076] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f3811e7a830] /usr/bin/swift[0x475179] Stack dump: ...
4:20 AM
Avatar
omochimetaru 4/11/2018 4:21 AM
@swiftbot --command="swiftc" --options="-emit-silgen" let voidNever = unsafeBitCast((), to: Never.self) // ① print("hello") (edited)
Avatar
swiftbot BOT 4/11/2018 4:21 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:21 AM
<unknown>:0: error: option '-emit-silgen' is not supported by 'swift'; did you mean to use 'swiftc'?
Avatar
@swiftbot func hoge() -> Never { print(3) return unsafeBitCast((), to: Never.self) // 落ちるならこっちじゃないの } print(1) _ = unsafeBitCast((), to: Never.self) // ここで落ちる print(2) hoge() print(4)
Avatar
swiftbot BOT 4/11/2018 4:21 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:21 AM
/usercode/main.swift:10:7: warning: will never be executed print(4) ^ /usercode/main.swift:9:1: note: a call to a never-returning function hoge() ^ Fatal error: Can't unsafeBitCast between types of different sizes Current stack trace: 0 libswiftCore.so 0x00007fecfce05750 _swift_stdlib_reportFatalError + 171 1 libswiftCore.so 0x00007fecfcb73ad6 <unavailable> + 1366742 2 libswiftCore.so 0x00007fecfcdae383 <unavailable> + 3703683 3 libswiftCore.so 0x00007fecfcb73ad6 <unavailable> + 1366742 4 libswiftCore.so 0x00007fecfccdfd80 <unavailable> + 2858368 5 libswiftCore.so 0x00007fecfcb736b0 _fatalErrorMessage(_:_:file:line:flags:) + 19 7 swift 0x0000000000fed1ce <unavailable> + 12505550 8 swift 0x0000000000ff1692 <unavailable> + 12523154 9 swift 0x00000000004d9076 <unavailable> + 888950 10 swift 0x00000000004c35d3 <unavailable> + 800211 11 swift 0x00000000004beecc <unavailable> + 782028 12 swift 0x00000000004778c4 <unavailable> + 489668 13 libc.so.6 0x00007fecff31e740 __libc_start_main + 240 14 swift 0x0000000000475179 <unavailable> + 479609 /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fed00bf4390] /usr/lib/swift/linux/libswiftCore.so(+0x2b9d80)[0x7fecfccdfd80] /usr/lib/swift/linux/libswiftCore.so(_T0s18_fatalErrorMessages5NeverOs12StaticStringV_A2E4fileSu4lines6UInt32V5flagstF+0x13)[0x7fecfcb736c3] [0x7fed010241ae] /usr/bin/swift[0xfed1ce] /usr/bin/swift[0xff1692] /usr/bin/swift[0x4d9076] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] ...
4:21 AM
2.25 KB
Avatar
omochimetaru 4/11/2018 4:22 AM
@swiftbot --command="swiftc" --options="-emit-silgen" let voidNever = unsafeBitCast((), to: Never.self) // ① print("hello")
Avatar
swiftbot BOT 4/11/2018 4:22 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:22 AM
sil_stage raw import Builtin import Swift import SwiftShims // voidNever sil_global hidden [let] @_T04main9voidNevers0C0Ovp : $Never // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): alloc_global @_T04main9voidNevers0C0Ovp // id: %2 %3 = global_addr @_T04main9voidNevers0C0Ovp : $*Never // user: %10 %4 = tuple () // user: %6 %5 = alloc_stack $() // users: %11, %10, %6 store %4 to [trivial] %5 : $*() // id: %6 %7 = metatype $@thin Never.Type %8 = metatype $@thick Never.Type // user: %10 // function_ref unsafeBitCast<A, B>(_:to:) %9 = function_ref @_T0s13unsafeBitCastq_x_q_m2totr0_lF : $@convention(thin) <τ_0_0, τ_0_1> (@in τ_0_0, @thick τ_0_1.Type) -> @out τ_0_1 // user: %10 %10 = apply %9<(), Never>(%3, %5, %8) : $@convention(thin) <τ_0_0, τ_0_1> (@in τ_0_0, @thick τ_0_1.Type) -> @out τ_0_1 dealloc_stack %5 : $*() // id: %11 %12 = integer_literal $Builtin.Word, 1 // user: %14 // function_ref _allocateUninitializedArray<A>(_:) %13 = function_ref @_T0s27_allocateUninitializedArraySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %14 %14 = apply %13<Any>(%12) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // users: %20, %19, %15 %15 = begin_borrow %14 : $(Array<Any>, Builtin.RawPointer) // users: %19, %18, %16 %16 = tuple_extract %15 : $(Array<Any>, Builtin.RawPointer), 0 // user: %17 %17 = copy_value %16 : $Array<Any> // user: %35 %18 = tuple_extract %15 : $(Array<Any>, Builtin.RawPointer), 1 // user: %21 ...
4:22 AM
5.11 KB
Avatar
omochimetaru 4/11/2018 4:23 AM
@swiftbot --command="swiftc" --options="--emit-silgen" func hoge() -> Never { return unsafeBitCast((), to: Never.self) } let voidNever = unsafeBitCast((), to: Never.self) // ① hoge() print("hello")
Avatar
swiftbot BOT 4/11/2018 4:23 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:23 AM
<unknown>:0: error: unknown argument: '--emit-silgen'
Avatar
omochimetaru 4/11/2018 4:23 AM
@swiftbot --command="swiftc" --options="-emit-silgen"
Avatar
Avatar
omochimetaru 4/11/2018 4:23 AM
@swiftbot --command="swiftc" --options="-emit-silgen" func hoge() -> Never { return unsafeBitCast((), to: Never.self) } let voidNever = unsafeBitCast((), to: Never.self) // ① hoge() print("hello")
Avatar
swiftbot BOT 4/11/2018 4:23 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:23 AM
sil_stage raw import Builtin import Swift import SwiftShims // voidNever sil_global hidden [let] @_T04main9voidNevers0C0Ovp : $Never // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): alloc_global @_T04main9voidNevers0C0Ovp // id: %2 %3 = global_addr @_T04main9voidNevers0C0Ovp : $*Never // user: %10 %4 = tuple () // user: %6 %5 = alloc_stack $() // users: %11, %10, %6 store %4 to [trivial] %5 : $*() // id: %6 %7 = metatype $@thin Never.Type %8 = metatype $@thick Never.Type // user: %10 // function_ref unsafeBitCast<A, B>(_:to:) %9 = function_ref @_T0s13unsafeBitCastq_x_q_m2totr0_lF : $@convention(thin) <τ_0_0, τ_0_1> (@in τ_0_0, @thick τ_0_1.Type) -> @out τ_0_1 // user: %10 %10 = apply %9<(), Never>(%3, %5, %8) : $@convention(thin) <τ_0_0, τ_0_1> (@in τ_0_0, @thick τ_0_1.Type) -> @out τ_0_1 dealloc_stack %5 : $*() // id: %11 // function_ref hoge() %12 = function_ref @_T04main4hoges5NeverOyF : $@convention(thin) () -> Never // user: %13 %13 = apply %12() : $@convention(thin) () -> Never %14 = integer_literal $Builtin.Word, 1 // user: %16 // function_ref _allocateUninitializedArray<A>(_:) %15 = function_ref @_T0s27_allocateUninitializedArraySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %16 %16 = apply %15<Any>(%14) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // users: %22, %21, %17 %17 = begin_borrow %16 : $(Array<Any>, Builtin.RawPointer) // users: %21, %20, %18 %18 = tuple_extract %17 : $(Array<Any>, Builtin.RawPointer), 0 // user: %19 ...
4:23 AM
6.32 KB
Avatar
omochimetaru 4/11/2018 4:25 AM
Fatal error: Can't unsafeBitCast between types of different sizes
4:25 AM
うーん、このメッセージなんだろう。
Avatar
サイズが違う
Avatar
これはメモリレイアウト上のサイズが違う
4:26 AM
実際は違うはず無いんだけどね。
Avatar
omochimetaru 4/11/2018 4:26 AM
いや、そのメッセージが出たり出なかったりするのが
Avatar
VoidとNeverだしどっちも0
Avatar
omochimetaru 4/11/2018 4:26 AM
なぜだろう
Avatar
あー
Avatar
わからん。
4:27 AM
preconditionだな
4:27 AM
@swiftbot print(MemoryLayout<()>.size) print(MemoryLayout<Never>.size)
Avatar
swiftbot BOT 4/11/2018 4:27 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:27 AM
0 0
Avatar
@swiftbot enum Fruit { case apple } print(MemoryLayout<Fruit>.size)
Avatar
swiftbot BOT 4/11/2018 4:28 AM
Swift version 4.1 (swift-4.1-RELEASE)
4:28 AM
0
Avatar
omochimetaru 4/11/2018 4:28 AM
うーん?
Avatar
関係ないけどcase1個のenumもサイズ0って最近しった。
Avatar
omochimetaru 4/11/2018 4:28 AM
うむ
4:29 AM
値が一個しか無い型は0バイトにできる (edited)
Avatar
omochimetaru 4/11/2018 8:47 AM
@swiftbot func a() { func b(_ a: Int) {} func b(_ a: String) {} }
Avatar
swiftbot BOT 4/11/2018 8:47 AM
Swift version 4.1 (swift-4.1-RELEASE)
8:47 AM
/usercode/main.swift:3:8: error: definition conflicts with previous value func b(_ a: String) {} ^ /usercode/main.swift:2:8: note: previous definition of 'b' is here func b(_ a: Int) {} ^
Avatar
https://bugs.swift.org/browse/SR-4050 たぶん容易に回避できるので放置プレイとなっております。
Avatar
おお Reporter: rintaro Rintaro Ishizaki
Avatar
Kishikawa Katsumi 4/11/2018 1:27 PM
@norio_nomura 根本的な対応じゃないですが、コマンドインジェクションの恐れのある文字列をBanするようにしました。
😯 1
👍 1
1:28 PM
@swiftbot --command=swift --options="; docker run -v /:/host_root ubuntu cat /host_root/etc/passwd;" print("a")
Avatar
swiftbot BOT 4/11/2018 1:28 PM
Invalid control characters found
Avatar
ドキュメントを読む限りexecFileshellオプションを使わないならサニタイズ不要にも思えます。 https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback
Avatar
norio_nomura 4/12/2018 1:04 AM
@swiftbot --version=4.0.3 protocol Widget { func print() func clone() -> Self } extension Widget { func print() { Swift.print("a widget of type \(Self.self)") } func clone() -> Self { return self } } class Box<Element> : Widget { init(value: Element) { self.contents = value } let contents: Element // Default implementation of print() is OK! // You must define this, or conformance checking fails on Swift 4.0.x: // func clone() -> Self { return self } } class Crate<T> : Box<T> { override init(value: T) { super.init(value: value) } } let c = Crate<Int>(value: 3) c.print() // prints: a widget of type Crate<Int>
Avatar
swiftbot BOT 4/12/2018 1:04 AM
Swift version 4.0.3 (swift-4.0.3-RELEASE)
1:04 AM
/usercode/main.swift:8:10: error: method 'clone()' in non-final class 'Box<Element>' must return `Self` to conform to protocol 'Widget' func clone() -> Self { return self } ^
Avatar
norio_nomura 4/12/2018 1:05 AM
@swiftbot protocol Widget { func print() func clone() -> Self } extension Widget { func print() { Swift.print("a widget of type \(Self.self)") } func clone() -> Self { return self } } class Box<Element> : Widget { init(value: Element) { self.contents = value } let contents: Element // Default implementation of print() is OK! // You must define this, or conformance checking fails on Swift 4.0.x: // func clone() -> Self { return self } } class Crate<T> : Box<T> { override init(value: T) { super.init(value: value) } } let c = Crate<Int>(value: 3) c.print() // prints: a widget of type Crate<Int>
Avatar
swiftbot BOT 4/12/2018 1:05 AM
Swift version 4.1 (swift-4.1-RELEASE)
1:05 AM
a widget of type Crate<Int>
👏 1
Avatar
norio_nomura 4/12/2018 1:12 AM
SwiftBotに、同じソースを複数のSwiftバージョンで実行した結果を一度で得られる仕組みがあると、バージョンによる挙動の違いを示し易くなる。
Avatar
Kishikawa Katsumi 4/12/2018 2:58 AM
バージョンを複数渡せるようにしますかね。
3:00 AM
child_process.execFileでよさそうですね。
3:02 AM
--version=stable...latest--version=3...4.1のように書けたらいいのかな?
Avatar
omochimetaru 4/12/2018 3:06 AM
... だとその間のバージョンで対応してるもの全部って感じですか?カンマ区切りで明示的な配列指定を想像していましたけど
Avatar
Kishikawa Katsumi 4/12/2018 3:11 AM
確かに。 --version="4.0.3, 4.1, latest" こんな感じかな。 (edited)
3:13 AM
なんとなくstable...latest で上のように展開されるという思い込みと、カンマだとおそらくクオートで囲む必要がありそうで、それを避けたかった感じ。
Avatar
--version=4.0.3,4.1,latest みたいにスペースなくしても " っていりますっけ? (edited)
Avatar
omochimetaru 4/12/2018 3:14 AM
--version=4.0.3,4.1 これがいけるとちょっと入力しやすくて嬉しいです
Avatar
Kishikawa Katsumi 4/12/2018 3:14 AM
たぶんOK
Avatar
omochimetaru 4/12/2018 3:16 AM
[omochi@omochi-iMac-PC43 temp]$ cat a.bash for arg in "$@"; do echo "[$arg]" done [omochi@omochi-iMac-PC43 temp]$ ./a.bash --version=4.0.3,4.1 [--version=4.0.3,4.1]
3:17 AM
bashのパーサーはそのように動くっぽい。
Avatar
Kishikawa Katsumi 4/12/2018 3:19 AM
まずyargs-parserというParserを通していて、これがどう解釈するかですね。オプションの形式が--xなのもこのライブラリのデフォルトによります。 https://github.com/kishikawakatsumi/swift-compiler-discord-bot/blob/master/app.js#L87
Contribute to swift-compiler-discord-bot development by creating an account on GitHub.
3:20 AM
たぶん調整できるんでしょうけど。
3:22 AM
Mac環境でも実行できると便利だなーと思っていて、 https://www.macstadium.com を共同で使うという企画を進めようかなと。
The world's largest hosting provider of dedicated Apple Mac computers with dedicated server rentals, colocation, and hosted Mac private cloud solutions.
3:23 AM
MacProにVNCで入れるはずなので、他の参加者としてはSwiftのデバッグとビルドにローカルマシンが非力だと思う人を想定しています。
Avatar
norio_nomura 4/12/2018 3:40 AM
execFileを使っても、run.shの中でどう解釈されるか、によるかも。>サニタイズ要・不要
3:42 AM
docker内で起動されるスクリプトへ全部渡ってしまうならOKかな。
Avatar
Kishikawa Katsumi 4/12/2018 3:42 AM
そうですね。そこが一番問題のコードです。
3:43 AM
のむらさんの指摘はdocker runコマンドの実行をオプションに渡す文字列で止めて、かつそのあとに任意の処理が実行できるんじゃないなということですよね。たぶんできたんじゃないかな。
Avatar
norio_nomura 4/12/2018 3:44 AM
run.shとは別のプロセスが起動できそうだと思ったのです。>exec使用 (edited)
Avatar
Kishikawa Katsumi 4/12/2018 3:45 AM
そこですか。そこは、どうかな。できるのかな。
3:46 AM
node内の実行はいちおう、各パラメータを分割した形で渡せるものを使ってるから、大丈夫かなと。
Avatar
norio_nomura 4/12/2018 3:53 AM
こうすると、script.shを実行した上で別途testってファイルを作れます。 const exec = require('child_process').exec; const options = "& echo hello>test"; exec(['sh', 'script.sh', [options].join(' ')].join(' '));
3:55 AM
joinでつなぐやり方はsandbox.jsで使われてるのと同じ。
Avatar
omochimetaru 4/12/2018 3:57 AM
あ〜
3:57 AM
execに渡す時にもう一回文字列化してるから
3:57 AM
そこで配列要素としての区切りが消えてる
Avatar
Kishikawa Katsumi 4/12/2018 3:58 AM
残念だ。
Avatar
norio_nomura 4/12/2018 3:58 AM
dockerに入れたnodeで実行しようと考えたきっかけです。
Avatar
Kishikawa Katsumi 4/12/2018 3:59 AM
じゃあまあ怪しい文字列をBanするのは必要かな。
3:59 AM
私もそうしたいんですけどね。Docker in Dockerがちょっと大変なのがやっぱり気になりますね。
Avatar
norio_nomura 4/12/2018 4:00 AM
文字列化しないでexecFileを使えばサニタイズ無くても大丈夫かも? → しかしrun.shの中での扱いは大丈夫? といった流れ。 (edited)
Avatar
Kishikawa Katsumi 4/12/2018 4:01 AM
run.shの中は一番怪しい。
Avatar
omochimetaru 4/12/2018 4:01 AM
Mac環境でも実行できると便利だなーと思っていて、 https://www.macstadium.com/ を共同で使うという企画を進めようかなと。
ところでこれ乗る人多そう。
The world's largest hosting provider of dedicated Apple Mac computers with dedicated server rentals, colocation, and hosted Mac private cloud solutions.
Avatar
Kishikawa Katsumi 4/12/2018 4:05 AM
@kitasuke @omochimetaru と私、あと何人いるかな。
Avatar
omochimetaru 4/12/2018 4:06 AM
申し訳ないが僕は自分で持ってるiMacProのほうが充分強いので要らないのです
Avatar
Kishikawa Katsumi 4/12/2018 4:06 AM
それはいらないですね 😦
4:08 AM
あと話してたのは @d_date さんだったかな。私自身は別にProじゃなくてMac miniのホスティングでもいいといえばいいんですよね。 (edited)
🙏 1
Avatar
omochimetaru 4/12/2018 4:10 AM
@ukitaka @ikesyo @ezura @nafu @moaible あたりはどうかな・・・
Avatar
私は非力だから乗りたいです!
Avatar
omochimetaru 4/12/2018 4:20 AM
@ezura Discordのアイコン設定しませんか?ezura違いだったらどうしようかとドキドキした
Avatar
たしかに。了解です!
4:23 AM
私になった
🙂 3
Avatar
過去の発言にアイコンが反映されなかったけど、
4:26 AM
再起動したら反映された。
Avatar
Kishikawa Katsumi 4/12/2018 4:26 AM
再起動
Avatar
こうなるの、とてもよく気持ちがわかる。
Avatar
お、自分も非力マシンしかないのでぜひ 💪
Avatar
僕は会社でiMac Pro買ってもらえることになったので不要です!
😁 1
Avatar
omochimetaru 4/12/2018 4:33 AM
マジ!w
Avatar
iMac Pro流行してるw
Avatar
(いいなぁ)
Avatar
Kishikawa Katsumi 4/12/2018 4:39 AM
LINEも申請すればいけそうな感じが外部の者からするとしてますけどね。
Avatar
部署依存な気がしますね…
Avatar
うちもまだ特定の人だけです
Avatar
Kishikawa Katsumi 4/12/2018 4:42 AM
なるほど、予算のある部署なら、という感じですか。
Avatar
そうですね。あとは上司の方針とかです。
Avatar
norio_nomura 4/12/2018 6:35 AM
Discordボットのトークンって秘匿しなくても大丈夫?
Avatar
Kishikawa Katsumi 4/12/2018 6:38 AM
軽く考えてたけどした方がいいですよね。中身だけ違うBotが入れてしまうから。
6:39 AM
新しいのを発行して今のを無効化でいいかな。
Avatar
norio_nomura 4/12/2018 6:39 AM
手元でボットアカウントを作って試してみたけど、マルチログイン出来るぽい。 (edited)
6:40 AM
普通のアカウントと同じ。
Avatar
Kishikawa Katsumi 4/12/2018 6:40 AM
悪用方法としてはSpamですかね。
6:41 AM
挙動は大体確認してます。テストでサーバのBotをそのままにローカルでもう1つとかやることがあるので。
Avatar
norio_nomura 4/12/2018 6:44 AM
Swiftでボット簡単に書ける。 https://sword.azoy.me (edited)
Avatar
Kishikawa Katsumi 4/12/2018 7:00 AM
そんなんあったのか。
Avatar
Mac環境
可能なら乗っかりたいです!🙏
Avatar
きしかわさんの真似をしてSwiftコンパイラのDiscordボットをSwiftで書いてみた。 https://github.com/norio-nomura/SwiftCompilerDiscordappBot
SwiftCompilerDiscordappBot - Swift Compiler Discordapp Bot
Avatar
@norio_nomura botmgrを付与しました。
🙏 1
Avatar
Kishikawa Katsumi 4/12/2018 1:03 PM
シンプル
Avatar
norio_nomura 4/12/2018 1:22 PM
ボットアカウントのユーザー名は一度作ると変えられないぽい。
Avatar
omochimetaru 4/12/2018 1:23 PM
ニックネームの変更が右クリックからできませんか?
Avatar
norio_nomura 4/12/2018 1:24 PM
出来るかも。
1:25 PM
あいや、このサーバーでは出来ない。
1:26 PM
@TestCLIBot print("hello, discord!")
Avatar
TestCLIBot BOT 4/12/2018 1:26 PM
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu hello, discord!
Avatar
norio_nomura 4/12/2018 1:31 PM
とりあえず、swift package generate-xcodeprojすればXcodeでデバッグできるのがSwiftで書くメリットかな。
Avatar
norio_nomura 4/13/2018 3:17 PM
@swift403 @swift-4.1.3 protocol Widget { func print() func clone() -> Self } extension Widget { func print() { Swift.print("a widget of type \(Self.self)") } func clone() -> Self { return self } } class Box<Element> : Widget { init(value: Element) { self.contents = value } let contents: Element // Default implementation of print() is OK! // You must define this, or conformance checking fails on Swift 4.0.x: // func clone() -> Self { return self } } class Crate<T> : Box<T> { override init(value: T) { super.init(value: value) } } let c = Crate<Int>(value: 3) c.print() // prints: a widget of type Crate<Int>
Avatar
swift403 BOT 4/13/2018 3:17 PM
error: main.swift:8:10: error: method 'clone()' in non-final class 'Box<Element>' must return `Self` to conform to protocol 'Widget' func clone() -> Self { return self } ^
Avatar
a widget of type Crate<Int>
Avatar
@swiftbot enum CustomString: ExpressibleByStringLiteral { typealias StringLiteralType = String init(stringLiteral value: StringLiteralType) { self = "hoge" } } let hoge: CustomString = "fuga" print(hoge)
Avatar
norio_nomura 4/13/2018 3:18 PM
Swiftバージョンごとにbotアカウントを分けてみた。
👍 2
Avatar
swiftbot BOT 4/13/2018 3:19 PM
Swift version 4.1 (swift-4.1-RELEASE)
3:19 PM
/usercode/main.swift:8:26: warning: will never be executed let hoge: CustomString = "fuga" ^ /usercode/main.swift:8:26: note: a call to a never-returning function let hoge: CustomString = "fuga" ^ /usercode/main.swift:4:14: warning: will never be executed self = "hoge" ^ /usercode/main.swift:4:16: note: a call to a never-returning function self = "hoge" ^ /usercode/main.swift:3:5: warning: will never be executed init(stringLiteral value: StringLiteralType) { ^ /usercode/main.swift:3:5: note: a call to a never-returning function init(stringLiteral value: StringLiteralType) { ^ /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f8003430390] /usr/lib/swift/linux/libswiftCore.so(_T0S2SBp21_builtinStringLiteral_Bw17utf8CodeUnitCountBi1_7isASCIItcfC+0x4)[0x7f7fff39e424] [0x7f800385f0e4] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] [0x7f800385f0fa] ...
3:19 PM
5.38 KB
Avatar
Kishikawa Katsumi 4/14/2018 2:16 AM
^ これは何が起こってるんだろう?
Avatar
norio_nomura 4/14/2018 2:19 AM
self = "hoge"init(stringLiteral:)を再起呼び出ししてますね。
Avatar
Kishikawa Katsumi 4/14/2018 2:20 AM
なるほど。無限再帰ですか。
2:21 AM
出力がなんなのか一見してよくわからなかった。 (edited)
Avatar
norio_nomura 4/14/2018 2:25 AM
ボットが出力をファイル添付へ切り替える閾値って、何をもとに決めてますか? (edited)
2:27 AM
ああ、contentsの最大サイズか。
Avatar
Kishikawa Katsumi 4/14/2018 2:48 AM
はい。2000文字以上はDiscordの仕様でエラーになります。ライブラリは自動分割の機能もあったのですが、ものすごい量が出ることがたまにあるのでそれはボツにしました。
Avatar
norio_nomura 4/14/2018 3:45 AM
Swift製DiscordライブラリがLinuxでファイル添付に対応してなかった…
Avatar
norio_nomura 4/14/2018 9:40 AM
@swift403 @swift-4.1.3 enum CustomString: ExpressibleByStringLiteral { typealias StringLiteralType = String init(stringLiteral value: StringLiteralType) { self = "hoge" } } let hoge: CustomString = "fuga" print(hoge)
Avatar
swift403 BOT 4/14/2018 9:40 AM
error: main.swift:8:26: warning: will never be executed let hoge: CustomString = "fuga" ^ main.swift:8:26: note: a call to a never-returning function let hoge: CustomString = "fuga" ^ main.swift:4:14: warning: will never be executed self = "hoge" ^ main.swift:4:16: note: a call to a never-returning function self = "hoge" ^ main.swift:3:5: warning: will never be executed init(stringLiteral value: StringLiteralType) { ^ main.swift:3:5: note: a call to a never-returning function init(stringLiteral value: StringLiteralType) { ^ 0 swift 0x0000000003ae91b8 1 swift 0x0000000003ae98f6 2 libpthread.so.0 0x00007f6a35029390 3 libpthread.so.0 0x00007f6a35458058 4 libpthread.so.0 0x00007f6a3545809a 5 libpthread.so.0 0x00007f6a3545809a 6 libpthread.so.0 0x00007f6a3545809a 7 libpthread.so.0 0x00007f6a3545809a 8 libpthread.so.0 0x00007f6a3545809a 9 libpthread.so.0 0x00007f6a3545809a 10 libpthread.so.0 0x00007f6a3545809a 11 libpthread.so.0 0x00007f6a3545809a 12 libpthread.so.0 0x00007f6a3545809a 13 libpthread.so.0 0x00007f6a3545809a 14 libpthread.so.0 0x00007f6a3545809a 15 libpthread.so.0 0x00007f6a3545809a 16 libpthread.so.0 0x00007f6a3545809a 17 libpthread.so.0 0x00007f6a3545809a 18 libpthread.so.0 0x00007f6a3545809a 19 libpthread.so.0 0x00007f6a3545809a 20 libpthread.so.0 0x00007f6a3545809a 21 libpthread.so.0 0x00007f6a3545809a 22 libpthread.so.0 0x00007f6a3545809a 23 libpthread.so.0 0x00007f6a3545809a 24 libpthread.so.0 0x00007f6a3545809a 25 libpthread.so.0 0x00007f6a3545809a 26 libpthread.so.0 0x00007f6a3545809a 27 libpthread.so.0 0x00007f6a3545809a 28 libpthread.so.0 0x00007f6a3545809a 29 libpthread.so.0 0x00007f6a3545809a 30 libpthread.so.0 0x00007f6a3545809a 31 libpthread.so.0 0x00007f6a3545809a 32 libpthread.so.0 0x00007f6a3545809a 33 libpthread.so.0 0x00007f6a3545809a 34 libpthread.so.0 0x0000
9:40 AM
10.41 KB
Avatar
error: main.swift:8:26: warning: will never be executed let hoge: CustomString = "fuga" ^ main.swift:8:26: note: a call to a never-returning function let hoge: CustomString = "fuga" ^ main.swift:4:14: warning: will never be executed self = "hoge" ^ main.swift:4:16: note: a call to a never-returning function self = "hoge" ^ main.swift:3:5: warning: will never be executed init(stringLiteral value: StringLiteralType) { ^ main.swift:3:5: note: a call to a never-returning function init(stringLiteral value: StringLiteralType) { ^ /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f46186b8390] [0x7f4618ae70e2] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae70fa] [0x7f4618ae
9:40 AM
5.07 KB
Avatar
norio_nomura 4/14/2018 9:40 AM
結果が大きい時のファイル添付に対応した。
Avatar
Kishikawa Katsumi 4/14/2018 9:50 AM
すばらしい。私もエラーの有無を出そうかなあ。チャットのUI難しい。
Avatar
norio_nomura 4/14/2018 9:51 AM
きしかわさんのボットはCPU負荷に応じてお金がかかるタイプですか?
9:53 AM
僕はHerokuで動かしてて、CPU負荷に関係なく無料です。
9:53 AM
まだアカウントにクレジットカードを登録していないので、月に550時間までですが。
Avatar
Kishikawa Katsumi 4/14/2018 10:01 AM
DigitalOceanなのでスペックと時間です。一番安いスペックなので動かし続けても一月500円程度です。
Avatar
なるほど。
Avatar
Kishikawa Katsumi 4/14/2018 10:09 AM
ボットは今のところ同時アクセスがほとんど無いので何使っても違いはなさそうですね。
10:10 AM
ただSSDは後30%だけど、古いスナップショットを消せばどうにでもなります。
Avatar
@swift403 @swift-4.1.3 import Foundation func execute(_ args: [String], in directory: URL? = nil) -> (stdout: String, stderr: String) { let process = Process() process.launchPath = "/usr/bin/env" process.arguments = args if let directory = directory { process.currentDirectoryPath = directory.path } let stdoutPipe = Pipe(), stderrPipe = Pipe() process.standardOutput = stdoutPipe process.standardError = stderrPipe process.launch() process.waitUntilExit() let stdout = String(data: stdoutPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" let stderr = String(data: stderrPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" return (stdout, stderr) } execute(["df", "-m"])
Avatar
error: main.swift:19:1: warning: result of call to 'execute(_:in:)' is unused execute(["df", "-m"]) ^ ~~~~~~~~~~~~~~
Avatar
error: main.swift:19:1: warning: result of call to 'execute(_:in:)' is unused execute(["df", "-m"]) ^ ~~~~~~~~~~~~~~
Avatar
@swift403 @swift-4.1.3 import Foundation func execute(_ args: [String], in directory: URL? = nil) -> (stdout: String, stderr: String) { let process = Process() process.launchPath = "/usr/bin/env" process.arguments = args if let directory = directory { process.currentDirectoryPath = directory.path } let stdoutPipe = Pipe(), stderrPipe = Pipe() process.standardOutput = stdoutPipe process.standardError = stderrPipe process.launch() process.waitUntilExit() let stdout = String(data: stdoutPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" let stderr = String(data: stderrPipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" return (stdout, stderr) } print(execute(["df", "-m"]).stdout)
Avatar
Filesystem 1M-blocks Used Available Use% Mounted on none 384019 79671 284825 22% / /dev/mapper/evg0-evol0 384019 79671 284825 22% /tmp udev 30709 1 30709 1% /dev/herokudev none 64 0 64 0% /dev/shm tmpfs 6145 1 6144 1% /etc/resolv.conf
Avatar
Filesystem 1M-blocks Used Available Use% Mounted on none 384019 80516 283980 23% / /dev/mapper/evg0-evol0 384019 80516 283980 23% /tmp udev 30709 1 30709 1% /dev/herokudev none 64 0 64 0% /dev/shm tmpfs 6145 1 6144 1% /etc/resolv.conf
Avatar
@everyone
Uh oh, looks like swiftbot got compromised! Oh kishikawakatsumi, you dummy, putting servers at risk and everything, classic! Looks like our buddy here will have to shoot itself in the face. Oh well, everyone wave swiftbot a goodbye, you will be missed! (most likely not)
👀 3
Avatar
norio_nomura 4/15/2018 1:04 AM
ぬうう、ヘルプメッセージをコードブロックにしようとしてるのだけど、バックチックがうまく入らない… Zero-width spaceで解決した。 (edited)
Avatar
norio_nomura 4/15/2018 2:41 AM
@swift403 @swift-4.1.3
Avatar
swift403 BOT 4/15/2018 2:41 AM
Usage: @swift403 [SWIFT_OPTIONS] `​`​`​ [Swift Code] `​`​`​
Avatar
Usage: @swift41 [SWIFT_OPTIONS] `​`​`​ [Swift Code] `​`​`​
Avatar
norio_nomura 4/15/2018 2:41 AM
@swift403 @swift-4.1.3 --version
Avatar
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
swift403 BOT 4/15/2018 2:41 AM
Swift version 4.0.3 (swift-4.0.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 4/15/2018 2:42 AM
@swift403 @swift-4.1.3 -frontend -emit-sil func f(){}
Avatar
sil_stage canonical import Builtin import Swift import SwiftShims func f() // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // f() sil hidden @_T04main1fyyF : $@convention(thin) () -> () { bb0: %0 = tuple () // user: %1 return %0 : $() // id: %1 } // end sil function '_T04main1fyyF'
Avatar
swift403 BOT 4/15/2018 2:42 AM
sil_stage canonical import Builtin import Swift import SwiftShims func f() // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // f() sil hidden @_T04main1fyyF : $@convention(thin) () -> () { bb0: %0 = tuple () // user: %1 return %0 : $() // id: %1 } // end sil function '_T04main1fyyF'
Avatar
norio_nomura 4/15/2018 3:24 AM
外部へのネットワークアクセスを制限できない以外は、ほぼ形になったかな?> @swift403 @swift-4.1.3 (edited)
Avatar
Kishikawa Katsumi 4/15/2018 8:03 AM
@swiftbot
Avatar
swiftbot BOT 4/15/2018 8:03 AM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
Kishikawa Katsumi 4/15/2018 9:31 AM
@swiftbot versions
9:33 AM
@swiftbot versions
Avatar
swiftbot BOT 4/15/2018 9:33 AM
Available Swift versions: 2018-04-13-a 4.1 4.0.3 3.1.1 3.0.2
Avatar
メンションの行からオプションを取得する様になりました。 @swift403 @swift-4.1.3 -frontend -emit-sil func f() {}
Avatar
sil_stage canonical import Builtin import Swift import SwiftShims func f() // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // f() sil hidden @_T04main1fyyF : $@convention(thin) () -> () { bb0: %0 = tuple () // user: %1 return %0 : $() // id: %1 } // end sil function '_T04main1fyyF'
Avatar
sil_stage canonical import Builtin import Swift import SwiftShims func f() // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // f() sil hidden @_T04main1fyyF : $@convention(thin) () -> () { bb0: %0 = tuple () // user: %1 return %0 : $() // id: %1 } // end sil function '_T04main1fyyF'
Avatar
@swift403 @swift-4.1.3 struct S: Hashable { var int: Int }
Avatar
no outputs
Avatar
exit status: 1, error output: main.swift:1:8: error: type 'S' does not conform to protocol 'Hashable' struct S: Hashable { ^ main.swift:1:8: error: type 'S' does not conform to protocol 'Equatable' struct S: Hashable { ^ Swift.==:2:13: note: candidate has non-matching type '<Element where Element : Equatable> (ContiguousArray<Element>, ContiguousArray<Element>) -> Bool' public func ==<Element>(lhs: ContiguousArray<Element>, rhs: ContiguousArray<Element>) -> Bool where Element : Equatable ^ Swift.==:2:13: note: candidate has non-matching type '<Element where Element : Equatable> (ArraySlice<Element>, ArraySlice<Element>) -> Bool' public func ==<Element>(lhs: ArraySlice<Element>, rhs: ArraySlice<Element>) -> Bool where Element : Equatable ^ Swift.==:2:13: note: candidate has non-matching type '<Element where Element : Equatable> (Array<Element>, Array<Element>) -> Bool' public func ==<Element>(lhs: [Element], rhs: [Element]) -> Bool where Element : Equatable ^ Swift.==:3:13: note: candidate has non-matching type '(Any.Type?, Any.Type?) -> Bool' public func ==(t0: Any.Type?, t1: Any.Type?) -> Bool ^ Swift.==:6:13: note: candidate has non-matching type '<T where T : RawRepresentable, T.RawValue : Equatable> (T, T) -> Bool' public func ==<T>(lhs: T, rhs: T) -> Bool where T : RawRepresentable, T.RawValue : Equatable ^ Swift.==:45:13: note: candidate has non-matching type '<T where T : Equatable> (T?, T?) -> Bool' public func ==<T>(lhs: T?, rhs: T?) -> Bool where T : Equatable ^ Swift.==:22:13: note: candidate has non-matching type '<T> (T?, _OptionalNilComparisonType) -> Bool' public func ==<T>(lhs: T?, rhs: _OptionalNilComparisonType) -> Bool ^ Swift.==:22:13: note: candidate has non-matching type '<T> (_OptionalNilComparisonType, T?) -> Bool' public func ==<T>(lhs: _OptionalNilComparisonType, rhs: T?) -> Bool ^ Swift.==:9:13: note: candidate
10:19 AM
15.59 KB
Avatar
Kishikawa Katsumi 4/15/2018 10:20 AM
複数同時にバージョンを指定できるようになりました。
10:22 AM
@swiftbot --version=latest,4.1,4.0.3 func fibonacci(number: Int) -> Int { if number <= 1 { return number } else { return fibonacci(number: number - 1) + fibonacci(number: number - 2) } } print(fibonacci(number: 10))
Avatar
Swift version 4.2-dev (LLVM 8a97de0e52, Clang 3c973cd6c1, Swift e0c091a012)
10:22 AM
55
10:22 AM
Swift version 4.1 (swift-4.1-RELEASE)
10:22 AM
55
10:22 AM
Swift version 4.0.3 (swift-4.0.3-RELEASE)
10:22 AM
55
Avatar
Kishikawa Katsumi 4/15/2018 10:23 AM
のむらさんのバージョンごとにBotが分かれてるの、補完もきくしコードもシンプルになるしスマートですね。
10:24 AM
@swiftbot --version=latest --version=4.1 --version=4.0.3 func fibonacci(number: Int) -> Int { if number <= 1 { return number } else { return fibonacci(number: number - 1) + fibonacci(number: number - 2) } } print(fibonacci(number: 10))
Avatar
Swift version 4.2-dev (LLVM 8a97de0e52, Clang 3c973cd6c1, Swift e0c091a012)
10:24 AM
55
10:24 AM
Swift version 4.1 (swift-4.1-RELEASE)
10:24 AM
55
10:24 AM
Swift version 4.0.3 (swift-4.0.3-RELEASE)
10:24 AM
55
Avatar
DM内でもメンションが出来るみたいなので、チャンネルのタイプがGUILD_TEXTの場合(通常のチャンネル)だけ受け付ける様にしました。 https://discordapp.com/developers/docs/resources/channel#channel-object-channel-types
Integrate your service with Discord - whether it's a bot or a game or your whatever you wildest imagination can come up with.
Avatar
バージョン毎にアカウントを分けたのは、なかなか良いアイデアだと自分でも思いました。
11:10 AM
ユーザー名はそれぞれswift403, swift41で作ってあり、ボット接続時にそれぞれニックネームをswift-4.0.3, swift-4.1に設定させています。
Avatar
二つのボットのアイコンが同じだと分かりづらいかな @swift403 @swift-4.1.3 print("hello")
Avatar
hello
Avatar
hello
Avatar
norio_nomura 4/16/2018 3:15 PM
Linuxでのbacktraceをもうちょっとマシなものにしようとしたけど、Herokuのコンテナ内では無理だった。
Avatar
Kishikawa Katsumi 4/16/2018 3:16 PM
Swiftをシンボル付きでビルドするんですよね?
Avatar
norio_nomura 4/16/2018 3:18 PM
いえ、coreダンプを利用する方法と、backtraceのログテキストをpythonスクリプトで整形する2通りがあります。 https://github.com/gmilos/swift/blob/master/utils/symbolicate-linux-fatal
swift - The Swift Programming Language
3:24 PM
Symbolicate crash from core on Linux
3:25 PM
lldb swift -c core -o bt -bでバックトレースを作れる。
3:29 PM
symbolicate-linux-fatal の方は実際に成功していないけど、 symbolicate-linux-fatal app crash.log的な使い方をするぽい。
3:29 PM
どっちもlldbの実行に依存してる。
3:29 PM
Herokuのコンテナ内ではlldbを使えなかった。
Avatar
@swift-4.1.3 -Xfrontend -debug-crash-after-parse print("hello")
Avatar
error output: /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f2d23306390] /usr/bin/swift[0x4c55c0] /usr/bin/swift[0x4c3a83] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f2d21a30830] /usr/bin/swift[0x475179] Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret main.swift -disable-objc-interop -debug-crash-after-parse -module-name main
Avatar
llvm-symbolizer が PATH に入っているともっとマシなトレースが出るはずです。
11:36 PM
#0 0x0000000003e318c4 PrintStackTraceSignalHandler(void*) (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x3e318c4) #1 0x0000000003e31c06 SignalHandler(int) (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x3e31c06) #2 0x00007fa3d67ae390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00000000004c1710 debugFailWithCrash() (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x4c1710) #4 0x00000000004bfbd3 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x4bfbd3) #5 0x00000000004bb013 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x4bb013) #6 0x0000000000473a44 main (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x473a44) #7 0x00007fa3d4ed8830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830) #8 0x0000000000471319 _start (/home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift+0x471319) Stack dump: 0. Program arguments: /home/rintaro/Documents/swift-oss/build/Ninja-ReleaseAssert/swift-linux-x86_64/bin/swift -frontend -interpret test.swift -disable-objc-interop -debug-crash-after-parse -color-diagnostics -module-name test Illegal instruction (core dumped)
Avatar
おお
11:43 PM
llvm-symbolizer は普通にapt-getで入れるやつで構わないのですか?
Avatar
多分大丈夫だと思います。とはいえ、いずれにしても 実行時クラッシュのトレースはシンボル化できないっぽいです。
Avatar
/usr/bin/llvm-symbolizer-3.8として既に入ってた。
12:01 AM
末尾にバージョン名がついていないコマンドへのシンボリックリンクがあれば、勝手に使ってくれて便利になる様なコマンドは他にもあるのかな…
Avatar
どうでしょう。これに関しては完全にハードコードされているので、他の事情はわからず。 https://github.com/apple/swift-llvm/blob/d14a2b25/lib/Support/Signals.cpp#L72
Contribute to swift-llvm development by creating an account on GitHub.
Avatar
llvmをclangの依存パッケージとしてではなくapt-get install llvmとして明示的にインストールすれば、バージョンサフィックス無しのシンボリックリンクが作られるみたいですね。 (edited)
Avatar
norio_nomura 4/17/2018 1:00 AM
あれ?違うかも>apt-get install llvmとして明示的にインストールすれば (edited)
Avatar
norio_nomura 4/17/2018 2:24 AM
[one-liner] update-alternatives for llvm on ubuntu
Avatar
norio_nomura 4/17/2018 3:42 AM
@rintaro さんのアドバイスに従い llvm-symbolizer を使う様になりました。 @swift403 @swift-4.1.3 -Xfrontend -debug-crash-after-parse print("hello")
Avatar
swift403 BOT 4/17/2018 3:42 AM
exit status: 4, error output: #0 0x0000000003ae91b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/bin/swift+0x3ae91b8) #1 0x0000000003ae98f6 SignalHandler(int) (/usr/bin/swift+0x3ae98f6) #2 0x00007f1fcf2b6390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00000000004b0540 debugFailWithCrash() (/usr/bin/swift+0x4b0540) #4 0x00000000004aea28 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/usr/bin/swift+0x4aea28) #5 0x00000000004aa52b swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/usr/bin/swift+0x4aa52b) #6 0x0000000000465564 main (/usr/bin/swift+0x465564) #7 0x00007f1fcd9e0830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830) #8 0x0000000000462e29 _start (/usr/bin/swift+0x462e29) Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret main.swift -disable-objc-interop -debug-crash-after-parse -module-name main
Avatar
exit status: 4, error output: #0 0x0000000003f24d54 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f24d54) #1 0x0000000003f25096 SignalHandler(int) (/usr/bin/swift+0x3f25096) #2 0x00007fcd052c1390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00000000004c55c0 debugFailWithCrash() (/usr/bin/swift+0x4c55c0) #4 0x00000000004c3a83 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/usr/bin/swift+0x4c3a83) #5 0x00000000004beecc swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/usr/bin/swift+0x4beecc) #6 0x00000000004778c4 main (/usr/bin/swift+0x4778c4) #7 0x00007fcd039eb830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830) #8 0x0000000000475179 _start (/usr/bin/swift+0x475179) Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret main.swift -disable-objc-interop -debug-crash-after-parse -module-name main
Avatar
norio_nomura 4/17/2018 3:43 AM
前よりはマシになった。 @swift-4.1.3 enum CustomString: ExpressibleByStringLiteral { typealias StringLiteralType = String init(stringLiteral value: StringLiteralType) { self = "hoge" } } let hoge: CustomString = "fuga" print(hoge)
Avatar
error output: main.swift:8:26: warning: will never be executed let hoge: CustomString = "fuga" ^ main.swift:8:26: note: a call to a never-returning function let hoge: CustomString = "fuga" ^ main.swift:4:14: warning: will never be executed self = "hoge" ^ main.swift:4:16: note: a call to a never-returning function self = "hoge" ^ main.swift:3:5: warning: will never be executed init(stringLiteral value: StringLiteralType) { ^ main.swift:3:5: note: a call to a never-returning function init(stringLiteral value: StringLiteralType) { ^ #0 0x0000000003f24d54 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f24d54) #1 0x0000000003f25096 SignalHandler(int) (/usr/bin/swift+0x3f25096) #2 0x00007f2fb4579390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007f2fafce7424 _T0S2SBp21_builtinStringLiteral_Bw17utf8CodeUnitCountBi1_7isASCIItcfC (/usr/lib/swift/linux/libswiftCore.so+0x13c424) #4 0x00007f2fb49a80e4 #5 0x00007f2fb49a80fa #6 0x00007f2fb49a80fa #7 0x00007f2fb49a80fa #8 0x00007f2fb49a80fa #9 0x00007f2fb49a80fa #10 0x00007f2fb49a80fa #11 0x00007f2fb49a80fa #12 0x00007f2fb49a80fa #13 0x00007f2fb49a80fa #14 0x00007f2fb49a80fa #15 0x00007f2fb49a80fa #16 0x00007f2fb49a80fa #17 0x00007f2fb49a80fa #18 0x00007f2fb49a80fa #19 0x00007f2fb49a80fa #20 0x00007f2fb49a80fa #21 0x00007f2fb49a80fa #22 0x00007f2fb49a80fa #23 0x00007f2fb49a80fa #24 0x00007f2fb49a80fa #25 0x00007f2fb49a80fa #26 0x00007f2fb49a80fa #27 0x00007f2fb49a80fa #28 0x00007f2fb49a80fa #29 0x00007f2fb49a80fa #30 0x00007f2fb49a80fa #31 0x00007f2fb49a80fa #32 0x00007f2fb49a80fa #33 0x00007f2fb49a80fa #34 0x00007f2fb49a80fa #35 0x00007f2fb49a80fa #36 0x00007f2fb49a80fa #37 0x00007f2fb49a80fa #38 0x00007f2fb49a80fa #39 0x00007f2fb49a80fa #40 0x00007f2fb49a80fa #41 0x00007f2fb49a80fa #42 0x00007f2fb49a80fa #43 0x00007f2fb49a80fa #44 0x00007f2fb49a80fa #45
3:43 AM
6.91 KB
Avatar
Kishikawa Katsumi 4/17/2018 1:40 PM
@swiftbot --version=stable,latest print("Hello SwiftBot")
Avatar
swiftbot BOT 4/17/2018 1:41 PM
Swift version 4.1 (swift-4.1-RELEASE)
1:41 PM
Hello SwiftBot
1:41 PM
swift-DEVELOPMENT-SNAPSHOT-2018-04-16-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang c38020c511, Swift da10607e45)
1:41 PM
Hello SwiftBot
Avatar
Kishikawa Katsumi 4/17/2018 1:41 PM
ちょっと分かりやすくなった。
Avatar
norio_nomura 4/17/2018 2:16 PM
@swift-4.0.3 @swift-4.1.3 @swift-4.2.4 --version
Avatar
Swift version 4.1 (swift-4.1-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 4.2-dev (LLVM d14a2b25f2, Clang c38020c511, Swift da10607e45) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 4.0.3 (swift-4.0.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 4/17/2018 2:18 PM
swift42を追加した。
Avatar
norio_nomura 4/18/2018 2:59 AM
https://bugs.swift.org/browse/SR-7450 より @swift-4.2.4 protocol DictionaryType { associatedtype Key associatedtype Value } protocol A: DictionaryType where Key == Value { static func foo() } extension A { static func foo() { print(type(of: self)) } } extension Dictionary: DictionaryType {} extension Dictionary: A where Key == Value { } extension Array where Element: A { static func foo() { Element.foo() } } [String: String].foo() // Dictionary<String, String> [[String: String]].foo() // Crash
Avatar
Dictionary<String, String>.Type .Type
Avatar
クラッシュしなくなったけどオカシナモノが表示されてませんかこれはw
3:14 AM
無を取得しているw
Avatar
master はこんな感じですよ。 $ ../build/Ninja-ReleaseAssert/swift-macosx-x86_64/bin/swift test.swift Dictionary<String, String>.Type Dictionary<String, String>.Type
Avatar
Masterは平和だ
Avatar
4.2 がおかしな状態になっていたんだな。
3:19 AM
ああ、4.2 って master のスナップショットですね。
3:20 AM
https://github.com/apple/swift/pull/15960 なんで、まだ snapshot 出てないと思います。
Fixes a bug where having two generic params same-typed together would lead to crashes in IRGen, and maybe other places, that only expect to deal with canonical params.
Avatar
norio_nomura 4/18/2018 3:20 AM
@swift-4.2.4 import Foundation print(PorcessInfo.processInfo.enrionment["SWIFT_VERSION"])
Avatar
exit status: 1, error output: main.swift:2:7: error: use of unresolved identifier 'PorcessInfo'; did you mean 'ProcessInfo'? print(PorcessInfo.processInfo.enrionment["SWIFT_VERSION"]) ^~~~~~~~~~~ ProcessInfo Foundation.ProcessInfo:1:12: note: 'ProcessInfo' declared here open class ProcessInfo : Foundation.NSObject { ^
Avatar
norio_nomura 4/18/2018 3:20 AM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.enrionment["SWIFT_VERSION"])
Avatar
error output: main.swift:2:19: error: value of type 'ProcessInfo' has no member 'enrionment'; did you mean 'environment'? print(ProcessInfo.processInfo.enrionment["SWIFT_VERSION"]) ~~~~~~~~~~~~^~~~~~~~~~~ ~~~~~~~~~~ environment Foundation.ProcessInfo:3:14: note: 'environment' declared here open var environment: [String : String] { get } ^
Avatar
norio_nomura 4/18/2018 3:21 AM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"])
Avatar
Optional("DEVELOPMENT-SNAPSHOT-2018-04-17-a")
3:21 AM
error output: main.swift:2:7: warning: expression implicitly coerced from 'String?' to 'Any' print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.swift:2:42: note: provide a default value to avoid this warning print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ ?? <#default value#> main.swift:2:42: note: force-unwrap the value to avoid this warning print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ ! main.swift:2:42: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ as Any
Avatar
norio_nomura 4/18/2018 3:21 AM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "")
Avatar
DEVELOPMENT-SNAPSHOT-2018-04-17-a
Avatar
norio_nomura 4/18/2018 3:21 AM
ふう。
3:22 AM
ビルドエラーはDMで返す様にしたくなった…
😁 1
Avatar
スレッド機能が欲しくなりますね
Avatar
norio_nomura 4/18/2018 3:22 AM
DMでも使える様にしようかな…
Avatar
Kishikawa Katsumi 4/18/2018 3:22 AM
@swiftbot --version=latest import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "") Swift Versionを返すのはこれでいいのか!
Avatar
swiftbot BOT 4/18/2018 3:22 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-16-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang c38020c511, Swift da10607e45)
3:22 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-16-a
Avatar
norio_nomura 4/18/2018 3:23 AM
僕の知るSwiftのDockerイメージは、全てSWIFT_VERSIONを設定してますね。
Avatar
Kishikawa Katsumi 4/18/2018 3:24 AM
あ、Docker Imageで設定しているやつか。それでも今の私のやり方より良いですね。
Avatar
norio_nomura 4/18/2018 3:24 AM
普通はswift-プリフィックスが無いです。
Avatar
Kishikawa Katsumi 4/18/2018 3:25 AM
なるほどー。
Avatar
norio_nomura 4/18/2018 3:25 AM
swiftenvの流儀かな?
Avatar
norio_nomura 4/18/2018 4:13 AM
ちなみにSWIFT_VERSIONからのバージョン情報はplayingへ設定する様にしてあります。
Avatar
おもしろいw
Avatar
norio_nomura 4/19/2018 8:10 AM
ボットへのメッセージを編集すると、ボットもリプライを編集する様になりました。 @swift-4.1.3 (edited)
Avatar
Usage: @swift41 [SWIFT_OPTIONS] `​`​`​ [Swift Code] `​`​`​ (edited)
Avatar
すげー!
Avatar
norio_nomura 4/19/2018 8:12 AM
これでtypoも怖く無い @swift-4.0.3 print("hello") (edited)
Avatar
hello (edited)
Avatar
やばww
Avatar
おおお!!!
Avatar
norio_nomura 4/19/2018 8:13 AM
@swift-4.2.4 print("あと、コマンド実行中に入力中インジケータを出す様にしました。")
Avatar
あと、コマンド実行中に入力中インジケータを出す様にしました。
Avatar
Kishikawa Katsumi 4/19/2018 8:13 AM
@norio_nomura こういう機能を実装する場合、状態を管理する必要がありますか?
Avatar
norio_nomura 4/19/2018 8:14 AM
あります。
👌 1
Avatar
Kishikawa Katsumi 4/19/2018 8:15 AM
メンションとそれに対する投稿を保存しておく、って感じですかね。
8:15 AM
今はオンメモリなので、インスタンス再起動で忘れます。
Avatar
omochimetaru 4/19/2018 8:16 AM
お、これは嬉しい
Avatar
Kishikawa Katsumi 4/19/2018 8:16 AM
なるほどオンメモリでやるなら思ってたよりもだいぶ楽チンですね。
Avatar
omochimetaru 4/19/2018 8:16 AM
最近あったらいいなと思ったのは、バージョン指定とかだけやり直したい
Avatar
norio_nomura 4/19/2018 8:17 AM
出力が大きい場合にファイルを添付しますが、添付ファイルの編集APIは提供されていないので、ちょっと微妙な感じになってます。
Avatar
omochimetaru 4/19/2018 8:17 AM
@swiftbot retry swift4.1 みたいな。
⚡ 1
8:17 AM
そうするとさっき送られたソースを環境変えて再実行されると嬉しい・・・
Avatar
Kishikawa Katsumi 4/19/2018 8:18 AM
Slackみたいにボタンとか出せないかな。
Avatar
norio_nomura 4/19/2018 8:18 AM
今は編集でメンションが追加された場合には無視していますが、対応は可能ですね。
8:19 AM
メンションが削除されたら返答も削除かな?
Avatar
omochimetaru 4/19/2018 8:20 AM
絵文字リアクションを自分で付けておいて・・・
8:20 AM
1. retry (edited)
1⃣ 1
Avatar
リアクション反応Botのために
Avatar
Kishikawa Katsumi 4/19/2018 8:20 AM
次善の策として、それは機能しそうと思ってました。 (edited)
Avatar
4.1 4.2 4.0.3の絵文字を登録するとか
Avatar
omochimetaru 4/19/2018 8:21 AM
絵文字作る発想は無かったw
Avatar
Kishikawa Katsumi 4/19/2018 8:21 AM
あ、リアクションは絵文字しかあかんのか。
Avatar
norio_nomura 4/19/2018 8:21 AM
とりあえず Heroku で簡単にデプロイできる様になったはずなので、欲しい機能は自分で追加してw https://github.com/norio-nomura/SwiftCompilerDiscordappBot
SwiftCompilerDiscordappBot - Swift Compiler Discordapp Bot
🙏 1
👀 2
Avatar
Kishikawa Katsumi 4/19/2018 8:22 AM
ボタンの機能はDiscordにはないっぽいな。
Avatar
norio_nomura 4/19/2018 8:22 AM
デプロイボタン付ければ動くかどうかはまだ試してないな…
8:23 AM
今は一つのリポジトリに3つのブランチがあって、それらが3つのHerokuアカウントにDeployされてる感じ。
8:30 AM
ボットをビルドするSwiftコンパイラと、Discordでのリクエストをビルドするコンパイラが同じ、かつ同じコンテナ内で動くので、ネットワークアクセスとかも出来てしまいます。
8:31 AM
なんとか出来ないか調べましたが、諦めました。
Avatar
Kishikawa Katsumi 4/19/2018 8:33 AM
まあ私のと違ってREST APIとかはないんですよね。何かするにはここに投稿する必要があるんですよね。 (edited)
Avatar
norio_nomura 4/19/2018 8:35 AM
そう。workerでDiscordのクライアントが動いてて、何もEXPOSEしていません。 (edited)
8:37 AM
HerokuのDockerコンテナはEXPOSEサポートしてなかった。 https://devcenter.heroku.com/articles/container-registry-and-runtime#unsupported-dockerfile-commands
Heroku Container Registry allows you to deploy your Docker-based app to Heroku. Both Common Runtime and Private Spaces are supported.
8:44 AM
何かクラッシュするバグを仕込んでしまったぽい…
8:45 AM
これ、テストとか頑張れば書けるのかな…
Avatar
Kishikawa Katsumi 4/19/2018 8:47 AM
私もややこしくなってきたので、1メソッドで書き下していたのを分割して、意図しない影響を与えてないかを確認する正常系のテストを書こうと思ってます。それは難しくないはず。
8:48 AM
その次に書けたら意地悪な投稿でも問題が起きないようにある程度異常系のケースを書いて、って感じですね。
8:49 AM
それ以上は今のところ何かあったら再起動でいいので諦めていいんじゃないですか。
Avatar
norio_nomura 4/19/2018 8:52 AM
まあ、そうですね。
Avatar
Kishikawa Katsumi 4/19/2018 4:11 PM
@swiftbot import Foundation print("Hello world!!") (edited)
🛠 2
Avatar
swiftbot BOT 4/19/2018 4:11 PM
Swift version 4.1 (swift-4.1-RELEASE) (edited)
4:11 PM
Hello world!! (edited)
4:11 PM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
4:11 PM
Hello world!
4:11 PM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
4:11 PM
Hello world!!
Avatar
Kishikawa Katsumi 4/19/2018 4:13 PM
のむらさんのアイデアをいただいて、編集できるようにした。 あと、masterのツールチェーンで再ビルドするボタン( 🛠 のリアクション)付けてみた。
Avatar
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
11:21 PM
Hello world!
11:21 PM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
11:21 PM
Hello world!!
11:21 PM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
11:21 PM
Hello world!
11:21 PM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
11:21 PM
Hello world!!
Avatar
リアクションの数が実行回数に反映されてる?
😅 1
Avatar
omochimetaru 4/20/2018 2:01 AM
@swiftbot print("a!")
🛠 5
Avatar
swiftbot BOT 4/20/2018 2:01 AM
Swift version 4.1 (swift-4.1-RELEASE)
2:01 AM
a!
2:01 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:01 AM
a!
Avatar
omochimetaru 4/20/2018 2:01 AM
うおおw
2:01 AM
絵文字のセンスも良いw
Avatar
ディスコの開発環境化が進んでる
Avatar
swiftbot BOT 4/20/2018 2:02 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:02 AM
a!
2:02 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:02 AM
a!
Avatar
すご
Avatar
swiftbot BOT 4/20/2018 2:03 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:03 AM
a!
2:03 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:03 AM
a!
2:03 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:03 AM
a!
2:03 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:03 AM
a!
2:03 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:03 AM
a!
Avatar
めっちゃでてくるw
Avatar
omochimetaru 4/20/2018 2:03 AM
なんか多いな?w
Avatar
Kishikawa Katsumi 4/20/2018 2:03 AM
バグがあるな。。。
Avatar
あ 連打してしまった
2:03 AM
ごめんなさい
Avatar
swiftbot BOT 4/20/2018 2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
a!
Avatar
swiftbot BOT 4/20/2018 2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
Kishikawa Katsumi 4/20/2018 2:04 AM
なんか不具合があるのとは別に、元々の投稿者の人だけが再ビルド反応するようにしていいかも。 (edited)
Avatar
swiftbot BOT 4/20/2018 2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:04 AM
a!
2:04 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
多分その方がいいですね
Avatar
swiftbot BOT 4/20/2018 2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
Avatar
Kishikawa Katsumi 4/20/2018 2:05 AM
その処理だけ急いで入れるか。
Avatar
(ていうかそうなると思ってめちゃ連打してしまった)
Avatar
swiftbot BOT 4/20/2018 2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
まだくるのか
Avatar
swiftbot BOT 4/20/2018 2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
さすがにこんなに押してないぞw
Avatar
swiftbot BOT 4/20/2018 2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
Avatar
omochimetaru 4/20/2018 2:05 AM
大丈夫かこれw
Avatar
swiftbot BOT 4/20/2018 2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
なんかとまんなくなってそう
Avatar
omochimetaru 4/20/2018 2:05 AM
ww
Avatar
swiftbot BOT 4/20/2018 2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:05 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:05 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
botが自殺しそうなコード投げたらクラッシュして止まりそう
2:06 AM
とまらないかな
Avatar
swiftbot BOT 4/20/2018 2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
Avatar
Kishikawa Katsumi 4/20/2018 2:06 AM
止めてみます。
Avatar
swiftbot BOT 4/20/2018 2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
Avatar
通知がw
Avatar
swiftbot BOT 4/20/2018 2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
Avatar
@swiftbot Int?.none!
Avatar
swiftbot BOT 4/20/2018 2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
2:06 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
2:06 AM
a!
Avatar
とまった
Avatar
Kishikawa Katsumi 4/20/2018 2:07 AM
再起動したから前の情報は忘れるはず。
Avatar
いちにのぽかん
Avatar
(夜中に発動したら大変なことになるなw)
Avatar
Kishikawa Katsumi 4/20/2018 2:14 AM
たぶん、他の人が押してもビルドしなくなったと思います。
2:16 AM
回数の問題は推測だけど再ビルドはパラメータをちょっと変えて再帰的に呼び出すみたいな処理になってるので、リアクションを受けた時のコールバックのクロージャがどんどん増えてるんじゃないかと。これはちょっと設計を見直しているのでそこで直せるはず。
Avatar
@swift-4.2.4 enum Hoge: CaseIterable { case hoge, fuga, piyo } Hoge.allCases.map { print($0) } (edited)
Avatar
norio_nomura 4/20/2018 7:55 AM
あ、編集してメンション付け加えるのにはまだ対応してません。
7:55 AM
対応するか。
Avatar
了解
7:56 AM
@swift-4.2.4 enum Hoge: CaseIterable { case hoge, fuga, piyo } Hoge.allCases.forEach { print($0) } (edited)
Avatar
hoge fuga piyo (edited)
Avatar
ほほう
Avatar
編集でのメンションの追加/削除、メッセージ削除をサポートしました。 @swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "") (edited)
Avatar
DEVELOPMENT-SNAPSHOT-2018-04-19-a (edited)
Avatar
DEVELOPMENT-SNAPSHOT-2018-04-20-a
Avatar
標準出力・標準エラーのサイズが大きい時、メッセージへファイル添付するのをやめて、代わりに https://www.file.io へアップロードする様に変更しました。 Discordのファイル添付はAPIから中身を変更できないため、コード編集により出力が変わっても今までは反映することが出来ませんでした。 この変更により、更新された出力へのリンクを一緒に返すことができる様になりました。 @swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "") (edited)
Avatar
DEVELOPMENT-SNAPSHOT-2018-04-21-a (edited)
Avatar
DEVELOPMENT-SNAPSHOT-2018-04-22-a
Avatar
norio_nomura 4/24/2018 3:24 PM
RxSwiftをインポートできる様にしました。 @swift-4.0.3 @swift-4.1.3 @swift-4.2.4 import Foundation let versionOfRxSwift = ProcessInfo.processInfo.environment["RXSWIFT_VERSION"] ?? "" print("RxSwift version: \(versionOfRxSwift)") import RxSwift _ = Observable<String>.create { observerOfString in print("Observable created") observerOfString.on(.next("😉")) observerOfString.on(.completed) return Disposables.create() } .subscribe { event in print(event) }
👏 2
Avatar
RxSwift version: 4.1.2 Observable created next(😉) completed
Avatar
RxSwift version: 4.1.2 Observable created next(😉) completed
Avatar
RxSwift version: 4.1.2 Observable created next(😉) completed
Avatar
Kishikawa Katsumi 4/24/2018 3:24 PM
素晴らしい。
Avatar
norio_nomura 4/24/2018 3:29 PM
libRxSwift.soを作るのにPackage.swift内でlibrary typeをdynamicにしなくても、 swift build --target RxSwift -Xswiftc -emit-library -Xswiftc -o -Xswiftc `swift build --show-bin-path`/libRxSwift.so とすれば作れることを知りました。
Avatar
これって例の最適化バグ回避してます?
3:41 PM
試してみよう
Avatar
norio_nomura 4/24/2018 3:44 PM
RxSwift自体はdebugビルドされてます。
Avatar
おー
3:44 PM
じゃあ心配ないすね
Avatar
@swiftbot let a: UInt32 = 0x80_00_00_00 let b: UInt32 = 0x80_00_00_00 let c = a.addingReportingOverflow(b) dump(c) (edited)
🛠 1
Avatar
Swift version 4.1 (swift-4.1-RELEASE) (edited)
11:32 AM
▿ (2 elements) - partialValue: 0 - overflow: true
Avatar
@swiftbot let a: UInt32 = 0x80_00_00_00 let b: UInt32 = 0x7F_FF_FF_FF let c = a.addingReportingOverflow(b) dump(c)
🛠 1
Avatar
Swift version 4.1 (swift-4.1-RELEASE)
11:32 AM
▿ (2 elements) - partialValue: 4294967295 - overflow: false
Avatar
@swift-tensorflow import TensorFlow
Avatar
swiftTensorflow BOT 4/27/2018 1:19 AM
no output
Avatar
norio_nomura 4/27/2018 2:13 AM
import Pythonは通るけど、動かない? @swift-tensorflow import TensorFlow import Python // NumPy example: let np = Python.import("numpy") // import numpy as np let a = np.arange(15).reshape(3, 5) // a = np.arange(15).reshape(3, 5) let b = np.array([6, 7, 8]) // b = np.array([6, 7, 8])
Avatar
swiftTensorflow BOT 4/27/2018 2:13 AM
exit status: 1 with stderr:main.swift:5:18: error: cannot call value of non-function type 'PyValue' let a = np.arange(15).reshape(3, 5) // a = np.arange(15).reshape(3, 5) ~~~~~~~~~^ main.swift:6:17: error: cannot call value of non-function type 'PyValue' let b = np.array([6, 7, 8]) // b = np.array([6, 7, 8]) ~~~~~~~~^
Avatar
omochimetaru 4/27/2018 2:13 AM
numpyがインストールされてないのでは?
2:13 AM
python環境の方に。
Avatar
omochimetaru 4/27/2018 2:15 AM
ああ、なるほど、インストール済みのイメージなんですね。
Avatar
norio_nomura 4/27/2018 2:15 AM
サンプルコードで動作確認してて、足りてなかったものは入れる様にしました。 (edited)
Avatar
np.arange.call(with: 15) じゃないと動かないみたいですね
Avatar
omochimetaru 4/27/2018 7:39 AM
なるほど。
Avatar
@swiftbot import Foundation @objc protocol Hoge { func foobarbaz() } var x: AnyObject = "hoge" as NSString x.foobarbaz() (edited)
🛠 2
Avatar
swiftbot BOT 4/27/2018 8:34 AM
Swift version 4.1 (swift-4.1-RELEASE) (edited)
8:34 AM
<unknown>:0: error: fatal error encountered during compilation; please file a bug report with your project and the crash log <unknown>:0: note: Program used external function 'sel_registerName' which could not be resolved! /usr/bin/swift[0x3f24d54] /usr/bin/swift[0x3f25096] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f12ac409390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f12aab48428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f12aab4a02a] /usr/bin/swift[0x4c3f75] /usr/bin/swift[0x3eb851f] /usr/bin/swift[0xffeddb] /usr/bin/swift[0xffd626] /usr/bin/swift[0xfead79] /usr/bin/swift[0x4d8e48] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f12aab33830] /usr/bin/swift[0x475179] Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret /usercode/main.swift -disable-objc-interop -I /usr/lib/swift/clang/include/ -I /vendor/SwiftyMath/.build/release/ -I /vendor/swift-package-libbsd/ -module-name main -ldSwiftyMath Aborted (core dumped) (edited)
8:35 AM
swift-DEVELOPMENT-SNAPSHOT-2018-04-18-a Swift version 4.2-dev (LLVM d14a2b25f2, Clang da1edea3f7, Swift ac061632b2)
8:35 AM
/usercode/main.swift:7:22: error: 'Int' is not convertible to 'AnyObject'; did you mean to use 'as!' to force downcast? var x: AnyObject = 1 as AnyObject ~~^~~~~~~~~~~~ as!
Avatar
AnyObject の何でもメソッド呼べちゃう性を Linux で試して見たかっただけなのですが、どこで落ちているのか分からないですねw
Avatar
Kishikawa Katsumi 4/27/2018 8:39 AM
のむらさんの方でやったらどうですかね?私のやつもバックトレースの改善とかいろいろやろうと思うのですが、最近時間取れてなくて。
👌 1
Avatar
@swift-4.1.3 import Foundation @objc protocol Hoge { func foobarbaz() } var x: AnyObject = "hoge" as NSString x.foobarbaz() (edited)
Avatar
stderr:<unknown>:0: error: fatal error encountered during compilation; please file a bug report with your project and the crash log <unknown>:0: note: Program used external function 'sel_registerName' which could not be resolved! #0 0x0000000003f24d54 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f24d54) #1 0x0000000003f25096 SignalHandler(int) (/usr/bin/swift+0x3f25096) #2 0x00007f3b0201f390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007f3b0075e428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #4 0x00007f3b0076002a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #5 0x00000000004c3f75 (/usr/bin/swift+0x4c3f75) #6 0x0000000003eb851f llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/bin/swift+0x3eb851f) #7 0x0000000000ffeddb llvm::RuntimeDyldImpl::resolveExternalSymbols() (/usr/bin/swift+0xffeddb) #8 0x0000000000ffd626 llvm::RuntimeDyldImpl::resolveRelocations() (/usr/bin/swift+0xffd626) #9 0x0000000000fead79 llvm::MCJIT::finalizeObject() (/usr/bin/swift+0xfead79) #10 0x00000000004d8e48 swift::RunImmediately(swift::CompilerInstance&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, swift::IRGenOptions&, swift::SILOptions const&) (/usr/bin/swift+0x4d8e48) #11 0x00000000004c35d3 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/usr/bin/swift+0x4c35d3) #12 0x00000000004beecc swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/usr/bin/swift+0x4beecc) #13 0x00000000004778c4 main (/usr/bin/swift+0x4778c4) #14 0x00007f3b00749830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830) #15 0x0000000000475179 _start (/usr/bin/swift+0x475179) Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret main.sw (edited)
Avatar
demangle復活 @swift-4.1.3 demangle T0s19preconditionFailures5NeverOSSyXK_s12StaticStringV4fileSu4linetFfA
Avatar
_T0s19preconditionFailures5NeverOSSyXK_s12StaticStringV4fileSu4linetFfA_ ---> default argument 0 of Swift.preconditionFailure(@autoclosure () -> Swift.String, file: Swift.StaticString, line: Swift.UInt) -> Swift.Never
Avatar
@swift-4.1.3 demangle -simplified T0s19preconditionFailures5NeverOSSyXK_s12StaticStringV4fileSu4linetFfA (edited)
Avatar
_T0s19preconditionFailures5NeverOSSyXK_s12StaticStringV4fileSu4linetFfA_ ---> default argument 0 of preconditionFailure(_:file:line:) (edited)
Avatar
botで残る課題は、機能としてはリプライ情報の永続化くらいかな。
12:59 PM
運用はスナップショットの自動更新。
1:02 PM
あ、botへDMも解放したいな。
❤ 1
Avatar
norio_nomura 4/27/2018 2:39 PM
botへのDMを解放しました。 DMでは、メンションが含まれていなくても返事を返しますが、コンパイラオプションを渡す場合にはメンションに続けて記述してください。 [@swift41 [SWIFT_OPTIONS]] `​`​`​ [Swift Code] `​`​`​
Avatar
norio_nomura 5/2/2018 8:34 AM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "") (edited)
Avatar
swift42 BOT 5/2/2018 8:34 AM
4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a
Avatar
norio_nomura 5/2/2018 9:41 AM
swiftmain.swift としてコードを渡して実行させる方式だと、シグナルハンドラを設定しても呼ばれないな。
Avatar
Kishikawa Katsumi 5/2/2018 9:56 AM
コンパイルして実行だと多少元のコードに手を加えないといけないのがちょっと面倒なんですよね。
Avatar
norio_nomura 5/2/2018 2:10 PM
そしてボットのクラッシュログは出なかった…
Avatar
swift42 BOT 5/3/2018 9:44 AM
4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a
Avatar
@swift-4.0.3 import Foundation func decimalNumberWithDouble(double: Double) -> NSDecimalNumber { let number = double as NSNumber return NSDecimalNumber(string: number.stringValue) } var i = decimalNumberWithDouble(double: 0.0) let limit = decimalNumberWithDouble(double: 1.1) let target = decimalNumberWithDouble(double: 1.0) while i.compare(limit) == ComparisonResult.orderedAscending { let add = decimalNumberWithDouble(double: 0.01) i = i.adding(add) print(i, i == target) if i == target { print("####called this line####") } } print("fin")
Avatar
swift40 BOT 5/3/2018 4:36 PM
exit status: 1 with stderr:main.swift:5:18: error: cannot convert value of type 'Double' to type 'NSNumber' in coercion let number = double as NSNumber ^~~~~~
Avatar
@swift-4.1.3 -Onone import Foundation protocol P { func hoge() } class Q {} extension Q: P { @objc func hoge() { print("q: hoge") } } class R: Q { override func hoge() { super.hoge() print("r: hoge") } } let q = Q() let r = R() q.hoge() r.hoge()
Avatar
swift41 BOT 5/4/2018 5:25 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-4.1-package-linux-ubuntu-16_04/swift/lib/IRGen/GenClass.cpp:2211: llvm::Constant *swift::irgen::emitCategoryData(swift::irgen::IRGenModule &, swift::ExtensionDecl *): Assertion `IGM.ObjCInterop && "emitting RO-data outside of interop mode"' failed. #0 0x0000000003f24d54 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f24d54) #1 0x0000000003f25096 SignalHandler(int) (/usr/bin/swift+0x3f25096) #2 0x00007f19216ff390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007f191fe3e428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #4 0x00007f191fe4002a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #5 0x00007f191fe36bd7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbd7) #6 0x00007f191fe36c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82) #7 0x000000000066766e swift::irgen::emitCategoryData(swift::irgen::IRGenModule&, swift::ExtensionDecl*) (/usr/bin/swift+0x66766e) #8 0x00000000004e8dc1 swift::irgen::IRGenModule::emitExtension(swift::ExtensionDecl*) (/usr/bin/swift+0x4e8dc1) #9 0x00000000004e0555 swift::irgen::IRGenModule::emitSourceFile(swift::SourceFile&, unsigned int) (/usr/bin/swift+0x4e0555) #10 0x00000000005ad7d6 performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> >, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, llvm::GlobalVariable**, unsigned int) (/usr/bin/swift+0x5ad7d6) #11 0x00000000005abf9d swift::performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::unique_ptr<swift::SILModule, std::default_delete<swift::SILModule> >, llvm::StringRef, llvm::LLVMContext&, llvm::GlobalVariable**) (/usr/bin/swift+0x5abf9d) #12 0x00000000004d878b swift::RunImmediately(swift::CompilerInstance&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
Avatar
あ、そっかそりゃ無理だ
Avatar
Kishikawa Katsumi 5/5/2018 12:36 AM
@swiftbot !docker build --no-cache=true --rm=true --tag=kishikawakatsumi/swift:2018-05-02-a . --build-arg SWIFT_BRANCH=swift-4.2-branch --build-arg SWIFT_VERSION=swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a
12:37 AM
@swiftbot !docker build --no-cache=true --rm=true --tag=kishikawakatsumi/swift:2018-05-02-a . --build-arg SWIFT_BRANCH=swift-4.2-branch --build-arg SWIFT_VERSION=swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a
12:43 AM
@swiftbot versions
Avatar
swiftbot BOT 5/5/2018 12:43 AM
2018-04-25-a 2018-05-02-a 3.0.1 3.0.2 3.1 3.1.1 4.0 4.0.2 4.0.3 4.1
Avatar
swift41 BOT 5/5/2018 4:25 AM
4.1.1-RELEASE
Avatar
Kishikawa Katsumi 5/5/2018 4:26 AM
@swiftbot !docker build --no-cache=true --rm=true --tag=kishikawakatsumi/swift:4.1.1 . --build-arg SWIFT_BRANCH=swift-4.1.1-release --build-arg SWIFT_VERSION=swift-4.1.1-RELEASE
Avatar
swiftbot BOT 5/5/2018 4:28 AM
```undefined Sending build context to Docker daemon 88.85MB Step 1/10 : FROM ubuntu:16.04 ---> f975c5035748 Step 2/10 : LABEL maintainer="Katsumi Kishikawa <kishikawakatsumi@mac.com>" ---> Running in 3fd6e4adc20e Removing intermediate container 3fd6e4adc20e ---> 851cf3e30ed9 Step 3/10 : LABEL Description="Docker Container for the Apple's Swift programming language" ---> Running in 40c790c23ab1 Removing intermediate container 40c790c23ab1 ---> 5051d0941e8f Step 4/10 : RUN apt-get -q update && apt-get -q install -y make libc6-dev clang-3.8 curl libedit-dev libpython2.7 libicu-dev libssl-dev libxml2 tzdata git libcurl4-openssl-dev pkg-config && update-alternatives --quiet --install /usr/bin/clang clang /usr/bin/clang-3.8 100 && update-alternatives --quiet --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100 && rm -r /var/lib/apt/lists/* ---> Running in 9413e8e47de6 Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [80.4 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [612 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:8 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB] Get:9 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [436 kB] Get:10 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3755 B] Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]
4:28 AM
Get:13 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [255 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [991 kB] Get:17 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.1 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [804 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [18.8 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [5157 B] Get:21 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [8075 B] Fetched 25.2 MB in 5s (4932 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: binfmt-support binutils build-essential bzip2 ca-certificates cpp cpp-5 dpkg-dev fakeroot file g++ g++-5 gcc gcc-5 git-man icu-devtools ifupdown iproute2 isc-dhcp-client isc-dhcp-common krb5-locales less libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libasn1-8-heimdal libatm1 libatomic1 libbsd-dev libbsd0 libc-dev-bin libcc1-0 libcilkrts5 libclang-common-3.8-dev libclang1-3.8 libcurl3 libcurl3-gnutls libdns-export162 libdpkg-perl libedit2 liberror-perl libexpat1 libfakeroot libffi-dev libffi6 libfile-fcntllock-perl libgcc-5-dev libgdbm3 libglib2.0-0 libglib2.0-data libgmp10 libgnutls30 libgomp1 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4 libhx509-5-heimdal libicu55 libidn11 libisc-export160 libisl15 libitm1 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3
4:28 AM
libkrb5support0 libldap-2.4-2 libllvm3.8 liblsan0 libmagic1 libmnl0 libmpc3 libmpfr4 libmpx0 libnettle6 libobjc-5-dev libobjc4 libp11-kit0 libperl5.22 libpipeline1 libpopt0 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libquadmath0 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libsqlite3-0 libssl-doc libssl1.0.0 libstdc++-5-dev libtasn1-6 libtinfo-dev libtsan0 libubsan0 libwind0-heimdal libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 libxtables11 linux-libc-dev llvm-3.8 llvm-3.8-dev llvm-3.8-runtime manpages manpages-dev mime-support netbase openssh-client openssl patch perl perl-base perl-modules-5.22 python python-minimal python2.7 python2.7-minimal rename rsync sgml-base shared-mime-info xauth xdg-user-dirs xml-core xz-utils zlib1g-dev Suggested packages: binutils-doc bzip2-doc gnustep gnustep-devel clang-3.8-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn ppp rdnssd iproute2-doc resolvconf avahi-autoipd isc-dhcp-client-ddns apparmor glibc-doc libcurl4-doc libcurl3-dbg libidn11-dev libkrb5-dev libldap2-dev librtmp-dev gnutls-bin krb5-doc krb5-user icu-doc libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libstdc++-5-doc llvm-3.8-doc make-doc man-browser ssh-askpass libpam-ssh keychain monkeysphere ed diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl python-doc
4:28 AM
python-tk python2.7-doc openssh-server sgml-base-doc debhelper The following NEW packages will be installed: binfmt-support binutils build-essential bzip2 ca-certificates clang-3.8 cpp cpp-5 curl dpkg-dev fakeroot file g++ g++-5 gcc gcc-5 git git-man icu-devtools ifupdown iproute2 isc-dhcp-client isc-dhcp-common krb5-locales less libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libasn1-8-heimdal libatm1 libatomic1 libbsd-dev libbsd0 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libclang-common-3.8-dev libclang1-3.8 libcurl3 libcurl3-gnutls libcurl4-openssl-dev libdns-export162 libdpkg-perl libedit-dev libedit2 liberror-perl libexpat1 libfakeroot libffi-dev libffi6 libfile-fcntllock-perl libgcc-5-dev libgdbm3 libglib2.0-0 libglib2.0-data libgmp10 libgnutls30 libgomp1 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4 libhx509-5-heimdal libicu-dev libicu55 libidn11 libisc-export160 libisl15 libitm1 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libllvm3.8 liblsan0 libmagic1 libmnl0 libmpc3 libmpfr4 libmpx0 libnettle6 libobjc-5-dev libobjc4 libp11-kit0 libperl5.22 libpipeline1 libpopt0 libpython-stdlib libpython2.7 libpython2.7-minimal libpython2.7-stdlib libquadmath0 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libsqlite3-0 libssl-dev libssl-doc libssl1.0.0 libstdc++-5-dev libtasn1-6 libtinfo-dev libtsan0 libubsan0 libwind0-heimdal libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxml2 libxmuu1 libxtables11 linux-libc-dev llvm-3.8 llvm-3.8-dev llvm-3.8-runtime make manpages manpages-dev mime-support netbase openssh-client openssl patch perl perl-modules-5.22 pkg-config python python-minimal python2.7 python2.7-minimal rename rsync sgml-base
4:28 AM
shared-mime-info tzdata xauth xdg-user-dirs xml-core xz-utils zlib1g-dev The following packages will be upgraded: perl-base 1 upgraded, 152 newly installed, 0 to remove and 13 not upgraded. Need to get 144 MB of archives. After this operation, 654 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 perl-base amd64 5.22.1-9ubuntu0.3 [1286 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libatm1 amd64 1:2.5.1-1.5 [24.2 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmnl0 amd64 1.0.3-5 [12.0 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 libpopt0 amd64 1.16-10 [26.0 kB] Get:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 libgdbm3 amd64 1.8.3-13.1 [16.9 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxau6 amd64 1:1.0.8-1 [8376 B] Get:7 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxdmcp6 amd64 1:1.1.2-1.1 [11.0 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxcb1 amd64 1.11.1-1ubuntu1 [40.0 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial/main amd64 libx11-data all 2:1.6.3-1ubuntu2 [113 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial/main amd64 libx11-6 amd64 2:1.6.3-1ubuntu2 [571 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxext6 amd64 2:1.3.3-1 [29.4 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/main amd64 sgml-base all 1.26+nmu4ubuntu1 [12.5 kB] Get:13 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 perl-modules-5.22 all 5.22.1-9ubuntu0.3 [2646 kB] Get:14 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libperl5.22 amd64 5.22.1-9ubuntu0.3 [3402 kB] Get:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 perl amd64 5.22.1-9ubuntu0.3 [237 kB] Get:16 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-minimal amd64 2.7.12-1ubuntu0~16.04.3 [340 kB]
4:28 AM
Get:17 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7-minimal amd64 2.7.12-1ubuntu0~16.04.3 [1261 kB] Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-minimal amd64 2.7.12-1~16.04 [28.1 kB] Get:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 mime-support all 3.59ubuntu1 [31.0 kB] Get:20 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libexpat1 amd64 2.1.0-7ubuntu0.16.04.3 [71.2 kB] Get:21 http://archive.ubuntu.com/ubuntu xenial/main amd64 libffi6 amd64 3.2.1-4 [17.8 kB] Get:22 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsqlite3-0 amd64 3.11.0-1ubuntu1 [396 kB] Get:23 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libssl1.0.0 amd64 1.0.2g-1ubuntu4.12 [1085 kB] Get:24 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-stdlib amd64 2.7.12-1ubuntu0~16.04.3 [1880 kB] Get:25 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7 amd64 2.7.12-1ubuntu0~16.04.3 [224 kB] Get:26 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython-stdlib amd64 2.7.12-1~16.04 [7768 B] Get:27 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python amd64 2.7.12-1~16.04 [137 kB] Get:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 libgmp10 amd64 2:6.1.0+dfsg-2 [240 kB] Get:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmpfr4 amd64 3.1.4-1 [191 kB] Get:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmpc3 amd64 1.0.3-1 [39.7 kB] Get:31 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 tzdata all 2017c-0ubuntu0.16.04 [166 kB] Get:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 bzip2 amd64 1.0.6-8 [32.7 kB] Get:33 http://archive.ubuntu.com/ubuntu xenial/main amd64 libmagic1 amd64 1:5.25-2ubuntu1 [216 kB] Get:34 http://archive.ubuntu.com/ubuntu xenial/main amd64 file amd64 1:5.25-2ubuntu1 [21.2 kB]
4:28 AM
Get:35 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 iproute2 amd64 4.3.0-1ubuntu3.16.04.3 [522 kB] Get:36 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ifupdown amd64 0.8.10ubuntu1.3 [55.0 kB] Get:37 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libisc-export160 amd64 1:9.10.3.dfsg.P4-8ubuntu1.10 [153 kB] Get:38 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdns-export162 amd64 1:9.10.3.dfsg.P4-8ubuntu1.10 [666 kB] Get:39 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-client amd64 4.3.3-5ubuntu12.10 [224 kB] Get:40 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 isc-dhcp-common amd64 4.3.3-5ubuntu12.10 [105 kB] Get:41 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 less amd64 481-2.1ubuntu0.2 [110 kB] Get:42 http://archive.ubuntu.com/ubuntu xenial/main amd64 libbsd0 amd64 0.8.2-1 [41.7 kB] Get:43 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnettle6 amd64 3.2-1ubuntu0.16.04.1 [93.5 kB] Get:44 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libhogweed4 amd64 3.2-1ubuntu0.16.04.1 [136 kB] Get:45 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libidn11 amd64 1.32-3ubuntu1.2 [46.5 kB] Get:46 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libp11-kit0 amd64 0.23.2-5~ubuntu16.04.1 [105 kB] Get:47 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libtasn1-6 amd64 4.7-3ubuntu0.16.04.3 [43.5 kB] Get:48 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgnutls30 amd64 3.4.10-4ubuntu1.4 [548 kB] Get:49 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64 1.6.0-2ubuntu3 [27.2 kB] Get:50 http://archive.ubuntu.com/ubuntu xenial/main amd64 netbase all 5.3 [12.9 kB] Get:51 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssl amd64 1.0.2g-1ubuntu4.12 [492 kB]
4:28 AM
Get:52 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 ca-certificates all 20170717~16.04.1 [168 kB] Get:53 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 krb5-locales all 1.13.2+dfsg-5ubuntu2 [13.2 kB] Get:54 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libroken18-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [41.4 kB] Get:55 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libasn1-8-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [174 kB] Get:56 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkrb5support0 amd64 1.13.2+dfsg-5ubuntu2 [30.8 kB] Get:57 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libk5crypto3 amd64 1.13.2+dfsg-5ubuntu2 [81.2 kB] Get:58 http://archive.ubuntu.com/ubuntu xenial/main amd64 libkeyutils1 amd64 1.5.9-8ubuntu1 [9904 B] Get:59 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkrb5-3 amd64 1.13.2+dfsg-5ubuntu2 [273 kB] Get:60 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgssapi-krb5-2 amd64 1.13.2+dfsg-5ubuntu2 [120 kB] Get:61 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libhcrypto4-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [85.0 kB] Get:62 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libheimbase1-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [29.3 kB] Get:63 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libwind0-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [47.8 kB] Get:64 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libhx509-5-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [107 kB] Get:65 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libkrb5-26-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [202 kB] Get:66 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libheimntlm0-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [15.1 kB]
4:28 AM
Get:67 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgssapi3-heimdal amd64 1.7~git20150920+dfsg-4ubuntu1.16.04.1 [96.1 kB] Get:68 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsasl2-modules-db amd64 2.1.26.dfsg1-14build1 [14.5 kB] Get:69 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsasl2-2 amd64 2.1.26.dfsg1-14build1 [48.7 kB] Get:70 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libldap-2.4-2 amd64 2.4.42+dfsg-2ubuntu3.2 [160 kB] Get:71 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d-1ubuntu0.1 [54.4 kB] Get:72 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libcurl3-gnutls amd64 7.47.0-1ubuntu2.7 [185 kB] Get:73 http://archive.ubuntu.com/ubuntu xenial/main amd64 libedit2 amd64 3.1-20150325-1ubuntu2 [76.5 kB] Get:74 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libglib2.0-0 amd64 2.48.2-0ubuntu1 [1119 kB] Get:75 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libglib2.0-data all 2.48.2-0ubuntu1 [132 kB] Get:76 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libicu55 amd64 55.1-7ubuntu0.4 [7646 kB] Get:77 http://archive.ubuntu.com/ubuntu xenial/main amd64 libpipeline1 amd64 1.4.1-2 [24.6 kB] Get:78 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsasl2-modules amd64 2.1.26.dfsg1-14build1 [47.5 kB] Get:79 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libxml2 amd64 2.9.3+dfsg1-1ubuntu0.5 [697 kB] Get:80 http://archive.ubuntu.com/ubuntu xenial/main amd64 libxmuu1 amd64 2:1.1.2-2 [9674 B] Get:81 http://archive.ubuntu.com/ubuntu xenial/main amd64 manpages all 4.04-2 [1087 kB] Get:82 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 openssh-client amd64 1:7.2p2-4ubuntu2.4 [589 kB] Get:83 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 rsync amd64 3.1.1-3ubuntu1.2 [329 kB]
4:28 AM
Get:84 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 shared-mime-info amd64 1.5-2ubuntu0.1 [405 kB] Get:85 http://archive.ubuntu.com/ubuntu xenial/main amd64 xauth amd64 1:1.0.9-1ubuntu2 [22.7 kB] Get:86 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 xdg-user-dirs amd64 0.15-2ubuntu6.16.04.1 [61.8 kB] Get:87 http://archive.ubuntu.com/ubuntu xenial/main amd64 xml-core all 0.13+nmu2 [23.3 kB] Get:88 http://archive.ubuntu.com/ubuntu xenial/main amd64 binfmt-support amd64 2.1.6-1 [50.7 kB] Get:89 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 binutils amd64 2.26.1-1ubuntu1~16.04.6 [2311 kB] Get:90 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libc-dev-bin amd64 2.23-0ubuntu10 [68.7 kB] Get:91 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-libc-dev amd64 4.4.0-122.146 [850 kB] Get:92 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libc6-dev amd64 2.23-0ubuntu10 [2079 kB] Get:93 http://archive.ubuntu.com/ubuntu xenial/main amd64 libisl15 amd64 0.16.1-1 [524 kB] Get:94 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 cpp-5 amd64 5.4.0-6ubuntu1~16.04.9 [7685 kB] Get:95 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpp amd64 4:5.3.1-1ubuntu1 [27.7 kB] Get:96 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libcc1-0 amd64 5.4.0-6ubuntu1~16.04.9 [38.8 kB] Get:97 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgomp1 amd64 5.4.0-6ubuntu1~16.04.9 [55.0 kB] Get:98 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libitm1 amd64 5.4.0-6ubuntu1~16.04.9 [27.4 kB] Get:99 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libatomic1 amd64 5.4.0-6ubuntu1~16.04.9 [8882 B] Get:100 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libasan2 amd64 5.4.0-6ubuntu1~16.04.9 [264 kB] Get:101 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 liblsan0 amd64 5.4.0-6ubuntu1~16.04.9 [105 kB]
4:28 AM
Get:102 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libtsan0 amd64 5.4.0-6ubuntu1~16.04.9 [244 kB] Get:103 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libubsan0 amd64 5.4.0-6ubuntu1~16.04.9 [95.2 kB] Get:104 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libcilkrts5 amd64 5.4.0-6ubuntu1~16.04.9 [40.1 kB] Get:105 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libmpx0 amd64 5.4.0-6ubuntu1~16.04.9 [9774 B] Get:106 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libquadmath0 amd64 5.4.0-6ubuntu1~16.04.9 [131 kB] Get:107 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libgcc-5-dev amd64 5.4.0-6ubuntu1~16.04.9 [2242 kB] Get:108 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 gcc-5 amd64 5.4.0-6ubuntu1~16.04.9 [8650 kB] Get:109 http://archive.ubuntu.com/ubuntu xenial/main amd64 gcc amd64 4:5.3.1-1ubuntu1 [5244 B] Get:110 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libstdc++-5-dev amd64 5.4.0-6ubuntu1~16.04.9 [1427 kB] Get:111 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 g++-5 amd64 5.4.0-6ubuntu1~16.04.9 [8333 kB] Get:112 http://archive.ubuntu.com/ubuntu xenial/main amd64 g++ amd64 4:5.3.1-1ubuntu1 [1504 B] Get:113 http://archive.ubuntu.com/ubuntu xenial/main amd64 make amd64 4.1-6 [151 kB] Get:114 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libdpkg-perl all 1.18.4ubuntu1.4 [195 kB] Get:115 http://archive.ubuntu.com/ubuntu xenial/main amd64 xz-utils amd64 5.1.1alpha+20120614-2ubuntu2 [78.8 kB] Get:116 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 patch amd64 2.7.5-1ubuntu0.16.04.1 [90.5 kB] Get:117 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 dpkg-dev all 1.18.4ubuntu1.4 [584 kB] Get:118 http://archive.ubuntu.com/ubuntu xenial/main amd64 build-essential amd64 12.1ubuntu2 [4758 B]
4:28 AM
Get:119 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libllvm3.8 amd64 1:3.8-2ubuntu4 [10.3 MB] Get:120 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libobjc4 amd64 5.4.0-6ubuntu1~16.04.9 [111 kB] Get:121 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libobjc-5-dev amd64 5.4.0-6ubuntu1~16.04.9 [381 kB] Get:122 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libclang1-3.8 amd64 1:3.8-2ubuntu4 [4139 kB] Get:123 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libclang-common-3.8-dev amd64 1:3.8-2ubuntu4 [1167 kB] Get:124 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 clang-3.8 amd64 1:3.8-2ubuntu4 [21.5 MB] Get:125 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 curl amd64 7.47.0-1ubuntu2.7 [138 kB] Get:126 http://archive.ubuntu.com/ubuntu xenial/main amd64 libfakeroot amd64 1.20.2-1ubuntu1 [25.5 kB] Get:127 http://archive.ubuntu.com/ubuntu xenial/main amd64 fakeroot amd64 1.20.2-1ubuntu1 [61.8 kB] Get:128 http://archive.ubuntu.com/ubuntu xenial/main amd64 liberror-perl all 0.17-1.2 [19.6 kB] Get:129 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 git-man all 1:2.7.4-0ubuntu1.3 [736 kB] Get:130 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 git amd64 1:2.7.4-0ubuntu1.3 [3102 kB] Get:131 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 icu-devtools amd64 55.1-7ubuntu0.4 [166 kB] Get:132 http://archive.ubuntu.com/ubuntu xenial/main amd64 libalgorithm-diff-perl all 1.19.03-1 [47.6 kB] Get:133 http://archive.ubuntu.com/ubuntu xenial/main amd64 libalgorithm-diff-xs-perl amd64 0.04-4build1 [11.0 kB] Get:134 http://archive.ubuntu.com/ubuntu xenial/main amd64 libalgorithm-merge-perl all 0.08-3 [12.0 kB] Get:135 http://archive.ubuntu.com/ubuntu xenial/main amd64 libbsd-dev amd64 0.8.2-1 [134 kB] Get:136 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libcurl3 amd64 7.47.0-1ubuntu2.7 [187 kB]
4:28 AM
Get:137 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libcurl4-openssl-dev amd64 7.47.0-1ubuntu2.7 [262 kB] Get:138 http://archive.ubuntu.com/ubuntu xenial/main amd64 libtinfo-dev amd64 6.0+20160213-1ubuntu1 [77.4 kB] Get:139 http://archive.ubuntu.com/ubuntu xenial/main amd64 libedit-dev amd64 3.1-20150325-1ubuntu2 [92.6 kB] Get:140 http://archive.ubuntu.com/ubuntu xenial/main amd64 libfile-fcntllock-perl amd64 0.22-3 [32.0 kB] Get:141 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libicu-dev amd64 55.1-7ubuntu0.4 [8566 kB] Get:142 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7 amd64 2.7.12-1ubuntu0~16.04.3 [1070 kB] Get:143 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 zlib1g-dev amd64 1:1.2.8.dfsg-2ubuntu4.1 [168 kB] Get:144 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libssl-dev amd64 1.0.2g-1ubuntu4.12 [1343 kB] Get:145 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libssl-doc all 1.0.2g-1ubuntu4.12 [1079 kB] Get:146 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 llvm-3.8-runtime amd64 1:3.8-2ubuntu4 [72.3 kB] Get:147 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 llvm-3.8 amd64 1:3.8-2ubuntu4 [1524 kB] Get:148 http://archive.ubuntu.com/ubuntu xenial/main amd64 libjsoncpp1 amd64 1.7.2-1 [73.0 kB] Get:149 http://archive.ubuntu.com/ubuntu xenial/main amd64 libffi-dev amd64 3.2.1-4 [161 kB] Get:150 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 llvm-3.8-dev amd64 1:3.8-2ubuntu4 [16.7 MB] Get:151 http://archive.ubuntu.com/ubuntu xenial/main amd64 manpages-dev all 4.04-2 [2048 kB] Get:152 http://archive.ubuntu.com/ubuntu xenial/main amd64 pkg-config amd64 0.29.1-0ubuntu1 [45.0 kB] Get:153 http://archive.ubuntu.com/ubuntu xenial/main amd64 rename all 0.20-4 [12.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 144 MB in 17s (8332 kB/s)
4:28 AM
(Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 4768 files and directories currently installed.) Preparing to unpack .../perl-base_5.22.1-9ubuntu0.3_amd64.deb ... Unpacking perl-base (5.22.1-9ubuntu0.3) over (5.22.1-9ubuntu0.2) ... Setting up perl-base (5.22.1-9ubuntu0.3) ... Selecting previously unselected package libatm1:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 4768 files and directories currently installed.) Preparing to unpack .../libatm1_1%3a2.5.1-1.5_amd64.deb ... Unpacking libatm1:amd64 (1:2.5.1-1.5) ... Selecting previously unselected package libmnl0:amd64. Preparing to unpack .../libmnl0_1.0.3-5_amd64.deb ... Unpacking libmnl0:amd64 (1.0.3-5) ... Selecting previously unselected package libpopt0:amd64. Preparing to unpack .../libpopt0_1.16-10_amd64.deb ... Unpacking libpopt0:amd64 (1.16-10) ... Selecting previously unselected package libgdbm3:amd64.
4:28 AM
Preparing to unpack .../libgdbm3_1.8.3-13.1_amd64.deb ... Unpacking libgdbm3:amd64 (1.8.3-13.1) ... Selecting previously unselected package libxau6:amd64. Preparing to unpack .../libxau6_1%3a1.0.8-1_amd64.deb ... Unpacking libxau6:amd64 (1:1.0.8-1) ... Selecting previously unselected package libxdmcp6:amd64. Preparing to unpack .../libxdmcp6_1%3a1.1.2-1.1_amd64.deb ... Unpacking libxdmcp6:amd64 (1:1.1.2-1.1) ... Selecting previously unselected package libxcb1:amd64. Preparing to unpack .../libxcb1_1.11.1-1ubuntu1_amd64.deb ... Unpacking libxcb1:amd64 (1.11.1-1ubuntu1) ... Selecting previously unselected package libx11-data. Preparing to unpack .../libx11-data_2%3a1.6.3-1ubuntu2_all.deb ... Unpacking libx11-data (2:1.6.3-1ubuntu2) ... Selecting previously unselected package libx11-6:amd64. Preparing to unpack .../libx11-6_2%3a1.6.3-1ubuntu2_amd64.deb ... Unpacking libx11-6:amd64 (2:1.6.3-1ubuntu2) ... Selecting previously unselected package libxext6:amd64. Preparing to unpack .../libxext6_2%3a1.3.3-1_amd64.deb ... Unpacking libxext6:amd64 (2:1.3.3-1) ... Selecting previously unselected package sgml-base. Preparing to unpack .../sgml-base_1.26+nmu4ubuntu1_all.deb ... Unpacking sgml-base (1.26+nmu4ubuntu1) ... Selecting previously unselected package perl-modules-5.22. Preparing to unpack .../perl-modules-5.22_5.22.1-9ubuntu0.3_all.deb ... Unpacking perl-modules-5.22 (5.22.1-9ubuntu0.3) ... Selecting previously unselected package libperl5.22:amd64. Preparing to unpack .../libperl5.22_5.22.1-9ubuntu0.3_amd64.deb ... Unpacking libperl5.22:amd64 (5.22.1-9ubuntu0.3) ... Selecting previously unselected package perl. Preparing to unpack .../perl_5.22.1-9ubuntu0.3_amd64.deb ... Unpacking perl (5.22.1-9ubuntu0.3) ... Selecting previously unselected package libpython2.7-minimal:amd64. Preparing to unpack .../libpython2.7-minimal_2.7.12-1ubuntu0~16.04.3_amd64.deb ...
4:28 AM
Unpacking libpython2.7-minimal:amd64 (2.7.12-1ubuntu0~16.04.3) ... Selecting previously unselected package python2.7-minimal. Preparing to unpack .../python2.7-minimal_2.7.12-1ubuntu0~16.04.3_amd64.deb ... Unpacking python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ... Selecting previously unselected package python-minimal. Preparing to unpack .../python-minimal_2.7.12-1~16.04_amd64.deb ... Unpacking python-minimal (2.7.12-1~16.04) ... Selecting previously unselected package mime-support. Preparing to unpack .../mime-support_3.59ubuntu1_all.deb ... Unpacking mime-support (3.59ubuntu1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.1.0-7ubuntu0.16.04.3_amd64.deb ... Unpacking libexpat1:amd64 (2.1.0-7ubuntu0.16.04.3) ... Selecting previously unselected package libffi6:amd64. Preparing to unpack .../libffi6_3.2.1-4_amd64.deb ... Unpacking libffi6:amd64 (3.2.1-4) ... Selecting previously unselected package libsqlite3-0:amd64. Preparing to unpack .../libsqlite3-0_3.11.0-1ubuntu1_amd64.deb ... Unpacking libsqlite3-0:amd64 (3.11.0-1ubuntu1) ... Selecting previously unselected package libssl1.0.0:amd64. Preparing to unpack .../libssl1.0.0_1.0.2g-1ubuntu4.12_amd64.deb ... Unpacking libssl1.0.0:amd64 (1.0.2g-1ubuntu4.12) ... Selecting previously unselected package libpython2.7-stdlib:amd64. Preparing to unpack .../libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.3_amd64.deb ... Unpacking libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.3) ... Selecting previously unselected package python2.7. Preparing to unpack .../python2.7_2.7.12-1ubuntu0~16.04.3_amd64.deb ... Unpacking python2.7 (2.7.12-1ubuntu0~16.04.3) ... Selecting previously unselected package libpython-stdlib:amd64. Preparing to unpack .../libpython-stdlib_2.7.12-1~16.04_amd64.deb ... Unpacking libpython-stdlib:amd64 (2.7.12-1~16.04) ... Processing triggers for libc-bin (2.23-0ubuntu10) ...
4:28 AM
Setting up libpython2.7-minimal:amd64 (2.7.12-1ubuntu0~16.04.3) ... Setting up python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ... Linking and byte-compiling packages for runtime python2.7... Setting up python-minimal (2.7.12-1~16.04) ... Selecting previously unselected package python. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 7683 files and directories currently installed.) Preparing to unpack .../python_2.7.12-1~16.04_amd64.deb ... Unpacking python (2.7.12-1~16.04) ... Selecting previously unselected package libgmp10:amd64. Preparing to unpack .../libgmp10_2%3a6.1.0+dfsg-2_amd64.deb ... Unpacking libgmp10:amd64 (2:6.1.0+dfsg-2) ... Selecting previously unselected package libmpfr4:amd64. Preparing to unpack .../libmpfr4_3.1.4-1_amd64.deb ... Unpacking libmpfr4:amd64 (3.1.4-1) ... Selecting previously unselected package libmpc3:amd64. Preparing to unpack .../libmpc3_1.0.3-1_amd64.deb ... Unpacking libmpc3:amd64 (1.0.3-1) ... Selecting previously unselected package tzdata. Preparing to unpack .../tzdata_2017c-0ubuntu0.16.04_all.deb ... Unpacking tzdata (2017c-0ubuntu0.16.04) ... Selecting previously unselected package bzip2. Preparing to unpack .../bzip2_1.0.6-8_amd64.deb ... Unpacking bzip2 (1.0.6-8) ... Selecting previously unselected package libmagic1:amd64. Preparing to unpack .../libmagic1_1%3a5.25-2ubuntu1_amd64.deb ... Unpacking libmagic1:amd64 (1:5.25-2ubuntu1) ...
4:28 AM
Selecting previously unselected package file. Preparing to unpack .../file_1%3a5.25-2ubuntu1_amd64.deb ... Unpacking file (1:5.25-2ubuntu1) ... Selecting previously unselected package iproute2. Preparing to unpack .../iproute2_4.3.0-1ubuntu3.16.04.3_amd64.deb ... Unpacking iproute2 (4.3.0-1ubuntu3.16.04.3) ... Selecting previously unselected package ifupdown. Preparing to unpack .../ifupdown_0.8.10ubuntu1.3_amd64.deb ... Unpacking ifupdown (0.8.10ubuntu1.3) ... Selecting previously unselected package libisc-export160. Preparing to unpack .../libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.10_amd64.deb ... Unpacking libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.10) ... Selecting previously unselected package libdns-export162. Preparing to unpack .../libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.10_amd64.deb ... Unpacking libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.10) ... Selecting previously unselected package isc-dhcp-client. Preparing to unpack .../isc-dhcp-client_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-client (4.3.3-5ubuntu12.10) ... Selecting previously unselected package isc-dhcp-common. Preparing to unpack .../isc-dhcp-common_4.3.3-5ubuntu12.10_amd64.deb ... Unpacking isc-dhcp-common (4.3.3-5ubuntu12.10) ... Selecting previously unselected package less. Preparing to unpack .../less_481-2.1ubuntu0.2_amd64.deb ... Unpacking less (481-2.1ubuntu0.2) ... Selecting previously unselected package libbsd0:amd64. Preparing to unpack .../libbsd0_0.8.2-1_amd64.deb ... Unpacking libbsd0:amd64 (0.8.2-1) ... Selecting previously unselected package libnettle6:amd64. Preparing to unpack .../libnettle6_3.2-1ubuntu0.16.04.1_amd64.deb ... Unpacking libnettle6:amd64 (3.2-1ubuntu0.16.04.1) ... Selecting previously unselected package libhogweed4:amd64. Preparing to unpack .../libhogweed4_3.2-1ubuntu0.16.04.1_amd64.deb ... Unpacking libhogweed4:amd64 (3.2-1ubuntu0.16.04.1) ...
4:28 AM
Selecting previously unselected package libidn11:amd64. Preparing to unpack .../libidn11_1.32-3ubuntu1.2_amd64.deb ... Unpacking libidn11:amd64 (1.32-3ubuntu1.2) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb ... Unpacking libp11-kit0:amd64 (0.23.2-5~ubuntu16.04.1) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../libtasn1-6_4.7-3ubuntu0.16.04.3_amd64.deb ... Unpacking libtasn1-6:amd64 (4.7-3ubuntu0.16.04.3) ... Selecting previously unselected package libgnutls30:amd64. Preparing to unpack .../libgnutls30_3.4.10-4ubuntu1.4_amd64.deb ... Unpacking libgnutls30:amd64 (3.4.10-4ubuntu1.4) ... Selecting previously unselected package libxtables11:amd64. Preparing to unpack .../libxtables11_1.6.0-2ubuntu3_amd64.deb ... Unpacking libxtables11:amd64 (1.6.0-2ubuntu3) ... Selecting previously unselected package netbase. Preparing to unpack .../archives/netbase_5.3_all.deb ... Unpacking netbase (5.3) ... Selecting previously unselected package openssl. Preparing to unpack .../openssl_1.0.2g-1ubuntu4.12_amd64.deb ... Unpacking openssl (1.0.2g-1ubuntu4.12) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../ca-certificates_20170717~16.04.1_all.deb ... Unpacking ca-certificates (20170717~16.04.1) ... Selecting previously unselected package krb5-locales. Preparing to unpack .../krb5-locales_1.13.2+dfsg-5ubuntu2_all.deb ... Unpacking krb5-locales (1.13.2+dfsg-5ubuntu2) ... Selecting previously unselected package libroken18-heimdal:amd64. Preparing to unpack .../libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libroken18-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libasn1-8-heimdal:amd64.
4:28 AM
Preparing to unpack .../libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libasn1-8-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../libkrb5support0_1.13.2+dfsg-5ubuntu2_amd64.deb ... Unpacking libkrb5support0:amd64 (1.13.2+dfsg-5ubuntu2) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../libk5crypto3_1.13.2+dfsg-5ubuntu2_amd64.deb ... Unpacking libk5crypto3:amd64 (1.13.2+dfsg-5ubuntu2) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../libkeyutils1_1.5.9-8ubuntu1_amd64.deb ... Unpacking libkeyutils1:amd64 (1.5.9-8ubuntu1) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../libkrb5-3_1.13.2+dfsg-5ubuntu2_amd64.deb ... Unpacking libkrb5-3:amd64 (1.13.2+dfsg-5ubuntu2) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../libgssapi-krb5-2_1.13.2+dfsg-5ubuntu2_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.13.2+dfsg-5ubuntu2) ... Selecting previously unselected package libhcrypto4-heimdal:amd64. Preparing to unpack .../libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libhcrypto4-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libheimbase1-heimdal:amd64. Preparing to unpack .../libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libheimbase1-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libwind0-heimdal:amd64. Preparing to unpack .../libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libwind0-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libhx509-5-heimdal:amd64.
4:28 AM
Preparing to unpack .../libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libhx509-5-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libkrb5-26-heimdal:amd64. Preparing to unpack .../libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libkrb5-26-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libheimntlm0-heimdal:amd64. Preparing to unpack .../libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libheimntlm0-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libgssapi3-heimdal:amd64. Preparing to unpack .../libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1.16.04.1_amd64.deb ... Unpacking libgssapi3-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.26.dfsg1-14build1) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.26.dfsg1-14build1) ... Selecting previously unselected package libldap-2.4-2:amd64. Preparing to unpack .../libldap-2.4-2_2.4.42+dfsg-2ubuntu3.2_amd64.deb ... Unpacking libldap-2.4-2:amd64 (2.4.42+dfsg-2ubuntu3.2) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d-1ubuntu0.1_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d-1ubuntu0.1) ... Selecting previously unselected package libcurl3-gnutls:amd64. Preparing to unpack .../libcurl3-gnutls_7.47.0-1ubuntu2.7_amd64.deb ... Unpacking libcurl3-gnutls:amd64 (7.47.0-1ubuntu2.7) ...
4:28 AM
Selecting previously unselected package libedit2:amd64. Preparing to unpack .../libedit2_3.1-20150325-1ubuntu2_amd64.deb ... Unpacking libedit2:amd64 (3.1-20150325-1ubuntu2) ... Selecting previously unselected package libglib2.0-0:amd64. Preparing to unpack .../libglib2.0-0_2.48.2-0ubuntu1_amd64.deb ... Unpacking libglib2.0-0:amd64 (2.48.2-0ubuntu1) ... Selecting previously unselected package libglib2.0-data. Preparing to unpack .../libglib2.0-data_2.48.2-0ubuntu1_all.deb ... Unpacking libglib2.0-data (2.48.2-0ubuntu1) ... Selecting previously unselected package libicu55:amd64. Preparing to unpack .../libicu55_55.1-7ubuntu0.4_amd64.deb ... Unpacking libicu55:amd64 (55.1-7ubuntu0.4) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../libpipeline1_1.4.1-2_amd64.deb ... Unpacking libpipeline1:amd64 (1.4.1-2) ... Selecting previously unselected package libsasl2-modules:amd64. Preparing to unpack .../libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb ... Unpacking libsasl2-modules:amd64 (2.1.26.dfsg1-14build1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../libxml2_2.9.3+dfsg1-1ubuntu0.5_amd64.deb ... Unpacking libxml2:amd64 (2.9.3+dfsg1-1ubuntu0.5) ... Selecting previously unselected package libxmuu1:amd64. Preparing to unpack .../libxmuu1_2%3a1.1.2-2_amd64.deb ... Unpacking libxmuu1:amd64 (2:1.1.2-2) ... Selecting previously unselected package manpages. Preparing to unpack .../manpages_4.04-2_all.deb ... Unpacking manpages (4.04-2) ... Selecting previously unselected package openssh-client. Preparing to unpack .../openssh-client_1%3a7.2p2-4ubuntu2.4_amd64.deb ... Unpacking openssh-client (1:7.2p2-4ubuntu2.4) ... Selecting previously unselected package rsync. Preparing to unpack .../rsync_3.1.1-3ubuntu1.2_amd64.deb ... Unpacking rsync (3.1.1-3ubuntu1.2) ... Selecting previously unselected package shared-mime-info.
4:28 AM
Preparing to unpack .../shared-mime-info_1.5-2ubuntu0.1_amd64.deb ... Unpacking shared-mime-info (1.5-2ubuntu0.1) ... Selecting previously unselected package xauth. Preparing to unpack .../xauth_1%3a1.0.9-1ubuntu2_amd64.deb ... Unpacking xauth (1:1.0.9-1ubuntu2) ... Selecting previously unselected package xdg-user-dirs. Preparing to unpack .../xdg-user-dirs_0.15-2ubuntu6.16.04.1_amd64.deb ... Unpacking xdg-user-dirs (0.15-2ubuntu6.16.04.1) ... Selecting previously unselected package xml-core. Preparing to unpack .../xml-core_0.13+nmu2_all.deb ... Unpacking xml-core (0.13+nmu2) ... Selecting previously unselected package binfmt-support. Preparing to unpack .../binfmt-support_2.1.6-1_amd64.deb ... Unpacking binfmt-support (2.1.6-1) ... Selecting previously unselected package binutils. Preparing to unpack .../binutils_2.26.1-1ubuntu1~16.04.6_amd64.deb ... Unpacking binutils (2.26.1-1ubuntu1~16.04.6) ... Selecting previously unselected package libc-dev-bin. Preparing to unpack .../libc-dev-bin_2.23-0ubuntu10_amd64.deb ... Unpacking libc-dev-bin (2.23-0ubuntu10) ... Selecting previously unselected package linux-libc-dev:amd64. Preparing to unpack .../linux-libc-dev_4.4.0-122.146_amd64.deb ... Unpacking linux-libc-dev:amd64 (4.4.0-122.146) ... Selecting previously unselected package libc6-dev:amd64. Preparing to unpack .../libc6-dev_2.23-0ubuntu10_amd64.deb ... Unpacking libc6-dev:amd64 (2.23-0ubuntu10) ... Selecting previously unselected package libisl15:amd64. Preparing to unpack .../libisl15_0.16.1-1_amd64.deb ... Unpacking libisl15:amd64 (0.16.1-1) ... Selecting previously unselected package cpp-5. Preparing to unpack .../cpp-5_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking cpp-5 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package cpp. Preparing to unpack .../cpp_4%3a5.3.1-1ubuntu1_amd64.deb ... Unpacking cpp (4:5.3.1-1ubuntu1) ...
4:28 AM
Selecting previously unselected package libcc1-0:amd64. Preparing to unpack .../libcc1-0_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libcc1-0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libgomp1:amd64. Preparing to unpack .../libgomp1_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libgomp1:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libitm1:amd64. Preparing to unpack .../libitm1_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libitm1:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libatomic1:amd64. Preparing to unpack .../libatomic1_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libatomic1:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libasan2:amd64. Preparing to unpack .../libasan2_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libasan2:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package liblsan0:amd64. Preparing to unpack .../liblsan0_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking liblsan0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libtsan0:amd64. Preparing to unpack .../libtsan0_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libtsan0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libubsan0:amd64. Preparing to unpack .../libubsan0_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libubsan0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libcilkrts5:amd64. Preparing to unpack .../libcilkrts5_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libcilkrts5:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libmpx0:amd64. Preparing to unpack .../libmpx0_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libmpx0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libquadmath0:amd64.
4:28 AM
Preparing to unpack .../libquadmath0_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libquadmath0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libgcc-5-dev:amd64. Preparing to unpack .../libgcc-5-dev_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package gcc-5. Preparing to unpack .../gcc-5_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking gcc-5 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package gcc. Preparing to unpack .../gcc_4%3a5.3.1-1ubuntu1_amd64.deb ... Unpacking gcc (4:5.3.1-1ubuntu1) ... Selecting previously unselected package libstdc++-5-dev:amd64. Preparing to unpack .../libstdc++-5-dev_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libstdc++-5-dev:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package g++-5. Preparing to unpack .../g++-5_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking g++-5 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package g++. Preparing to unpack .../g++_4%3a5.3.1-1ubuntu1_amd64.deb ... Unpacking g++ (4:5.3.1-1ubuntu1) ... Selecting previously unselected package make. Preparing to unpack .../archives/make_4.1-6_amd64.deb ... Unpacking make (4.1-6) ... Selecting previously unselected package libdpkg-perl. Preparing to unpack .../libdpkg-perl_1.18.4ubuntu1.4_all.deb ... Unpacking libdpkg-perl (1.18.4ubuntu1.4) ... Selecting previously unselected package xz-utils. Preparing to unpack .../xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb ... Unpacking xz-utils (5.1.1alpha+20120614-2ubuntu2) ... Selecting previously unselected package patch. Preparing to unpack .../patch_2.7.5-1ubuntu0.16.04.1_amd64.deb ... Unpacking patch (2.7.5-1ubuntu0.16.04.1) ... Selecting previously unselected package dpkg-dev. Preparing to unpack .../dpkg-dev_1.18.4ubuntu1.4_all.deb ... Unpacking dpkg-dev (1.18.4ubuntu1.4) ...
4:28 AM
Selecting previously unselected package build-essential. Preparing to unpack .../build-essential_12.1ubuntu2_amd64.deb ... Unpacking build-essential (12.1ubuntu2) ... Selecting previously unselected package libllvm3.8:amd64. Preparing to unpack .../libllvm3.8_1%3a3.8-2ubuntu4_amd64.deb ... Unpacking libllvm3.8:amd64 (1:3.8-2ubuntu4) ... Selecting previously unselected package libobjc4:amd64. Preparing to unpack .../libobjc4_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libobjc4:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libobjc-5-dev:amd64. Preparing to unpack .../libobjc-5-dev_5.4.0-6ubuntu1~16.04.9_amd64.deb ... Unpacking libobjc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.9) ... Selecting previously unselected package libclang1-3.8:amd64. Preparing to unpack .../libclang1-3.8_1%3a3.8-2ubuntu4_amd64.deb ... Unpacking libclang1-3.8:amd64 (1:3.8-2ubuntu4) ... Selecting previously unselected package libclang-common-3.8-dev. Preparing to unpack .../libclang-common-3.8-dev_1%3a3.8-2ubuntu4_amd64.deb ... Unpacking libclang-common-3.8-dev (1:3.8-2ubuntu4) ... Selecting previously unselected package clang-3.8. Preparing to unpack .../clang-3.8_1%3a3.8-2ubuntu4_amd64.deb ... Unpacking clang-3.8 (1:3.8-2ubuntu4) ... Selecting previously unselected package curl. Preparing to unpack .../curl_7.47.0-1ubuntu2.7_amd64.deb ... Unpacking curl (7.47.0-1ubuntu2.7) ... Selecting previously unselected package libfakeroot:amd64. Preparing to unpack .../libfakeroot_1.20.2-1ubuntu1_amd64.deb ... Unpacking libfakeroot:amd64 (1.20.2-1ubuntu1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.20.2-1ubuntu1_amd64.deb ... Unpacking fakeroot (1.20.2-1ubuntu1) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../liberror-perl_0.17-1.2_all.deb ... Unpacking liberror-perl (0.17-1.2) ...
4:28 AM
Selecting previously unselected package git-man. Preparing to unpack .../git-man_1%3a2.7.4-0ubuntu1.3_all.deb ... Unpacking git-man (1:2.7.4-0ubuntu1.3) ... Selecting previously unselected package git. Preparing to unpack .../git_1%3a2.7.4-0ubuntu1.3_amd64.deb ... Unpacking git (1:2.7.4-0ubuntu1.3) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../icu-devtools_55.1-7ubuntu0.4_amd64.deb ... Unpacking icu-devtools (55.1-7ubuntu0.4) ... Selecting previously unselected package libalgorithm-diff-perl. Preparing to unpack .../libalgorithm-diff-perl_1.19.03-1_all.deb ... Unpacking libalgorithm-diff-perl (1.19.03-1) ... Selecting previously unselected package libalgorithm-diff-xs-perl. Preparing to unpack .../libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb ... Unpacking libalgorithm-diff-xs-perl (0.04-4build1) ... Selecting previously unselected package libalgorithm-merge-perl. Preparing to unpack .../libalgorithm-merge-perl_0.08-3_all.deb ... Unpacking libalgorithm-merge-perl (0.08-3) ... Selecting previously unselected package libbsd-dev:amd64. Preparing to unpack .../libbsd-dev_0.8.2-1_amd64.deb ... Unpacking libbsd-dev:amd64 (0.8.2-1) ... Selecting previously unselected package libcurl3:amd64. Preparing to unpack .../libcurl3_7.47.0-1ubuntu2.7_amd64.deb ... Unpacking libcurl3:amd64 (7.47.0-1ubuntu2.7) ... Selecting previously unselected package libcurl4-openssl-dev:amd64. Preparing to unpack .../libcurl4-openssl-dev_7.47.0-1ubuntu2.7_amd64.deb ... Unpacking libcurl4-openssl-dev:amd64 (7.47.0-1ubuntu2.7) ... Selecting previously unselected package libtinfo-dev:amd64. Preparing to unpack .../libtinfo-dev_6.0+20160213-1ubuntu1_amd64.deb ... Unpacking libtinfo-dev:amd64 (6.0+20160213-1ubuntu1) ... Selecting previously unselected package libedit-dev:amd64. Preparing to unpack .../libedit-dev_3.1-20150325-1ubuntu2_amd64.deb ...
4:28 AM
Unpacking libedit-dev:amd64 (3.1-20150325-1ubuntu2) ... Selecting previously unselected package libfile-fcntllock-perl. Preparing to unpack .../libfile-fcntllock-perl_0.22-3_amd64.deb ... Unpacking libfile-fcntllock-perl (0.22-3) ... Selecting previously unselected package libicu-dev:amd64. Preparing to unpack .../libicu-dev_55.1-7ubuntu0.4_amd64.deb ... Unpacking libicu-dev:amd64 (55.1-7ubuntu0.4) ... Selecting previously unselected package libpython2.7:amd64. Preparing to unpack .../libpython2.7_2.7.12-1ubuntu0~16.04.3_amd64.deb ... Unpacking libpython2.7:amd64 (2.7.12-1ubuntu0~16.04.3) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4.1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.2.8.dfsg-2ubuntu4.1) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../libssl-dev_1.0.2g-1ubuntu4.12_amd64.deb ... Unpacking libssl-dev:amd64 (1.0.2g-1ubuntu4.12) ... Selecting previously unselected package libssl-doc. Preparing to unpack .../libssl-doc_1.0.2g-1ubuntu4.12_all.deb ... Unpacking libssl-doc (1.0.2g-1ubuntu4.12) ... Selecting previously unselected package llvm-3.8-runtime. Preparing to unpack .../llvm-3.8-runtime_1%3a3.8-2ubuntu4_amd64.deb ... Unpacking llvm-3.8-runtime (1:3.8-2ubuntu4) ... Selecting previously unselected package llvm-3.8. Preparing to unpack .../llvm-3.8_1%3a3.8-2ubuntu4_amd64.deb ... Unpacking llvm-3.8 (1:3.8-2ubuntu4) ... Selecting previously unselected package libjsoncpp1:amd64. Preparing to unpack .../libjsoncpp1_1.7.2-1_amd64.deb ... Unpacking libjsoncpp1:amd64 (1.7.2-1) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../libffi-dev_3.2.1-4_amd64.deb ... Unpacking libffi-dev:amd64 (3.2.1-4) ... Selecting previously unselected package llvm-3.8-dev. Preparing to unpack .../llvm-3.8-dev_1%3a3.8-2ubuntu4_amd64.deb ...
4:28 AM
Unpacking llvm-3.8-dev (1:3.8-2ubuntu4) ... Selecting previously unselected package manpages-dev. Preparing to unpack .../manpages-dev_4.04-2_all.deb ... Unpacking manpages-dev (4.04-2) ... Selecting previously unselected package pkg-config. Preparing to unpack .../pkg-config_0.29.1-0ubuntu1_amd64.deb ... Unpacking pkg-config (0.29.1-0ubuntu1) ... Selecting previously unselected package rename. Preparing to unpack .../archives/rename_0.20-4_all.deb ... Unpacking rename (0.20-4) ... Processing triggers for libc-bin (2.23-0ubuntu10) ... Processing triggers for systemd (229-4ubuntu21.1) ... Setting up libatm1:amd64 (1:2.5.1-1.5) ... Setting up libmnl0:amd64 (1.0.3-5) ... Setting up libpopt0:amd64 (1.16-10) ... Setting up libgdbm3:amd64 (1.8.3-13.1) ... Setting up libxau6:amd64 (1:1.0.8-1) ... Setting up libxdmcp6:amd64 (1:1.1.2-1.1) ... Setting up libxcb1:amd64 (1.11.1-1ubuntu1) ... Setting up libx11-data (2:1.6.3-1ubuntu2) ... Setting up libx11-6:amd64 (2:1.6.3-1ubuntu2) ... Setting up libxext6:amd64 (2:1.3.3-1) ... Setting up sgml-base (1.26+nmu4ubuntu1) ... Setting up perl-modules-5.22 (5.22.1-9ubuntu0.3) ... Setting up libperl5.22:amd64 (5.22.1-9ubuntu0.3) ... Setting up perl (5.22.1-9ubuntu0.3) ... update-alternatives: using /usr/bin/prename to provide /usr/bin/rename (rename) in auto mode Setting up mime-support (3.59ubuntu1) ... Setting up libexpat1:amd64 (2.1.0-7ubuntu0.16.04.3) ... Setting up libffi6:amd64 (3.2.1-4) ... Setting up libsqlite3-0:amd64 (3.11.0-1ubuntu1) ... Setting up libssl1.0.0:amd64 (1.0.2g-1ubuntu4.12) ... debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline Setting up libpython2.7-stdlib:amd64 (2.7.12-1ubuntu0~16.04.3) ... Setting up python2.7 (2.7.12-1ubuntu0~16.04.3) ... Setting up libpython-stdlib:amd64 (2.7.12-1~16.04) ...
4:28 AM
Setting up python (2.7.12-1~16.04) ... Setting up libgmp10:amd64 (2:6.1.0+dfsg-2) ... Setting up libmpfr4:amd64 (3.1.4-1) ... Setting up libmpc3:amd64 (1.0.3-1) ... Setting up tzdata (2017c-0ubuntu0.16.04) ... debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline Current default time zone: 'Etc/UTC' Local time is now: Sat May 5 04:27:22 UTC 2018. Universal Time is now: Sat May 5 04:27:22 UTC 2018. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up bzip2 (1.0.6-8) ... Setting up libmagic1:amd64 (1:5.25-2ubuntu1) ... Setting up file (1:5.25-2ubuntu1) ... Setting up iproute2 (4.3.0-1ubuntu3.16.04.3) ... Setting up ifupdown (0.8.10ubuntu1.3) ... Creating /etc/network/interfaces. Setting up libisc-export160 (1:9.10.3.dfsg.P4-8ubuntu1.10) ... Setting up libdns-export162 (1:9.10.3.dfsg.P4-8ubuntu1.10) ... Setting up isc-dhcp-client (4.3.3-5ubuntu12.10) ... Setting up isc-dhcp-common (4.3.3-5ubuntu12.10) ... Setting up less (481-2.1ubuntu0.2) ... debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline Setting up libbsd0:amd64 (0.8.2-1) ... Setting up libnettle6:amd64 (3.2-1ubuntu0.16.04.1) ... Setting up libhogweed4:amd64 (3.2-1ubuntu0.16.04.1) ... Setting up libidn11:amd64 (1.32-3ubuntu1.2) ... Setting up libp11-kit0:amd64 (0.23.2-5~ubuntu16.04.1) ... Setting up libtasn1-6:amd64 (4.7-3ubuntu0.16.04.3) ... Setting up libgnutls30:amd64 (3.4.10-4ubuntu1.4) ... Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ... Setting up netbase (5.3) ... Setting up openssl (1.0.2g-1ubuntu4.12) ... Setting up ca-certificates (20170717~16.04.1) ... debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.)
4:29 AM
debconf: falling back to frontend: Readline Setting up krb5-locales (1.13.2+dfsg-5ubuntu2) ... Setting up libroken18-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libasn1-8-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libkrb5support0:amd64 (1.13.2+dfsg-5ubuntu2) ... Setting up libk5crypto3:amd64 (1.13.2+dfsg-5ubuntu2) ... Setting up libkeyutils1:amd64 (1.5.9-8ubuntu1) ... Setting up libkrb5-3:amd64 (1.13.2+dfsg-5ubuntu2) ... Setting up libgssapi-krb5-2:amd64 (1.13.2+dfsg-5ubuntu2) ... Setting up libhcrypto4-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libheimbase1-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libwind0-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libhx509-5-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libkrb5-26-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libheimntlm0-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libgssapi3-heimdal:amd64 (1.7~git20150920+dfsg-4ubuntu1.16.04.1) ... Setting up libsasl2-modules-db:amd64 (2.1.26.dfsg1-14build1) ... Setting up libsasl2-2:amd64 (2.1.26.dfsg1-14build1) ... Setting up libldap-2.4-2:amd64 (2.4.42+dfsg-2ubuntu3.2) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d-1ubuntu0.1) ... Setting up libcurl3-gnutls:amd64 (7.47.0-1ubuntu2.7) ... Setting up libedit2:amd64 (3.1-20150325-1ubuntu2) ... Setting up libglib2.0-0:amd64 (2.48.2-0ubuntu1) ... No schema files found: doing nothing. Setting up libglib2.0-data (2.48.2-0ubuntu1) ... Setting up libicu55:amd64 (55.1-7ubuntu0.4) ... Setting up libpipeline1:amd64 (1.4.1-2) ... Setting up libsasl2-modules:amd64 (2.1.26.dfsg1-14build1) ... Setting up libxml2:amd64 (2.9.3+dfsg1-1ubuntu0.5) ... Setting up libxmuu1:amd64 (2:1.1.2-2) ... Setting up manpages (4.04-2) ...
4:29 AM
Setting up openssh-client (1:7.2p2-4ubuntu2.4) ... Setting up rsync (3.1.1-3ubuntu1.2) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of restart. Setting up shared-mime-info (1.5-2ubuntu0.1) ... Setting up xauth (1:1.0.9-1ubuntu2) ... Setting up xdg-user-dirs (0.15-2ubuntu6.16.04.1) ... Setting up xml-core (0.13+nmu2) ... Setting up binfmt-support (2.1.6-1) ... mount: permission denied update-binfmts: warning: Couldn't mount the binfmt_misc filesystem on /proc/sys/fs/binfmt_misc. mount: permission denied update-binfmts: warning: Couldn't mount the binfmt_misc filesystem on /proc/sys/fs/binfmt_misc. invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up binutils (2.26.1-1ubuntu1~16.04.6) ... Setting up libc-dev-bin (2.23-0ubuntu10) ... Setting up linux-libc-dev:amd64 (4.4.0-122.146) ... Setting up libc6-dev:amd64 (2.23-0ubuntu10) ... Setting up libisl15:amd64 (0.16.1-1) ... Setting up cpp-5 (5.4.0-6ubuntu1~16.04.9) ... Setting up cpp (4:5.3.1-1ubuntu1) ... Setting up libcc1-0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libgomp1:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libitm1:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libatomic1:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libasan2:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up liblsan0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libtsan0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libubsan0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libcilkrts5:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libmpx0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libquadmath0:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up gcc-5 (5.4.0-6ubuntu1~16.04.9) ... Setting up gcc (4:5.3.1-1ubuntu1) ... Setting up libstdc++-5-dev:amd64 (5.4.0-6ubuntu1~16.04.9) ...
4:29 AM
Setting up g++-5 (5.4.0-6ubuntu1~16.04.9) ... Setting up g++ (4:5.3.1-1ubuntu1) ... update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode Setting up make (4.1-6) ... Setting up libdpkg-perl (1.18.4ubuntu1.4) ... Setting up xz-utils (5.1.1alpha+20120614-2ubuntu2) ... update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode Setting up patch (2.7.5-1ubuntu0.16.04.1) ... Setting up dpkg-dev (1.18.4ubuntu1.4) ... Setting up build-essential (12.1ubuntu2) ... Setting up libllvm3.8:amd64 (1:3.8-2ubuntu4) ... Setting up libobjc4:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libobjc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.9) ... Setting up libclang1-3.8:amd64 (1:3.8-2ubuntu4) ... Setting up libclang-common-3.8-dev (1:3.8-2ubuntu4) ... Setting up clang-3.8 (1:3.8-2ubuntu4) ... Setting up curl (7.47.0-1ubuntu2.7) ... Setting up libfakeroot:amd64 (1.20.2-1ubuntu1) ... Setting up fakeroot (1.20.2-1ubuntu1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Setting up liberror-perl (0.17-1.2) ... Setting up git-man (1:2.7.4-0ubuntu1.3) ... Setting up git (1:2.7.4-0ubuntu1.3) ... Setting up icu-devtools (55.1-7ubuntu0.4) ... Setting up libalgorithm-diff-perl (1.19.03-1) ... Setting up libalgorithm-diff-xs-perl (0.04-4build1) ... Setting up libalgorithm-merge-perl (0.08-3) ... Setting up libbsd-dev:amd64 (0.8.2-1) ... Setting up libcurl3:amd64 (7.47.0-1ubuntu2.7) ... Setting up libcurl4-openssl-dev:amd64 (7.47.0-1ubuntu2.7) ... Setting up libtinfo-dev:amd64 (6.0+20160213-1ubuntu1) ... Setting up libedit-dev:amd64 (3.1-20150325-1ubuntu2) ... Setting up libfile-fcntllock-perl (0.22-3) ... Setting up libicu-dev:amd64 (55.1-7ubuntu0.4) ... Setting up libpython2.7:amd64 (2.7.12-1ubuntu0~16.04.3) ... Setting up zlib1g-dev:amd64 (1:1.2.8.dfsg-2ubuntu4.1) ...
4:29 AM
Setting up libssl-dev:amd64 (1.0.2g-1ubuntu4.12) ... Setting up libssl-doc (1.0.2g-1ubuntu4.12) ... Setting up llvm-3.8-runtime (1:3.8-2ubuntu4) ... mount: permission denied update-binfmts: warning: Couldn't mount the binfmt_misc filesystem on /proc/sys/fs/binfmt_misc. Setting up llvm-3.8 (1:3.8-2ubuntu4) ... Setting up libjsoncpp1:amd64 (1.7.2-1) ... Setting up libffi-dev:amd64 (3.2.1-4) ... Setting up llvm-3.8-dev (1:3.8-2ubuntu4) ... Setting up manpages-dev (4.04-2) ... Setting up pkg-config (0.29.1-0ubuntu1) ... Setting up rename (0.20-4) ... update-alternatives: using /usr/bin/file-rename to provide /usr/bin/rename (rename) in auto mode Processing triggers for libc-bin (2.23-0ubuntu10) ... Processing triggers for systemd (229-4ubuntu21.1) ... Processing triggers for ca-certificates (20170717~16.04.1) ... Updating certificates in /etc/ssl/certs... 148 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Processing triggers for sgml-base (1.26+nmu4ubuntu1) ... Removing intermediate container 9413e8e47de6 ---> 9095c304757c Step 5/10 : ARG SWIFT_PLATFORM=ubuntu16.04 ---> Running in 520a54e6a6f3 Removing intermediate container 520a54e6a6f3 ---> 7510559c68e5 Step 6/10 : ARG SWIFT_BRANCH=swift-4.1-release ---> Running in 8b10901f7a42 Removing intermediate container 8b10901f7a42 ---> 98b501a2543e Step 7/10 : ARG SWIFT_VERSION=swift-4.1-RELEASE ---> Running in d43316b226e3 Removing intermediate container d43316b226e3 ---> 5b12a9e7e8ff Step 8/10 : ENV SWIFT_PLATFORM=$SWIFT_PLATFORM SWIFT_BRANCH=$SWIFT_BRANCH SWIFT_VERSION=$SWIFT_VERSION ---> Running in 9e2440fd6f0f Removing intermediate container 9e2440fd6f0f ---> 074b576c8827
4:29 AM
Step 9/10 : RUN SWIFT_URL=https://swift.org/builds/$SWIFT_BRANCH/$(echo "$SWIFT_PLATFORM" | tr -d .)/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM.tar.gz && curl -fSsL $SWIFT_URL -o swift.tar.gz && curl -fSsL $SWIFT_URL.sig -o swift.tar.gz.sig && export GNUPGHOME="$(mktemp -d)" && tar -xzf swift.tar.gz --directory / --strip-components=1 && rm -r "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz && chmod -R o+r /usr/lib/swift ---> Running in 7eb559ffc45c Removing intermediate container 7eb559ffc45c ---> 28c481c0e9d6 Step 10/10 : RUN swift --version ---> Running in e3bf81d48e82 Swift version 4.1.1 (swift-4.1.1-RELEASE) Target: x86_64-unknown-linux-gnu Removing intermediate container e3bf81d48e82 ---> fe9cd801dc6b Successfully built fe9cd801dc6b Successfully tagged kishikawakatsumi/swift:4.1.1 ```
Avatar
Kishikawa Katsumi 5/5/2018 4:29 AM
🙇🏻
👌 1
Avatar
びっくりしたw
Avatar
Kishikawa Katsumi 5/5/2018 4:29 AM
申し訳ない。。。
4:29 AM
作った私もびっくりしました。
Avatar
norio_nomura 5/5/2018 4:31 AM
お、行単位行区切りで自動分割投稿する仕組みがあるのかな?>discord.js (edited)
Avatar
Kishikawa Katsumi 5/5/2018 4:32 AM
discode.jsはsend(contents, options)みたいなAPIになっていて、options{split: true}で自動的に分割してくれます。
Avatar
norio_nomura 5/5/2018 4:32 AM
なるほど。
Avatar
Kishikawa Katsumi 5/5/2018 4:32 AM
ただ、いつも思ったよりたくさん出るので、今のところ使いどころがありません。。。
4:37 AM
@swiftbot versions
🛠 1
Avatar
swiftbot BOT 5/5/2018 4:37 AM
4.0.2 4.1.1 2018-04-25-a 2018-05-02-a 4.1 4.0.3 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
Kishikawa Katsumi 5/5/2018 5:16 AM
GitHubのTags APIで2018-05-02-aが出てこないのなんでかな。 curl https://api.github.com/repos/apple/swift/tags
Avatar
norio_nomura 5/5/2018 5:41 AM
GraphQLだと返ってきます。 { "data": { "repository": { "refs": { "pageInfo": { "endCursor": "MTAw", "hasNextPage": true, "startCursor": "MQ==" }, "tags": [ { "name": "swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a" }, { "name": "swift-4.1.1-RELEASE" }, { "name": "swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a" }, …
Avatar
Kishikawa Katsumi 5/5/2018 5:41 AM
@norio_nomura Thanks. GraphQL使ってみます。
5:42 AM
REST APIはObsoleteになっていくのかなあ。
Avatar
norio_nomura 5/5/2018 5:43 AM
ちなみにクエリはこんな感じ。 query ($owner: String!, $name: String!, $cursor: String = "") { repository(owner: $owner, name: $name) { refs(refPrefix: "refs/tags/", first: 100, after: $cursor, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) { pageInfo { endCursor hasNextPage startCursor } tags: nodes { name } } } } Query Variables: { "owner": "apple", "name": "swift", "cursor": "" } (edited)
5:45 AM
ページングはcursorに前のendCursorを渡す。
5:47 AM
curl https://api.github.com/repos/apple/swift/tagsでタグ一覧を取得する方法は、そもそもAPIドキュメントに載ってないので、非公式な動作なのかも? https://developer.github.com/v3/git/tags/
5:49 AM
というか、ドキュメントに載ってなかったのでGraphQLを使うようにしました。
Avatar
Kishikawa Katsumi 5/5/2018 5:49 AM
いや、ドキュメント見て作ったリクエストなのでどこかに載ってるはずです。
5:49 AM
Releases APIからTags APIに行って、そこに載ってたと思います。
Avatar
norio_nomura 5/5/2018 5:50 AM
なるほど、ありがとうございます。
Avatar
Kishikawa Katsumi 5/5/2018 6:05 AM
@norio_nomura どうもどうも。いただいたクエリで取れました。
👍 1
Avatar
Kishikawa Katsumi 5/5/2018 7:14 AM
@swiftbot !install --list
Avatar
swiftbot BOT 5/5/2018 7:14 AM
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a swift-4.1.1-RELEASE swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a swift-DEVELOPMENT-SNAPSHOT-2018-04-24-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a swift-DEVELOPMENT-SNAPSHOT-2018-04-23-a swift-DEVELOPMENT-SNAPSHOT-2018-04-22-a swift-DEVELOPMENT-SNAPSHOT-2018-04-21-a swift-DEVELOPMENT-SNAPSHOT-2018-04-20-a swift-DEVELOPMENT-SNAPSHOT-2018-04-19-a ...
Avatar
Kishikawa Katsumi 5/5/2018 7:15 AM
@swiftbot versions
Avatar
swiftbot BOT 5/5/2018 7:15 AM
2018-05-02-a 2018-04-25-a 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
Kishikawa Katsumi 5/5/2018 7:16 AM
@swiftbot !install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a
Avatar
swiftbot BOT 5/5/2018 7:16 AM
install: missing destination file operand after 'swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a' Try 'install --help' for more information.
Avatar
Kishikawa Katsumi 5/5/2018 7:17 AM
@swiftbot !install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a
Avatar
swiftbot BOT 5/5/2018 7:17 AM
install: missing destination file operand after 'swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a' Try 'install --help' for more information.
Avatar
Kishikawa Katsumi 5/5/2018 7:22 AM
@swiftbot !install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a
Avatar
swiftbot BOT 5/5/2018 7:24 AM
Sending build context to Docker daemon 89.73MB Step 1/10 : FROM ubuntu:16.04 ---> f975c5035748 Step 2/10 : LABEL maintainer="Katsumi Kishikawa <kishikawakatsumi@mac.com>" ---> Running in 3cad3c7b2297 Removing intermediate container 3cad3c7b2297 ---> 14b761354421 Step 3/10 : LABEL Description="Docker Container for the Apple's Swift programming language" ---> Running in 1ac6435d7538 Removing intermediate container 1ac6435d7538 ---> e199f6c5ff72 Step 4/10 : RUN apt-get -q update && apt-get -q install -y make libc6-dev clang-3.8 curl libedit-dev libpython2.7 libicu-dev libssl-dev libxml2 tzdata git libcurl4-openssl-dev pkg-config && update-alternatives --quiet --install /usr/bin/clang clang /usr/bin/clang-3.8 100 && update-alternatives --quiet --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100 && rm -r /var/lib/apt/lists/* ---> Running in 0fb9c293500c Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [80.4 kB] Get:4 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [612 kB] Get:5 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB] Get:6 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [436 kB] Get:7 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3755 B] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB] ...
64.19 KB
Avatar
Kishikawa Katsumi 5/5/2018 7:25 AM
@swiftbot versions
Avatar
swiftbot BOT 5/5/2018 7:25 AM
2018-05-02-a 2018-04-25-a 2018-04-23-a 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
Kishikawa Katsumi 5/5/2018 10:00 AM
@swiftbot import SwiftyMath import SwiftyTopology let S = SimplicialComplex.sphere(dim:3) let H = Homology(S, Int.self) print(H.detailDescription) import Foundation import RxSwift _ = Observable<String>.create { observerOfString in print("Observable created") observerOfString.on(.next("😉")) observerOfString.on(.completed) return Disposables.create() } .subscribe { event in print(event) } import CryptoSwift let data = Data(bytes: [0x01, 0x02, 0x03]) let bytes = data.bytes print(bytes) print(Array<UInt8>(hex: "0x010203")) print(bytes.toHexString()) print("123".md5())
🛠 1
Avatar
swiftbot BOT 5/5/2018 10:00 AM
Author icon
kishikawakatsumi
import SwiftyMath import SwiftyTopology let S = SimplicialComplex.sphere(dim:3) let H = Homology(S, Int.self) print(H.detailDescription) import Foundation import RxSwift _ = Observable<String>.create { observerOfString in print("Observable created") observerOfString.on(.next("😉")) observerOfString.on(.completed) return Disposables.create() } .subscribe { event in print(event) } import CryptoSwift let data = Data(bytes: [0x01, 0x02, 0x03]) let bytes = data.bytes print(bytes) print(Array<UInt8>(hex: "0x010203")) print(bytes.toHexString()) print("123".md5())
Version:
swift-4.1-RELEASE
Output:
H(S^3; 𝐙) = { 0 : 𝐙, [v₀], 1 : 0, [], 2 : 0, [], 3 : 𝐙, [(v₀, v₁, v₂, v₃) + -(v₀, v₁, v₂, v₄) + (v₀, v₁, v₃, v₄) + -(v₀, v₂, v₃, v₄) + (v₁, v₂, v₃, v₄)] } Observable created next(😉) completed [1, 2, 3] [1, 2, 3] 010203 202cb962ac59075b964b07152d234b70
Error:
Avatar
Kishikawa Katsumi 5/5/2018 10:03 AM
^ SwiftyMathに加えてRxSwiftとCryptoSwiftを足してみました。 超簡単に追加できるようにしてあるので、追加したいものがあったらPRください。 https://github.com/kishikawakatsumi/swift-playground/blob/master/Libraries/All/Package.swift#L14-L22 ^ やり方は見たらわかります。
Contribute to swift-playground development by creating an account on GitHub.
Avatar
4.1.1-RELEASE
Avatar
swiftTensorflow BOT 5/5/2018 11:36 AM
DEVELOPMENT-2018-05-03-a
Avatar
Kishikawa Katsumi 5/6/2018 1:13 AM
@swiftbot !install -l
Avatar
swiftbot BOT 5/6/2018 1:13 AM
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a swift-4.1.1-RELEASE swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a swift-DEVELOPMENT-SNAPSHOT-2018-04-24-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a swift-DEVELOPMENT-SNAPSHOT-2018-04-23-a swift-DEVELOPMENT-SNAPSHOT-2018-04-22-a swift-DEVELOPMENT-SNAPSHOT-2018-04-21-a swift-DEVELOPMENT-SNAPSHOT-2018-04-20-a swift-DEVELOPMENT-SNAPSHOT-2018-04-19-a ...
Avatar
Kishikawa Katsumi 5/6/2018 1:14 AM
@norio_nomura DEVELOPMENT-2018-05-03-aっていうスナップショットはなんですか?
Avatar
norio_nomura 5/6/2018 1:29 AM
swift-tensorflowです
Avatar
Kishikawa Katsumi 5/6/2018 1:29 AM
あ、なるほど。確かに名前をよく見たらそうですね 😄
Avatar
@swiftbot print(pow(2,5))
Avatar
Kishikawa Katsumi 5/7/2018 3:37 PM
@cecil_ma 実行するにはコードをコードブロック (バックティック3つ)で囲います。 (edited)
3:38 PM
@swiftbot help
Avatar
swiftbot BOT 5/7/2018 3:38 PM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
Kishikawa Katsumi 5/7/2018 3:39 PM
@swiftbot print(pow(2,5))
🛠 1
Avatar
swiftbot BOT 5/7/2018 3:39 PM
Author icon
kishikawakatsumi
print(pow(2,5))
Version:
swift-4.1.1-RELEASE
Output:
Error:
/usercode/main.swift:1:7: error: use of unresolved identifier 'pow' print(pow(2,5)) ^~~
Avatar
Kishikawa Katsumi 5/7/2018 3:44 PM
@swiftbot import SwiftGlibc print(pow(2,5))
🛠 1
Avatar
swiftbot BOT 5/7/2018 3:44 PM
Author icon
kishikawakatsumi
import SwiftGlibc print(pow(2,5))
Version:
swift-4.1.1-RELEASE
Output:
32.0
Error:
Avatar
Kishikawa Katsumi 5/7/2018 4:56 PM
@swiftbot —version 4.0.3 print("hello")
🛠 1
Avatar
swiftbot BOT 5/7/2018 4:56 PM
Author icon
kishikawakatsumi
print("hello")
Version:
swift-4.0.3-RELEASE
Output:
hello
Error:
Avatar
Kishikawa Katsumi 5/7/2018 4:57 PM
^ そういえばSwiftはSmart Punctuationに対して特別なエラーメッセージを返してたなあと思って対応した。iPhoneから投稿しても平気になった。
👀 1
Avatar
なんかレスポンスかっこよくなってる
Avatar
Kishikawa Katsumi 5/8/2018 4:15 AM
ちょっと試しでRichEmbedというのを使ってみました。1つのメッセージにできるので、編集等があった時の管理が簡単になりました。 ただEmbedは25個/メッセージですけど1Embedが1000文字までなので返せるOutputは半分になるところがデメリットですね。
Avatar
norio_nomura 5/9/2018 2:02 AM
@swift-4.1.3 import Foundation var hint = addrinfo(), addrinfo0: UnsafeMutablePointer<addrinfo>? = nil #if _runtime(_ObjC) hint.ai_socktype = SOCK_STREAM #else hint.ai_socktype = Int32(SOCK_STREAM.rawValue) #endif let error = getaddrinfo("whois.nic.google", "nicname", &hint, &addrinfo0) guard error == 0 else { print(String.init(cString: gai_strerror(error))) exit(error) } defer { freeaddrinfo(addrinfo0) } var addrinfoNext = addrinfo0?.pointee while let addrinfo = addrinfoNext { defer { addrinfoNext = addrinfo.ai_next?.pointee } let sock = socket(addrinfo.ai_family, addrinfo.ai_socktype, addrinfo.ai_protocol) guard sock != -1, connect(sock, addrinfo.ai_addr, addrinfo.ai_addrlen) == 0 else { print(String(cString: strerror(errno))) continue } let handle = FileHandle(fileDescriptor: sock, closeOnDealloc: true) handle.write("xcode.app\r\n".data(using: .utf8)!) FileHandle.standardOutput.write(handle.readDataToEndOfFile()) } (edited)
🛠 1
Avatar
swiftbot BOT 5/9/2018 2:02 AM
(edited)
Author icon
norio_nomura
import Foundation var hint = addrinfo(), addrinfo0: UnsafeMutablePointer<addrinfo>? = nil #if _runtime(_ObjC) hint.ai_socktype = SOCK_STREAM #else hint.ai_socktype = Int32(SOCK_STREAM.rawValue) #endif let error = getaddrinfo("whois.iana.org", "nicname", &hint, &addrinfo0) guard error == 0 else { print(String.init(cString: gai_strerror(error))) exit(error) } defer { freeaddrinfo(addrinfo0) } var addrinfoNext = addrinfo0?.pointee while let addrinfo = addrinfoNext { defer { addrinfoNext = addrinfo.ai_next?.pointee } let sock = socket(addrinfo.ai_family, addrinfo.ai_socktype, addrinfo.ai_protocol) guard sock != -1, connect(sock, addrinfo.ai_addr, addrinfo.ai_addrlen) == 0 else { print(String(cString: strerror(errno))) continue } let handle = FileHandle(fileDescriptor: sock, closeOnDealloc: true) handle.write("xcode.app\r\n".data(using: .utf8)!) FileHandle.standardOutput.write(handle.readDataToEndOfFile()) }
Version:
swift-4.1.1-RELEASE
Output:
Temporary failure in name resolution
Error:
Avatar
swift41 BOT 5/9/2018 2:03 AM
% IANA WHOIS server % for more information on IANA, visit http://www.iana.org % This query returned 1 object refer: whois.nic.google domain: APP organisation: Charleston Road Registry Inc. address: 1600 Amphitheatre Parkway Mountain View, CA 94043 address: United States contact: administrative name: Domains Policy and Compliance organisation: Google Inc. address: 601 N. 34th Street address: Seattle, WA 98103 address: United States phone: 1 202 642 2325 fax-no: 1 650 492 5631 e-mail: iana-contact@google.com contact: technical name: Richard Roberto organisation: Google Inc address: 76 9th Avenue, 4th Floor address: New York, NY 10011 address: United States phone: 1 212 565 2633 fax-no: 1 650 492 5631 e-mail: crr-tech@google.com nserver: NS-TLD1.CHARLESTONROADREGISTRY.COM 2001:4860:4802:32:0:0:0:69 216.239.32.105 nserver: NS-TLD2.CHARLESTONROADREGISTRY.COM 2001:4860:4802:34:0:0:0:69 216.239.34.105 nserver: NS-TLD3.CHARLESTONROADREGISTRY.COM 2001:4860:4802:36:0:0:0:69 216.239.36.105 nserver: NS-TLD4.CHARLESTONROADREGISTRY.COM 2001:4860:4802:38:0:0:0:69 216.239.38.105 nserver: NS-TLD5.CHARLESTONROADREGISTRY.COM 2001:4860:4805:0:0:0:0:69 216.239.60.105 ds-rdata: 41971 8 2 858FEEE8930855598DB109C9705955EDF494FA641ED1CDD07A95C13357E9FD19 ds-rdata: 23684 8 2 3a5cc8a31e02c94aba6461912fabb7e9f5e34957bb6114a55a864d96aec31836 whois: whois.nic.google status: ACTIVE remarks: Registration information: http://www.registry.google created: 2015-06-25 changed: 2018-03-20 source: IANA Network is unreachable
Avatar
norio_nomura 5/9/2018 2:05 AM
whois.iana.orgへの問い合わせは動くけど、whois.nic.googleへの問い合わせは動かないな。
Avatar
omochimetaru 5/9/2018 2:05 AM
@swift-4.1.3 print(3)
Avatar
swift41 BOT 5/9/2018 2:05 AM
3
Avatar
norio_nomura 5/9/2018 2:05 AM
手元のREPLだとうまくいくのに>whois.nic.google
Avatar
omochimetaru 5/9/2018 2:05 AM
@swift-4.1.3 print(3)
Avatar
swift41 BOT 5/9/2018 2:05 AM
3
Avatar
omochimetaru 5/9/2018 2:06 AM
さっきのnorioさんの書き込みに両方のbotが反応したのはなぜだ
Avatar
norio_nomura 5/9/2018 2:06 AM
先に岸川さんのボットへ問い合わせて、その後、僕のボットへのメンションへ投稿を書き換えました。
Avatar
omochimetaru 5/9/2018 2:06 AM
あ、なるほど。
Avatar
norio_nomura 5/9/2018 2:07 AM
岸川さんのボットはネットワークアクセス遮断されてるのを忘れていたので。
2:08 AM
試行錯誤がしやすい様に、ボットも投稿の編集/削除に追従する様になっています。
2:09 AM
ボットにこれを出力させたかった。 Domain Name: xcode.app Registry Domain ID: 2C5582619-APP Registrar WHOIS Server: whois.nic.google Registrar URL: http://www.ascio.com Updated Date: 2018-04-05T15:45:23Z Creation Date: 2018-03-30T11:42:39Z Registry Expiry Date: 2019-03-30T11:42:39Z Registrar: Ascio Technologies, Inc. Registrar IANA ID: 106 Registrar Abuse Contact Email: abuse@ascio.com Registrar Abuse Contact Phone: +44.2070159370 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Registrant Organization: Apple Inc. Registrant State/Province: CA Registrant Country: US Name Server: a.ns.apple.com Name Server: b.ns.apple.com Name Server: c.ns.apple.com Name Server: d.ns.apple.com DNSSEC: unsigned
Avatar
swift42 BOT 5/9/2018 2:57 AM
4.2-DEVELOPMENT-SNAPSHOT-2018-05-08-a
Avatar
Kishikawa Katsumi 5/9/2018 2:58 AM
@swiftbot !install swift-DEVELOPMENT-SNAPSHOT-2018-05-08-a
Avatar
swiftbot BOT 5/9/2018 3:01 AM
Sending build context to Docker daemon 89.89MB Step 1/10 : FROM ubuntu:16.04 ---> f975c5035748 Step 2/10 : LABEL maintainer="Katsumi Kishikawa <kishikawakatsumi@mac.com>" ---> Running in 74672f4fa8d7 Removing intermediate container 74672f4fa8d7 ---> 59ef556a8cc5 Step 3/10 : LABEL Description="Docker Container for the Apple's Swift programming language" ---> Running in 5be2396d3584 Removing intermediate container 5be2396d3584 ---> cb7e4d4d82b3 Step 4/10 : RUN apt-get -q update && apt-get -q install -y make libc6-dev clang-3.8 curl libedit-dev libpython2.7 libicu-dev libssl-dev libxml2 tzdata git libcurl4-openssl-dev pkg-config && update-alternatives --quiet --install /usr/bin/clang clang /usr/bin/clang-3.8 100 && update-alternatives --quiet --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100 && rm -r /var/lib/apt/lists/* ---> Running in a914c461bbe6 Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [80.4 kB] Get:4 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [625 kB] Get:5 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB] Get:6 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [438 kB] Get:7 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3759 B] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB] ...
64.19 KB
Avatar
norio_nomura 5/9/2018 3:48 AM
swift-4.2-branchmasterでそれぞれスナップショットが出てますよ。 (edited)
Avatar
Kishikawa Katsumi 5/9/2018 4:22 AM
ども。のむらさんは全部自動化されてます?
4:24 AM
@swiftbot !install -l
Avatar
swiftbot BOT 5/9/2018 4:24 AM
swift-DEVELOPMENT-SNAPSHOT-2018-05-08-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-08-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a swift-4.1.1-RELEASE swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a swift-DEVELOPMENT-SNAPSHOT-2018-04-24-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-04-23-a swift-DEVELOPMENT-SNAPSHOT-2018-04-23-a swift-DEVELOPMENT-SNAPSHOT-2018-04-22-a swift-DEVELOPMENT-SNAPSHOT-2018-04-21-a ...
Avatar
Kishikawa Katsumi 5/9/2018 4:26 AM
@swiftbot !install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-08-a
Avatar
swiftbot BOT 5/9/2018 4:28 AM
Sending build context to Docker daemon 89.89MB Step 1/10 : FROM ubuntu:16.04 ---> f975c5035748 Step 2/10 : LABEL maintainer="Katsumi Kishikawa <kishikawakatsumi@mac.com>" ---> Running in 6131c07eaec0 Removing intermediate container 6131c07eaec0 ---> 3be293815ff5 Step 3/10 : LABEL Description="Docker Container for the Apple's Swift programming language" ---> Running in f6ad39fa35f5 Removing intermediate container f6ad39fa35f5 ---> cfb1b891f8e9 Step 4/10 : RUN apt-get -q update && apt-get -q install -y make libc6-dev clang-3.8 curl libedit-dev libpython2.7 libicu-dev libssl-dev libxml2 tzdata git libcurl4-openssl-dev pkg-config && update-alternatives --quiet --install /usr/bin/clang clang /usr/bin/clang-3.8 100 && update-alternatives --quiet --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100 && rm -r /var/lib/apt/lists/* ---> Running in d1d8b173ba38 Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] Get:3 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] Get:4 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:5 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB] Get:6 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:7 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB] Get:8 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [255 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [1002 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [13.1 kB] ...
64.19 KB
Avatar
norio_nomura 5/9/2018 7:49 AM
まだ自動化できていません。
7:51 AM
CircleCIのcronで自動化しようとして、まだ途中。
Avatar
Kishikawa Katsumi 5/9/2018 7:57 AM
CIのスケジューリングでやるというのは良いアイデアですね。マネします。
Avatar
omochimetaru 5/9/2018 8:15 AM
Discordから命令するとパッケージ入るのか
Avatar
Kishikawa Katsumi 5/9/2018 8:28 AM
私がメンションした場合に限り、ターミナルの操作とかができるようになっています。
8:28 AM
@swiftbot echo "hello"
8:29 AM
ダメだった。なんかバグがあるな。。。
Avatar
omochimetaru 5/9/2018 10:45 AM
おもしろいです
Avatar
Kishikawa Katsumi 5/9/2018 11:40 AM
@swiftbot !echo "hello"
Avatar
swiftbot BOT 5/9/2018 11:40 AM
hello
Avatar
Kishikawa Katsumi 5/9/2018 11:40 AM
^ ちゃんと動いてた。自分で作ったのに仕様を勘違いしていた。
Avatar
omochimetaru 5/9/2018 11:41 AM
@swiftbot !echo “hello”
11:42 AM
ちゃんと無視された
Avatar
Kishikawa Katsumi 5/9/2018 11:45 AM
大丈夫だと思います。仮に操作できても大事には至らないはず。
Avatar
norio_nomura 5/10/2018 3:14 PM
-以降のオプションをCommandLine.argumentsで取れる様になりました。 @swift-4.1.3 -Onone - -arg1 value1 print(CommandLine.arguments)
Avatar
["-", "-arg1", "value1"]
Avatar
norio_nomura 5/10/2018 3:15 PM
ボットとして使い道があるかどうか分かりませんが…
Avatar
norio_nomura 5/11/2018 7:50 AM
dockerイメージの自動更新をCircleCIのcronで実行する様にしました。 https://circleci.com/gh/norio-nomura/docker-swift
Hosted Continuous Integration for web applications. Set up your application for testing in one click, on the fastest testing platform on the internet.
7:55 AM
CircleCIでgithub.com/apple/swiftのタグを取得 -> 既存のものより新しいものがあったら Dockerfile を生成してdockerビルドテスト -> ビルドOKなら新しいDockerfileをgithubへプッシュ -> Docker Hubで自動ビルドして公開
7:58 AM
あとは、Docker Hubで新しいswiftのdockerイメージが公開されたら、それを元にボットを自動更新したい…
Avatar
norio_nomura 5/12/2018 1:20 AM
@swift-4.1.3 @swift-4.2.4 @swift-main import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "") (edited)
Avatar
4.2-DEVELOPMENT-SNAPSHOT-2018-05-10-a
Avatar
swiftTensorflow BOT 5/12/2018 1:20 AM
DEVELOPMENT-2018-05-10-a
Avatar
Kishikawa Katsumi 5/12/2018 2:23 AM
@swiftbot $install -l
Avatar
swiftbot BOT 5/12/2018 2:23 AM
swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-11-a swift-DEVELOPMENT-SNAPSHOT-2018-05-11-a swift-DEVELOPMENT-SNAPSHOT-2018-05-10-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-10-a swift-DEVELOPMENT-SNAPSHOT-2018-05-08-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-08-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-02-a swift-4.1.1-RELEASE swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a swift-DEVELOPMENT-SNAPSHOT-2018-04-24-a ...
Avatar
@swift-4.1.3 import Foundation protocol Operand: Numeric {} typealias Operator<Value: Operand> = (Value, Value) -> Value indirect enum Node<Value: Operand> { case v(Value) case op(Node<Value>, Operator<Value>, Node<Value>) func evaluate() -> Value { switch self { case .v(let value): return value case .op(let operand1, let `operator`, let operand2): return `operator`(operand1.evaluate(), operand2.evaluate()) } } } extension Int: Operand {} extension Node: ExpressibleByIntegerLiteral where Value == Int { typealias IntegerLiteralType = Int init(integerLiteral value: Value) { self = .v(value) } } let root: Node<Int> = .op(1, +, .op(2, *, 3)) print(root.evaluate()) (edited)
Avatar
7 (edited)
Avatar
@swiftbot import Foundation print(TimeZone(abbreviation: "JST"))
🛠 1
Avatar
swiftbot BOT 5/16/2018 2:59 AM
Author icon
t.ae
import Foundation print(TimeZone(abbreviation: "JST"))
Version:
swift-4.1.1-RELEASE
Output:
Optional(Asia/Tokyo (fixed))
Error:
/usercode/main.swift:2:7: warning: expression implicitly coerced from 'TimeZone?' to Any print(TimeZone(abbreviation: "JST")) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usercode/main.swift:2:7: note: provide a default value to avoid this warning print(TimeZone(abbreviation: "JST")) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ?? <#default value#> /usercode/main.swift:2:7: note: force-unwrap the value to avoid this warning print(TimeZone(abbreviation: "JST")) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! /usercode/main.swift:2:7: note: explicitly cast to Any with 'as Any' to silence this warning print(TimeZone(abbreviation: "JST")) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ as Any
Avatar
@swiftbot import Foundation import CoreFoundation print(CFTimeZoneCopyAbbreviationDictionary())
🛠 1
Avatar
swiftbot BOT 5/16/2018 3:39 AM
Author icon
t.ae
import Foundation import CoreFoundation print(CFTimeZoneCopyAbbreviationDictionary())
Version:
swift-4.1.1-RELEASE
Output:
Error:
Fatal error: customMirror is not yet implemented: file Foundation/NSDictionary.swift, line 691 /usr/bin/swift[0x3f24d64] /usr/bin/swift[0x3f250a6] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fa9e279b390] /usr/lib/swift/linux/libswiftCore.so(+0x2baf79)[0x7fa9dd9d9f79] /usr/lib/swift/linux/libswiftCore.so(_T0s17_assertionFailures5NeverOs12StaticStringV_SSAE4fileSu4lines6UInt32V5flagstF+0x2c)[0x7fa9dd86c46c] /usr/lib/swift/linux/libFoundation.so(+0x50438f)[0x7fa9dc5b238f] /usr/lib/swift/linux/libFoundation.so(+0x50425a)[0x7fa9dc5b225a] /usr/lib/swift/linux/libFoundation.so(+0x41451b)[0x7fa9dc4c251b] /usr/lib/swift/linux/libswiftCore.so(+0x2f3af8)[0x7fa9dda12af8] /usr/lib/swift/linux/libswiftCore.so(+0x2f5221)[0x7fa9dda14221] /usr/lib/swift/linux/libswiftCore.so(+0x34d751)[0x7fa9dda6c751] /usr/lib/swift/linux/libswiftCore.so(+0x34e72e)[0x7fa9dda6d72e] /usr/lib/swift/linux/libswiftCore.so(+0x21ee99)[0x7fa9dd93de99] ...
3:39 AM
Avatar
@swiftbot import Foundation let date = Date() let timeZone = TimeZone(secondsFromGMT: 0)! let cal = Calendar(identifier: .gregorian) let comp = cal.dateComponents(in: timeZone, from: date) print(comp.second) print(comp.nanosecond)
🛠 1
Avatar
swiftbot BOT 5/16/2018 3:56 AM
Author icon
t.ae
import Foundation let date = Date() let timeZone = TimeZone(secondsFromGMT: 0)! let cal = Calendar(identifier: .gregorian) let comp = cal.dateComponents(in: timeZone, from: date) print(comp.second) print(comp.nanosecond)
Version:
swift-4.1.1-RELEASE
Output:
Optional(14) nil
Error:
/usercode/main.swift:7:7: warning: expression implicitly coerced from 'Int?' to Any print(comp.second) ^~~~~~~~~~~ /usercode/main.swift:7:12: note: provide a default value to avoid this warning print(comp.second) ~~~~~^~~~~~ ?? <#default value#> /usercode/main.swift:7:12: note: force-unwrap the value to avoid this warning print(comp.second) ~~~~~^~~~~~ ! /usercode/main.swift:7:12: note: explicitly cast to Any with 'as Any' to silence this warning print(comp.second) ~~~~~^~~~~~ as Any /usercode/main.swift:8:7: warning: expression implicitly coerced from 'Int?' to Any print(comp.nanosecond) ^~~~~~~~~~~~~~~ /usercode/main.swift:8:12: note: provide a default value to avoid this warning print(comp.nanosecond) ~~~~~^~~~~~~~~~ ?? <#default value#> /usercode/main.swift:8:12: note: force-unwrap the value to avoid this warning print(comp.nanosecond) ~~~~~^~~~~~~~~~ ...
3:56 AM
Avatar
@swiftbot import Foundation import RxSwift class Hoge: NSObject {} extension Reactive where Base == Hoge { class Piyo {} var hoge: Observable<Int> { return Observable.create { observer in var piyo = Piyo() observer.onNext(42) return Disposables.create {} } } } let hoge = Hoge() hoge.rx.hoge.subscribe(onNext: { res in print(res) }) (edited)
🛠 1
Avatar
(edited)
Author icon
Biacco42
import Foundation import RxSwift class Hoge: NSObject {} extension Reactive where Base == Hoge { class Piyo {} var hoge: Observable<Int> { return Observable.create { observer in var piyo = Piyo() observer.onNext(42) return Disposables.create {} } } } let hoge = Hoge() hoge.rx.hoge.subscribe(onNext: { res in print(res) })
Version:
swift-4.1.1-RELEASE
Output:
42
Error:
/usercode/main.swift:10:17: warning: initialization of variable 'piyo' was never used; consider replacing with assignment to '_' or removing it var piyo = Piyo() ~~~~^~~~ _ /usercode/main.swift:19:14: warning: result of call to 'subscribe(onNext:onError:onCompleted:onDisposed:)' is unused hoge.rx.hoge.subscribe(onNext: { res in ^ ~~~~~~~~~~~~~~~~~
Avatar
@swiftbot --help
10:26 AM
@swiftbot help
Avatar
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
@swiftbot contribute
Avatar
Contributions Welcome!
All contributions (no matter if small) are always welcome.
Avatar
@swiftbot import RxSwift
🛠 1
Avatar
Author icon
omochimetaru
import RxSwift
Version:
swift-4.1.1-RELEASE
Output:
Error:
Avatar
@swiftbot versions
Avatar
2018-05-08-a 2018-05-02-a 2018-04-25-a 2018-04-23-a 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
@swiftbot --version=4.1,4.0.3,3.1.1,3.0.2 import RxSwift
🛠 1
Avatar
Author icon
omochimetaru
import RxSwift
Version:
swift-4.1-RELEASE
Output:
Error:
/usercode/main.swift:1:8: error: no such module 'RxSwift' import RxSwift ^
Version:
swift-4.0.3-RELEASE
Output:
Error:
/usercode/main.swift:1:8: error: no such module 'RxSwift' import RxSwift ^
Version:
swift-3.1.1-RELEASE
Output:
Error:
/usercode/main.swift:1:8: error: no such module 'RxSwift' import RxSwift ^
Version:
swift-3.0.2-RELEASE
Output:
Error:
/usercode/main.swift:1:8: error: no such module 'RxSwift' import RxSwift ^
Avatar
バージョン違いで壊れるのデモしたかったけどできなかた
Avatar
Kishikawa Katsumi 5/16/2018 11:20 AM
外部フレームワークは特定のバージョンにしか入れてないんですよね。予定はあってやり方も頭の中にはあるんですけど。
11:22 AM
特に過去のバージョンにリンクさせるにはまずSwift 3.xで動くバージョンはどれなのかというところをやらないといけないのでそれが面倒に思っています。Snapshotで動かすのは最新のリリースかmasterでいいと思うんですけど。
Avatar
Kishikawa Katsumi 5/16/2018 11:31 AM
今考えてるのは https://github.com/kishikawakatsumi/swift-playground/tree/master/Libraries/All ^ ここを4.1.1/Libraries/*3.0.2/Libraries/* ... のようにディレクトリでバージョニングして、それぞれのPackage.swiftでそのバージョンで使うライブラリを指定するって感じに改修ですね。 そうすると使う方(Botのプログラム)で -L ${SWIFT_VERSION}/Libraries/All のように切り替えられるのでうまくいくと思うんでなんだったらPRしてくれると 😄 です (edited)
Contribute to swift-playground development by creating an account on GitHub.
👀 1
Avatar
4.2-DEVELOPMENT-SNAPSHOT-2018-05-14-a
Avatar
@swiftbot --version=4.1,4.0,3.1.1 import Foundation protocol EnumCollection: Hashable { static var all: [Self] { get } } extension EnumCollection { static func cases() -> AnySequence<Self> { typealias SelfType = Self return AnySequence { () -> AnyIterator<SelfType> in var raw = 0 return AnyIterator { let current: Self = withUnsafePointer(to: &raw) { $0.withMemoryRebound(to: SelfType.self, capacity: 1) { $0.pointee } } guard current.hashValue == raw else { return nil } raw += 1 return current } } } static var all: [Self] { return Array(self.cases()) } } enum SampleEnum: String, EnumCollection { case hoge = "hoge" case foo case bar = "BAR" } print(SampleEnum.all) (edited)
🛠 1
Avatar
swiftbot BOT 5/17/2018 2:44 AM
(edited)
Author icon
noppe
import Foundation protocol EnumCollection: Hashable { static var all: [Self] { get } } extension EnumCollection { static func cases() -> AnySequence<Self> { typealias SelfType = Self return AnySequence { () -> AnyIterator<SelfType> in var raw = 0 return AnyIterator { let current: Self = withUnsafePointer(to: &raw) { $0.withMemoryRebound(to: SelfType.self, capacity: 1) { $0.pointee } } guard current.hashValue == raw else { return nil } raw += 1 return current } } } static var all: [Self] { return Array(self.cases()) } } enum SampleEnum: String, EnumCollection { case hoge = "hoge" case foo case bar = "BAR" } print(SampleEnum.all)
Version:
swift-4.1-RELEASE
Output:
[main.SampleEnum.hoge, main.SampleEnum.foo, main.SampleEnum.bar]
Error:
Version:
swift-4.0-RELEASE
Output:
[main.SampleEnum.hoge, main.SampleEnum.foo, main.SampleEnum.bar]
Error:
Version:
swift-3.1.1-RELEASE
Output:
[main.SampleEnum.hoge, main.SampleEnum.foo, main.SampleEnum.bar]
Error:
Avatar
swiftNightly BOT 5/18/2018 1:32 AM
DEVELOPMENT-SNAPSHOT-2018-05-17-a
Avatar
4.1-DEVELOPMENT-SNAPSHOT-2018-05-17-a
Avatar
4.2-DEVELOPMENT-SNAPSHOT-2018-05-14-a
Avatar
norio_nomura 5/18/2018 1:35 AM
スナップショットのDockerイメージ作成からDiscordボットの更新まで自動化出来た。
1:35 AM
tensorflowを除いて。
Avatar
omochimetaru 5/18/2018 1:48 AM
@swift-main -v (edited)
Avatar
swiftNightly BOT 5/18/2018 1:48 AM
stderr:Swift version 4.2-dev (LLVM c30b3a99bf, Clang 1bc45fa980, Swift e96fcee6cd) Target: x86_64-unknown-linux-gnu /usr/bin/lldb --repl=-disable-objc-interop error: failed to launch REPL process: process launch failed: 'A' packet returned an error: 8 (edited)
Avatar
norio_nomura 5/18/2018 1:53 AM
@swift-main @swift-4.2.4 -version (edited)
Avatar
swiftNightly BOT 5/18/2018 1:53 AM
Swift version 4.2-dev (LLVM c30b3a99bf, Clang 1bc45fa980, Swift e96fcee6cd) Target: x86_64-unknown-linux-gnu (edited)
Avatar
Swift version 4.2-dev (LLVM ae60dc0632, Clang 91ee593a0d, Swift f58f5286fd) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 5/18/2018 1:54 AM
nightlyはmasterブランチから来てます。
1:56 AM
今のswift41はスナップショットになってます。
1:56 AM
@swift-4.1.3 --version
Avatar
Swift version 4.1.2-dev (LLVM 1a7347a5f0, Clang cd84be6c42, Swift 0b46ecacfe) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 5/18/2018 3:14 AM
@swift-tensorflow format --help
Avatar
swiftTensorflow BOT 5/18/2018 3:14 AM
exit status: 1 with stdout:OVERVIEW: Swift Format Tool USAGE: swift [options] <inputs> DEBUG/DEVELOPMENT OPTIONS: -driver-always-rebuild-dependents Always rebuild dependents of files that have been modified -driver-batch-seed <value> Use the given seed value to randomize batch-mode partitions -driver-print-actions Dump list of actions to perform -driver-print-bindings Dump list of job inputs and outputs -driver-print-derived-output-file-map Dump the contents of the derived output file map -driver-print-jobs Dump list of jobs to execute -driver-print-output-file-map Dump the contents of the output file map -driver-show-incremental With -v, dump information about why files are being rebuilt -driver-show-job-lifecycle Show every step in the lifecycle of driver jobs -driver-skip-execution Skip execution of subtasks when performing compilation -driver-use-filelists Pass input files as filelists whenever possible -driver-use-frontend-path <value> Use the given executable to perform compilations MODES: -dump-ast Parse and type-check input file(s) and dump AST(s) -dump-interface-hash Parse input file(s) and dump interface token hash(es) -dump-parse Parse input file(s) and dump AST(s) -dump-scope-maps <expanded-or-list-of-line:column> Parse and type-check input file(s) and dump the scope map(s) -dump-type-refinement-contexts Type-check input file(s) and dump type refinement contexts(s) -emit-assembly Emit assembly file(s) (-S) -emit-bc Emit LLVM BC file(s) -emit-executable Emit a linked executable -emit-imported-modules Emit a list of the imported modules -emit-ir Emit LLVM IR file(s) -emit-library Emit a linked libra
Avatar
norio_nomura 5/18/2018 3:15 AM
swift-tensorflowにはgoogleのswift-formatが入ってるぽい? (edited)
3:15 AM
@swift-main format --help
Avatar
swiftNightly BOT 5/18/2018 3:15 AM
OVERVIEW: Swift Format Tool USAGE: swift [options] <inputs> OPTIONS: -help Display available options -in-place Overwrite input file with formatted file. -indent-switch-case Indent cases in switch statements. -indent-width <n> Number of characters to indent. -line-range <n:n> <start line>:<end line>. Formats a range of lines (1-based). Can only be used with one input file. -o <file> Write output to <file> -tab-width <n> Width of tab character. -use-tabs Use tabs for indentation.
Avatar
@swift-4.2.4 for _ in 0..<10 { print(Int.random(in: 0..<10)) }
Avatar
6 9 3 1 5 3 2 9 4 5
Avatar
norio_nomura 5/20/2018 9:57 AM
Vapor3をインポートできる様になりました。 @swift-4.1.3 import Vapor let app = try Application() let client = try app.make(Client.self) let response = try client.get("http://www.apple.com/").wait() print(response.http.status)
Avatar
ok
Avatar
Vapor3が依存するSwiftNIOも。 @swift-4.1.3 import NIO struct E: Error {} let eventLoop = EmbeddedEventLoop() let promises: [EventLoopPromise<Void>] = (0..<100).map { (_: Int) in eventLoop.newPromise() } let futures = promises.map { $0.futureResult } let fN: EventLoopFuture<Void> = EventLoopFuture<Void>.andAll(futures, eventLoop: eventLoop) _ = promises.map { $0.fail(error: E()) } do { () = try fN.wait() print("should've thrown an error") } catch _ as E { print("good") } catch let e { print("error of wrong type \(e)") }
Avatar
good
Avatar
Cのソースを含むパッケージをビルドしておいてインポートする場合、SwiftPM(llbuild)がモジュールをビルドする際にswiftcへ渡すオプションを.build/debug.yamlから取り出して、それを渡すと良い。 https://github.com/norio-nomura/SwiftCompilerDiscordappBot/blob/8962b0dec3723876b2ac8a105653fce8567025eb/Sources/SwiftCompilerDiscordappBot/App.swift#L201-L207 (edited)
SwiftCompilerDiscordappBot - Swift Compiler Discordapp Bot
Avatar
@swiftbot --version=4.0,3.1.1 class A { init(a: A) { } } class B: A { init() { super.init(a: self) } }
Avatar
おや?
Avatar
ステータスがグレーだ
Avatar
@swift-main @swift-4.0.3 class A { init(a: A) { } } class B: A { init() { super.init(a: self) } }
Avatar
exit status: 1 with stderr:<stdin>:8:23: error: 'self' used before super.init call super.init(a: self) ^
Avatar
swiftNightly BOT 5/21/2018 10:08 AM
stderr:<stdin>:8:15: error: 'self' used before 'super.init' call super.init(a: self) ^
Avatar
3系だと渡せるん?
Avatar
swift3だと通りますこれ
10:09 AM
10:09 AM
webは生きてた
Avatar
どっかで話題を見たような気もする Bにstored propery作ってB.initの中で渡されたAのそれを触ると死にそう
10:12 AM
あいや、ちがうな、それは変だ
10:15 AM
class A { init(a: B) {} } class B: A { var s: String init() { self.s = "aaa" super.init(a: self) } }
10:16 AM
0. Program arguments: /usr/bin/swift -frontend -interpret /usercode/main.swift -disable-objc-interop -module-name main 1. While running pass #34 SILFunctionTransform "Definite Initialization" on SILFunction "@_TFC4main1BcfT_S0_". Aborted (core dumped)
Avatar
class A { let hoge: C init(a: B) { a.foo() self.hoge = .init() } } class C {} class B: A { init() { super.init(a: self) } func foo() { print(self.hoge) } } B.init().foo() 壊した!
Avatar
Kishikawa Katsumi 5/21/2018 2:36 PM
@swiftbot
2:36 PM
Botだけ落ちてる?死活監視はWebしか入れてないから気づかなかったのか。
2:38 PM
@swiftbot
Avatar
swiftbot BOT 5/21/2018 2:38 PM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
Kishikawa Katsumi 5/21/2018 2:39 PM
DigitalOceanのメンテナンスは関係あるかな。Webと一緒のホストだからWebだけ生きてるということはこちら側の問題だと思うけど。
Avatar
norio_nomura 5/22/2018 2:11 AM
そういえば少し前に、僕のbotもいくつか勝手にオフラインになってたかも。手動で再起動した気がする。
Avatar
Kishikawa Katsumi 5/22/2018 2:53 AM
Botの死活監視は良い方法ありますかね。
2:53 AM
Swiftイメージのアップデートを自動化したらそれでわかるか。
Avatar
norio_nomura 5/22/2018 3:12 AM
ボット関連の通知(DockerHubへのpush, Herokuのbuild)は、webhook経由で管理用Discordチャンネルへ投稿して、それをiOSのプッシュ通知で受け取ってる。
3:13 AM
ボットがオフラインになったかどうか?の監視は、ボットを監視するボットを作って、それにメールを送らせるとかさせれば良いのかな。
3:16 AM
Need a Bot to monitor the status of your server Bots and notify you if any Bots go offline? Try WatchBot... I mean Watchman (Bot)
Avatar
Kishikawa Katsumi 5/22/2018 3:17 AM
あるんだ。これを入れたら我々のbotを全部監視してもらえるかな?
Avatar
norio_nomura 5/22/2018 3:22 AM
それのソースコードを探したけど、見つけられないな… https://github.com/Anu6is?tab=repositories (edited)
Anu6is has 17 repositories available. Follow their code on GitHub.
Avatar
Kishikawa Katsumi 5/22/2018 3:29 AM
私のBotとのむらさんのBotで監視しあうという手もあるかな。DMで反応を確認するとかでいいんじゃないか。
Avatar
norio_nomura 5/22/2018 3:30 AM
そうね。
Avatar
Kishikawa Katsumi 5/22/2018 3:30 AM
ではそういう内容のPRを近々送るかも(送らないかも)
Avatar
omochimetaru 5/22/2018 3:31 AM
面白いw
Avatar
norio_nomura 5/22/2018 3:35 AM
このイベントをチェックすれば良いのかな。 https://discordapp.com/developers/docs/topics/gateway#presence-update
Integrate your service with Discord - whether it's a bot or a game or your whatever you wildest imagination can come up with.
3:36 AM
特定のユーザーが特定の時間オフラインだったら通知する。
3:36 AM
作るか。
Avatar
norio_nomura 5/22/2018 3:46 AM
通知はメールじゃなくてwebhooksがいいかな?
Avatar
Kishikawa Katsumi 5/22/2018 3:46 AM
Webhookを使えば再起動を自動化できるかな。
Avatar
norio_nomura 5/22/2018 3:53 AM
む、とりあえず、ボット自身がオフライン継続してることを検知したら、iftttの https://ifttt.com/maker_webhooks を呼ぶ様にしようかと。 (edited)
Connect Webhooks to IFTTT, Email, maker_webhooks and more.
3:56 AM
あいや、通知目的ならDiscordチャンネルへの投稿webhooksを呼んだ方が良いかも。
3:57 AM
再起動自動化はどうなんだろう? 🤔
4:01 AM
通知はやっぱり別サービスであるiftttのwebhooksにするか。 (edited)
4:06 AM
iftttのアプレット使えば、herokuの再起動とかも出来そう。
Avatar
@swift-4.2.4 var a = Random.default var b = a print(a.next()) print(b.next())
Avatar
2190522142258413190 6214093798825593358
👍 1
Avatar
@swift-4.2.4 struct LinearCongruentialGenerator : RandomNumberGenerator { private var seed: UInt64 init(seed: UInt64 = 0) { self.seed = seed } mutating func next() -> UInt64 { seed = 6364136223846793005 &* seed &+ 1442695040888963407 return seed } } var a = LinearCongruentialGenerator() var b = a print(a.next()) print(b.next())
Avatar
1442695040888963407 1442695040888963407
Avatar
@swiftbot --version=4.0.3 struct A<T1, T2> {} typealias B<T> = A<Int, T> typealias D = A<Int, Int> protocol C {} extension B: C {}
🛠 1
Avatar
swiftbot BOT 5/24/2018 9:31 AM
Author icon
kateinoigakukun
struct A<T1, T2> {} typealias B<T> = A<Int, T> typealias D = A<Int, Int> protocol C {} extension B: C {}
Version:
swift-4.0.3-RELEASE
Output:
Error:
Avatar
これ、Swift4.1以前からCond confが使えてませんか??
9:32 AM
@swiftbot --version=4.0.3 struct A<T1, T2> {} typealias B<T> = A<Int, T> typealias D = A<Int, Int> protocol C {} extension A: C where T1 == Int {}
🛠 1
Avatar
swiftbot BOT 5/24/2018 9:32 AM
Author icon
kateinoigakukun
struct A<T1, T2> {} typealias B<T> = A<Int, T> typealias D = A<Int, Int> protocol C {} extension A: C where T1 == Int {}
Version:
swift-4.0.3-RELEASE
Output:
Error:
/usercode/main.swift:7:1: error: extension of type 'A' with constraints cannot have an inheritance clause extension A: C where T1 == Int {} ^ ~
Avatar
これが通らないのに上が通るのおかしい気がする
Avatar
typealiasのextensionは壊れてるのがしばしば話題に上がってた気がする
9:34 AM
condconfが出来るように一見見えるが、その実conditionalじゃないやつも拡張されてるし、なんなら壊れてる、みたいな感じです (edited)
Avatar
ヤバですね
9:39 AM
cond confが無い世界で書いてたはずなのに、extension Single: HogeProtocol {} が書けてしまったので。。。
Avatar
ぶっ壊れてそう
Avatar
swift-tensorflow以外はVaporを使える様になりました。 @swift-4.1.3 @swift-4.2.4 @swift-main import Vapor let app = try Application() let client = try app.make(Client.self) let response = try client.get("http://www.apple.com/").wait() print(response.http.status)
Avatar
ok
Avatar
ok
Avatar
swiftNightly BOT 5/24/2018 12:02 PM
ok
Avatar
omochimetaru 5/30/2018 5:53 AM
@swiftbot --versions
Avatar
Kishikawa Katsumi 5/30/2018 5:53 AM
むむ
Avatar
omochimetaru 5/30/2018 5:54 AM
ボットさん、おねむ
Avatar
Kishikawa Katsumi 5/30/2018 5:57 AM
Webは死活監視を入れてて、間違いなくずっと生きていて、Botは少なくともこの何日かは使われてなかったわけなので(DMで使われてたらわからないけど) クラッシュしてるとかじゃないと思うんですよね。 しばらく使ってなかったらInactiveになるとか何か見逃している設定があるのだろうか。
5:58 AM
@swiftbot
Avatar
swiftbot BOT 5/30/2018 5:58 AM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
Kishikawa Katsumi 5/30/2018 5:58 AM
何もしてないけど起きた。
5:58 AM
@swiftbot $install -l
Avatar
swiftbot BOT 5/30/2018 5:58 AM
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-29-a swift-DEVELOPMENT-SNAPSHOT-2018-05-29-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-28-a swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-28-a swift-DEVELOPMENT-SNAPSHOT-2018-05-28-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-27-a swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-27-a swift-DEVELOPMENT-SNAPSHOT-2018-05-27-a swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-26-a ...
Avatar
Kishikawa Katsumi 5/30/2018 5:59 AM
2018-05-29のスナップショットはまだ入ってないので入れます。とりあえずswift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-aでいいんですかね?
5:59 AM
実はDEVELOPMENT-SNAPSHOT-2018-05-29-aしか見てないので、同じ日付のうち、どれか1つしか入りません。
Avatar
omochimetaru 5/30/2018 6:01 AM
ふむふむ
6:02 AM
そうですね、 BundleID が org.swift.4220180529a なのでswift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-aであってそうです
Avatar
Kishikawa Katsumi 5/30/2018 6:02 AM
@swiftbot versions
Avatar
swiftbot BOT 5/30/2018 6:02 AM
2018-05-08-a 2018-05-02-a 2018-04-25-a 2018-04-23-a 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
Kishikawa Katsumi 5/30/2018 6:03 AM
あ、さっきのはBotが寝ていたのではなくて、パラメータが違います、です。
Avatar
omochimetaru 5/30/2018 6:03 AM
あなるほど
Avatar
Kishikawa Katsumi 5/30/2018 6:03 AM
勝手に眠るとかじゃなくてよかった。
6:04 AM
@swiftbot $install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a
Avatar
swiftbot BOT 5/30/2018 6:04 AM
install: missing destination file operand after 'swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a' Try 'install --help' for more information.
Avatar
Kishikawa Katsumi 5/30/2018 6:05 AM
@swiftbot !install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a
6:06 AM
Botを介してシェルを叩くのは万能感が味わえて楽しいんだけど、さっさと自動化すべきですね。
Avatar
swiftbot BOT 5/30/2018 6:07 AM
Sending build context to Docker daemon 89.91MB Step 1/10 : FROM ubuntu:16.04 ---> f975c5035748 Step 2/10 : LABEL maintainer="Katsumi Kishikawa <kishikawakatsumi@mac.com>" ---> Running in a69bfb9db1ab Removing intermediate container a69bfb9db1ab ---> 5ccd5d03a5fe Step 3/10 : LABEL Description="Docker Container for the Apple's Swift programming language" ---> Running in 21f3976de53e Removing intermediate container 21f3976de53e ---> 91e0694f254e Step 4/10 : RUN apt-get -q update && apt-get -q install -y make libc6-dev clang-3.8 curl libedit-dev libpython2.7 libicu-dev libssl-dev libxml2 tzdata git libcurl4-openssl-dev pkg-config && update-alternatives --quiet --install /usr/bin/clang clang /usr/bin/clang-3.8 100 && update-alternatives --quiet --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.8 100 && rm -r /var/lib/apt/lists/* ---> Running in 0599cc52794a Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB] Get:2 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB] Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [80.9 kB] Get:4 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [637 kB] Get:5 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [12.7 kB] Get:6 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [444 kB] Get:7 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [3743 B] Get:8 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] Get:9 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] Get:10 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB] Get:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB] Get:12 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB] ...
64.19 KB
Avatar
Kishikawa Katsumi 5/30/2018 6:11 AM
@swiftbot versions
Avatar
swiftbot BOT 5/30/2018 6:11 AM
2018-05-29-a 2018-05-08-a 2018-05-02-a 2018-04-25-a 2018-04-23-a 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
omochimetaru 5/30/2018 6:11 AM
Avatar
Kishikawa Katsumi 5/30/2018 6:11 AM
@omochimetaru はいりました
Avatar
omochimetaru 5/30/2018 6:11 AM
@swiftbot --version=2018-05-29-a,4.1.1 protocol P0 { init(string: String) } class Animal { init() {} convenience init(string: String) { self.init() } var str1: String = "" } final class Cat : Animal, P0 { var str2: String = "" } func createP0<X: P0>() -> X { return X.init(string: "apple") } let cat: Cat = createP0() print(cat)
🛠 1
Avatar
swiftbot BOT 5/30/2018 6:11 AM
Author icon
omochimetaru
protocol P0 { init(string: String) } class Animal { init() {} convenience init(string: String) { self.init() } var str1: String = "" } final class Cat : Animal, P0 { var str2: String = "" } func createP0<X: P0>() -> X { return X.init(string: "apple") } let cat: Cat = createP0() print(cat)
Version:
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a
Output:
Error:
swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-16_04/swift/lib/IRGen/MetadataLayout.h:208: const swift::irgen::ClassMetadataLayout::StoredMethodInfo &swift::irgen::ClassMetadataLayout::getStoredMethodInfo(swift::SILDeclRef) const: Assertion `it != MethodInfos.end()' failed. /usr/bin/swift[0x40fb264] /usr/bin/swift[0x40f90f2] /usr/bin/swift[0x40fb412] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f549b0bc390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f54997fb428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f54997fd02a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7f54997f3bd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7f54997f3c82] /usr/bin/swift[0x625c26] /usr/bin/swift[0x685385] /usr/bin/swift[0x68579b] /usr/bin/swift[0x5f20f5] /usr/bin/swift[0x5e41c8] /usr/bin/swift[0x5e216e] /usr/bin/swift[0x505bcb] /usr/bin/swift[0x5bc277] /usr/bin/swift[0x5baa10] /usr/bin/swift[0x4f6c37] /usr/bin/swift[0x4ddb8b] /usr/bin/swift[0x4d8eb1] ...
Version:
swift-4.1.1-RELEASE
Output:
main.Cat
Error:
6:11 AM
Avatar
omochimetaru 5/30/2018 6:11 AM
確認できた〜w
6:12 AM
0529でコンパイラクラッシュ、4.1.1リリースは大丈夫。
Avatar
norio_nomura 5/30/2018 7:10 AM
僕のbotは自動更新されてます。
Avatar
omochimetaru 5/30/2018 7:10 AM
@swift-main --version (edited)
Avatar
swiftNightly BOT 5/30/2018 7:10 AM
Swift version 4.2-dev (LLVM 6a6f279fed, Clang 8c9b467e0e, Swift 1a317f4712) Target: x86_64-unknown-linux-gnu (edited)
Avatar
omochimetaru 5/30/2018 7:11 AM
プレイ中のゲームか
7:11 AM
右ペインの幅が足りなくて見切れてるけど右クリックしたら見れた
7:12 AM
シングルクリックでもよいか
Avatar
botのロール?あったら見やすくないですか?
7:13 AM
@t.ae 右でbotだけまとめるってこと?
Avatar
adminのしたあたりにまとまってたらみやすいかなと
Avatar
omochimetaru 5/30/2018 7:14 AM
たしかに。システム側でついてる [BOT] とは別で二重になっちゃうけど
7:16 AM
やってみた
👍 2
Avatar
norio_nomura 5/30/2018 7:16 AM
きしかわさんのbotが漏れてる
Avatar
omochimetaru 5/30/2018 7:17 AM
aaa
7:17 AM
OK
Avatar
Discord 再起動したら過去の bot の発言も緑になった。
7:24 AM
どうせなら Swift オレンジでもいいかも。↓のオレンジ。 https://swift.org/assets/images/swift.svg
Avatar
omochimetaru 5/30/2018 7:24 AM
swiftのbotとは限らないかなと思って。
Avatar
#EF5138 らしい。
7:24 AM
swift-developers-japan の bot だしいいのでは。 (edited)
Avatar
omochimetaru 5/30/2018 7:27 AM
やってみた
👍 1
Avatar
Kishikawa Katsumi 5/30/2018 7:32 AM
いろいろ機能があるんですね。
7:32 AM
ユーザーごとにミュートしたりできるのか。
Avatar
omochimetaru 5/30/2018 7:34 AM
ボイスチャットでうるさい人を個人的にミュートしたりできるやつですね
Avatar
Kishikawa Katsumi 5/30/2018 7:42 AM
それは合理的ですね。
Avatar
せっかくやってもらったけど、オレンジは輝度が低すぎてダークテーマだと少し読みづらい?他の人が特に気にならないようなら僕は問題ないですが。
Avatar
Kishikawa Katsumi 6/1/2018 10:01 AM
MacHostのBotあったら便利かな。ここで使われるくらいの頻度なら家に余ってるMacBookProで動かしても良さそう。
Avatar
うーん、便利か便利でないかで言えばあれば便利だとは思いますが、 Mac は基本的に手元で試せますし、 Bot に実行させたいのは Linux との挙動の違いを動かして共有したい場合くらいなので、なくても(さっきみたいに)結果貼れば十分なような気もします。
Avatar
omochimetaru 6/1/2018 10:11 AM
手元環境は人によって違うのが微妙で、 信頼できる再現結果としてもbotが便利で、 その点Linuxしか無いのは不便なので、 自分はあったらとても嬉しい。
Avatar
norio_nomura 6/1/2018 10:46 PM
@swift-4.1.3 -version
Avatar
Swift version 4.1.2 (swift-4.1.2-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
SwiftBacktraceをインポートできる様にしました。 @swift-4.1.3 import Foundation import SwiftBacktrace handle(signal: SIGABRT) { signo in fputs(backtrace().joined(separator: "\n") + "\nsignal: \(signo)", stderr) fflush(stderr) } abort()
Avatar
exit status: 134 with stderr:/Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(callStackSymbols<A>(_:transform:)+0x87) [0x00007f899fa2d567] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(backtrace(_:formatter:)+0xd8) [0x00007f899fa2ce98] -(+0x0) [0x00007f89a790d175] -(+0x0) [0x00007f89a790d410] /lib/x86_64-linux-gnu/libpthread.so.0(__restore_rt+0x0) [0x00007f89a74dd390] -(+0x0) [0x00007ffdd962fcb0] signal: 6
Avatar
@swift-4.2.4 do { class A { let title: String init(title: String) { self.title = title } } let a1 = A(title: "Hello") print(a1.title) }
Avatar
Hello
Avatar
@swiftbot --latest do { class A { let title: String init(title: String) { self.title = title } } let a1 = A(title: "Hello") print(a1.title) }
🛠 1
Avatar
swiftbot BOT 6/15/2018 4:18 AM
Author icon
Ohta
do { class A { let title: String init(title: String) { self.title = title } } let a1 = A(title: "Hello") print(a1.title) }
Version:
swift-4.1.1-RELEASE
Output:
Hello
Error:
Avatar
@swift-main do { class A { let title: String init(title: String) { self.title = title } } let a1 = A(title: "Hello") print(a1.title) }
Avatar
swiftNightly BOT 6/15/2018 4:19 AM
Hello
Avatar
(ふむ。。4.2で問題なく実行されますね。Xcode 10.0 beta の Playground だと class Aを init()したところで error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=EXC_I386_GPFLT). になります🤔
Avatar
Xcode 10 beta 1添付のSwift 4.2でもREPLだと動くので、Xcode 10 beta 1のPlaygroundに問題があるみたいですね。
😀 1
Avatar
ほんとだ。REPLだと問題なく実行されますね。ありがとうございます 🙇 Welcome to Apple Swift version 4.2 (swiftlang-1000.0.16.4 clang-1000.0.25.3). (edited)
Avatar
@swiftbot --version=2018-06-18-a,4.1.1 protocol A { associatedtype C = B } struct B {} struct D<T>: A {} extension D where T: A { typealias C = T.C }
🛠 1
Avatar
Author icon
kateinoigakukun
protocol A { associatedtype C = B } struct B {} struct D<T>: A {} extension D where T: A { typealias C = T.C }
Version:
⚠️ 2018-06-18-a
Error:
Swift '2018-06-18-a' toolchain is not supported.
Version:
swift-4.1.1-RELEASE
Output:
Error:
Can't demangle: _T0Xe1C4main1APqaMa /usr/bin/swift[0x3f24d64] /usr/bin/swift[0x3f250a6] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f80fc8ab390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f80fafea428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f80fafec02a] /usr/bin/swift[0x1752665] /usr/bin/swift[0x17522cf] /usr/bin/swift[0x5f6e5f] /usr/bin/swift[0x5f6527] /usr/bin/swift[0x5f5a18] /usr/bin/swift[0x4e7e2c] /usr/bin/swift[0x4ec855] /usr/bin/swift[0x55017e] /usr/bin/swift[0x53dc74] /usr/bin/swift[0x5783d4] /usr/bin/swift[0x577cbd] /usr/bin/swift[0x56e18d] /usr/bin/swift[0x4e5c60] /usr/bin/swift[0x5ad73f] /usr/bin/swift[0x5abf9d] /usr/bin/swift[0x4d878b] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] /usr/bin/swift[0x4778c4] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f80fafd5830] /usr/bin/swift[0x475179] Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret /usercode/main.swift -disable-objc-interop -module-name main ...
11:32 AM
Avatar
これはコンパイルできるべき?
Avatar
変なエラーだ
11:35 AM
普通だったらDのconform Aはこのextensionに書きそうなパターンだね (edited)
11:36 AM
これ自体が正当なのかはよくわからないけど・・・,
Avatar
struct Path<T1, T2> {} protocol PathConstructorType { associatedtype T1 associatedtype T2 associatedtype PathType = Path<T1, T2> } struct PathConstructor<T1, T2>: PathConstructorType { func create(path: [String]) -> PathType { fatalError() } } extension PathConstructor where T2: PathConstructorType { typealias PathType = Path<T1, T2.PathType> } 実際のコードはこんな感じで、PathConstructor<T1, PathConstructor<T2, T3>>Path<T1, Path<T2, T3>> に変換するために再帰させたいなーと
Avatar
なんとなく、assoctypeの確定とconformは同時でないといけない気がしている。
Avatar
where 付き extensionで associatedtype を上書きですかー。 (edited)
11:46 AM
@swiftbot --version=2018-05-29-a,4.1.1 struct A { } struct B { } protocol P { associatedtype Assoc = A } struct S<T>: P { } extension S where T == Int { typealias Assoc = B } print(S<String>.Assoc()) (edited)
🛠 1
Avatar
(edited)
Author icon
rintaro
struct A { } struct B { } protocol P { associatedtype Assoc = A } struct S<T>: P { } extension S where T == Int { typealias Assoc = B } print(S<String>.Assoc())
Version:
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a
Output:
B()
Error:
Version:
swift-4.1.1-RELEASE
Output:
B()
Error:
Avatar
うまく動いてないことだけは確かだ。
Avatar
@swiftbot --version=2018-05-29-a,4.1.1 protocol P { typealias Assoc = A } struct A {} struct B: P { typealias Assoc = Int } struct S<T>: P {} extension S where T: P { typealias Assoc = T.Assoc } print(type(of: S<B>.Assoc.self)) (edited)
🛠 1
Avatar
(edited)
Author icon
kateinoigakukun
protocol P { typealias Assoc = A } struct A {} struct B: P { typealias Assoc = Int } struct S<T>: P {} extension S where T: P { typealias Assoc = T.Assoc } print(type(of: S<B>.Assoc.self))
Version:
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-05-29-a
Output:
A.Type
Error:
Version:
swift-4.1.1-RELEASE
Output:
A.Type
Error:
Avatar
@swift-main protocol P { typealias Assoc = A } struct A {} struct B: P { typealias Assoc = Int } struct S<T>: P {} extension S where T: P { typealias Assoc = T.Assoc } print(type(of: S<B>.Assoc.self))
Avatar
swiftNightly BOT 6/19/2018 12:00 PM
A.Type
Avatar
サポートされるべきか否かはともかく、意図しない動きなのは確かなので、イシュー上げておいたほうが良いと思います。
Avatar
そうですねー。上げておきます。
🙏 1
12:05 PM
Parameterized extensionsが入ればprotocolのconformで迂回する必要が無くなるので治るかも
Avatar
@Yuta Saito
PathConstructor<T1, PathConstructor<T2, T3>>Path<T1, Path<T2, T3>> に変換するために再帰させたいなーと
本来やりたいのは↓のようなことということですか? struct Path<T1, T2> {} struct PathConstructor<T1, T2> { func create(path: [String]) -> Path<T1, T2> { fatalError() } } extension<T3, T4> PathConstructor where T2 == PathConstructor<T3, T4> { func create(path: [String]) -> Path<T1, Path<T3, T4>> { fatalError() } }
Avatar
@koher ちょっと僕の言葉が足りてなかったです。 Tnまで再帰させたかったんで、parameterized exを使うとこんな感じです struct Path<T1, T2> {} struct PathConstructor<T1, T2> { typealias PathType = Path<T1, T2> } extension<T3, T4> PathConstructor where T2 == PathConstructor<T3, T4> { typealias PathType = Path<T1, T2.PathType> } extension PathConstructor { func create(path: [String]) -> PathType { fatalError() } } (edited)
3:52 AM
あー、extension でtypealias 上書き出来ないか
Avatar
@Yuta Saito 最近、 Parameterized Extension が必要と思われていたものが、なしで実装できたケースがあったのでもしかしたらと思ったんですが・・・。 @swiftbot extension Optional { func flatten<T>() -> T? where Wrapped == T? { return flatMap { $0 } } } let a: Int?? = .some(.some(42)) let b: Int? = a.flatten() print(String(describing: b)) (edited)
🛠 1
Avatar
swiftbot BOT 6/20/2018 4:04 AM
(edited)
Author icon
koher
extension Optional { func flatten<T>() -> T? where Wrapped == T? { return flatMap { $0 } } } let a: Int?? = .some(.some(42)) let b: Int? = a.flatten() print(String(describing: b))
Version:
swift-4.1.1-RELEASE
Output:
Optional(42)
Error:
Avatar
@koher ジェネリスメソッドのwhere句で回避できるんですね。
5:14 AM
よくよく考えたら今回の問題はparameterized extension ではなくて、型条件によってtypealiasの宣言の形を切り替えられるようにならないといけないのかもしれないです (edited)
5:15 AM
@swiftbot struct A<T> { } extension A where T == Bool { typealias B = String } extension A { typealias B = Int }
🛠 1
Avatar
swiftbot BOT 6/20/2018 5:15 AM
Author icon
kateinoigakukun
struct A<T> { } extension A where T == Bool { typealias B = String } extension A { typealias B = Int }
Version:
swift-4.1.1-RELEASE
Output:
Error:
/usercode/main.swift:7:13: error: invalid redeclaration of 'B' typealias B = Int ^ /usercode/main.swift:4:13: note: 'B' previously declared here typealias B = String ^
Avatar
要はこれが通るようになってほしいという話でした
Avatar
それでいうとそもそもprotocol+assoctypeをもう一個外側に定義しないとだめだと思う
5:17 AM
genericsでtypealias切り替えはちょっと無理筋
5:17 AM
っぽい
Avatar
@swiftbot protocol P { associatedtype T1 associatedtype T2 } extension P where T1 == Int { typealias T2 = String } struct A<T>: P { typealias T1 = T } print(A<String>.T2.self)
🛠 1
Avatar
swiftbot BOT 6/20/2018 5:22 AM
Author icon
kateinoigakukun
protocol P { associatedtype T1 associatedtype T2 } extension P where T1 == Int { typealias T2 = String } struct A<T>: P { typealias T1 = T } print(A<String>.T2.self)
Version:
swift-4.1.1-RELEASE
Output:
String
Error:
Avatar
@tarunon こういうことですか?
Avatar
T2を定義する型は分離しておいて、A: HasT2 where T == Intかな
Avatar
@swiftbot protocol P { associatedtype T1 } protocol HasT2 { associatedtype T2 } struct A<T>: P { typealias T1 = T } extension A: HasT2 where T == Int { typealias T2 = String } print(A<String>.T2.self)
🛠 1
Avatar
swiftbot BOT 6/20/2018 5:31 AM
Author icon
kateinoigakukun
protocol P { associatedtype T1 } protocol HasT2 { associatedtype T2 } struct A<T>: P { typealias T1 = T } extension A: HasT2 where T == Int { typealias T2 = String } print(A<String>.T2.self)
Version:
swift-4.1.1-RELEASE
Output:
String
Error:
Avatar
なんじゃこりゃ
Avatar
あれ、何これは、、、
Avatar
@swiftbot protocol P { associatedtype T1 } protocol HasT2 { associatedtype T2 } struct A<T>: P { typealias T1 = T } extension A: HasT2 where T == Int { typealias T2 = String } func f<A: HasT2>(_ a: A.Type) {} f(A<String>.self)
🛠 1
Avatar
swiftbot BOT 6/20/2018 5:32 AM
Author icon
kateinoigakukun
protocol P { associatedtype T1 } protocol HasT2 { associatedtype T2 } struct A<T>: P { typealias T1 = T } extension A: HasT2 where T == Int { typealias T2 = String } func f<A: HasT2>(_ a: A.Type) {} f(A<String>.self)
Version:
swift-4.1.1-RELEASE
Output:
Error:
/usercode/main.swift:15:1: error: 'String' is not convertible to 'Int' f(A<String>.self) ^
Avatar
これは正しい
Avatar
where無視してtypealiasが生えてる?
5:40 AM
あー、だからwhereの条件下のみで使える型をtypealiasに使うとコンパイラクラッシュするのか 昨日のrintaroさんのコードの意図読み間違えてたな (edited)
Avatar
@swift-4.2.4 protocol A { associatedtype X } protocol B { associatedtype Y } protocol C { associatedtype Y } struct M<T>: A { typealias X = T } extension M: B where X == Int { typealias Y = Int } extension M: C where X == String { typealias Y = String }
Avatar
exit status: 1 with stderr:<stdin>:21:15: error: invalid redeclaration of 'Y' typealias Y = String ^ <stdin>:17:15: note: 'Y' previously declared here typealias Y = Int ^ <stdin>:16:1: error: type 'M<T>' does not conform to protocol 'B' extension M: B where X == Int { ^ <stdin>:5:20: note: multiple matching types named 'Y' associatedtype Y ^ <stdin>:17:15: note: possibly intended match typealias Y = Int ^ <stdin>:21:15: note: possibly intended match typealias Y = String ^ <stdin>:20:1: error: type 'M<T>' does not conform to protocol 'C' extension M: C where X == String { ^ <stdin>:9:20: note: multiple matching types named 'Y' associatedtype Y ^ <stdin>:17:15: note: possibly intended match typealias Y = Int ^ <stdin>:21:15: note: possibly intended match typealias Y = String ^
Avatar
だめなんやなぁ
5:54 AM
根っこから具体型分けるのが健全すね
5:54 AM
仕方ない
Avatar
@swift-4.2.4 let a: Float80 = 0
Avatar
no output
Avatar
norio_nomura 6/27/2018 3:27 AM
コンパイラクラッシュ https://bugs.swift.org/browse/SR-8119 で更新できていなかったnightlyを久しぶりに更新。 @swift-main import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
swiftNightly BOT 6/27/2018 3:27 AM
DEVELOPMENT-SNAPSHOT-2018-06-26-a
Avatar
@swift-4.1.3
Avatar
Usage: @swift41 [SWIFT_OPTIONS] `​`​`​ [Swift Code] `​`​`​
Avatar
@swift-4.1.3 import Foundation var formatter = ISO8601DateFormatter() formatter.formatOptions = .withFullDate let date = formatter.date(from: "2018-06-30") print(date)
Avatar
Optional(2018-06-30 00:00:00 +0000)stderr:<stdin>:5:7: warning: expression implicitly coerced from 'Date?' to Any print(date) ^~~~ <stdin>:5:7: note: provide a default value to avoid this warning print(date) ^~~~ ?? <#default value#> <stdin>:5:7: note: force-unwrap the value to avoid this warning print(date) ^~~~ ! <stdin>:5:7: note: explicitly cast to Any with 'as Any' to silence this warning print(date) ^~~~ as Any
Avatar
@swift-4.1.3 class A { init() {} convenience init(s: String) { print(self.init()) } } (edited)
Avatar
swift41 BOT 7/3/2018 5:23 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-4.1-package-linux-ubuntu-16_04/swift/lib/Sema/CSApply.cpp:5684: swift::Expr *(anonymous namespace)::ExprRewriter::coerceCallArguments(swift::Expr *, swift::AnyFunctionType *, swift::ApplyExpr *, ArrayRef<swift::Identifier>, bool, swift::constraints::ConstraintLocatorBuilder): Assertion `fromTupleExpr.size() == 1 && fromTupleExpr[0]' failed. #0 0x0000000003f25074 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f25074) #1 0x0000000003f253b6 SignalHandler(int) (/usr/bin/swift+0x3f253b6) #2 0x00007f4f34d07390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007f4f33446428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #4 0x00007f4f3344802a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #5 0x00007f4f3343ebd7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbd7) #6 0x00007f4f3343ec82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82) #7 0x0000000001399d4e (anonymous namespace)::ExprRewriter::coerceCallArguments(swift::Expr*, swift::AnyFunctionType*, swift::ApplyExpr*, llvm::ArrayRef<swift::Identifier>, bool, swift::constraints::ConstraintLocatorBuilder) (/usr/bin/swift+0x1399d4e) #8 0x0000000001383604 (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder) (/usr/bin/swift+0x1383604) #9 0x000000000139b0e3 (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) (/usr/bin/swift+0x139b0e3) #10 0x000000000137fbd4 (anonymous namespace)::ExprRewriter::walkToExprPost(swift::Expr*) (/usr/bin/swift+0x137fbd4) #11 0x0000000001385621 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) (/usr/bin/swift+0x1385621) #12 0x000000000167719c swift::Expr::walk(swift::ASTWalker&) (/usr/bin/swift+0x167719c) #13 0x000000000137c7ef swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::Expr*, swift::Type, bool, bool, bool) (/usr/bin/swift+0x137c7ef) #14 0x00000000012c64b6 (edited)
Avatar
Kishikawa Katsumi 7/3/2018 5:24 AM
@swiftbot !install swift-4.2-DEVELOPMENT-SNAPSHOT-2018-07-02-a
Avatar
swiftbot BOT 7/3/2018 5:30 AM
The command '/bin/sh -c SWIFT_URL=https://swift.org/builds/$SWIFT_BRANCH/$(echo "$SWIFT_PLATFORM" | tr -d .)/$SWIFT_VERSION/$SWIFT_VERSION-$SWIFT_PLATFORM.tar.gz && curl -fSsL $SWIFT_URL -o swift.tar.gz && curl -fSsL $SWIFT_URL.sig -o swift.tar.gz.sig && export GNUPGHOME="$(mktemp -d)" && tar -xzf swift.tar.gz --directory / --strip-components=1 && rm -r "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz && chmod -R o+r /usr/lib/swift' returned a non-zero code: 22
Avatar
Kishikawa Katsumi 7/3/2018 5:31 AM
@swiftbot versions
Avatar
swiftbot BOT 7/3/2018 5:31 AM
2018-05-29-a 2018-05-08-a 2018-05-02-a 2018-04-25-a 2018-04-23-a 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
Kishikawa Katsumi 7/3/2018 5:32 AM
@swiftbot public func p(_ items: Any...) {} class A { init() {} convenience init(s: String) { p(self.init()) } }
🛠 1
Avatar
swiftbot BOT 7/3/2018 5:32 AM
Author icon
kishikawakatsumi
public func p(_ items: Any...) {} class A { init() {} convenience init(s: String) { p(self.init()) } }
Version:
swift-4.1.1-RELEASE
Output:
Error:
swift: /home/buildnode/jenkins/workspace/oss-swift-4.1-package-linux-ubuntu-16_04/swift/lib/Sema/CSApply.cpp:5684: swift::Expr *(anonymous namespace)::ExprRewriter::coerceCallArguments(swift::Expr *, swift::AnyFunctionType *, swift::ApplyExpr *, ArrayRef<swift::Identifier>, bool, swift::constraints::ConstraintLocatorBuilder): Assertion `fromTupleExpr.size() == 1 && fromTupleExpr[0]' failed. /usr/bin/swift[0x3f24d64] /usr/bin/swift[0x3f250a6] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f167dc3e390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f167c37d428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f167c37f02a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7f167c375bd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7f167c375c82] /usr/bin/swift[0x1399b2e] /usr/bin/swift[0x13833e4] /usr/bin/swift[0x139aec3] /usr/bin/swift[0x137f9b4] /usr/bin/swift[0x1385401] /usr/bin/swift[0x1676f7c] /usr/bin/swift[0x137c5cf] /usr/bin/swift[0x12c6296] /usr/bin/swift[0x1355fd6] ...
5:32 AM
Avatar
Kishikawa Katsumi 7/3/2018 5:33 AM
久しぶりにコンパイラのバグを見つけた。
Avatar
For (previously crashing): class A { init() {} convenience init(s: String) { print(self.init()) } } target of RebindSelfInConstructorExpr should be call expression self.init() ...
Avatar
Kishikawa Katsumi 7/3/2018 8:09 AM
まさかレポートする前に直るとは 🤣
8:11 AM
self.init()の戻り値を変数に受けられないっていうの初めて知ったんですよね。
Avatar
type checker 上では リターンタイプは Void として扱われていますね。
Avatar
@swiftbot import Foundation print("Good night") sleep(1) print("Morning")
7:43 AM
あれ、これダメでしたか😵 🙇
Avatar
omochimetaru 7/4/2018 7:43 AM
バッククォート3つではさみます。
😃 1
Avatar
+swift
😃 1
Avatar
Kishikawa Katsumi 7/4/2018 7:43 AM
swiftはなくてもOKになりました。 (edited)
😲 1
Avatar
@swiftbot ではswiftなしで。 import Foundation print("Good night") sleep(1) print("Morning")
🛠 1
Avatar
swiftbot BOT 7/4/2018 7:44 AM
Author icon
Ohta
import Foundation print("Good night") sleep(1) print("Morning")
Version:
swift-4.1.1-RELEASE
Output:
Good night Morning
Error:
Avatar
Kishikawa Katsumi 7/4/2018 7:45 AM
sleepは実行結果だけ見るとわからないですね。
7:45 AM
Playgroundみたいに1行1行について実行した結果のデータを見られるとおもしろいんですけど。
Avatar
@swiftbot import Foundation //import PlaygroundSupport //PlaygroundPage.current.needsIndefiniteExecution = true let group1 = DispatchGroup() func a(_ name: String) { group1.enter() print("Good night, \(name)..") sleep(2) print("Morning, \(name)!") group1.leave() } DispatchQueue.global().async { a("Anna") } DispatchQueue.global().async { a("Bob") } DispatchQueue.global().async { a("Cony") } group1.notify(queue: .main) { print("*** Good morning, all! ***") //PlaygroundPage.current.finishExecution() } // Xcode 9.4.1 と 10.0 beta2 どちらも同じ結果でした /* Playground Settings - Platform: macOS Good night, Cony.. Good night, Anna.. Good night, Bob.. Morning, Cony! Morning, Bob! Morning, Anna! *** Good morning, all! *** */ /* Playground Settings - Platform: iOS Good night, Anna.. Good night, Cony.. Good night, Bob.. *** Good morning, all! *** */
🛠 1
Avatar
swiftbot BOT 7/4/2018 7:46 AM
Author icon
Ohta
import Foundation //import PlaygroundSupport //PlaygroundPage.current.needsIndefiniteExecution = true let group1 = DispatchGroup() func a(_ name: String) { group1.enter() print("Good night, \(name)..") sleep(2) print("Morning, \(name)!") group1.leave() } DispatchQueue.global().async { a("Anna") } DispatchQueue.global().async { a("Bob") } DispatchQueue.global().async { a("Cony") } group1.notify(queue: .main) { print("*** Good morning, all! ***") //PlaygroundPage.current.finishExecution() } // Xcode 9.4.1 と 10.0 beta2 どちらも同じ結果でした /* Playground Settings - Platform: macOS Good night, Cony.. Good night, Anna.. Good night, Bob.. Morning, Cony! Morning, Bob! Morning, Anna! *** Good morning, all! *** */ /* Playground Settings - Platform: iOS Good night, Anna.. Good night, Cony.. Good night, Bob.. *** Good morning, all! *** */
Version:
swift-4.1.1-RELEASE
Output:
Good night, Anna.. Good night, Bob..
Error:
Avatar
Sleep(2) では時間切れになってしまうようですね😅 import Foundation import PlaygroundSupport PlaygroundPage.current.needsIndefiniteExecution = true let group1 = DispatchGroup() func a(_ name: String) { group1.enter() print("Good night, \(name)..") sleep(2) print("Morning, \(name)!") group1.leave() } DispatchQueue.global().async { a("Anna") } DispatchQueue.global().async { a("Bob") } DispatchQueue.global().async { a("Cony") } group1.notify(queue: .main) { print("*** Good morning, all! ***") PlaygroundPage.current.finishExecution() } // Xcode 9.4.1 と 10.0 beta2 どちらも同じ結果でした /* Playground Settings - Platform: macOS Good night, Cony.. Good night, Anna.. Good night, Bob.. Morning, Cony! Morning, Bob! Morning, Anna! *** Good morning, all! *** */ /* Playground Settings - Platform: iOS Good night, Anna.. Good night, Cony.. Good night, Bob.. *** Good morning, all! *** */ 上記のコードを Playgroundで実行すると、Platformによって実行結果が変わってしまいます。macOSにすると望む結果になるんですけど、iOSだと待ち合わせしてくれないのです。 (edited)
Avatar
omochimetaru 7/4/2018 7:50 AM
@Nao notifyって、そのグループのenter数が1->0になるタイミングを待つんじゃないですかね?
7:50 AM
そのコードだと、関数aの呼び出しがグローバルキューに投げられているので、
7:51 AM
あいや、いいのか、sleepしているから、必ず3つのenterが先行しているんですね。
7:53 AM
7:54 AM
1つめのenterよりもはやくnotifyして即抜けしているけど
7:54 AM
printの前後順だけはすり替わってる?
7:55 AM
@swiftbot import Foundation let group1 = DispatchGroup() group1.notify(queue: .main) { print("*** Good morning, all! ***") } sleep(1) (edited)
🛠 1
Avatar
swiftbot BOT 7/4/2018 7:55 AM
(edited)
Author icon
omochimetaru
import Foundation let group1 = DispatchGroup() group1.notify(queue: .main) { print("*** Good morning, all! ***") } sleep(1)
Version:
swift-4.1.1-RELEASE
Output:
Error:
Avatar
omochimetaru 7/4/2018 7:57 AM
@swiftbot import Foundation let task = DispatchQueue(label: "task") let group1 = DispatchGroup() group1.notify(queue: task) { print("*** Good morning, all! ***") } sleep(1)
🛠 1
Avatar
swiftbot BOT 7/4/2018 7:57 AM
Author icon
omochimetaru
import Foundation let task = DispatchQueue(label: "task") let group1 = DispatchGroup() group1.notify(queue: task) { print("*** Good morning, all! ***") } sleep(1)
Version:
swift-4.1.1-RELEASE
Output:
*** Good morning, all! ***
Error:
Avatar
omochimetaru 7/4/2018 7:58 AM
@Nao 多分起きているのは↑こういうことだと思います。 1つ目のenterよりも先にnotifyしていて、即座に実行されている
Avatar
😨 ??
Avatar
omochimetaru 7/4/2018 7:59 AM
3つのenterのあとで、notifyが呼ばれる必要があると思います。 (edited)
🙇 1
Avatar
あー😵
8:00 AM
ありがとうございます!
8:02 AM
そうか、enter --> notify の順に書いたつもりだけど、enterは async ブロックの中に置いてあるから後で実行される可能性があるのか。。。
Avatar
omochimetaru 7/4/2018 8:02 AM
はい。
Avatar
なので、iOSかmacOSか によって実行結果が変わったのか。。
Avatar
omochimetaru 7/4/2018 8:03 AM
そこのスケジューリングの運によって変わったようですね
Avatar
なるほどー。 実は複雑になるので述べなかったのですが、tvOSを選択すると結果が様々に(iOS的だったりmacOS的だったり)なっていたのです。
8:04 AM
@omochimetaru ありがとうございます😃
Avatar
omochimetaru 7/4/2018 8:04 AM
import Foundation let group1 = DispatchGroup() func a(_ name: String) { print("Good night, \(name)..") sleep(2) print("Morning, \(name)!") group1.leave() } group1.enter() DispatchQueue.global().async { a("Anna") } group1.enter() DispatchQueue.global().async { a("Bob") } group1.enter() DispatchQueue.global().async { a("Cony") } group1.notify(queue: .main) { print("*** Good morning, all! ***") }
8:05 AM
↑これでいつも期待した挙動に。
8:05 AM
これ合法なのかよくわかんないですけど・・・
Avatar
@omochimetaru 😃 👍
✌ 1
Avatar
norio_nomura 7/4/2018 10:51 AM
@swift-4.1.3 import Foundation let group1 = DispatchGroup() func a(_ name: String) { print("Good night, \(name)..") sleep(2) print("Morning, \(name)!") } DispatchQueue.global().async(group: group1) { a("Anna") } DispatchQueue.global().async(group: group1) { a("Bob") } DispatchQueue.global().async(group: group1) { a("Cony") } group1.notify(queue: .main) { print("*** Good morning, all! ***") exit(0) } dispatchMain()
Avatar
Good night, Anna.. Good night, Bob.. Good night, Cony.. Morning, Anna! Morning, Bob! Morning, Cony! *** Good morning, all! ***
Avatar
omochimetaru 7/4/2018 11:14 AM
async(group:)というのがあるのか!
Avatar
おー!😃 @norio_nomura ありがとうございます。
👍 1
1:01 AM
話が少しずれるんですけど、https://developer.apple.com/search/?q=async で検索してみたら、、、 (edited)
Search - Developer
1:02 AM
こんな感じで Videoの中を検索してくれるようです。知らなかった。しかも asynchronous と発語されたところから再生できるのか。すごい😃 (edited)
Avatar
async(group:execute:)は iOS 8から存在してました😅 https://developer.apple.com/documentation/dispatch/dispatchqueue/2300095-async (edited)
Avatar
omochimetaru 7/5/2018 4:57 AM
DispatchGroupのenterとleaveの説明が explicitly って書いてあったから
4:57 AM
implicitlyなやり方があるんだろうなと思ったけど、DispatchGroupのドキュメントには見つからなかったのは
4:57 AM
DispatchQueueの方のメソッドだったからだった。
😀 1
Avatar
あなたの会社のSlackでもSwiftbotがつくれる by @Nonchalant https://github.com/Nonchalant/SwiftBot
SwiftBot - Execute Swift on Slack
swift 2
Avatar
Kishikawa Katsumi 7/6/2018 8:01 AM
^ めっちゃシンプルなコードで実現されている😍
Avatar
norio_nomura 7/6/2018 10:42 AM
コードを見ると、ユーザーがSLACK_BOT_TOKENとか簡単に取得できそうだけど大丈夫なのかな… (edited)
Avatar
Kishikawa Katsumi 7/6/2018 11:05 AM
とりあえず会社内でしか使わない前提ですよね。
Avatar
その前提ですね!swiftを経由してシェルコマンドとかも呼べちゃうので脆弱性に関しては目をつぶってる感じです...
Avatar
norio_nomura 7/6/2018 11:32 AM
なるほど。
Avatar
norio_nomura 7/6/2018 11:56 AM
もしかして、Slackの場合アカウントがサーバー毎に分かれてるから、勝手に他所のサーバーへ招かれる心配が少ないのかな。
Avatar
Kishikawa Katsumi 7/6/2018 12:54 PM
最近のSlackBotはすごいリッチなUIを返したりできるっぽくて、パラメータとか工夫しなくても便利にできそうなんですよね。
12:55 PM
なんかドロップダウンリストを表示したりできるらしい。
Avatar
norio_nomura 7/6/2018 1:25 PM
勝手に他所のサーバーへ招かれる心配が少ないのかな。
Discordの場合、アバター画像URLに含まれるユーザーIDを使って他のサーバーへ招待できてしまう。
Avatar
Kishikawa Katsumi 7/6/2018 1:27 PM
Botじゃなくて普通のユーザーを、ってことですか?
1:28 PM
Botは無理ですよね。
Avatar
norio_nomura 7/6/2018 1:37 PM
きしかわさんのswiftbotを僕がボットを追加可能なサーバーへ招待する画面。
🙄 1
1:39 PM
公開botにしてなければ出来ないのかな?
Avatar
Kishikawa Katsumi 7/6/2018 1:41 PM
Botはトークンを知らないとダメだと思ってましたけど、いらないんですね。
Avatar
norio_nomura 7/20/2018 3:19 AM
swift-nightlyとswift-tensorflowはPackageDescription API v3の廃止によりビルド出来なくなり、更新が止まっています。
🙄 1
3:19 AM
どの様に対処するか思案中。
Avatar
@swift-4.2.4 let wat: Int? = nil if let _: Int? = wat { print("1") } if let _: Any? = wat { print("2") }
Avatar
1stderr:<stdin>:2:4: warning: explicitly specified type 'Int?' adds an additional level of optional to the initializer, making the optional check always succeed if let _: Int? = wat { print("1") } ^ ~~~~ ~~~ Int
Avatar
omochimetaru 7/20/2018 7:00 AM
2つ目の解釈変じゃない?
Avatar
Amazingly, 23% of people got the correct answer: it only prints 1.
  • The 1st condition succeeds because wat is implicitly promoted to Int?? (with a nice compiler warning)
  • The 2nd condition fails because… uh… it doesn’t get promoted this time, eh? Hm. https://t.co/f...
Avatar
omochimetaru 7/20/2018 7:03 AM
なるほど・・・
7:04 AM
23%の人すごいね。
Avatar
2の事象に気づいていたのか、適当なのかはわからんけどw
Avatar
swift-nightlyとswift-tensorflow復活。 @swift-main enum Result<Value, Error> { case success(Value) case failure(Error) } extension Result: Equatable where Value: Equatable, Error: Equatable { static func == (lhs: Result, rhs: Result) -> Bool { switch (lhs, rhs) { case let (.success(lhs), .success(rhs)): return lhs == rhs case let (.failure(lhs), .failure(rhs)): return lhs == rhs case (.success, .failure), (.failure, .success): return false } } } print(Result<String, Never>.success("a") == Result<String, Never>.success("b"))
swift 1
Avatar
swiftNightly BOT 7/21/2018 11:57 AM
false
Avatar
@swift-main @swift-tensorflow import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"] ?? "")
Avatar
swiftNightly BOT 7/21/2018 11:59 AM
DEVELOPMENT-SNAPSHOT-2018-07-20-a
Avatar
swiftTensorflow BOT 7/21/2018 11:59 AM
DEVELOPMENT-2018-07-19-a
Avatar
rdar://problem/40916953 @swift-4.1.3 @swift-4.2.4 -suppress-warnings struct ConditionalCast<T> { static func cast(value: Any?) -> T? { return value as? T } } print(ConditionalCast<Int?>.cast(value: nil))
Avatar
nil
Avatar
Optional(nil)
Avatar
これはどっちに転けても正しそう
Avatar
norio_nomura 7/24/2018 4:43 AM
New in Xcode 10 beta 4 – Swift and Apple Clang Compilersに記載された挙動です。
Avatar
4.1.3-RELEASE
Avatar
@swift-4.1.3 class Object { func foo() -> String { return "from Object" } } class Child: Object { override func foo() -> String { return "from Child" } } let child = unsafeBitCast(Object(), to: Child.self) print(child.foo())
Avatar
swift41 BOT 8/7/2018 9:36 AM
from Childstderr:<stdin>:12:13: warning: 'unsafeBitCast' from 'Object' to 'Child' can be replaced with 'unsafeDowncast' let child = unsafeBitCast(Object(), to: Child.self) ^~~~~~~~~~~~~ unsafeDowncast
Avatar
え、、
Avatar
Kishikawa Katsumi 8/7/2018 9:37 AM
なんか増えとる。
Avatar
omochimetaru 8/7/2018 9:37 AM
あるね
Avatar
childの型がコンパイル時に決まると最適化でこうなる
9:37 AM
dynamic typeか
Avatar
Kishikawa Katsumi 8/7/2018 9:37 AM
へえ。
Avatar
4.1.3出たのはいいけど、対応するXcodeがないんだよなぁ
Avatar
Kishikawa Katsumi 8/8/2018 6:14 AM
4.1.3はLinuxOnlyじゃなかったっけ
😃 1
Avatar
あ、ほんとだ
*Swift 4.1.3 is Linux only change, Swift 4.1.2 is available as part of Xcode 9.4.
😃 1
Avatar
norio_nomura 8/10/2018 4:03 AM
@swift-4.1.3 @swift-main -Xfrontend -print-ast func f(a: Int = 1){}
Avatar
internal func f(a: Int = default)
Avatar
swiftNightly BOT 8/10/2018 4:03 AM
internal func f(a: Int = 1)
Avatar
お、値見えるようになるんですかね
Avatar
omochimetaru 8/10/2018 4:06 AM
rintaro昨日 午後4時15分 https://github.com/apple/swift/pull/18579 これは嬉しい!インターフェイスでデフォルト値が default じゃなくてきちんと表示されるようになります。
Avatar
norio_nomura 8/10/2018 4:07 AM
それです。
Avatar
omochimetaru 8/10/2018 4:35 AM
-print-ast が対応してるんですね
Avatar
@swift-4.2.4 @swift-main class Super<T> {} class Sub: Super<Sub> {} print(Sub()) (edited)
Avatar
swiftNightly BOT 8/13/2018 10:11 AM
execution timeout with no output
Avatar
execution timeout with no output
Avatar
@swift-4.0.3 protocol Animal {} extension Animal { init(_animal: Self) { self = _animal } } class AnimalBase: Animal { convenience init(with animal: AnimalBase) { self.init(_animal: animal) } } class Cat: AnimalBase { let _name = "Tama" var name: String { return _name } func bark() { print("cat \(self.name)") } } class Dog: AnimalBase {} let animal = Cat(with: Dog()) animal.bark() (edited)
Avatar
exit status: 11 with stderr:#0 0x0000000003ae91b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/bin/swift+0x3ae91b8) #1 0x0000000003ae98f6 SignalHandler(int) (/usr/bin/swift+0x3ae98f6) #2 0x00007fa453580390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007fa44ed5824f _swift_retain_ (/usr/lib/swift/linux/libswiftCore.so+0x41324f) #4 0x00007fa4539af2f9 #5 0x00007fa4539af405 #6 0x00007fa4539af06b #7 0x0000000000f348bf llvm::MCJIT::runFunction(llvm::Function*, llvm::ArrayRef<llvm::GenericValue>) (/usr/bin/swift+0xf348bf) #8 0x0000000000f38a62 llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const* const*) (/usr/bin/swift+0xf38a62) #9 0x00000000004bf776 swift::RunImmediately(swift::CompilerInstance&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, swift::IRGenOptions&, swift::SILOptions const&) (/usr/bin/swift+0x4bf776) #10 0x00000000004ae580 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) (/usr/bin/swift+0x4ae580) #11 0x00000000004aa52b swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/usr/bin/swift+0x4aa52b) #12 0x0000000000465564 main (/usr/bin/swift+0x465564) #13 0x00007fa451caa830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830) #14 0x0000000000462e29 _start (/usr/bin/swift+0x462e29) Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/engine.git--3106915580378752918/Sources/CHTTP/inc (edited)
Avatar
やっぱり self.init(_animal: animal) が通るのヤバですね
Avatar
omochimetaru 8/16/2018 5:19 AM
うむ〜
Avatar
omochimetaru 8/16/2018 6:59 AM
@swiftbot fatalError()
🛠 1
Avatar
swiftbot BOT 8/16/2018 6:59 AM
Author icon
omochimetaru
fatalError()
Version:
swift-4.1.1-RELEASE
Output:
Error:
Fatal error: file /usercode/main.swift, line 1 Current stack trace: 0 libswiftCore.so 0x00007f64e85c55c0 _swift_stdlib_reportFatalErrorInFile + 221 1 libswiftCore.so 0x00007f64e83343dc <unavailable> + 1369052 2 libswiftCore.so 0x00007f64e856e222 <unavailable> + 3703330 3 libswiftCore.so 0x00007f64e856f689 <unavailable> + 3708553 4 libswiftCore.so 0x00007f64e8333ad6 <unavailable> + 1366742 5 libswiftCore.so 0x00007f64e856dfeb <unavailable> + 3702763 6 libswiftCore.so 0x00007f64e8333ad6 <unavailable> + 1366742 7 libswiftCore.so 0x00007f64e84a0f79 <unavailable> + 2862969 8 libswiftCore.so 0x00007f64e8333440 _assertionFailure(_:_:file:line:flags:) + 44 10 swift 0x0000000000fed1ce <unavailable> + 12505550 ...
6:59 AM
Avatar
omochimetaru 8/16/2018 6:59 AM
@swiftbot import Foundation "".enumerateLines { (a, b) in }
🛠 1
Avatar
swiftbot BOT 8/16/2018 6:59 AM
Author icon
omochimetaru
import Foundation "".enumerateLines { (a, b) in }
Version:
swift-4.1.1-RELEASE
Output:
Error:
Fatal error: enumerateSubstrings(in:options:using:) is not yet implemented: file Foundation/NSString.swift, line 791 /usr/bin/swift[0x3f24d64] /usr/bin/swift[0x3f250a6] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f1619b01390] /usr/lib/swift/linux/libswiftCore.so(+0x2baf79)[0x7f1614d3ff79] /usr/lib/swift/linux/libswiftCore.so(_T0s17_assertionFailures5NeverOs12StaticStringV_SSAE4fileSu4lines6UInt32V5flagstF+0x2c)[0x7f1614bd246c] /usr/lib/swift/linux/libFoundation.so(+0x50438f)[0x7f160ddd538f] /usr/lib/swift/linux/libFoundation.so(+0x50425a)[0x7f160ddd525a] /usr/lib/swift/linux/libFoundation.so(_T010Foundation8NSStringC14enumerateLinesyySS_SpyAA8ObjCBoolVGtcF+0x77)[0x7f160de63117] /usr/lib/swift/linux/libFoundation.so(_T0s14StringProtocolP10FoundationSS5IndexVADRtzrlE14enumerateLinesyySS_Sbztc8invoking_tF+0xa0)[0x7f160de79620] [0x7f1619f310c3] /usr/bin/swift[0xfed1ce] /usr/bin/swift[0xff1692] /usr/bin/swift[0x4d9076] /usr/bin/swift[0x4c35d3] /usr/bin/swift[0x4beecc] ...
6:59 AM
Avatar
@swift-4.0.3 class Person { var name: String var friends: [Person] = [] var bestFriend: Person? = nil init(name: String) { self.name = name } } _ = \Person.bestFriend?.name
Avatar
no output
Avatar
@swiftbot --version=4.0 class Person { var name: String var friends: [Person] = [] var bestFriend: Person? = nil init(name: String) { self.name = name } } _ = \Person.bestFriend?.name
🛠 1
Avatar
swiftbot BOT 8/18/2018 6:23 AM
Author icon
ikesyo
class Person { var name: String var friends: [Person] = [] var bestFriend: Person? = nil init(name: String) { self.name = name } } _ = \Person.bestFriend?.name
Version:
swift-4.0-RELEASE
Output:
Error:
Avatar
norio_nomura 8/28/2018 5:01 AM
-Xfrontendではなく-frontendが使える様になりました。 @swift-4.2.4 -frontend -print-ast func f(n: Int = 1) {}
Avatar
internal func f(n: Int = default)
Avatar
norio_nomura 8/28/2018 5:02 AM
さらに-frontend -replも使える様になりました。 @swift-4.2.4 -frontend -repl import RxSwift :print_decl Observable
Avatar
class Observable<Element> : ObservableType { typealias E = Element init() func subscribe<O>(_ observer: O) -> Disposable where Element == O.E, O : ObserverType func asObservable() -> Observable<Observable<Element>.E> @objc deinit func composeMap<R>(_ transform: @escaping (Element) throws -> R) -> Observable<R> } extension Observable { @available(*, deprecated, renamed: "from(optional:)", message: "Implicit conversions from any type to optional type are allowed and that is causing issues with `from` operator overloading.") static func from(_ optional: Observable<Element>.E?) -> Observable<Observable<Element>.E> @available(*, deprecated, renamed: "from(optional:scheduler:)", message: "Implicit conversions from any type to optional type are allowed and that is causing issues with `from` operator overloading.") static func from(_ optional: Observable<Element>.E?, scheduler: ImmediateSchedulerType) -> Observable<Observable<Element>.E> }
Avatar
norio_nomura 8/28/2018 5:03 AM
@swift-4.1.3 @swift-4.2.4 -frontend -repl :print_decl Hashable (edited)
Avatar
protocol Hashable : Equatable { var hashValue: Int { get } func hash(into hasher: inout Hasher) } (edited)
Avatar
protocol Hashable : Equatable { var hashValue: Int { get } }
Avatar
@swiftbot help
Avatar
swiftbot BOT 9/4/2018 7:07 AM
Usage: @swiftbot [--version=SWIFT_VERSION] [--command={swift, swiftc}] [--options=SWIFTC_OPTIONS] `​`​` [Swift Code] `​`​` Examples: @swiftbot `​`​` print("Hello world!") `​`​` @swiftbot --version=4.0.3 `​`​` print("Hello world!") `​`​` @swiftbot --command=swiftc --options=-dump-parse `​`​` print("Hello world!") `​`​` Subcommands: @swiftbot versions: show available Swift toolchain versions @swiftbot contribute: show repository URLs @swiftbot help: show help
Avatar
@swiftbot --version=4.2 print("hello")
🛠 1
Avatar
swiftbot BOT 9/4/2018 7:07 AM
Author icon
bannzai
print("hello")
Version:
⚠️ 4.2
Error:
Swift '4.2' toolchain is not supported.
Avatar
Kishikawa Katsumi 9/4/2018 7:08 AM
すまぬ
7:08 AM
のむらさんの方は使えるはず
Avatar
+👍
7:08 AM
@swift-4.2.4 print("hello")
Avatar
swift42 BOT 9/4/2018 7:08 AM
hello
Avatar
@swift-4.2.4 struct Stone { var x: Int { get { return 1 } _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.y) } main()
Avatar
swift42 BOT 9/4/2018 7:09 AM
exit status: 1 with stderr:<stdin>:7:9: error: expected 'get', 'set', 'willSet', or 'didSet' keyword to start an accessor definition _modify { ^ <stdin>:23:9: error: cannot pass immutable value as inout argument: 'x' is a get-only property mod(&a.x) ^~~~
Avatar
https://gist.github.com/omochi/b31f4916fda78e9a2e804c4b2233370d これを試したかったが、ここにもないかんじか (edited)
GitHub Gist: instantly share code, notes, and snippets.
Avatar
omochimetaru 9/4/2018 7:09 AM
@swift-main ←これで
👍 1
Avatar
swiftNightly BOT 9/4/2018 7:09 AM
exit status: 2 with stderr:error: unable to invoke subcommand: /usr/bin/swift-←これで (No such file or directory)
😅 1
Avatar
@swift-nightly struct Stone { var x: Int { get { return 1 } _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.y) } main()
7:10 AM
discord 初心者ガチ勢
7:10 AM
@swift-main struct Stone { var x: Int { get { return 1 } _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.y) } main()
Avatar
swiftNightly BOT 9/4/2018 7:10 AM
8
👏 1
Avatar
@swift-main struct Stone { var x: Int { get { return 1 } _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.x) print(a.y) } main()
Avatar
swiftNightly BOT 9/4/2018 7:11 AM
1 8
Avatar
norio_nomura 9/4/2018 7:11 AM
ボットへの投稿は編集することが出来ます。
👍 1
Avatar
@swift-main struct Stone { var x: Int { _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.x) print(a.y) } main() (edited)
Avatar
swiftNightly BOT 9/4/2018 7:12 AM
exit status: 1 with stderr:<stdin>:3:9: error: variable with a 'modify' accessor must also have a getter, addressor, or 'read' accessor _modify { ^
Avatar
便利
7:14 AM
@swift-main struct Stone { var x: Int { get { return 1 } _modify { var xx: Int = 3 yield &xx y = xx } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.x) print(a.y) } main()
Avatar
swiftNightly BOT 9/4/2018 7:14 AM
1 8
Avatar
@swift-main struct Stone { var x: Int { get { return 1 } _modify { var xx: Int = 3 print("before yield \(xx)") yield &xx print("after yield \(xx)") y = xx } } var y: Int = 0 } func mod(_ x: inout Int) { print("before modify") x = 8 print("after modify") } func main() { var a = Stone() mod(&a.x) print(a.y) } main()
Avatar
swiftNightly BOT 9/4/2018 7:16 AM
before yield 3 before modify after modify after yield 8 8
Avatar
なんで、before modify が 2番目なんだ
7:18 AM
あ、待てよ
Avatar
omochimetaru 9/4/2018 7:18 AM
コルーチンがはさまってるのは、modの呼び出し前後です
7:18 AM
modの内部での x = 8 は、いままでどおり。
Avatar
@swift-main struct Stone { var x: Int { get { return 1 } _modify { var xx: Int = 3 print("before yield \(xx)") yield &xx print("after yield \(xx)") y = xx } } var y: Int = 0 } func mod(_ x: inout Int) { print("before modify") x = 8 print("after modify") } func main() { var a = Stone() print("before coroutine") mod(&a.x) print("after coroutine") print(a.y) } main()
Avatar
swiftNightly BOT 9/4/2018 7:19 AM
before coroutine before yield 3 before modify after modify after yield 8 after coroutine 8
Avatar
おお、なるほど。納得できました。ありがとうございます!
Avatar
omochimetaru 9/4/2018 7:19 AM
これ、従来は、
7:19 AM
modを呼び出す前にテンポラリな変数が作られてmodを呼び出した後
7:19 AM
setterを改めて呼び出して処理結果を格納していたんだけど
7:19 AM
modifyアクセサだったら、そのようなテンポラリな値を作る事なく、一発で内部に(ポインタで)書き込める (edited)
swift 1
👍 1
Avatar
@swift-4.2.4 class Hoge { func hoge() { let foo = { [weak self] in print(self) guard let self = self else { return } print(self) } foo() } } Hoge().hoge() (edited)
Avatar
swift42 BOT 9/7/2018 3:15 AM
Optional(main.Hoge) main.Hogestderr:<stdin>:4:19: warning: expression implicitly coerced from 'Hoge?' to 'Any' print(self) ^~~~ <stdin>:4:19: note: provide a default value to avoid this warning print(self) ^~~~ ?? <#default value#> <stdin>:4:19: note: force-unwrap the value to avoid this warning print(self) ^~~~ ! <stdin>:4:19: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(self) ^~~~ as Any (edited)
Avatar
@swift-main let s = #"a\b\c"# print(s)
Avatar
swiftNightly BOT 9/7/2018 3:24 AM
exit status: 1 with stderr:<stdin>:1:13: error: invalid escape sequence in literal let s = #"a\b\c"# ^ <stdin>:1:15: error: invalid escape sequence in literal let s = #"a\b\c"# ^ <stdin>:1:9: error: expected initial value after '=' let s = #"a\b\c"# ^ <stdin>:1:8: error: consecutive statements on a line must be separated by ';' let s = #"a\b\c"# ^ ; <stdin>:1:9: error: expected expression let s = #"a\b\c"# ^
Avatar
まだダメだったか。
Avatar
omochimetaru 9/7/2018 3:24 AM
@swift-main --version
Avatar
swiftNightly BOT 9/7/2018 3:24 AM
Swift version 4.2-dev (LLVM 6d629af647, Clang 257fa19143, Swift 7ad7e1d968) Target: x86_64-unknown-linux-gnu
3:25 AM
0904snapshotか
Avatar
The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub.
Avatar
omochimetaru 9/7/2018 3:27 AM
0904の手前がコケまくってますね。
Avatar
10 日間くらい
Avatar
omochimetaru 9/7/2018 3:27 AM
SwiftPMのパッケージ分離とかやってたから
3:27 AM
ビルド周りをいじっていて壊れてたのかな
Avatar
norio_nomura 9/7/2018 11:57 PM
@swift-main let s = #"a\b\c"# print(s)
Avatar
swiftNightly BOT 9/7/2018 11:57 PM
a\b\c
Avatar
おお!
12:43 AM
@swift-main -swift-version 5 protocol P {} extension P { init(_with instance: Self) { self = instance } } class Animal : P { init() {} convenience init(with instance: Animal) { self.init(_with: instance) } } class Cat : Animal { override init() {} } class Dog : Animal { override init() {} } let cat: Cat = Cat(with: Dog()) // Dog with Cat type??? print(type(of: cat)) (edited)
Avatar
swiftNightly BOT 9/8/2018 12:43 AM
exit status: 1 with stderr:<stdin>:10:22: error: cannot convert value of type 'Animal' to expected argument type 'Self' self.init(_with: instance) ^~~~~~~~ as! Self (edited)
Avatar
こっちはまだか。
Avatar
-swift-version 5 でいかがでしょ?
Avatar
おおお
Avatar
この前の @Yuta Saitoself 差し替えのも封じられたかな?最後の付け足しか Q&A かだったのでスライド↓中にコードが見当たらない・・・。 https://speakerdeck.com/kateinoigakukun/konpairakaraniu-jie-kuswift-method-dispatch-1
Avatar
お!これ治るんですね
1:07 AM
1:09 AM
@swift-main -swift-version 5 protocol Animal {} extension Animal { init(_animal: Self) { self = _animal } } class AnimalBase: Animal { convenience init(with animal: AnimalBase) { self.init(_animal: animal) } } class Cat: AnimalBase { let _name = "Tama" var name: String { return _name } func bark() { print(name) } } class Dog: AnimalBase {} let animal = Cat(with: Dog()) animal.bark()
Avatar
swiftNightly BOT 9/8/2018 1:09 AM
exit status: 1 with stderr:<stdin>:11:28: error: cannot convert value of type 'AnimalBase' to expected argument type 'Self' self.init(_animal: animal) ^~~~~~ as! Self
Avatar
これは正しい🙌
😀 2
Avatar
@swift-4.2.4 struct A { var b: Int = 1 @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> Int { return 2 } }
2:33 AM
これ入力に渡すファイル名って任意に決められるんだっけ
Avatar
-module-name?
Avatar
omochimetaru 9/10/2018 2:38 AM
ファイル名が変わるわけじゃないけどたしかにモジュール名は指定できるな
Avatar
@swift-4.2.4 -module-name hoge struct A { var b: Int = 1 @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> Int { return 2 } }
2:47 AM
😇
2:48 AM
@swift-4.1.3 -module-name hoge struct A { var b: Int = 1 @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> Int { return 2 } }
Avatar
no output
Avatar
@swift-4.1.3 struct A { var b: Int { return 11111 } @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> Int { return 22222 } } print(A().b) print(A().itazura())
Avatar
11111 22222
Avatar
@swift-4.2.4 struct A { var b: Int { return 11111 } @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> Int { return 22222 } } print(A().b) print(A().itazura())
2:51 AM
手元だとどっちも11111なんだけどな ~/D/swift-asobu $ swift --version Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2) Target: x86_64-apple-darwin17.7.0 ~/D/swift-asobu $ swift hoge.swift 11111 11111
Avatar
omochimetaru 9/10/2018 2:52 AM
手元でも同じマングリングになってる?
2:52 AM
マングリングルールはバージョンで結構かわるよ。
Avatar
手元で同じマングリングなってる
2:53 AM
sil吐かせれば良いのか
2:53 AM
@swift-4.1.3 -emit-sil struct A { var b: Int { return 11111 } }
Avatar
exit status: 1 with stderr:<unknown>:0: error: option '-emit-sil' is not supported by 'swift'; did you mean to use 'swiftc'?
Avatar
だめなんだっけ
2:54 AM
swiftcじゃないのか
Avatar
omochimetaru 9/10/2018 2:54 AM
@swift-4.1.3 -Xfrontend -emit-sil struct A { var b: Int { return 11111 } }
Avatar
sil_stage canonical import Builtin import Swift import SwiftShims struct A { var b: Int { get } init() } // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // A.b.getter sil hidden @_T04main1AV1bSivg : $@convention(method) (A) -> Int { // %0 // user: %1 bb0(%0 : $A): debug_value %0 : $A, let, name "self", argno 1 // id: %1 %2 = integer_literal $Builtin.Int64, 11111 // user: %3 %3 = struct $Int (%2 : $Builtin.Int64) // user: %4 return %3 : $Int // id: %4 } // end sil function '_T04main1AV1bSivg' // Int.init(_builtinIntegerLiteral:) sil public_external [transparent] [serialized] @_T0S2iBi2048_22_builtinIntegerLiteral_tcfC : $@convention(method) (Builtin.Int2048, @thin Int.Type) -> Int { // %0 // user: %2 bb0(%0 : $Builtin.Int2048, %1 : $@thin Int.Type): %2 = builtin "s_to_s_checked_trunc_Int2048_Int64"(%0 : $Builtin.Int2048) : $(Builtin.Int64, Builtin.Int1) // user: %3 %3 = tuple_extract %2 : $(Builtin.Int64, Builtin.Int1), 0 // user: %4 %4 = struct $Int (%3 : $Builtin.Int64) // user: %5 return %4 : $Int // id: %5 } // end sil function '_T0S2iBi2048_22_builtinIntegerLiteral_tcfC'
Avatar
@swift-4.1.3 -Xfrontend -emit-sil -module-name hoge struct A { var b: Int { return 11111 } }
2:55 AM
@swift-4.1.3 -Xfrontend -emit-sil -module-name hoge struct A { var b: Int { return 11111 } }
Avatar
sil_stage canonical import Builtin import Swift import SwiftShims struct A { var b: Int { get } init() } // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // A.b.getter sil hidden @_T04hoge1AV1bSivg : $@convention(method) (A) -> Int { // %0 // user: %1 bb0(%0 : $A): debug_value %0 : $A, let, name "self", argno 1 // id: %1 %2 = integer_literal $Builtin.Int64, 11111 // user: %3 %3 = struct $Int (%2 : $Builtin.Int64) // user: %4 return %3 : $Int // id: %4 } // end sil function '_T04hoge1AV1bSivg' // Int.init(_builtinIntegerLiteral:) sil public_external [transparent] [serialized] @_T0S2iBi2048_22_builtinIntegerLiteral_tcfC : $@convention(method) (Builtin.Int2048, @thin Int.Type) -> Int { // %0 // user: %2 bb0(%0 : $Builtin.Int2048, %1 : $@thin Int.Type): %2 = builtin "s_to_s_checked_trunc_Int2048_Int64"(%0 : $Builtin.Int2048) : $(Builtin.Int64, Builtin.Int1) // user: %3 %3 = tuple_extract %2 : $(Builtin.Int64, Builtin.Int1), 0 // user: %4 %4 = struct $Int (%3 : $Builtin.Int64) // user: %5 return %4 : $Int // id: %5 } // end sil function '_T0S2iBi2048_22_builtinIntegerLiteral_tcfC'
Avatar
手元と一緒だなあ_T04hoge1AV1bSivg
Avatar
omochimetaru 9/10/2018 2:56 AM
func itazuraつきでやってみたら (edited)
Avatar
@swift-4.1.3 -Xfrontend -emit-sil -module-name hoge struct A { var b: Int { return 11111 } func itazura() -> Int { return 22222 } }
Avatar
sil_stage canonical import Builtin import Swift import SwiftShims struct A { var b: Int { get } func itazura() -> Int init() } // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int32, 0 // user: %3 %3 = struct $Int32 (%2 : $Builtin.Int32) // user: %4 return %3 : $Int32 // id: %4 } // end sil function 'main' // A.b.getter sil hidden @_T04hoge1AV1bSivg : $@convention(method) (A) -> Int { // %0 // user: %1 bb0(%0 : $A): debug_value %0 : $A, let, name "self", argno 1 // id: %1 %2 = integer_literal $Builtin.Int64, 11111 // user: %3 %3 = struct $Int (%2 : $Builtin.Int64) // user: %4 return %3 : $Int // id: %4 } // end sil function '_T04hoge1AV1bSivg' // Int.init(_builtinIntegerLiteral:) sil public_external [transparent] [serialized] @_T0S2iBi2048_22_builtinIntegerLiteral_tcfC : $@convention(method) (Builtin.Int2048, @thin Int.Type) -> Int { // %0 // user: %2 bb0(%0 : $Builtin.Int2048, %1 : $@thin Int.Type): %2 = builtin "s_to_s_checked_trunc_Int2048_Int64"(%0 : $Builtin.Int2048) : $(Builtin.Int64, Builtin.Int1) // user: %3 %3 = tuple_extract %2 : $(Builtin.Int64, Builtin.Int1), 0 // user: %4 %4 = struct $Int (%3 : $Builtin.Int64) // user: %5 return %4 : $Int // id: %5 } // end sil function '_T0S2iBi2048_22_builtinIntegerLiteral_tcfC' // A.itazura() sil hidden @_T04hoge1AV7itazuraSiyF : $@convention(method) (A) -> Int { // %0 // user: %1 bb0(%0 : $A): debug_value %0 : $A, let, name "self", argno 1 // id: %1 %2 = integer_literal $Builtin.Int64, 22222 // user: %3 %3 = struct $Int (%2 : $Bu
Avatar
omochimetaru 9/10/2018 2:57 AM
_T04hoge1AV7itazuraSiyF
2:57 AM
↑おや
2:58 AM
ああ、まだあれつけてないのか
Avatar
@swift-4.1.3 -Xfrontend -emit-sil -module-name hoge struct A { var b: Int { return 11111 } @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> Int { return 22222 } }
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-4.1-package-linux-ubuntu-16_04/swift/lib/SILGen/SILGen.cpp:638: void swift::Lowering::SILGenModule::preEmitFunction(swift::SILDeclRef, llvm::PointerUnion<ValueDecl *, Expr *>, swift::SILFunction *, swift::SILLocation): Assertion `F->empty() && "already emitted function?!"' failed. #0 0x0000000003f25074 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f25074) #1 0x0000000003f253b6 SignalHandler(int) (/usr/bin/swift+0x3f253b6) #2 0x00007f19f566b390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007f19f3daa428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #4 0x00007f19f3dac02a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #5 0x00007f19f3da2bd7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbd7) #6 0x00007f19f3da2c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82) #7 0x0000000000c2be2f swift::Lowering::SILGenModule::preEmitFunction(swift::SILDeclRef, llvm::PointerUnion<swift::ValueDecl*, swift::Expr*>, swift::SILFunction*, swift::SILLocation) (/usr/bin/swift+0xc2be2f) #8 0x0000000000c3336f swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*)::$_1::operator()(swift::SILFunction*) const (/usr/bin/swift+0xc3336f) #9 0x0000000000c2b975 swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) (/usr/bin/swift+0xc2b975) #10 0x0000000000ccae75 (anonymous namespace)::SILGenType::emitType() (/usr/bin/swift+0xccae75) #11 0x0000000000ccab98 swift::Lowering::SILGenModule::visitNominalTypeDecl(swift::NominalTypeDecl*) (/usr/bin/swift+0xccab98) #12 0x0000000000c30e6b swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*, unsigned int) (/usr/bin/swift+0xc30e6b) #13 0x0000000000c31b36 swift::SILModule::constructSIL(swift::ModuleDecl*, swift::SILOptions&, swift::FileUnit*, llvm::Optional<unsigned int>, bool) (/usr/bin/swift+0xc31b36) #14 0x0000000000c3210d swift::performSILGeneration(swift::ModuleDecl*, swift::SILOptions&, bool) (/usr/bin/swift+0xc3210d) #15 0x
Avatar
チーン
Avatar
omochimetaru 9/10/2018 2:58 AM
2:58 AM
Assertion `F->empty() && "already emitted function?!"' failed.
Avatar
Avatar
omochimetaru 9/10/2018 2:59 AM
アサーションで落ちてるから一応安全に死ねてるね
Avatar
おりこう
Avatar
omochimetaru 9/10/2018 2:59 AM
ま〜アンダースコア付きのアトリビュートだから、自己責任で、おかしくはないか。
Avatar
ただ
3:00 AM
@swift-4.1.3 struct A { var b: Int { return 11111 } @_silgen_name("_T04hoge1AV1bSivg") func itazura() -> String { return "Hello" } } print(A().itazura())
Avatar
Hello
Avatar
あれ
3:00 AM
手元だとしぬんだがなこれ
3:02 AM
4.1.2と4.1.3でいろいろちがうのかな
Avatar
omochimetaru 9/10/2018 3:03 AM
まあありえそう
3:04 AM
言語仕様にない部分は結構頻繁に書き換わってるから
Avatar
だんだんコンパイラの気持ちが分かる人の気持ちが分かるようになってきた
Avatar
omochimetaru 9/10/2018 3:05 AM
例えばそういうときは
3:05 AM
さっきのアサーションで落ちる行までのスタックトレースをソースを追いかけてみて
3:05 AM
4.1.24.1.3 のタグでチェックアウトしたり、その辺の git blame を見たりする
3:06 AM
ブレークポイント貼りながらステップ実行していけばなんか違う挙動をする場所が出てくるだろう
Avatar
こういうのってパッチバージョンの違いとMac/Linuxの違いってどっちが違いうるのかな
Avatar
omochimetaru 9/10/2018 3:06 AM
Mac/LinuxはObjCがあるかどうかで
Avatar
C++のところだったら関係ないのかな
3:06 AM
そうよね
Avatar
omochimetaru 9/10/2018 3:06 AM
これはstructだし名前解決とかだから関係なさそう
Avatar
ナルホディウス
Avatar
omochimetaru 9/10/2018 3:07 AM
クラスの場合はデータ構造にも影響あるから
3:07 AM
もしかしたら関係があるかもしれん。
3:07 AM
ああまあでもそうか、SIL stageだからほぼObjCは関係なさそうだね
Avatar
気持ちが分かる人の気持ちが分かるのはまだ遠いな
Avatar
norio_nomura 9/10/2018 3:54 AM
swift4.2 は@_silgen_name()入れると何故か動かないですね。 (edited)
Avatar
norio_nomura 9/10/2018 4:02 AM
あいや、swift4.2が全く動いていないのか…
4:05 AM
@swift-4.2.4 --version
Avatar
norio_nomura 9/10/2018 4:28 AM
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-09-07-a以降、動かなくなってる> @swift-4.2.4
4:31 AM
Herokuでロールバックした。> @swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
4.2-DEVELOPMENT-SNAPSHOT-2018-08-25-a
Avatar
omochimetaru 9/10/2018 4:40 AM
あ、なるほど、その可能性があったか。
Avatar
norio_nomura 9/10/2018 4:46 AM
nightlyは動くのに4.2.1-devは動かない。 @swift-main import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
swiftNightly BOT 9/10/2018 4:46 AM
DEVELOPMENT-SNAPSHOT-2018-09-08-a
Avatar
@swift-4.1.3 import Foundation struct Empty: Codable { } struct Foo: Codable { var empty: Empty } struct Bar: Codable { var empty: [Empty] } struct Piyo<E: Codable>: Codable { var empty: E } let encoder = JSONEncoder() let decoder = JSONDecoder() do { print(try decoder.decode(Bar.self, from: encoder.encode(Foo.init(empty: .init())))) } catch { print(error) } do { print(try decoder.decode(Foo.self, from: encoder.encode(Bar.init(empty: .init())))) } catch { print(error) } do { print(try decoder.decode(Piyo<Empty>.self, from: encoder.encode(Piyo<[Empty]>(empty: .init())))) } catch { print(error) } do { print(try decoder.decode(Piyo<[Empty]>.self, from: encoder.encode(Piyo<Empty>(empty: .init())))) } catch { print(error) }
Avatar
⚠️ [DecodingError.typeMismatch: Value of type 'Array<Any>' required for key 'empty'.] Foo(empty: main.Empty()) Piyo<Empty>(empty: main.Empty()) ⚠️ [DecodingError.typeMismatch: Value of type 'Array<Any>' required for key 'empty'.]
Avatar
@swift-4.1.3 import Foundation let d1 = Date() let d2 = Date() + 12345 let diff = Calendar.current.dateComponents([.hour, .minute, .second, .nanosecond], from: d1, to: d2) print(String(format: "%02d:%02d:%02d", diff.hour!, diff.minute!, diff.second!) ) (edited)
Avatar
03:25:45 (edited)
Avatar
@swift-4.1.3 import Foundation let d1 = Date() let d2 = Date() + 12345 let diff = Calendar.current.dateComponents([.hour, .minute, .second, .nanosecond], from: d1, to: d2) print(String(format: "%02d:%02d:%02d.%d", diff.hour!, diff.minute!, diff.second!, diff.nanosecond!) )
Avatar
03:25:45.0
Avatar
@swift-4.1.3 import Foundation let d1 = Date() let d2 = Date() + 12345 let diff = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second, .nanosecond], from: d1, to: d2) print(String(format: "%02d:%02d:%02d.%d", diff.hour!, diff.minute!, diff.second!, diff.nanosecond!) )
Avatar
exit status: 4 with stderr:Fatal error: file Foundation/NSCalendar.swift, line 617 #0 0x0000000003f25074 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f25074) #1 0x0000000003f253b6 SignalHandler(int) (/usr/bin/swift+0x3f253b6) #2 0x00007fe2f1ecd390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007fe2ecd880b9 _T0s17_assertionFailures5NeverOs12StaticStringV_SSAE4fileSu4lines6UInt32V5flagstFTf4nxnnn_n (/usr/lib/swift/linux/libswiftCore.so+0x2bb0b9) #4 0x00007fe2ecc1a41c _T0s17_assertionFailures5NeverOs12StaticStringV_SSAE4fileSu4lines6UInt32V5flagstF (/usr/lib/swift/linux/libswiftCore.so+0x14d41c) #5 0x00007fe2e9417056 _T010Foundation10NSCalendarC10componentsAA14DateComponentsVAC4UnitV_AA0D0V4fromAJ2toAC7OptionsV7optionstF (/usr/lib/swift/linux/libFoundation.so+0x3b0056) #6 0x00007fe2e97bac21 _T010Foundation8CalendarV14dateComponentsAA04DateD0Vs3SetVyAC9ComponentOG_AA0E0V4fromAM2totFAfA10NSCalendarCcfU_TA (/usr/lib/swift/linux/libFoundation.so+0x753c21) #7 0x00007fe2e97baa64 _T010Foundation10NSCalendarCAA14DateComponentsVs5Error_pIgxozo_AcEsAF_pIgxrzo_TRTA (/usr/lib/swift/linux/libFoundation.so+0x753a64) #8 0x00007fe2e97c0889 _T010Foundation10NSCalendarCAA14DateComponentsVs5Error_pIgxozo_AcEsAF_pIgxrzo_TRTA.124 (/usr/lib/swift/linux/libFoundation.so+0x759889) #9 0x00007fe2e96f7e29 _T010Foundation14_MutableHandleC3mapqd__qd__xKcKlF (/usr/lib/swift/linux/libFoundation.so+0x690e29) #10 0x00007fe2e97b3e7a _T010Foundation8CalendarV14dateComponentsAA04DateD0Vs3SetVyAC9ComponentOG_AA0E0V4fromAM2totF (/usr/lib/swift/linux/libFoundation.so+0x74ce7a) #11 0x00007fe2f22fd16c #12 0x0000000000fed3be llvm::MCJIT::runFunction(llvm::Function*, llvm::ArrayRef<llvm::GenericValue>) (/usr/bin/swift+0xfed3be) #13 0x0000000000ff1882 llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, st
Avatar
@swift-4.1.3 demangle _T010Foundation10NSCalendarC10componentsAA14DateComponentsVAC4UnitV_AA0D0V4fromAJ2toAC7OptionsV7optionstF
Avatar
_T010Foundation10NSCalendarC10componentsAA14DateComponentsVAC4UnitV_AA0D0V4fromAJ2toAC7OptionsV7optionstF ---> Foundation.NSCalendar.components(Foundation.NSCalendar.Unit, from: Foundation.Date, to: Foundation.Date, options: Foundation.NSCalendar.Options) -> Foundation.DateComponents
Avatar
LinuxでDate関連のnanosecond周りはバグだらけ。
Avatar
@swift-main -swift-version 5 enum Result<Value, Error: Swift.Error> { case success(Value) case failure(Error) func get() throws -> Value { switch self { case .success(let value): return value case .failure(let error): throw error } } } extension Result where Error == Never { func get() -> Value { switch self { case .success(let value): return value } } } let a: Result<Int, Never> = .success(42) print(a.get())
Avatar
swiftNightly BOT 9/12/2018 2:21 PM
42
Avatar
norio_nomura 9/13/2018 1:36 PM
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-09-07-a以降でボットが動かない症状、URLSession.dataTask(with:)へ渡したURLRequesthttpBodyURLSessionDataTask内部で失われているらしいところまでは把握したのだけれど、最低限の再現条件がわからなくてbugs.swift.orgへ登録できない…
Avatar
@swift-4.2.4 protocol P1 { associatedtype A1 associatedtype A2 } protocol P2: P1 where A2 == A3 { typealias A3 = A1 } class S: P2 { typealias A1 = Int typealias A2 = A3 } (edited)
6:27 AM
ありゃ
6:27 AM
@swift-main protocol P1 { associatedtype A1 associatedtype A2 } protocol P2: P1 where A2 == A3 { typealias A3 = A1 } class S: P2 { typealias A1 = Int typealias A2 = A3 }
Avatar
swiftNightly BOT 9/15/2018 6:27 AM
exit status: 1 with stderr:<stdin>:10:7: error: type 'S' does not conform to protocol 'P1' class S: P2 { ^ <stdin>:3:20: note: protocol requires nested type 'A2'; do you want to add it? associatedtype A2 ^ <stdin>:10:7: error: type 'S' does not conform to protocol 'P2' class S: P2 { ^
Avatar
norio_nomura 9/15/2018 7:22 AM
おっと、動かないバージョンへアップデートされたままでした。動くバージョンへロールバックしました。> @swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
🙌 1
Avatar
4.2-DEVELOPMENT-SNAPSHOT-2018-08-25-a
Avatar
swift-4.2-DEVELOPMENT-SNAPSHOT-2018-09-07-a以降でボットが動かない症状、URLSession.dataTask(with:)へ渡したURLRequestのhttpBodyがURLSessionDataTask内部で失われているらしいところまでは把握したのだけれど、最低限の再現条件がわからなくてbugs.swift.orgへ登録できない… 再現できた。 https://bugs.swift.org/browse/SR-8759
10:24 AM
クッキーを受け取ったドメインに対してURLRequesthttpBodyが送られなくなるらしい。
Avatar
swift-corelibs-foundationの不具合を回避して更新しました。> @swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
4.2-DEVELOPMENT-SNAPSHOT-2018-09-14-a
Avatar
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
4.2-RELEASE
Avatar
@swift-4.2.4 @swift-4.1.3 protocol P {} protocol Foo {} extension Int: P {} extension Array: Foo where Element: P {} let a = [1,2,3] print(a is Foo) (edited)
Avatar
truestderr:<stdin>:8:9: warning: 'is' test is always true print(a is Foo) ^ (edited)
Avatar
exit status: 134 with stderr:<stdin>:8:9: warning: 'is' test is always true print(a is Foo) ^ warning: Swift runtime does not yet support dynamically querying conditional conformance ('Swift.Array<Swift.Int>': 'main.Foo') Could not cast value of type 'Swift.Array<Swift.Int>' (0x7f1e0cfb7240) to 'main.Foo' (0x7f1e0cfb7280). #0 0x0000000003f25074 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x3f25074) #1 0x0000000003f253b6 SignalHandler(int) (/usr/bin/swift+0x3f253b6) #2 0x00007f1e11cc7390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #3 0x00007f1e10406428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #4 0x00007f1e1040802a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #5 0x00007f1e0ce92fd3 (/usr/lib/swift/linux/libswiftCore.so+0x39dfd3) #6 0x00007f1e0ce8f599 (/usr/lib/swift/linux/libswiftCore.so+0x39a599) #7 0x00007f1e0ce8f5eb (/usr/lib/swift/linux/libswiftCore.so+0x39a5eb) #8 0x00007f1e0ce90b38 _dynamicCastToExistential(swift::OpaqueValue*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetExistentialTypeMetadata<swift::InProcess> const*, swift::DynamicCastFlags) (/usr/lib/swift/linux/libswiftCore.so+0x39bb38) #9 0x00007f1e120f624d #10 0x00007f1e120f610e #11 0x0000000000fed3be llvm::MCJIT::runFunction(llvm::Function*, llvm::ArrayRef<llvm::GenericValue>) (/usr/bin/swift+0xfed3be) #12 0x0000000000ff1882 llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const* const*) (/usr/bin/swift+0xff1882) #13 0x00000000004d9076 swift::RunImmediately(swift::CompilerInstance&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, swift::IRGenOptions&, swift:
Avatar
https://github.com/taketo1024/SwiftyMath SwiftyMath を Swift4.2 対応しました 👏 w @Kishikawa Katsumi SwiftBot に組み込んで頂いてたと思うので、よかったら(とても暇なときにでも)アップデートして下さい 🙏
Pure Math in Pure Swift. Contribute to taketo1024/SwiftyMath development by creating an account on GitHub.
🙌 1
Avatar
Kishikawa Katsumi 9/18/2018 7:38 AM
👍
Avatar
Pure Math in Pure Swift.
かっこいい・・・
😉 1
Avatar
Kishikawa Katsumi 9/18/2018 7:41 AM
@Taketo Sano そういえば、SwiftyMathはBotだけですけど、BotのバックエンドはWebなので、Webで使えるようにすることもたぶん難しくないのですが、 https://swift-playground.kishikawakatsumi.com/ ^ Webでできたら何かおもしろい利用方法があるとかあります?
Avatar
おぉ!面白いというよりはとても助かる利用方法として、これを使ってもらいたい人たちが必ずしも Mac ユーザでないので、Web で利用可能になると大変ありがたいです!
Avatar
Kishikawa Katsumi 9/18/2018 7:43 AM
たぶんそんな気がしてたんですよね。
Avatar
😂
Avatar
コードはこちらですかね 🙂 あんまり重い処理を回されては困るというようなことがあれば、自分でホスティングします 🙇 https://github.com/kishikawakatsumi/swift-playground
Contribute to kishikawakatsumi/swift-playground development by creating an account on GitHub.
Avatar
Kishikawa Katsumi 9/18/2018 8:03 AM
まあ、タイムアウトもあるんでそんなに心配はしてないですけどね。コードはそれです。 Dockerとかが想定通りになってればそのまま動きます。
Avatar
了解です!
Avatar
Kishikawa Katsumi 9/18/2018 8:28 AM
@Taketo Sano 私のPlaygroundは必要最低限ですけど、うまいことコードとか説明とかUIを作ったら、楽しくインタラクティブに数学を学べる環境になると思うので、もしそういうことをやる場合は手伝うので教えてください。
Avatar
ありがとうございます、めっちゃ嬉しいです😍
Avatar
swift-nightlyボットがビルド出来なくなった修正のついでに、SwiftyMathを使える様にしてみました。 @swift-4.2.4 @swift-main import SwiftyMath let a = 𝐐(4, 5) // 4/5 let b = 𝐐(3, 2) // 3/2 print(a + b) // 23/10
Avatar
23/10
Avatar
swiftNightly BOT 9/21/2018 12:15 AM
23/10
Avatar
@swift-4.2.4 Int(Double(Int.max))
Avatar
exit status: 4 with stderr:<stdin>:1:1: warning: result of 'Int' initializer is unused Int(Double(Int.max)) ^ ~~~~~~~~~~~~~~~~~ Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max Current stack trace: 0 libswiftCore.so 0x00007f5ca0e9ff30 _swift_stdlib_reportFatalError + 168 1 libswiftCore.so 0x00007f5ca0bf7c6a <unavailable> + 1502314 2 libswiftCore.so 0x00007f5ca0e3515e <unavailable> + 3850590 3 libswiftCore.so 0x00007f5ca0bf7c6a <unavailable> + 1502314 4 libswiftCore.so 0x00007f5ca0d90059 <unavailable> + 3174489 5 libswiftCore.so 0x00007f5ca0bf7730 _fatalErrorMessage(_:_:file:line:flags:) + 19 7 swift 0x0000000001042d2e <unavailable> + 12856622 8 swift 0x0000000001046e52 <unavailable> + 12873298 9 swift 0x00000000004f8b52 <unavailable> + 1018706 10 swift 0x00000000004df0cb <unavailable> + 913611 11 swift 0x00000000004da400 <unavailable> + 893952 12 swift 0x000000000048a348 <unavailable> + 566088 13 libc.so.6 0x00007f5ca3833740 __libc_start_main + 240 14 swift 0x0000000000488009 <unavailable> + 557065 #0 0x0000000004108b64 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x4108b64) #1 0x00000000041069f2 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x41069f2) #2 0x0000000004108d12 SignalHandler(int) (/usr/bin/swift+0x4108d12) #3 0x00007f5ca5109390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007f5ca0d90061 $Ss18_fatalErrorMessage__4file4line5flagss5NeverOs12StaticStringV_A2HSus6UInt32VtFTf4nnddn_n (/usr/lib/swift/linux/libswiftCore.so+0x307061) #5 0x00007f5ca0bf7743 $Ss18_fatalErrorMessage__4file4line5flagss5Ne
Avatar
これはしょうがないのか?
Avatar
omochimetaru 9/21/2018 8:41 AM
Double value cannot be converted to Int because the result would be greater than Int.max
Avatar
Double のビット数考えればしょうがないか。
Avatar
omochimetaru 9/21/2018 8:41 AM
@swift-4.2.4 Int(Float(Int.max) * 2)
Avatar
exit status: 4 with stderr:<stdin>:1:1: warning: result of 'Int' initializer is unused Int(Float(Int.max) * 2) ^ ~~~~~~~~~~~~~~~~~~~~ Fatal error: Float value cannot be converted to Int because the result would be greater than Int.max Current stack trace: 0 libswiftCore.so 0x00007fe934031f30 _swift_stdlib_reportFatalError + 168 1 libswiftCore.so 0x00007fe933d89c6a <unavailable> + 1502314 2 libswiftCore.so 0x00007fe933fc715e <unavailable> + 3850590 3 libswiftCore.so 0x00007fe933d89c6a <unavailable> + 1502314 4 libswiftCore.so 0x00007fe933f22059 <unavailable> + 3174489 5 libswiftCore.so 0x00007fe933d89730 _fatalErrorMessage(_:_:file:line:flags:) + 19 7 swift 0x0000000001042d2e <unavailable> + 12856622 8 swift 0x0000000001046e52 <unavailable> + 12873298 9 swift 0x00000000004f8b52 <unavailable> + 1018706 10 swift 0x00000000004df0cb <unavailable> + 913611 11 swift 0x00000000004da400 <unavailable> + 893952 12 swift 0x000000000048a348 <unavailable> + 566088 13 libc.so.6 0x00007fe9369c5740 __libc_start_main + 240 14 swift 0x0000000000488009 <unavailable> + 557065 #0 0x0000000004108b64 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x4108b64) #1 0x00000000041069f2 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x41069f2) #2 0x0000000004108d12 SignalHandler(int) (/usr/bin/swift+0x4108d12) #3 0x00007fe93829b390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007fe933f22061 $Ss18_fatalErrorMessage__4file4line5flagss5NeverOs12StaticStringV_A2HSus6UInt32VtFTf4nnddn_n (/usr/lib/swift/linux/libswiftCore.so+0x307061) #5 0x00007fe933d89743 $Ss18_fatalErrorMessage__4file4line5flag
Avatar
omochimetaru 9/21/2018 8:41 AM
なるほど
Avatar
@swift-4.2.4 print(Int(Float80(Int.max))) (edited)
Avatar
9223372036854775807 (edited)
👏 1
Avatar
一方で・・・ @swift-4.2.4 print(Int(Double(Int.min))) (edited)
Avatar
-9223372036854775808 (edited)
Avatar
丸め方向によるランダム的挙動。
Avatar
omochimetaru 9/21/2018 8:46 AM
あれ?
8:47 AM
Doubleで精度不足になったときに
8:47 AM
@swift-4.2.4 print(Int.min) print(Int(Double(Int.min)))
Avatar
-9223372036854775808 -9223372036854775808
Avatar
omochimetaru 9/21/2018 8:48 AM
あ〜
8:49 AM
@swift-4.2.4 import Foundation print(String(format: "%x", Int.min)) (edited)
Avatar
0 (edited)
Avatar
omochimetaru 9/21/2018 8:49 AM
Avatar
↓これはどうなってんだ?? // Kotlin fun main(args: Array<String>) { println(Long.MAX_VALUE) println(Long.MAX_VALUE.toDouble().toLong()) } 9223372036854775807 9223372036854775807 (edited)
Avatar
omochimetaru 9/21/2018 8:50 AM
@swift-4.2.4 import Foundation print(String(format: "%lx", Int.min))
Avatar
8000000000000000
Avatar
omochimetaru 9/21/2018 8:51 AM
負の最大数は 0b10000.... ってパターンだから、
8:51 AM
いや、ちがうか、仮数部に入るのは絶対値か
8:52 AM
@swift-4.2.4 import Foundation let x: Int128 = abs(Int128(Int.min)) print(String(format: "%llx", x))
Avatar
exit status: 1 with stderr:<stdin>:2:8: error: use of undeclared type 'Int128' let x: Int128 = abs(Int128(Int.min)) ^~~~~~
Avatar
omochimetaru 9/21/2018 8:52 AM
Avatar
Kotlin のは、単に max 超えてるのは全部 max に丸められるだけだった。
8:55 AM
LongInt とかと同じで上位ビット切り捨てかと思ってた。 (edited)
Avatar
norio_nomura 9/21/2018 9:12 AM
Double のビット数考えればしょうがないか。 変換できないのが?クラッシュするのが?
Avatar
ビット数により精度を保てないが故にオーバーフローしてクラッシュするのが、ですね。
Avatar
Int.min だとクラッシュしないのが微妙ですね。丸め方向の偶然に挙動が委ねられてる感が。
Avatar
norio_nomura 9/21/2018 9:19 AM
@swift-4.2.4 -frontend -repl Int(exactly: Double(Int.max)) (edited)
Avatar
// r0 : Int? = nil (edited)
Avatar
omochimetaru 9/21/2018 9:42 AM
exactlyだと、だめなときはnilか。
Avatar
@swift-4.2.4 protocol P { func foo() -> Int } struct S: P { @_implements(P, foo()) func bar() -> Int { return 1 } }
Avatar
no output
Avatar
@_implements初めて知った
👀 1
Avatar
悪いことできそう
😈 1
Avatar
@swift-4.2.4 @swift-main struct X {} protocol P1 { associatedtype U } protocol P2: P1 {} extension P2 { @_implements(P1, U) typealias _Default_U = X } struct S<A>: P2 {} extension S where A: P1 { typealias U = A.U } (edited)
Avatar
exit status: 134 with stderr:error type should not appear in IRGen UNREACHABLE executed at /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-16_04/swift/lib/IRGen/MetadataRequest.cpp:1258! #0 0x000000000410afb4 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410afb4) #1 0x0000000004108e42 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108e42) #2 0x000000000410b162 SignalHandler(int) (/usr/bin/swift+0x410b162) #3 0x00007f943313c390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007f943187b428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #5 0x00007f943187d02a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #6 0x00000000040a3f4d llvm::llvm_unreachable_internal(char const*, char const*, unsigned int) (/usr/bin/swift+0x40a3f4d) #7 0x0000000000631e17 swift::CanTypeVisitor<(anonymous namespace)::EmitTypeMetadataRef, swift::irgen::MetadataResponse, swift::irgen::DynamicMetadataRequest>::visit(swift::CanType, swift::irgen::DynamicMetadataRequest) (/usr/bin/swift+0x631e17) #8 0x0000000000634708 swift::irgen::MetadataResponse llvm::function_ref<swift::irgen::MetadataResponse (swift::irgen::IRGenFunction&, swift::irgen::DynamicMetadataRequest, llvm::Constant*)>::callback_fn<swift::irgen::getTypeMetadataAccessFunction(swift::irgen::IRGenModule&, swift::CanType, swift::ForDefinition_t)::$_2>(long, swift::irgen::IRGenFunction&, swift::irgen::DynamicMetadataRequest, llvm::Constant*) (/usr/bin/swift+0x634708) #9 0x0000000000634566 swift::irgen::MetadataResponse llvm::function_ref<swift::irgen::MetadataResponse (swift::irgen::IRGenFunction&, swift::irgen::Explosion&)>::callback_fn<swift::irgen::getTypeMetadataAccessFunction(swift::irgen::IRGenModule&, swift::CanType, swift::ForDefinition_t, llvm::function_ref<swift::irgen::MetadataResponse (swift::irgen::IRGenFunction&, swift::irgen::DynamicMetadataRequest, llvm::Constant*)>)::$_1>(long, swift::irgen::IRGenFunction&, swift::irgen::Explosion&) (/usr/bin/swift+0x634566) #10 0 (edited)
Avatar
swiftNightly BOT 9/22/2018 1:39 PM
exit status: 134 with stderr:error type should not appear in IRGen UNREACHABLE executed at /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/IRGen/MetadataRequest.cpp:1230! Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio-ssl-93eb7dfa/Sources/CNIOOpenSSL/include -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/libbcrypt/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOLinux/include -I /Libraries/.build/checkouts/SwiftBacktrace-fcbf89ea/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace-fcbf89ea/Sources/Clibunwind/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOOpenSSL.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-ssl-support-a3e27b6f/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/crypto-36ec1aea/Sources/libbcrypt/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown
Avatar
@swift-4.2.4 var iterator = [1].enumerated().makeIterator() _ = iterator.next()
Avatar
no output
Avatar
omochimetaru 9/27/2018 1:42 AM
@swift-4.2.4 var a = AnyCollection([1,2,3]) let idxs = a.indices print(idxs)
Avatar
DefaultIndices<AnyCollection<Int>>(_elements: Swift.AnyCollection<Swift.Int>(_box: Swift._RandomAccessCollectionBox<Swift.Array<Swift.Int>>), _startIndex: (), _endIndex: ())stderr:warning: the Swift runtime was unable to demangle the type of field '_startIndex'. the mangled type name is '5IndexSlQz'. this field will show up as an empty tuple in Mirrors warning: the Swift runtime was unable to demangle the type of field '_endIndex'. the mangled type name is '5IndexSlQz'. this field will show up as an empty tuple in Mirrors
Avatar
@swift-4.2.4 @swift-main protocol P {} extension P { typealias Concrete = S } struct S : P {} let a: P = .Concrete.self print(a)
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-16_04/llvm/include/llvm/Support/Casting.h:255: typename cast_retty<X, Y *>::ret_type llvm::cast(Y *) [X = swift::MetatypeType, Y = swift::TypeBase]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed. #0 0x000000000410b054 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410b054) #1 0x0000000004108ee2 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108ee2) #2 0x000000000410b202 SignalHandler(int) (/usr/bin/swift+0x410b202) #3 0x00007f045adde390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007f045951d428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #5 0x00007f045951f02a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #6 0x00007f0459515bd7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbd7) #7 0x00007f0459515c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82) #8 0x0000000000c7225a swift::Lowering::SILGenBuilder::createMetatype(swift::SILLocation, swift::SILType) (/usr/bin/swift+0xc7225a) #9 0x0000000000cafec9 swift::ASTVisitor<(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext>::visit(swift::Expr*, swift::Lowering::SGFContext) (/usr/bin/swift+0xcafec9) #10 0x0000000000ca2c28 swift::Lowering::SILGenFunction::emitRValueAsSingleValue(swift::Expr*, swift::Lowering::SGFContext) (/usr/bin/swift+0xca2c28) #11 0x0000000000cbdfdf swift::Lowering::ManagedValue llvm::function_ref<swift::Lowering::ManagedValue (swift::Lowering::SGFContext)>::callback_fn<(anonymous namespace)::RValueEmitter::visitErasureExpr(swift::ErasureExpr*, swift::Lowering::SGFContext)::$_8>(long, swift::Lowering::SGFContext) (/usr/bin/swift+0xcbdfdf) #12 0x0000000000c8a59a std::_Function_handler<void (swift::SILValue), swift::Lowering::SILGenFunction::emitExistentialErasure(swift::SILLocation, swift::CanType, swift::Lowering::TypeLowering const&, swift::Lowering::TypeLowering const&,
Avatar
swiftNightly BOT 9/27/2018 8:32 AM
exit status: 1 with stderr:<stdin>:7:13: error: type of expression is ambiguous without more context let a: P = .Concrete.self ~^~~~~~~~
Avatar
@swift-4.2.4 @swift-main protocol P {} extension P { typealias Concrete = S } struct S : P {} let a: P = .Concrete() print(a)
Avatar
exit status: 1 with stderr:<stdin>:7:13: error: member 'Concrete' is not a function let a: P = .Concrete() ^ ~~
Avatar
swiftNightly BOT 9/27/2018 8:33 AM
S()
Avatar
↑なんかすごい変なバグ発見したと思ったけどなんとなく直ってた。
Avatar
omochimetaru 9/27/2018 8:35 AM
その謎のドット何・・・
Avatar
左辺の型のstaticメソッドとかは省略できるやつでは
Avatar
omochimetaru 9/27/2018 8:36 AM
なるほど。
Avatar
ちなみに最初のほうのやつは、Xcode10 の Swift4.2 だとコンパイルも実行も通ってしまいます。
Avatar
@swift-4.2.4 protocol Hoge { associatedtype Fuga func piyo(_ index: Int) -> Fuga } extension Array: Hoge where Element == String { typealias Fuga = String func piyo(_ index: Int) -> Fuga { return self[index] } } extension Array: Hoge where Element == Int { typealias Fuga = Int func piyo(_ index: Int) -> Fuga { return self[index] } } (edited)
Avatar
exit status: 1 with stderr:<stdin>:15:13: error: invalid redeclaration of 'Fuga' typealias Fuga = Int ^ <stdin>:8:13: note: 'Fuga' previously declared here typealias Fuga = String ^ <stdin>:9:30: error: 'Fuga' is ambiguous for type lookup in this context func piyo(_ index: Int) -> Fuga { ^~~~ <stdin>:8:13: note: found this candidate typealias Fuga = String ^ <stdin>:15:13: note: found this candidate typealias Fuga = Int ^ <stdin>:16:30: error: 'Fuga' is ambiguous for type lookup in this context func piyo(_ index: Int) -> Fuga { ^~~~ <stdin>:8:13: note: found this candidate typealias Fuga = String ^ <stdin>:15:13: note: found this candidate typealias Fuga = Int ^ <stdin>:7:1: error: type 'Array<Element>' does not conform to protocol 'Hoge' extension Array: Hoge where Element == String { ^ <stdin>:2:18: note: multiple matching types named 'Fuga' associatedtype Fuga ^ <stdin>:8:13: note: possibly intended match typealias Fuga = String ^ <stdin>:15:13: note: possibly intended match typealias Fuga = Int ^ <stdin>:14:18: error: conflicting conformance of 'Array<Element>' to protocol 'Hoge'; there cannot be more than one conformance, even with different conditional bounds extension Array: Hoge where Element == Int { ^ <stdin>:7:1: note: 'Array<Element>' declares conformance to protocol 'Hoge' here extension Array: Hoge where Element == String { ^ (edited)
Avatar
なるほど
8:10 AM
@swift-4.2.4 protocol Hoge { associatedtype Fuga func piyo(_ index: Int) -> Fuga } extension Array: Hoge where Element == String { typealias Fuga = String func piyo(_ index: Int) -> String { return self[index] + "でーす" } } extension Array: Hoge where Element == Int { typealias Fuga = Int func piyo(_ index: Int) -> Int { return self[index] + 10 } }
Avatar
exit status: 1 with stderr:<stdin>:15:13: error: invalid redeclaration of 'Fuga' typealias Fuga = Int ^ <stdin>:8:13: note: 'Fuga' previously declared here typealias Fuga = String ^ <stdin>:7:1: error: type 'Array<Element>' does not conform to protocol 'Hoge' extension Array: Hoge where Element == String { ^ <stdin>:2:18: note: multiple matching types named 'Fuga' associatedtype Fuga ^ <stdin>:8:13: note: possibly intended match typealias Fuga = String ^ <stdin>:15:13: note: possibly intended match typealias Fuga = Int ^ <stdin>:14:18: error: conflicting conformance of 'Array<Element>' to protocol 'Hoge'; there cannot be more than one conformance, even with different conditional bounds extension Array: Hoge where Element == Int { ^ <stdin>:7:1: note: 'Array<Element>' declares conformance to protocol 'Hoge' here extension Array: Hoge where Element == String { ^
Avatar
norio_nomura 10/2/2018 2:38 PM
@swift-main -frontend -repl class Animal {} class Cat<T>: Animal {} func foo(_: Animal) { print("Animal") } func foo<T>(_: Cat<T>) { print("Cat") } let cat = Cat<Int>() :constraints debug on foo(cat)
Avatar
swiftNightly BOT 10/2/2018 2:38 PM
exit status: 11 with stderr:Stack dump: 0. Program arguments: swift -frontend -I /Libraries/.build/x86_64-unknown-linux/debug -L /Libraries/.build/x86_64-unknown-linux/debug -lLibraries -DDEBUG -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOZlib/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOHTTPParser/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOOpenSSL.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio-ssl-93eb7dfa/Sources/CNIOOpenSSL/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CCryptoOpenSSL.build/module.modulemap -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/CCryptoOpenSSL/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/crypto-36ec1aea/Sources/CBcrypt/include/module.modulemap -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/CBcrypt/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/crypto-36ec1aea/Sources/CBase32/include/module.modulemap -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/CBase32/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-ssl-support-a3e27b6f/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOSHA1/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOAtomics/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIODarwin/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinu
Avatar
norio_nomura 10/2/2018 2:39 PM
むう、nightlyがLLVMSymbolizerでエラーになるな。
2:39 PM
1. while processing REPL source: class Animal {} LLVMSymbolizer: error reading file: No such file or directory. LLVMSymbolizer: error reading file: No such file or directory. LLVMSymbolizer: error reading file: No such file or directory. #0 0x000000000459a4b4 (swift+0x459a4b4) #1 0x0000000004598280 (swift+0x4598280) #2 0x000000000459a662 (swift+0x459a662) #3 0x00007f494a31e390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007f494a74e000
Avatar
norio_nomura 10/3/2018 3:15 PM
@swift-4.2.4 -frontend -repl class Animal {} class Cat<T>: Animal {} func foo(_: Animal) { print("Animal") } func foo<T>(_: Cat<T>) { print("Cat") } let cat = Cat<Int>() :constraints debug on foo(cat) (edited)
Avatar
// cat : Cat<Int> = REPL.Cat<Swift.Int> Animalstderr:---Constraint solving for the expression at [<REPL Input>:1:1 - line:1:8]--- (overload set choice binding $T1 := Cat<Int>) ---Initial constraints for the given expression--- (call_expr type='()' location=<REPL Input>:1:1 range=[<REPL Input>:1:1 - line:1:8] arg_labels=_: (overloaded_decl_ref_expr type='$T0' location=<REPL Input>:1:1 range=[<REPL Input>:1:1 - line:1:1] name=foo number_of_decls=2 function_ref=single decls=[ REPL.(file).foo@<REPL Input>:1:6, REPL.(file).foo@<REPL Input>:1:6]) (paren_expr type='(Cat<Int>)' location=<REPL Input>:1:5 range=[<REPL Input>:1:4 - line:1:8] (declref_expr type='Cat<Int>' location=<REPL Input>:1:5 range=[<REPL Input>:1:5 - line:1:5] decl=REPL.(file).cat@<REPL Input>:1:5 direct_to_storage function_ref=unapplied))) Score: 0 0 0 0 0 0 0 0 0 0 0 Type Variables: $T0 [lvalue allowed] subtype_of_existential involves_type_vars bindings={} @ locator@0x81d2e10 [OverloadedDeclRef@<REPL Input>:1:1] $T1 [lvalue allowed] as Cat<Int> @ locator@0x81d2f60 [DeclRef@<REPL Input>:1:5] Active Constraints: Inactive Constraints: disjunction [[locator@0x81d2e10 [OverloadedDeclRef@<REPL Input>:1:1]]]:$T0 bound to decl REPL.(file).foo@<REPL Input>:1:6 : (Animal) -> () at <REPL Input>:1:6 [[locator@0x81d2e10 [OverloadedDeclRef@<REPL Input>:1:1]]]; or $T0 bound to decl REPL.(file).foo@<REPL Input>:1:6 : <T> (Cat<T>) -> () at <REPL Input>:1:6 [[locator@0x81d2e10 [OverloadedDeclRef@<REPL Input>:1:1]]]; (Cat<Int>) -> () applicable fn $T0 [[locator@0x81d2fe0 [Call@<REPL Input>:1:1 -> apply function]]]; Resolved overloads: selected overload set choice cat: $T1 == Cat<Int> (assuming $T0 bound to decl REPL.(file).foo@<REPL Input>:1:6 : (Animal) -> () at <REPL Input>:1:6 [[locator@0x81d2e10 [OverloadedDeclRef@<REPL Input>:1:1]]]; (overload set choice binding $T0 := (Animal) -> ()) (found solution 0 0 0 0 0 0 0 0 0 0 0) ) (assuming $T0 bound to decl REPL.(file). (edited)
Avatar
norio_nomura 10/3/2018 3:15 PM
Discordのメッセージサイズに収まらない出力のアップロード先を https://file.io から https://ptpb.pw へ変更しました。 (edited)
3:18 PM
file.ioは一度urlへアクセスすると削除されてしまうサービスでしたが、ptpb.pwでは削除されません。
3:20 PM
https://ptpb.pw/8gvL.txt/text#L-17 の様に各行へのリンクも貼れるので、共有しやすくなったかも? (edited)
👍 4
Avatar
omochimetaru 10/6/2018 7:17 PM
@swift-4.2.4 var f: (() -> Void)? class Cat { deinit { f?() } } func main() { let cat = Cat() f = { [weak cat] in print(cat == nil) // true } } main() (edited)
Avatar
exit status: 2 with stderr:error: unable to invoke subcommand: /usr/bin/swift-swift (No such file or directory) ```
Avatar
omochimetaru 10/6/2018 7:18 PM
@swift-4.2.4 var f: (() -> Void)? class Cat { deinit { f?() } } func main() { let cat = Cat() f = { [weak cat] in print(cat == nil) // true } } main()
Avatar
true
Avatar
omochimetaru 10/6/2018 7:18 PM
deinit中のオブジェクトはweakから見るとnil
Avatar
@swiftbot class A { typealias Aliased = String } class B : A { typealias Aliased = Double } let str: String.Type = B.Aliased.self let dbl: Double.Type = B.Aliased.self print(str) print(dbl)
🛠 1
Avatar
swiftbot BOT 10/9/2018 8:31 AM
Author icon
rintaro
class A { typealias Aliased = String } class B : A { typealias Aliased = Double } let str: String.Type = B.Aliased.self let dbl: Double.Type = B.Aliased.self print(str) print(dbl)
Version:
swift-4.1.1-RELEASE
Output:
String Double
Error:
Avatar
omochimetaru 10/9/2018 8:31 AM
??
8:32 AM
どう理解すればいいんだ・・・
Avatar
オーバーロードといっていいのか・・・
Avatar
omochimetaru 10/9/2018 8:32 AM
B.Aliased と A.Aliased が B.Aliased という式でオーバーロード?されてる?
8:34 AM
そもそもA.AliasedをBで変更するのだと思っていました
Avatar
B.Aliased を型推論させると当然のように Double に解決されるんですけどね。
Avatar
omochimetaru 10/9/2018 8:35 AM
@swiftbot class A { typealias Aliased = String } class B : A { typealias Aliased = Double } let a: A.Type = B.self print(a.Aliased.self)
🛠 1
Avatar
swiftbot BOT 10/9/2018 8:35 AM
Author icon
omochimetaru
class A { typealias Aliased = String } class B : A { typealias Aliased = Double } let a: A.Type = B.self print(a.Aliased.self)
Version:
swift-4.1.1-RELEASE
Output:
String
Error:
Avatar
omochimetaru 10/9/2018 8:35 AM
静的に別スコープなのか〜
Avatar
assoctype付けるとA.Aliasedが見えなくなるあたりfuncのオーバーロードと似てる?
Avatar
omochimetaru 10/9/2018 8:40 AM
typealiasじゃなくてassoctype?
Avatar
(さっきできてたのが再現できないので確認中……)
Avatar
似たようなの作れた。 @swift-4.2.4 protocol P { static var Aliased: String.Type { get } } extension P { static var Aliased: String.Type { return String.self } } class A: P {} class B: A { static var Aliased: Double.Type { return Double.self } } let str: String.Type = B.Aliased.self let dbl: Double.Type = B.Aliased.self print(str) print(dbl)
Avatar
String Double
Avatar
omochimetaru 10/9/2018 8:53 AM
なるほど・・・
8:55 AM
@swift-4.2.4 protocol P { static var value: Int { get } } extension P { static var value: Int { return 3 } } protocol Q { static var value: Bool { get } } extension Q { static var value: Bool { return true } } class A : P { } class B : A, Q { } class C : B { static var value: String = "str" } let a: Int = C.value let b: Bool = C.value let c: String = C.value print(a, b, c)
Avatar
3 true str
Avatar
プロトコル使ったら普通にプロパティオーバーロードできた。 @swift-4.2.4 protocol P { var a: Int { get } } extension P { var a: Int { return 42 } } protocol Q { var a: Bool { get } } extension Q { var a: Bool { return true } } struct S: P, Q {} let s = S() let x: Int = s.a let y: Bool = s.a print(x) print(y)
Avatar
42 true
Avatar
うーん、これがありなら普通にプロパティオーバーロードとかジェネリックプロパティとかできてもいい気も? subscript もできるんだし。
9:05 AM
それとも意図せずにプロパティオーバーロードができてしまってる?
Avatar
omochimetaru 10/9/2018 9:05 AM
PとQの var a の型が一緒だとエラーになるし、 PとQを使わずにSに直接2つ書いてもエラーになるし
9:06 AM
裏技感がある (edited)
Avatar
@swift-4.2.4 protocol P { var a: Int { get set } } extension P { var a: Int { get { return 42 } set {} } } protocol Q { var a: Bool { get set } } extension Q { var a: Bool { get { return true } set {} } } struct S: P, Q {} var s = S() s.a = true as Bool (edited)
Avatar
no output (edited)
Avatar
lvalue としてうまく機能しないので、中途半端ですね。
Avatar
omochimetaru 10/9/2018 9:13 AM
マジかっ
Avatar
あ、let だからか?
Avatar
omochimetaru 10/9/2018 9:14 AM
あ。
Avatar
ぉ、うごいた。
Avatar
おおお・・・
Avatar
@swift-4.2.4 -O struct RGBA<Channel> { var red: Channel var green: Channel var blue: Channel var alpha: Channel } let rgbaArray = [RGBA(red: 255, green: 127, blue: 0, alpha: 255)] rgbaArray.withUnsafeBufferPointer { rgbaPointer in print(rgbaPointer[0]) rgbaPointer.withMemoryRebound(to: UInt8.self) { uint8Pointer in print(uint8Pointer[0]) } } (edited)
🛠 1
Avatar
swiftbot BOT 10/9/2018 9:24 AM
Author icon
rintaro
struct RGBA<Channel> { var red: Channel var green: Channel var blue: Channel var alpha: Channel } let rgbaArray = [RGBA(red: 255, green: 127, blue: 0, alpha: 255)] rgbaArray.withUnsafeBufferPointer { rgbaPointer in print(rgbaPointer[0]) rgbaPointer.withMemoryRebound(to: UInt8.self) { uint8Pointer in print(uint8Pointer[0]) } }
Version:
swift-4.1.1-RELEASE
Output:
Error:
Fatal error: Current stack trace: 0 libswiftCore.so 0x00007f1674d19750 _swift_stdlib_reportFatalError + 171 1 libswiftCore.so 0x00007f1674a87ad6 <unavailable> + 1366742 2 libswiftCore.so 0x00007f1674cc2383 <unavailable> + 3703683 3 libswiftCore.so 0x00007f1674a87ad6 <unavailable> + 1366742 4 libswiftCore.so 0x00007f1674bf3d80 <unavailable> + 2858368 5 libswiftCore.so 0x00007f1674bbbded <unavailable> + 2629101 6 libswiftCore.so 0x00007f1674bbbc20 UnsafeBufferPointer.withMemoryRebound<A, B>(to:_:) + 42 10 libswiftCore.so 0x00007f1674a81e30 Array.withUnsafeBufferPointer<A>(_:) + 172 12 swift 0x0000000000fed1ce <unavailable> + 12505550 13 swift 0x0000000000ff1692 <unavailable> + 12523154 ...
9:24 AM
Avatar
RGBA<Int>(red: 255, green: 127, blue: 0, alpha: 255) 255
Avatar
-O だと通ると。
Avatar
ええっ!
Avatar
https://discordapp.com/channels/291054398077927425/291054454793306112/499480778993041411 の様に、ボットへのメンションとコードブロックの始点が同じ行に在っても、正しく解釈する様にしました。 また、コードブロックの始点と終点が行頭になくても認識する様にしました。 @swift-4.2.4 print("hello")
Avatar
hello
Avatar
お!それミスしがちだったので助かります、ありがとうございます
🙂 1
Avatar
@swift-4.2.4 struct Stone { var x: Int { get { return 1 } _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.y) } main()
Avatar
exit status: 1 with stderr:<stdin>:7:9: error: expected 'get', 'set', 'willSet', or 'didSet' keyword to start an accessor definition _modify { ^ <stdin>:23:9: error: cannot pass immutable value as inout argument: 'x' is a get-only property mod(&a.x) ^~~~
Avatar
@swift-main struct Stone { var x: Int { get { return 1 } _modify { var x: Int = 3 yield &x y = x } } var y: Int = 0 } func mod(_ x: inout Int) { x = 8 } func main() { var a = Stone() mod(&a.x) print(a.y) } main()
Avatar
swiftNightly BOT 10/20/2018 1:51 PM
8
Avatar
@swift-4.2.4 print("hello world") (edited)
Avatar
hello world (edited)
Avatar
@swift-4.2.4 @swift-4.1.3 -Onone import Foundation import SwiftBacktrace enablePrettyStackTrace() let group = DispatchGroup() var array = [Int]() DispatchQueue.global().async(group: group) { for i in 0...1000000 { array.append(i) } print("end 1: \(array.count)") } DispatchQueue.global().async(group: group) { for i in 0...1000000 { array.append(i) } print("end 2: \(array.count)") } group.wait()
Avatar
exit status: 11 with stderr:/Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(callStackSymbols<A>(_:transform:)+0x9f) [0x00007ff40d7e71bf] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(backtrace(_:formatter:)+0x102) [0x00007ff40d7e6cd2] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(closure #1 in closure #1 in variable initialization expression of _enablePrettyStackTrace+0x2f) [0x00007ff40d7ebc5f] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(runSignalHandlers()+0x34d) [0x00007ff40d7edbcd] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(signalHandler(signal:)+0x1c4) [0x00007ff40d7ed3a4] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(@objc signalHandler(signal:)+0x9) [0x00007ff40d7ed1d9] /lib/x86_64-linux-gnu/libpthread.so.0(__restore_rt+0x0) [0x00007ff4150c5390] /lib/x86_64-linux-gnu/libc.so.6(strerror_l+0x500) [0x00007ff41386e870] /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so(specialized _ArrayBufferProtocol._arrayOutOfPlaceUpdate<A>(_:_:_:_:)+0x16d) [0x00007ff40cd688cd] /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so(specialized Array._copyToNewBuffer(oldCount:)+0x3f) [0x00007ff40cd5fbef] /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so(specialized Array._copyToNewBuffer(oldCount:)+0x25) [0x00007ff40cd5ffa5] /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so(specialized Array.append(_:)+0x78) [0x00007ff40cd5e7c8] /usr/lib/swift/linux/libswiftSwiftOnoneSupport.so(specialized Array.append(_:)+0x10) [0x00007ff40cd5e740] -(+0x0) [0x00007ff4154f57b8] -(+0x0) [0x00007ff4154f55f7] /usr/lib/swift/linux/libdispatch.so(_dispatch_call_block_and_release+0x7) [0x00007ff40cfd48c7] -(+0x0) [0x00007ff4154f57ae]#0 0x000000000410b054 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410b054) #1 0x0000000004108ee2 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108ee2) #2 0x000000000410b202 SignalHandler(int) (/usr/bin/swift+0x410b202) #3 0x00007ff4150c5390 __restore_rt (/lib/x86_64-
Avatar
exit status: 4 with stderr:Fatal error: UnsafeMutablePointer.deinitialize with negative count Current stack trace: 0 libswiftCore.so 0x00007f166750b810 _swift_stdlib_reportFatalError + 171 1 libswiftCore.so 0x00007f1667279a86 <unavailable> + 1366662 2 libswiftCore.so 0x00007f16674b4453 <unavailable> + 3703891 3 libswiftCore.so 0x00007f1667279a86 <unavailable> + 1366662 4 libswiftCore.so 0x00007f16673e5ec0 <unavailable> + 2858688 5 libswiftCore.so 0x00007f1667279660 _fatalErrorMessage(_:_:file:line:flags:) + 19 6 libswiftSwiftOnoneSupport.so 0x00007f1664062fda <unavailable> + 163802 7 libswiftSwiftOnoneSupport.so 0x00007f1664058166 <unavailable> + 119142 8 libswiftSwiftOnoneSupport.so 0x00007f1664058100 specialized Array._copyToNewBuffer(oldCount:) + 23 9 libswiftSwiftOnoneSupport.so 0x00007f16640551a2 <unavailable> + 106914 10 libswiftSwiftOnoneSupport.so 0x00007f16640553f0 specialized Array.append(_:) + 16 13 libdispatch.so 0x00007f1663fed977 <unavailable> + 301431 14 libdispatch.so 0x00007f1663ffcd33 <unavailable> + 363827 15 libpthread.so.0 0x00007f166c5626ba <unavailable> + 30394 16 libc.so.6 0x00007f166ad7d3b0 clone + 109 /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(callStackSymbols<A>(_:transform:)+0x87) [0x00007f1664a969c7] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(backtrace(_:formatter:)+0xd8) [0x00007f1664a962d8] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(closure #1 in closure #1 in variable initialization expression of _enablePrettyStackTrace+0x27) [0x00007f1664a90fe7] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.so(runSignalHandlers()+0x324) [0x00007f1664a92e04] /Libraries/.build/x86_64-unknown-linux/debug/libLibraries.s
Avatar
ああ、CoWはスレッドセーフではないのか。
Avatar
あいや、メモリが足りないだけ?
Avatar
@swift-4.2.4 // @escaping だけど同期的にクロージャが実行されるだけの関数 func run(_ body: @escaping () -> Void) { body() } // 値型を非同期的に更新するための機能を提供 struct Updater<Object: AnyObject, Target> { let object: Object let keyPath: ReferenceWritableKeyPath<Object, Target> func update(_ body: (inout Target) throws -> Void) rethrows { try body(&object[keyPath: keyPath]) } } // 値型、これの状態を @escaping をまたいで更新したい struct FooState { var a: Int = 0 mutating func incrementA<Object: AnyObject>(with updater: Updater<Object, FooState>) { run { // @escaping なのでこの中では `self` を更新できない updater.update { state in // Updater を使って更新 state.a += 1 } } } } // FooState を保持する参照型 class Foo { var state: FooState = FooState() func bar() { state.incrementA(with: Updater<Foo, FooState>(object: self, keyPath: \Foo.state)) } } let foo = Foo() foo.bar() print(foo.state.a)
Avatar
exit status: 134 with stderr:Simultaneous accesses to 0x7e0f7e0, but modification requires exclusive access. Previous access (a modification) started at (0x7f4374754523). Current access (a read) started at: 0 libswiftCore.so 0x00007f437005a950 swift_beginAccess + 521 3 libswiftCore.so 0x00007f436ffff1e8 <unavailable> + 3588584 4 libswiftCore.so 0x00007f436feef4a1 <unavailable> + 2475169 5 libswiftCore.so 0x00007f436feef05d <unavailable> + 2474077 6 libswiftCore.so 0x00007f436fef1600 _projectKeyPathReferenceWritable<A, B>(root:keyPath:) + 155 14 swift 0x0000000001043efe <unavailable> + 12861182 15 swift 0x0000000001048022 <unavailable> + 12877858 16 swift 0x00000000004f8b42 <unavailable> + 1018690 17 swift 0x00000000004df0bb <unavailable> + 913595 18 swift 0x00000000004da3f0 <unavailable> + 893936 19 swift 0x000000000048a348 <unavailable> + 566088 20 libc.so.6 0x00007f4372a4e740 __libc_start_main + 240 21 swift 0x0000000000488009 <unavailable> + 557065 Fatal access conflict detected. #0 0x000000000410b054 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410b054) #1 0x0000000004108ee2 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108ee2) #2 0x000000000410b202 SignalHandler(int) (/usr/bin/swift+0x410b202) #3 0x00007f4374324390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007f4372a63428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #5 0x00007f4372a6502a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #6 0x00007f437005a742 (/usr/lib/swift/linux/libswiftCore.so+0x3c7742) #7 0x00007f437005ac38 (/usr/lib/swift/linux/libswiftCore.so+0x3c7c38) #8 0x00007f43747543d9 #9 0x00007f43747549c
Avatar
@swift-4.2.4 --version
Avatar
Swift version 4.2.1 (swift-4.2.1-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
@swift-main protocol A { associatedtype ARelated } protocol B: A { associatedtype BRelated: Codable } extension B where Self.ARelated: Codable { typealias BRelated = Self.ARelated } struct AImpl: A, B { typealias BRelated = ARelated struct ARelated: Codable { let val: Int } } (edited)
Avatar
swiftNightly BOT 11/9/2018 3:13 AM
no output (edited)
Avatar
omochimetaru 11/9/2018 4:00 AM
@swift-4.2.4 import Foundation print(String(format: "%@", "hello" as NSString)) (edited)
Avatar
exit status: 1 with stderr:<stdin>:3:36: error: argument type 'NSString' does not conform to expected type 'CVarArg' print(String(format: "%@", "hello" as NSString)) ~~~~~~~~^~~~~~~~~~~ as! CVarArg (edited)
Avatar
SwiftyMathがswift-DEVELOPMENT-SNAPSHOT-2018-11-13-aでビルドできなくなった。
Avatar
swift-nightlyボット、swift-DEVELOPMENT-SNAPSHOT-2018-11-14-aで久しぶりにCI通ったけど、ボットとして動かなかったのでswift-DEVELOPMENT-SNAPSHOT-2018-10-03-aまでロールバック。
Avatar
@swift-4.2.4 import Foundation class Cat { @objc func nya() -> Int { return 3 } } class Dog { @objc func wan() -> Int { return 4 } } func f(_ a: AnyObject) { let x = a.nya() let y = a.wan?() print(type(of: x), x) // Int 3 print(type(of: y), y) // Optional<Int> nil } f(Cat())
Avatar
exit status: 134 with stderr:<stdin>:15:24: warning: expression implicitly coerced from 'Int?' to 'Any' print(type(of: y), y) // Optional<Int> nil ^ <stdin>:15:24: note: provide a default value to avoid this warning print(type(of: y), y) // Optional<Int> nil ^ ?? <#default value#> <stdin>:15:24: note: force-unwrap the value to avoid this warning print(type(of: y), y) // Optional<Int> nil ^ ! <stdin>:15:24: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(type(of: y), y) // Optional<Int> nil ^ as Any <unknown>:0: error: fatal error encountered during compilation; please file a bug report with your project and the crash log <unknown>:0: note: Program used external function 'sel_registerName' which could not be resolved! #0 0x000000000410ac94 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410ac94) #1 0x0000000004108b22 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108b22) #2 0x000000000410ae42 SignalHandler(int) (/usr/bin/swift+0x410ae42) #3 0x00007fddc4398390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007fddc2ad7428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #5 0x00007fddc2ad902a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #6 0x00000000004dfb25 (/usr/bin/swift+0x4dfb25) #7 0x00000000040a35ff llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/bin/swift+0x40a35ff) #8 0x000000000105591b llvm::RuntimeDyldImpl::resolveExternalSymbols() (/usr/bin/swift+0x105591b) #9 0x00000000010542e6 llvm::RuntimeDyldImpl::resolveRelocations() (/usr/bin/swift+0x10542e6) #10 0x0000000001041fcd llvm::MCJIT::finalizeObject() (/usr/bin/swift+0x1041fcd) #11 0x00000000004f88de swift::RunImmediately(swift::CompilerInstance&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<st
Avatar
@swift-4.2.4 import Foundation class Cat { @objc func nya() -> Int { return 3 } } class Dog { @objc func wan() -> Int { return 4 } } func f(_ a: AnyObject) { let x = a.nya() let y = a.wan?() print(type(of: x), x) // Int 3 print(type(of: y), y) // Optional<Int> nil } (edited)
Avatar
stderr:<stdin>:15:24: warning: expression implicitly coerced from 'Int?' to 'Any' print(type(of: y), y) // Optional<Int> nil ^ <stdin>:15:24: note: provide a default value to avoid this warning print(type(of: y), y) // Optional<Int> nil ^ ?? <#default value#> <stdin>:15:24: note: force-unwrap the value to avoid this warning print(type(of: y), y) // Optional<Int> nil ^ ! <stdin>:15:24: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(type(of: y), y) // Optional<Int> nil ^ as Any (edited)
Avatar
@swift-4.2.4 import Foundation try! JSONDecoder().decode([Int].self, from: "".data(using: .utf8)!) (edited)
Avatar
exit status: 1 with stderr:<stdin>:2:6: error: use of unresolved identifier 'JSONDecoder' try! JSONDecoder().decode([Int].self, from: "".data(using: .utf8)!) ^~~~~~~~~~~
Avatar
@swift-4.2.4 import Foundation do { _ = try JSONDecoder().decode([Int].self, from: "".data(using: .utf8)!) } catch let error { print(error) }
Avatar
⚠️ [DecodingError.dataCorrupted: The given data was not valid JSON.]
Avatar
norio_nomura 12/1/2018 3:47 AM
swift-5.0-branchのスナップショットCIが動き始めた。swift50ボットの準備をしないと… https://ci.swift.org/view/swift-5.0-branch/
Avatar
norio_nomura 12/6/2018 4:16 AM
@swift-tensorflow #if swift(>=4.2.1) print("4.2.1") #elseif swift(>=4.2) print("4.2") #endif
Avatar
swiftTensorflow BOT 12/6/2018 4:16 AM
4.2
Avatar
norio_nomura 12/8/2018 6:02 AM
@swift-5.0.3 @swift-main import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
swiftNightly BOT 12/8/2018 6:02 AM
DEVELOPMENT-SNAPSHOT-2018-12-07-a
Avatar
5.0-DEVELOPMENT-SNAPSHOT-2018-12-07-a
Avatar
norio_nomura 12/8/2018 6:14 AM
swift-nightlyボットを更新し、swift-5.0ボットを追加しました。 (edited)
6:20 AM
ボット自身をビルドするSwiftのバージョンを固定したため、ツールチェイン不具合の影響を受けずに、ボットが更新される様になりました。
Avatar
@swift-4.2.4 @swift-5.0.3 import Foundation // column 1 2 3 4 5 6 7 8 9 10 11 // line 1 L I N E 1 _ 6 7 あ \n // line 2 L I N E 2 _ 7 8 9 0 \n // line 3 L I N E 3 _ 8 9 0 1 \n let string = "LINE1_67あ\nLINE2_7890\nLINE3_8901\n" let rangeOfFirstLine = string.lineRange(for: string.startIndex..<string.startIndex) let firstLine = string[rangeOfFirstLine] print(string.distance(from: rangeOfFirstLine.lowerBound, to: rangeOfFirstLine.upperBound)) print(firstLine == "LINE1_67あ\n")
Avatar
10 true
Avatar
exit status: 4 with stderr:Fatal error: String index is out of bounds Current stack trace: 0 libswiftCore.so 0x00007f2fb98a75e0 _swift_stdlib_reportFatalError + 69 1 libswiftCore.so 0x00007f2fb97ac1b6 <unavailable> + 3125686 2 libswiftCore.so 0x00007f2fb97ac535 <unavailable> + 3126581 3 libswiftCore.so 0x00007f2fb97b1a39 <unavailable> + 3148345 4 libswiftCore.so 0x00007f2fb97b518b <unavailable> + 3162507 5 libswiftCore.so 0x00007f2fb983a050 String.distance(from:to:) + 9 7 swift 0x0000000000cee8be <unavailable> + 9365694 8 swift 0x0000000000cf2ad2 <unavailable> + 9382610 9 swift 0x000000000051612f <unavailable> + 1138991 10 swift 0x00000000004eafb5 <unavailable> + 962485 11 swift 0x00000000004e6456 <unavailable> + 943190 12 swift 0x000000000048d88e <unavailable> + 579726 13 libc.so.6 0x00007f2fbc4c9740 __libc_start_main + 240 14 swift 0x000000000048b6c9 <unavailable> + 571081 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio-ssl-93eb7dfa/Sources/CNIOOpenSSL/include -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/CCryptoOpenSSL/include -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/CBcrypt/include -I /Libraries/.build/checkouts/crypto-36ec1aea/Sources/CBase32/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio-b68c973e/S
Avatar
@swift-5.0.3 let rain = #"The "rain" in "Spain" falls mainly on the Spaniards."# print(rain)
Avatar
The "rain" in "Spain" falls mainly on the Spaniards.
Avatar
@swift-5.0.3 let keypaths = #"Swift keypaths such as \Person.name hold uninvoked references to properties."# print(keypaths)
Avatar
Swift keypaths such as \Person.name hold uninvoked references to properties.
Avatar
@swift-5.0.3 let answer = 42 let dontpanic = #"The answer to life, the universe, and everything is \#(answer)."# print(dontpanic)
Avatar
The answer to life, the universe, and everything is 42.
Avatar
@swift-5.0.3 let str = ##"My dog said "woof"#gooddog"## print(str)
Avatar
My dog said "woof"#gooddog
Avatar
@swift-5.0.3 let answer = 42 let multiline = #""" The answer to life, the universe, and everything is \#(answer). """# print(multiline) (edited)
Avatar
The answer to life, the universe, and everything is 42. (edited)
Avatar
@swift-5.0.3 let answer = 42 let multiline = #""" The answer to life, the universe, and everything is \#(answer). """# print(multiline)
Avatar
The answer to life, the universe, and everything is 42.
Avatar
@swift-5.0.3 let regex2 = #"\\[A-Z]+[A-Za-z]+\.[a-z]+"# print(regex2)
Avatar
\\[A-Z]+[A-Za-z]+\.[a-z]+
Avatar
@swift-5.0.3 let times = [ "Hudson": "38", "Clarke": "42", "Robinson": "35", "Hartis": "DNF" ] let finishers1 = times.compactMapValues { Int($0) } let finishers2 = times.compactMapValues(Int.init) print(finishers1) print(finishers2)
Avatar
["Robinson": 35, "Hudson": 38, "Clarke": 42] ["Hudson": 38, "Clarke": 42, "Robinson": 35]
Avatar
@swift-5.0.3 let times = [ "Hudson": "38", "Clarke": "42", "Robinson": "35", "Hartis": "DNF" ] let finishers1 = times.compactMapValues { Int($0) } let finishers2 = times.compactMapValues(Int.init) print(finishers1) print(finishers2)
Avatar
["Hudson": 38, "Clarke": 42, "Robinson": 35] ["Hudson": 38, "Robinson": 35, "Clarke": 42]
Avatar
順番変わるのか
Avatar
辞書になった時点で順番の保証は無いよ、リテラルから辞書になる過程では保持されてるけど
Avatar
この順番ってどこで決まるの?
Avatar
内部的なハッシュテーブルのエントリ順
Avatar
なるほー
Avatar
OSS FoundationのDictionaryの内部を追っていけば正確にわかりそう
Avatar
@swift-5.0.3 let times1 = [ "Hudson": "38", "Clarke": "42", "Robinson": "35", "Hartis": "DNF" ] print(times1) let times2 = [ "Hudson": "38", "Clarke": "42", "Robinson": "35", "Hartis": "DNF" ] print(times2)
Avatar
["Hartis": "DNF", "Hudson": "38", "Clarke": "42", "Robinson": "35"] ["Robinson": "35", "Hudson": "38", "Clarke": "42", "Hartis": "DNF"]
Avatar
インスタンス毎にシードがランダムに変わるので、本当に不定です。
Avatar
全く同じでも変わるのか。
Avatar
@swift-5.0.3 let scores = [100, 80, 85] let passCount = scores.count { $0 >= 85 } print(passCount) (edited)
Avatar
2 (edited)
Avatar
countだ
Avatar
Swifrt5のproposalを総ナメしてて、荒らしみたいになってるw
2:05 AM
@swift-5.0.3 print(3.isMultiple(of: 3)) (edited)
Avatar
true (edited)
Avatar
@swift-main -frontend -repl :print_decl Result
Avatar
swiftNightly BOT 12/14/2018 2:26 AM
@_frozen enum Result<Success, Failure> where Failure : Error { case success(Success) case failure(Failure) func map<NewSuccess>(_ transform: (Success) -> NewSuccess) -> Result<NewSuccess, Failure> func mapError<NewFailure>(_ transform: (Failure) -> NewFailure) -> Result<Success, NewFailure> where NewFailure : Error func flatMap<NewSuccess>(_ transform: (Success) -> Result<NewSuccess, Failure>) -> Result<NewSuccess, Failure> func flatMapError<NewFailure>(_ transform: (Failure) -> Result<Success, NewFailure>) -> Result<Success, NewFailure> where NewFailure : Error func get() throws -> Success } extension Result where Failure == Error { init(catching body: () throws -> Success) } extension Result : Equatable where Success : Equatable, Failure : Equatable { static func == (a: Result<Success, Failure>, b: Result<Success, Failure>) -> Bool } extension Result : Hashable where Success : Hashable, Failure : Hashable { var hashValue: Int { get } func hash(into hasher: inout Hasher) }
Avatar
おー
Avatar
@d_date Swifrt5のproposalを総ナメしてて、荒らしみたいになってるw 問題ないかと。どうしても気になるなら、ダイレクトメッセージをボットに送るとよいです。
Avatar
ありがとうございます🙏
Avatar
今あなたがiOS / Swiftの勉強会で聞きたいネタはなんですか2018年末。 その他はリプライください。
2:39 AM
これの準備かしら
Avatar
Kishikawa Katsumi 12/14/2018 2:43 AM
見てるぶんには勉強になるからいいんじゃないかな。
👍 1
Avatar
ボットへのダイレクトメッセージは練習に使う事を想定しています。 (edited)
2:54 AM
ダイレクトメッセージを使うデメリットは、複数のボットへ同時に話しかけられない点かな。
2:54 AM
それも、グループDMを使えばいいのかな。 (edited)
2:55 AM
ぬ、グループDMを使うにはボットをフレンド登録する必要があるのか。
Avatar
そしてボットはフレンド登録できないらしい。
Avatar
@swift-4.2.4 @swift-5.0.3 func doubleOptionalInt() throws -> Int?? { return 3 } let x = try? doubleOptionalInt() print(x as Any) (edited)
Avatar
Optional(Optional(3)) (edited)
Avatar
Optional(Optional(Optional(3))) (edited)
Avatar
@swift-4.2.4 @swift-5.0.3 enum Result<Value, Error> { case success(Value) case failure(Error) } extension Result: Equatable where Value: Equatable, Error: Equatable { static func == (lhs: Result, rhs: Result) -> Bool { switch (lhs, rhs) { case let (.success(lhs), .success(rhs)): return lhs == rhs case let (.failure(lhs), .failure(rhs)): return lhs == rhs case (.success, .failure), (.failure, .success): return false } } } extension Result: Hashable where Value: Hashable, Error: Hashable { var hashValue: Int { switch self { case let .success(value): return value.hashValue case let .failure(error): return error.hashValue } } } let foo = Result<Int, Never>.success(1) let bar = Result<Int, Never>.success(1) print(foo == bar) (edited)
Avatar
true (edited)
Avatar
exit status: 1 with stderr:<stdin>:33:11: error: type 'Never' does not conform to protocol 'Equatable' print(foo == bar) ^ <stdin>:33:11: error: '<Self where Self : Equatable> (Self.Type) -> (Self, Self) -> Bool' requires that 'Never' conform to 'Equatable' print(foo == bar) ^ <stdin>:33:11: note: requirement specified as 'Never' : 'Equatable' print(foo == bar) ^ <stdin>:33:11: note: requirement from conditional conformance of 'Result<Int, Never>' to 'Equatable' print(foo == bar) ^ (edited)
Avatar
@swift-4.2.4 print(DictionaryLiteral<String, String>(dictionaryLiteral: ("hoge", "fuga"))) (edited)
Avatar
DictionaryLiteral<String, String>(_elements: [("hoge", "fuga")]) (edited)
Avatar
@swift-5.0.3 print(KeyValuePairs<String, String>(dictionaryLiteral: ("hoge", "fuga"))) (edited)
Avatar
["hoge": "fuga"] (edited)
Avatar
@swift-5.0.3 print(DictionaryLiteral<String, String>(dictionaryLiteral: ("hoge", "fuga")))
Avatar
["hoge": "fuga"]stderr:<stdin>:2:7: warning: 'DictionaryLiteral' is deprecated: renamed to 'KeyValuePairs' print(DictionaryLiteral<String, String>(dictionaryLiteral: ("hoge", "fuga"))) ^ <stdin>:2:7: note: use 'KeyValuePairs' instead print(DictionaryLiteral<String, String>(dictionaryLiteral: ("hoge", "fuga"))) ^~~~~~~~~~~~~~~~~ KeyValuePairs
Avatar
@swift-5.0.3 @swift-4.2.4 #if swift(<5.1) print("OK") #endif #if compiler(<5.1) print("OK") #endif
Avatar
OK OK
Avatar
exit status: 1 with stderr:<stdin>:2:11: error: unexpected platform condition argument: expected a unary comparison, such as '>=2.2' #if swift(<5.1) ^ <stdin>:6:15: error: unexpected platform condition argument: expected a unary comparison, such as '>=2.2' #if compiler(<5.1) ^
Avatar
@swift-4.2.4 @swift-5.0.3 var x = 1 x.self = 2 print(x.self) // prints 2 let id = \Int.self x[keyPath: id] = 3 print(x[keyPath: id]) // prints 3 (edited)
Avatar
exit status: 1 with stderr:<stdin>:6:11: error: invalid component of Swift key path let id = \Int.self ^ <stdin>:6:10: error: expression type 'WritableKeyPath<_, _>' is ambiguous without more context let id = \Int.self ^~~~~~~~~ (edited)
Avatar
2 3 (edited)
Avatar
@swift-5.0.3 @swift-4.2.4 // Example 1: // Users expect `0xffff_ffff_ffff_ffff` to be coerced to type `UInt`. print(UInt(0xffff_ffff_ffff_ffff as UInt)) print(UInt(0xffff_ffff_ffff_ffff)) (edited)
Avatar
18446744073709551615 18446744073709551615 (edited)
Avatar
exit status: 1 with stderr:<stdin>:6:12: error: integer literal '18446744073709551615' overflows when stored into 'Int' print(UInt(0xffff_ffff_ffff_ffff)) ^ (edited)
Avatar
@swift-4.0.3 @swift-4.1.3 @swift-4.2.4 import Foundation if [1] == [1] { print("OK") } (edited)
Avatar
OK (edited)
Avatar
OK (edited)
Avatar
OK (edited)
Avatar
exit status: 1 with stderr:<stdin>:4:8: error: ambiguous use of operator '==' if [1] == [1] { ^ Foundation.IndexPath:28:24: note: found this candidate public static func == (lhs: Foundation.IndexPath, rhs: Foundation.IndexPath) -> Bool ^ Foundation.IndexSet:2:24: note: found this candidate public static func == (lhs: Foundation.IndexSet, rhs: Foundation.IndexSet) -> Bool ^
Avatar
exit status: 1 with stderr:<stdin>:4:8: error: ambiguous use of operator '==' if [1] == [1] { ^ Foundation.IndexPath:28:24: note: found this candidate public static func == (lhs: Foundation.IndexPath, rhs: Foundation.IndexPath) -> Bool ^ Foundation.IndexSet:2:24: note: found this candidate public static func == (lhs: Foundation.IndexSet, rhs: Foundation.IndexSet) -> Bool ^
Avatar
exit status: 1 with stderr:<stdin>:4:8: error: ambiguous use of operator '==' if [1] == [1] { ^ Foundation.IndexPath:46:24: note: found this candidate public static func ==(lhs: Foundation.IndexPath, rhs: Foundation.IndexPath) -> Bool ^ Foundation.IndexSet:2:24: note: found this candidate public static func ==(lhs: Foundation.IndexSet, rhs: Foundation.IndexSet) -> Bool ^
Avatar
なるほど
Avatar
@swift-4.2.4 import SwiftBacktrace print(swiftDemangleName("$S13ExampleNumber6isEven6numberSbSi_tF")) print(swiftSimplifiedDemangleName("$S13ExampleNumber6isEven6numberSbSi_tF")) (edited)
Avatar
ExampleNumber.isEven(number: Swift.Int) -> Swift.Bool isEven(number:) (edited)
Avatar
@swift-5.0.3 import Foundation public extension String.StringInterpolation { mutating func appendInterpolation(_ value: Date, _ formatter: DateFormatter) { appendLiteral(formatter.string(from: value)) } } public extension DateFormatter { static func format(date: Style, time: Style) -> DateFormatter { let formatter = DateFormatter() formatter.locale = Locale.current (formatter.dateStyle, formatter.timeStyle) = (date, time) return formatter } } let formatter = DateFormatter.format(date: .none, time: .long) print("\(Date(), formatter)")
Avatar
3:11:18 PM GMT+9
Avatar
あー便利だこれ
6:17 AM
@swift-5.0.3 import Foundation public extension String.StringInterpolation { mutating func appendInterpolation(_ value: Date, _ formatter: DateFormatter) { appendLiteral(formatter.string(from: value)) } } public extension DateFormatter { static func format(date: Style, time: Style, locale: Locale = .current) -> DateFormatter { let formatter = DateFormatter() formatter.locale = locale (formatter.dateStyle, formatter.timeStyle) = (date, time) return formatter } } let formatter = DateFormatter.format(date: .none, time: .long) print("\(Date(), formatter)")
Avatar
3:17:13 PM GMT+9
Avatar
@swift-5.0.3 -frontend -repl :print_decl Result
Avatar
@_frozen enum Result<Success, Failure> where Failure : Error { case success(Success) case failure(Failure) func map<NewSuccess>(_ transform: (Success) -> NewSuccess) -> Result<NewSuccess, Failure> func mapError<NewFailure>(_ transform: (Failure) -> NewFailure) -> Result<Success, NewFailure> where NewFailure : Error func flatMap<NewSuccess>(_ transform: (Success) -> Result<NewSuccess, Failure>) -> Result<NewSuccess, Failure> func flatMapError<NewFailure>(_ transform: (Failure) -> Result<Success, NewFailure>) -> Result<Success, NewFailure> where NewFailure : Error func get() throws -> Success } extension Result where Failure == Error { init(catching body: () throws -> Success) } extension Result : Equatable where Success : Equatable, Failure : Equatable { static func == (a: Result<Success, Failure>, b: Result<Success, Failure>) -> Bool } extension Result : Hashable where Success : Hashable, Failure : Hashable { var hashValue: Int { get } func hash(into hasher: inout Hasher) }
Avatar
自分でResultをまんま実装すると、 extension Result where Failure == Error { init(catching body: () throws -> Success) } でコンパイルエラーになるんですよね
Avatar
それは、 protocol P に対して P型(existential)それ自体は P に準拠しないから
6:36 AM
<Failure : Error(これはプロトコル) > にたいして Failure == Error ( これはExistential)
6:37 AM
を制約しても意味ないから、間違ってるよってエラーです
6:37 AM
このプロポーザルによって、
6:37 AM
Error(exis)型それ自体もErrorプロトコルであるように、
6:37 AM
変更されるから
6:37 AM
その言語仕様の変更とセットじゃないと意味がないコード。
Avatar
@swift-5.0.3 enum MyResult<Success, Failure: Error> { case success(Success) case failure(Failure) } extension MyResult where Failure == Error { init(catching body: () throws -> Success) { do { self = .success(try body()) } catch { self = .failure(error) } } } print(type(of: MyResult { 1 }))
Avatar
MyResult<Int, Error>
Avatar
そういうことかー
6:45 AM
@swift-5.0.3 print(type(of: Result { 1 }))
Avatar
Result<Int, Error>
Avatar
ResultはSwift5に入ったからこれも動くと。
Avatar
プロポーザルの第二回レビューでコアチームの人が言い出して導入されてちょっとびっくりした。
6:46 AM
あ、そうだね、サードパーティのResultにも、AnyErrorが提供されていることがあるけど、それが不要になるよ。
Avatar
やったね〜〜
Avatar
あと Never : Error も入るから、 NoError も不要に。
Avatar
NeverのconformanceはResultに向けたもので、しばらくは使われないのかと思ったけど、ちゃんとResultも入ったので安心。
Avatar
@swift-5.0.3 let foo = Result<Int, Never>.success(1) let bar = Result<Int, Never>.success(1) print(foo == bar)
Avatar
true
Avatar
@swift-5.0.3 print(#"\a\b"#)
Avatar
\a\b
Avatar
@swift-5.0.3 print(###"aaa"bbb#ccc"###)
Avatar
aaa"bbb#ccc
Avatar
@swift-4.2.4 @swift-5.0.3 import Foundation print(UUID().uuidString) (edited)
Avatar
f9db6c73-cdf1-472d-89a6-f406f7d194eb (edited)
Avatar
2F2A909C-271D-4144-943F-158426CFC90E (edited)
Avatar
@swiftbot class Base { func foo(x: Int = 12) {} } class Derived : Base { override func foo(x: Int = 42) { print(x) } } func test1(obj: Base) { obj.foo() } func test2(obj: Derived) { obj.foo() } test1(obj: Derived()) test2(obj: Derived()) (edited)
🛠 1
Avatar
(edited)
Author icon
rintaro
class Base { func foo(x: Int = 12) {} } class Derived : Base { override func foo(x: Int = 42) { print(x) } } func test1(obj: Base) { obj.foo() } func test2(obj: Derived) { obj.foo() } test1(obj: Derived()) test2(obj: Derived())
Version:
swift-4.2.1-RELEASE
Output:
12 42
Error:
Avatar
理解はできるけど、釈然としない。
Avatar
仕様も解るし気持ちもわかる…
Avatar
@swift-4.2.4 class Base { class var defaultX: Int { return 12 } func foo(x: Int = defaultX) {} } class Derived : Base { override class var defaultX: Int { return 42 } override func foo(x: Int = defaultX) { print(x) } } func test1(obj: Base) { obj.foo() } func test2(obj: Derived) { obj.foo() } test1(obj: Derived()) test2(obj: Derived())
Avatar
12 42
Avatar
これでもダメなんですね
Avatar
そうなんですよね。僕もちょうどそれ試してた。
8:35 AM
@swift-4.2.4 class Base { class func getDefaultFooX() -> Int { return 12 } func foo(x: Int = getDefaultFooX()) {} } class Derived : Base { override class func getDefaultFooX() -> Int { return 42 } override func foo(x: Int = getDefaultFooX()) { print(x) } } func test1(obj: Base) { obj.foo() } func test2(obj: Derived) { obj.foo() } test1(obj: Derived()) test2(obj: Derived())
Avatar
12 42
Avatar
https://forums.swift.org/t/pitch-allow-default-parameter-overrides/10673/5 Jordan のこのコメントをもって、最初のやつ以外はバグとしたいお気持ち
Adam and Xiaodi have it correct, and it’s always possible to get the effect you want by adding an overridable method to mySuperClass (something like ‘defaultStatement()’).
8:43 AM
とはいえコメントの意図としては class Base { func getDefaultFooX() -> Int { return 12 } func foo(x: Int? = nil) { let x = x ?? getDefaultFooX() print(x) } } class Derived : Base { override func getDefaultFooX() -> Int { return 42 } } という事なのでしょうね。 (edited)
Avatar
フムー
Avatar
面白い
Avatar
norio_nomura 1/7/2019 1:15 AM
@swift-4.2.4 @swift-5.0.3 @swift-main import Foundation let a = Float80.init(6.8523015e+5) let b = 6.8523015e+5 as Float80 print(a) print(b) print(a == b)
Avatar
swift50 BOT 1/7/2019 1:15 AM
685230.1500000000233 685230.15 false
Avatar
swift42 BOT 1/7/2019 1:15 AM
685230.1500000000233 685230.15 false
Avatar
swiftNightly BOT 1/7/2019 1:15 AM
685230.1500000000233 685230.15 false
Avatar
omochimetaru 1/7/2019 1:16 AM
あれ?最近それ同じになってませんでしたっけ
Avatar
norio_nomura 1/7/2019 1:17 AM
Float80だけバグってる。
1:19 AM
Float80.init(_ other: Double)が呼ばれてる。
Avatar
omochimetaru 1/7/2019 1:26 AM
64bit経由になってるんですか、それはまずいですねw
Avatar
omochimetaru 1/7/2019 1:29 AM
えらい
Avatar
norio_nomura 1/8/2019 1:18 AM
@swift-4.2.4 @swift-5.0.3 import Foundation let a = Float80(6.8523015e+5) let b = 6.8523015e+5 as Float80 print(a) print(b) print(a == b) (edited)
Avatar
swift42 BOT 1/8/2019 1:18 AM
685230.1500000000233 685230.15 false (edited)
Avatar
swift50 BOT 1/8/2019 1:18 AM
685230.15 685230.15 true (edited)
Avatar
norio_nomura 1/8/2019 1:18 AM
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - apple/swift-evolution
1:24 AM
DoubleFloatはSE-0213導入前の挙動でも問題が起きていなかったと。
Avatar
@swift-4.2.4 -frontend -repl protocol P { func hoge(_ a: Int) func hoge(_ a: String) } extension P { func hoge(_ a: Int) {} } struct S : P { func hoge<X>(_ a: X) {} } let s = S() :constraints debug on s.hoge(1) s.hoge("a")
Avatar
// s : S = REPL.S()stderr:---Constraint solving for the expression at [<REPL Input>:1:1 - line:1:9]--- (overload set choice binding $T0 := S) ---Initial constraints for the given expression--- (call_expr type='$T3' location=<REPL Input>:1:3 range=[<REPL Input>:1:1 - line:1:9] arg_labels=_: (unresolved_dot_expr type='$T1' location=<REPL Input>:1:3 range=[<REPL Input>:1:1 - line:1:3] field 'hoge' function_ref=single (declref_expr type='S' location=<REPL Input>:1:1 range=[<REPL Input>:1:1 - line:1:1] decl=REPL.(file).s@<REPL Input>:1:5 direct_to_storage function_ref=unapplied)) (paren_expr type='($T2)' location=<REPL Input>:1:8 range=[<REPL Input>:1:7 - line:1:9] (integer_literal_expr type='$T2' location=<REPL Input>:1:8 range=[<REPL Input>:1:8 - line:1:8] value=1))) Score: 0 0 0 0 0 0 0 0 0 0 0 Type Variables: $T0 [lvalue allowed] as S @ locator@0x8a91c18 [DeclRef@<REPL Input>:1:1] $T1 [lvalue allowed] subtype_of_existential involves_type_vars bindings={} @ locator@0x8a91c98 [UnresolvedDot@<REPL Input>:1:3 -> member] $T2 fully_bound literal=3 involves_type_vars bindings={(subtypes of) (default from ExpressibleByIntegerLiteral) Int} @ locator@0x8a91df0 [IntegerLiteral@<REPL Input>:1:8] $T3 fully_bound subtype_of_existential involves_type_vars bindings={} @ locator@0x8a91e98 [Call@<REPL Input>:1:3 -> function result] Active Constraints: Inactive Constraints: disjunction [[locator@0x8a91c98 [UnresolvedDot@<REPL Input>:1:3 -> member]]]:$T1 bound to decl REPL.(file).S.hoge@<REPL Input>:2:12 : <X> (S) -> (X) -> () at <REPL Input>:2:12 [[locator@0x8a91c98 [UnresolvedDot@<REPL Input>:1:3 -> member]]]; or $T1 bound to decl REPL.(file).P.hoge@<REPL Input>:2:12 : <Self where Self : P> (Self) -> (Int) -> () at <REPL Input>:2:12 [[locator@0x8a91c98 [UnresolvedDot@<REPL Input>:1:3 -> member]]]; $T2 literal conforms to ExpressibleByIntegerLiteral [[locator@0x8a91df0 [IntegerLiteral@<REPL Input>:1:8]]]; ($T2) -> $T3 applicable fn $T1 [[loc
Avatar
え、こわれた。
12:01 AM
<X>がプロトコルじゃなくて普通のジェネリクスってだけ?
Avatar
<X> (S) -> (X) -> ()<Self where Self : P> (Self) -> (Int) -> () を比較して後者を選んでるぽいね。
Avatar
あ。壊れてるんじゃなくてREPL出力か。
12:04 AM
なるほど
Avatar
:constraints debug ons.hoge(1)がどう選択されているか出力してる。
Avatar
プロトコルは関係なくてよりシンプルには<X>よりextension Pが優先しているんですね
Avatar
長いログをアップロードするのに使ってる https://ptpb.pw が死んでるぽい。
12:07 AM
コードをコピーして pbpaste|swift -frontend -repl として見るのが簡単。 (edited)
Avatar
お、できた、長い。
12:09 AM
オーバーロード選択規則の中にジェネリクスが弱い則があるけど
12:09 AM
自前定義かdefault extensionかっていう部分は無いのかな
Avatar
無さげ
Avatar
@swift-nightly -frontend -emit-syntax import Foundation public class TestFunctionDeclDefaultArgument { func multipleArgument(argument1: Int = 1, argument2: String = "string") { } }
3:49 PM
@swift-main -frontend -emit-syntax import Foundation public class TestFunctionDeclDefaultArgument { func multipleArgument(argument1: Int = 1, argument2: String = "string") { } }
Avatar
swiftNightly BOT 1/13/2019 3:49 PM
{"id":49,"kind":"SourceFile","layout":[{"id":48,"kind":"CodeBlockItemList","layout":[{"id":6,"kind":"CodeBlockItem","layout":[{"id":5,"kind":"ImportDecl","layout":[null,null,{"id":1,"tokenKind":{"kind":"kw_import"},"leadingTrivia":[{"kind":"Newline","value":1}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,{"id":4,"kind":"AccessPath","layout":[{"id":3,"kind":"AccessPathComponent","layout":[{"id":2,"tokenKind":{"kind":"identifier","text":"Foundation"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},null],"presence":"Present"}],"presence":"Present"}],"presence":"Present"},null,null],"presence":"Present"},{"id":46,"kind":"CodeBlockItem","layout":[{"id":45,"kind":"ClassDecl","layout":[null,{"id":9,"kind":"ModifierList","layout":[{"id":8,"kind":"DeclModifier","layout":[{"id":7,"tokenKind":{"kind":"kw_public"},"leadingTrivia":[{"kind":"Newline","value":2}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,null,null],"presence":"Present"}],"presence":"Present"},{"id":10,"tokenKind":{"kind":"kw_class"},"leadingTrivia":[],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"id":11,"tokenKind":{"kind":"identifier","text":"TestFunctionDeclDefaultArgument"},"leadingTrivia":[],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,null,null,{"id":44,"kind":"MemberDeclBlock","layout":[{"id":12,"tokenKind":{"kind":"l_brace"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},{"id":42,"kind":"MemberDeclList","layout":[{"id":41,"kind":"MemberDeclListItem","layout":[{"id":40,"kind":"FunctionDecl","layout":[null,null,{"id":13,"tokenKind":{"kind":"kw_func"},"leadingTrivia":[{"kind":"Newline","value":1},{"kind":"Space","value":4}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"id":14,"tokenKind":{"kind":"identifier","text":"multipleArgument"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},null,{"id":36,"kind":"FunctionSignature","layout"
Avatar
めっちゃ便利
3:52 PM
@swift-main -frontend -emit-syntax import Foundation public class TestFunctionDeclNoReturn { func twoArgumentNoReturn(argument1: Int, argument2: String) { } }
Avatar
swiftNightly BOT 1/13/2019 3:52 PM
{"id":42,"kind":"SourceFile","layout":[{"id":41,"kind":"CodeBlockItemList","layout":[{"id":6,"kind":"CodeBlockItem","layout":[{"id":5,"kind":"ImportDecl","layout":[null,null,{"id":1,"tokenKind":{"kind":"kw_import"},"leadingTrivia":[{"kind":"Newline","value":1}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,{"id":4,"kind":"AccessPath","layout":[{"id":3,"kind":"AccessPathComponent","layout":[{"id":2,"tokenKind":{"kind":"identifier","text":"Foundation"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},null],"presence":"Present"}],"presence":"Present"}],"presence":"Present"},null,null],"presence":"Present"},{"id":39,"kind":"CodeBlockItem","layout":[{"id":38,"kind":"ClassDecl","layout":[null,{"id":9,"kind":"ModifierList","layout":[{"id":8,"kind":"DeclModifier","layout":[{"id":7,"tokenKind":{"kind":"kw_public"},"leadingTrivia":[{"kind":"Newline","value":2}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,null,null],"presence":"Present"}],"presence":"Present"},{"id":10,"tokenKind":{"kind":"kw_class"},"leadingTrivia":[],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"id":11,"tokenKind":{"kind":"identifier","text":"TestFunctionDeclNoReturn"},"leadingTrivia":[],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,null,null,{"id":37,"kind":"MemberDeclBlock","layout":[{"id":12,"tokenKind":{"kind":"l_brace"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},{"id":35,"kind":"MemberDeclList","layout":[{"id":34,"kind":"MemberDeclListItem","layout":[{"id":33,"kind":"FunctionDecl","layout":[null,null,{"id":13,"tokenKind":{"kind":"kw_func"},"leadingTrivia":[{"kind":"Newline","value":1},{"kind":"Space","value":4}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"id":14,"tokenKind":{"kind":"identifier","text":"twoArgumentNoReturn"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},null,{"id":29,"kind":"FunctionSignature","layout":[{"
Avatar
norio_nomura 1/17/2019 5:17 AM
@swift-4.2.4 @swift-5.0.3 @swift-main import Foundation print(NSNumber(value: 1.2 as Float).description)
Avatar
1.20000004768372
Avatar
swiftNightly BOT 1/17/2019 5:17 AM
exit status: 4 with stderr:Fatal error: Unknown NSNumber Type: file /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift-corelibs-foundation/Foundation/NSNumber.swift, line 1041 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-zlib-support/module.modulemap -module-name main -lLibraries #0 0x00000000047d58a4 PrintStackTraceSignalHan
Avatar
exit status: 4 with stderr:Fatal error: Unknown NSNumber Type: file /home/buildnode/jenkins/workspace/oss-swift-5.0-package-linux-ubuntu-16_04/swift-corelibs-foundation/Foundation/NSNumber.swift, line 1041 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-zlib-support/module.modulemap -module-name main -lLibraries #0 0x0000000004621134 PrintStackTraceSigna
Avatar
@swift-4.1.3 let data = """ {"data": 9223372036854775808} """ struct Foo: Codable { var data: UInt64 } import Foundation print(try! JSONDecoder().decode(Foo.self, from: data.data(using: .utf8)!))
Avatar
Foo(data: 9223372036854775807)
Avatar
Avatar
macOSだと問題ないね。 $ pbpaste let data = """ {"data": 9223372036854775808} """ struct Foo: Codable { var data: UInt64 } import Foundation print(try! JSONDecoder().decode(Foo.self, from: data.data(using: .utf8)!))% $ pbpaste|xcrun --toolchain org.swift.40320171205a swift - Foo(data: 9223372036854775808) $ pbpaste|xcrun --toolchain org.swift.41320180727a swift - Foo(data: 9223372036854775808) $ pbpaste|xcrun --toolchain org.swift.42120181030a swift - Foo(data: 9223372036854775808) $ pbpaste|xcrun --toolchain org.swift.5020190116a swift - Foo(data: 9223372036854775808)
Avatar
ですね
Avatar
@swift-4.2.4 @swift-5.0.3 let data = """ {"data": 9223372036854775808} """ import Foundation dump(try! JSONSerialization.jsonObject(with: data.data(using: .utf8)!))
Avatar
▿ 1 key/value pair ▿ (2 elements) - key: "data" ▿ value: 9223372036854775808 #0 - super: Foundation.NSValue - super: Foundation.NSObject ▿ _base: Foundation._CFInfo - info: 5766 - pad: 0 - _pad: 0
Avatar
▿ 1 key/value pair ▿ (2 elements) - key: "data" ▿ value: 9223372036854775807 #0 - super: Foundation.NSValue - super: Foundation.NSObject ▿ _base: Foundation._CFInfo - info: 5763 - pad: 0 - _pad: 9223372036854775807
Avatar
@swift-4.2.4 @swift-5.0.3 class Entity<Base> {} class Tweet: Entity<Tweet> {} print(Tweet())
Avatar
main.Tweet
Avatar
execution timeout with no output
Avatar
omochimetaru 1/18/2019 1:43 AM
マジか
1:43 AM
そんな簡単な死あるの知らなかった。
Avatar
コンパイルまでは問題なくてアクセスすると死んじゃうんですよね。。
Avatar
これJavaのコードでたまに見るパターンぽい
Avatar
omochimetaru 1/18/2019 7:33 AM
C++でもやるね
7:33 AM
Swiftの場合 protocol の中で Self が使えるから、不要な事が多い。
Avatar
前までこれコンパイル出来なかった気がするんだけど、今通っちゃうんですね
Avatar
名前w
Avatar
omochimetaru 1/18/2019 7:34 AM
CRTP
Avatar
@swift-4.2.4 -frontend -emit-syntax import Foundation public class TestFunctionDeclDefaultArgument { func multipleArgument(argument1: Int = 1, argument2: String = "string") { } }
Avatar
{"kind":"SourceFile","layout":[{"kind":"CodeBlockItemList","layout":[{"kind":"CodeBlockItem","layout":[{"kind":"ImportDecl","layout":[null,null,{"tokenKind":{"kind":"kw_import"},"leadingTrivia":[{"kind":"Newline","value":1}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,{"kind":"AccessPath","layout":[{"kind":"AccessPathComponent","layout":[{"tokenKind":{"kind":"identifier","text":"Foundation"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},null],"presence":"Present"}],"presence":"Present"}],"presence":"Present"},null],"presence":"Present"},{"kind":"CodeBlockItem","layout":[{"kind":"ClassDecl","layout":[null,{"kind":"ModifierList","layout":[{"kind":"DeclModifier","layout":[{"tokenKind":{"kind":"kw_public"},"leadingTrivia":[{"kind":"Newline","value":2}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"kind":"TokenList","layout":[],"presence":"Present"}],"presence":"Present"}],"presence":"Present"},{"tokenKind":{"kind":"kw_class"},"leadingTrivia":[],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"tokenKind":{"kind":"identifier","text":"TestFunctionDeclDefaultArgument"},"leadingTrivia":[],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},null,null,null,{"kind":"MemberDeclBlock","layout":[{"tokenKind":{"kind":"l_brace"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},{"kind":"DeclList","layout":[{"kind":"FunctionDecl","layout":[null,null,{"tokenKind":{"kind":"kw_func"},"leadingTrivia":[{"kind":"Newline","value":1},{"kind":"Space","value":4}],"trailingTrivia":[{"kind":"Space","value":1}],"presence":"Present"},{"tokenKind":{"kind":"identifier","text":"multipleArgument"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},null,{"kind":"FunctionSignature","layout":[{"kind":"ParameterClause","layout":[{"tokenKind":{"kind":"l_paren"},"leadingTrivia":[],"trailingTrivia":[],"presence":"Present"},{"kind":"FunctionParameterList","layout":[{"kind":"Func
Avatar
norio_nomura 1/20/2019 6:41 AM
ああ、ある程度大きい出力で同じ内容を貼り付けようとすると、ptpb.pwが弾くのかも。
Avatar
おお、なるほどね。あざすあざす
Avatar
norio_nomura 1/20/2019 6:58 AM
-emit-syntax用にprettyPrintが欲しくなるな。
Avatar
@swift-4.2.4 import Foundation let u = NSURL()
Avatar
exit status: 1 with stderr:<stdin>:4:9: error: cannot invoke initializer for type 'NSURL' with no arguments let u = NSURL() ^ <stdin>:4:9: note: overloads for 'NSURL' exist with these partially matching parameter lists: (coder: NSCoder), (fileURLWithPath: String, isDirectory: Bool, relativeTo: URL?), (fileURLWithPath: String, relativeTo: URL?), (fileURLWithPath: String, isDirectory: Bool), (fileURLWithPath: String), (fileURLWithFileSystemRepresentation: UnsafePointer<Int8>, isDirectory: Bool, relativeTo: URL?), (string: String), (string: String, relativeTo: URL?), (dataRepresentation: Data, relativeTo: URL?), (absoluteURLWithDataRepresentation: Data, relativeTo: URL?) let u = NSURL() ^
Avatar
macOS以外では 正しくエラーになるのか
Avatar
@swift-5.0.3 import Foundation let u = NSURL()
Avatar
exit status: 1 with stderr:<stdin>:3:9: error: cannot invoke initializer for type 'NSURL' with no arguments let u = NSURL() ^ <stdin>:3:9: note: overloads for 'NSURL' exist with these partially matching parameter lists: (coder: NSCoder), (fileURLWithPath: String, isDirectory: Bool, relativeTo: URL?), (fileURLWithPath: String, relativeTo: URL?), (fileURLWithPath: String, isDirectory: Bool), (fileURLWithPath: String), (fileURLWithFileSystemRepresentation: UnsafePointer<Int8>, isDirectory: Bool, relativeTo: URL?), (string: String), (string: String, relativeTo: URL?), (dataRepresentation: Data, relativeTo: URL?), (absoluteURLWithDataRepresentation: Data, relativeTo: URL?) let u = NSURL() ^
Avatar
@swift-4.1.3 @swift-4.2.4 @swift-5.0.3 let café = "café" let index = café.utf8.index(before: café.utf8.endIndex) // The last byte. let before = String(café[..<index]) let after = String(café[index...]) print(before + after) // “café” print(after.utf8.count) // 2 bytes?!?
Avatar
café 2
Avatar
café 2
Avatar
café 1
Avatar
🤔
Avatar
Swift 5.0のStringの挙動、不安になってきた… https://bugs.swift.org/browse/SR-9802
Avatar
なんで2
12:34 AM
ああ、utf8で1つ戻って文字の途中に突っ込んだのか
12:35 AM
swift4では文字頭までもどったから2で、swift5はutf8の位置がモテるから1か
12:36 AM
これはこれで良いのでは?
Avatar
どっちが正しいのかはおいても、挙動が変わってるのが。
Avatar
omochimetaru 1/30/2019 1:06 AM
やっぱり5の挙動が変に思えてきました
1:06 AM
いちどbeforeとafterはStringになってるのに
1:07 AM
afterが保持してるのはutf8の後続バイトだ
1:09 AM
StringはCharacterに分けられる場所でしか切り出せないのが良いと思う
Avatar
norio_nomura 1/30/2019 1:25 AM
この変更があっさり入っているという事は、この挙動をテストするコードがずっとなかったって事?
Avatar
omochimetaru 1/30/2019 1:30 AM
たしかにどうなんだろう トリッキーといえばトリッキーだし、いかにもテストケースにしたいやつではありますよね
Avatar
norio_nomura 1/30/2019 1:34 AM
探してみたけど、無さげ。
Avatar
@swift-4.2.4 @swift-5.0.3 func printUnicodeScalars<S: StringProtocol>(_ string: S) { print(string.unicodeScalars.map { "\\u{\(String($0.value, radix: 16))}" }.joined()) } // https://emojipedia.org/family-man-woman-girl-boy/ let family = "\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466}" printUnicodeScalars(family) let utf16Index = family.utf16.index(before: family.utf16.endIndex) let utf16Before = String(family[..<utf16Index]) printUnicodeScalars(utf16Before) let utf16After = String(family[utf16Index...]) printUnicodeScalars(utf16After) printUnicodeScalars(utf16Before + utf16After) print(utf16After.utf16.count) (edited)
Avatar
\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466} \u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{fffd} \u{fffd} \u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466} 1 (edited)
Avatar
\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466} \u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d} \u{1f466} \u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466} 2 (edited)
Avatar
Swift 4以前のString.UTF16View.index(before:) は、Characterの途中のIndexを指すこともあったぽい。 (edited)
Avatar
これはSwift 5のString.UTF8View.index(before:)と同等の挙動。
12:34 AM
とりあえず、Swift 4とSwift 5でString.UTF16ViewString.UTF8View両方のindex(before:)の挙動が違う。
Avatar
omochimetaru 1/31/2019 1:42 AM
Swift4の場合は  末尾のU+1F466がサロゲートペアでちぎれて、どちらも表示は不正文字FFFDになるが、ちぎれたまま保持されてて、くっつけると繋がって戻る Swift5の場合は  末尾のU+1F466がペアを保ってちぎれて、どちらもCharacter境界をたもってて、countは2になっていて、くっつけるとつながって戻る という感じか (edited)
Avatar
https://bugs.swift.org/browse/SR-6161 これを思い出しました。
👀 1
1:43 AM
これも4と5で挙動がちがう。 (edited)
Avatar
norio_nomura 1/31/2019 1:43 AM
挙動が一貫してないよね。
Avatar
omochimetaru 1/31/2019 1:44 AM
Swift5においてUTF-16に限っては、Character境界までインデックスが畳み込まれる挙動が追加実装されたけど、UTF-8は不正位置でちぎれる
1:46 AM
SE‐0180 came up again during the review of SE‐0241, which seeks to do some damage control. I was not around during the original review of SE‐0180. I wish I was, because it has become the only accepted evolution proposal I have ever wished could be undone. I have been j...
1:46 AM
元スレも結構伸びてますね、読んでみるか
1:47 AM
ここのとこの話を見てて、どんなビューの場合でも、String.Indexを受け取った時に、内部的に左側直近の、そのビューでの要素単位の合法な境界に畳み込まれるっていうのがいいと思いました
Avatar
norio_nomura 1/31/2019 1:48 AM
要素ってunicodeScalar?
Avatar
omochimetaru 1/31/2019 1:48 AM
string.unicodeScalars[index] の場合はunicode scalar
1:48 AM
string[index]の場合はcharacter
1:49 AM
string.utf8[index]はバイト位置(あ、この場合は不正なところになりえる string.utf16[index]は2バイト境界
1:49 AM
ただ直近のCharacterまで巻き戻すのがまあまあ重そう
Avatar
norio_nomura 1/31/2019 1:51 AM
Swift 4までのUTF8View.IndexUnicodeScalarの境界に合わせられていました。 @swift-4.2.4 func printUnicodeScalars<S: StringProtocol>(_ string: S) { print(string.unicodeScalars.map { "\\u{\(String($0.value, radix: 16))}" }.joined()) } // https://emojipedia.org/family-man-woman-girl-boy/ let family = "\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466}" printUnicodeScalars(family) let utf8Index = family.utf8.index(before: family.utf8.endIndex) let utf8Before = String(family[..<utf8Index]) printUnicodeScalars(utf8Before) let utf8After = String(family[utf8Index...]) printUnicodeScalars(utf8After) printUnicodeScalars(utf8Before + utf8After) print(utf8After.utf8.count)
Avatar
\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466} \u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d} \u{1f466} \u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466} 4
Avatar
norio_nomura 1/31/2019 1:51 AM
Swift 5ではUTF16View.IndexUnicodeScalarの境界に合わせられる様になった。
Avatar
omochimetaru 1/31/2019 1:53 AM
内部表現ではない方のindexが、unicode scalar境界に畳み込まれる という意味では
1:53 AM
一貫している?
Avatar
norio_nomura 1/31/2019 1:55 AM
UnicodeScalar boundaries are: respected by: String.UTF8View.index(before:) on Swift 4 String.UTF16View.index(before:) on Swift 5 not respected by String.UTF16View.index(before:) on Swift 4 String.UTF8View.index(before:) on Swift 5
1:55 AM
UTF-16からUTF-8へ切り替わった事で、挙動も入れ替わってる。
Avatar
norio_nomura 1/31/2019 2:06 AM
内部表現ではない方のindexが、unicode scalar境界に畳み込まれる という意味では 一貫している? そう言える。ランタイムの内部表現に依存してるかどうかまでは確かめてないですが。
2:08 AM
Swift 5で試した限り、swift-corelibs-foundationだと内部表現をUTF-16にする方法は見つからず。Apple Platformだと一部のNSString APIを使うとUTF-16になる。
Avatar
omochimetaru 1/31/2019 2:09 AM
ああ、そうすると実行時に変化もするのか・・
Avatar
norio_nomura 1/31/2019 2:16 AM
以前試した時は、macOSでString.init(contentsOfFile:encoding:)を使うと内部表現がUTF-16になってた。
2:21 AM
見分け方は、String.UTF8View.withContiguousStorageIfAvailable(_:)を使った時、渡したクロージャが呼ばれたら内部表現はUTF-8、呼ばれなかったらUTF-16
Avatar
norio_nomura 1/31/2019 2:47 AM
Swift 5のString.UnicodeScalarsView.map(_:)でクラッシュ https://bugs.swift.org/browse/SR-9822 @swift-4.2.4 @swift-5.0.3 -frontend -repl // https://emojipedia.org/family-man-woman-girl-boy/ let family = "\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466}" let utf8Index = family.utf8.index(before: family.utf8.endIndex) let utf8Before = String(family[..<utf8Index]) _ = utf8Before.unicodeScalars.map { $0 } (edited)
Avatar
// family : String = "👨‍👩‍👧‍👦" // utf8Index : String.UTF8View.Index = Swift.String.Index(_compoundOffset: 39, _utf8Buffer: Swift._ValidUTF8Buffer<Swift.UInt32>(_biasedBits: 2811404529), _graphemeStrideCache: 0) // utf8Before : String = "👨‍👩‍👧‍" (edited)
Avatar
exit status: 11 with stderr:Stack dump: 0. Program arguments: swift -frontend -I /Libraries/.build/x86_64-unknown-linux/debug -L /Libraries/.build/x86_64-unknown-linux/debug -lLibraries -DDEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-zlib-support/module.modulemap -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -repl 1. while processing REPL source: // https://emojipedia.org/family-man-woman-girl-boy/ let family = "\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466}" let utf8Index = family.utf8.index(before: family.utf8.endIndex) [0 (edited)
Avatar
norio_nomura 1/31/2019 2:57 AM
ForumのType Safety of String IndicesについてのMichael_Ilsemanさんの返答を読んでると、UTF8View.index(before:)UTF16View.index(before:)は使ってはいけないモノだと言われている様に思えてくる。
Avatar
norio_nomura 1/31/2019 3:19 AM
ランタイムの内部表現に依存してるかどうかまでは確かめてないですが。 依存してるぽい。
3:24 AM
このコードをmacOSで実行すると、stringUTF16Backendを使うとtest()内でクラッシュする。 import Foundation #if !compiler(>=5) private extension String.UTF8View { func withContiguousStorageIfAvailable<R>(_ body: (UnsafeBufferPointer<Element>) throws -> R) rethrows -> R? { return nil } } #endif extension String { var nativeEncoding: Encoding { return utf8.withContiguousStorageIfAvailable({$0}) != nil ? .utf8 : .utf16 } } func printUTF16<S: StringProtocol>(_ string: S, label: String) { print(label, string.utf16.map { "\\u{\(String($0, radix: 16))}" }.joined()) } func test(_ string: String) { let utf16Index = string.utf16.index(before: string.utf16.endIndex) let utf16Before = string[..<utf16Index] printUTF16(utf16Before, label: "before:") let utf16After = string[utf16Index...] printUTF16(utf16After, label: "after:") printUTF16(utf16Before + utf16After, label: "joined:") print(utf16After.utf8.count) print(utf16After.utf16.count) } // https://emojipedia.org/family-man-woman-girl-boy/ let string = "\u{1f468}\u{200d}\u{1f469}\u{200d}\u{1f467}\u{200d}\u{1f466}" print(string.nativeEncoding) test(string) let tempfileURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(UUID().uuidString) try string.write(to: tempfileURL, atomically: true, encoding: .utf16) let stringUTF16Backend = try String(contentsOfFile: tempfileURL.path) print(stringUTF16Backend.nativeEncoding) test(stringUTF16Backend) defer { try! FileManager.default.removeItem(at: tempfileURL) } (edited)
Avatar
norio_nomura 1/31/2019 4:10 AM
  • String.UTF8View, String.UTF16Viewを使ったString.Indexの操作は、UnicodeScalarsの境界に合わないIndexを作る場合がある。(仕様)
  • Swift 5はUnicodeScalarsの境界に合わないIndexを使ったRangeでSubstringを作ると、クラッシュする場合がある。(バグ)
(edited)
4:11 AM
そんな感じか。
Avatar
norio_nomura 1/31/2019 6:03 AM
@rintaroさんの https://bugs.swift.org/browse/SR-6161 これを思い出しました。 を読んで、試して、ようやく理解したぽい。 問題となるのはindex(before:)の挙動ではなく、String, UTF8View, UTF16Viewそれぞれのsubscriptがunicode scalarsの境界に合わないIndexを持つRangeをどう扱うか、が変わっている事なのね。 (edited)
Avatar
norio_nomura 1/31/2019 6:22 AM
SR-6161の結果がSwift 4とSwift 5で変わってしまうのは、境界に合わないIndexが指すものはU+FFFDとして扱わなければいけないのだけど、境界に合う合わないの判定がUnicode Scalarを基に行われていないからな気がする。
Avatar
norio_nomura 2/4/2019 10:46 PM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
4.2.2-RELEASE
Avatar
@swift-4.2.4 import Foundation [1, 2, 3] .map { ($0, $0) } .forEach { print("-") } [1, 2, 3] .map { ($0, $0) } .forEach { print($1) } (edited)
Avatar
swift42 BOT 2/5/2019 9:43 AM
- - - 1 2 3stderr:<stdin>:5:12: warning: expression of type '(Int, Int)' is unused .map { ($0, $0) } ^~~~~~~~ (edited)
Avatar
expression of type '(Int, Int)' is unused このワーニングが RxSwift の map でも出てきて驚いた 😮subscribe で値を参照したら正しく警告が消えた)
Avatar
@swift-4.2.4 -Xfrontend -emit-sil [1, 2, 3] .map { ($0, $0) } .forEach { print("-") }
Avatar
swift42 BOT 2/6/2019 7:03 AM
sil_stage canonical import Builtin import Swift import SwiftShims // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = metatype $@thin Array<Int>.Type // user: %25 %3 = integer_literal $Builtin.Word, 3 // user: %5 // function_ref _allocateUninitializedArray<A>(_:) %4 = function_ref @$Ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %5 %5 = apply %4<Int>(%3) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // users: %9, %6, %8 %6 = tuple_extract %5 : $(Array<Int>, Builtin.RawPointer), 0 // users: %25, %7 retain_value %6 : $Array<Int> // id: %7 %8 = tuple_extract %5 : $(Array<Int>, Builtin.RawPointer), 1 // user: %10 release_value %5 : $(Array<Int>, Builtin.RawPointer) // id: %9 %10 = pointer_to_address %8 : $Builtin.RawPointer to [strict] $*Int // users: %13, %20, %15 %11 = integer_literal $Builtin.Int64, 1 // user: %12 %12 = struct $Int (%11 : $Builtin.Int64) // user: %13 store %12 to %10 : $*Int // id: %13 %14 = integer_literal $Builtin.Word, 1 // user: %15 %15 = index_addr %10 : $*Int, %14 : $Builtin.Word // user: %18 %16 = integer_literal $Builtin.Int64, 2 // user: %17 %17 = struct $Int (%16 : $Builtin.Int64) // user: %18 store %17 to %15 : $*Int // id: %18 %19 = integer_literal $Builtin.Word, 2 // user: %20 %20 = index_addr %10 : $*Int, %19 : $Builtin.Word // user: %23 %21 = integer_literal $Builtin.Int64, 3 // user: %22 %22 = struct $Int (%21 : $Builtin.Int64) // user: %23 store %22 to %20 : $*Int // id: %23 // function_ref specialized Array.init(arrayLiter
Avatar
map { ($0, $0) } が Array<Void> を返してると推論してる
7:06 AM
僕には意味が分かりません
Avatar
omochimetaru 2/6/2019 7:08 AM
どうなってるんだこれ
Avatar
forEachのクロージャが引数なしで()->Void扱いでmapの結果が[Void]と推論されているのでは? (edited)
Avatar
@swift-4.2.4 [1, 2, 3] .map { return ($0, $0) } .forEach { print("-") }
Avatar
swift42 BOT 2/6/2019 7:10 AM
- - -stderr:<stdin>:3:18: warning: expression of type '(Int, Int)' is unused .map { return ($0, $0) } ^~~~~~~~
Avatar
明示的に return してもだめという
Avatar
omochimetaru 2/6/2019 7:11 AM
forEach のクロージャの引数の型か。
Avatar
@swift-4.2.4 [1, 2, 3] .map { return ($0, $0) } .forEach { _ in print("-") }
Avatar
swift42 BOT 2/6/2019 7:11 AM
- - -
Avatar
引数省略に明示が必要です
7:11 AM
$0無し_無しはVoidになる
Avatar
omochimetaru 2/6/2019 7:12 AM
Voidというか引数0個?
Avatar
分かるけどそこは forEach に _ in 付けろって言ってほしい
Avatar
omochimetaru 2/6/2019 7:12 AM
[1, 2, 3] .map { ($0, $0) } .forEach { () in print("") } こうなってるのか (edited)
Avatar
[1, 2, 3] .map { a in return (a, a) } .forEach { print("-") } これが通って [1, 2, 3] .map { a -> (Int, Int) in return (a, a) } .forEach { print("-") } これがだめなのが謎
Avatar
omochimetaru 2/6/2019 7:13 AM
それは返り値の型を明示するからは
7:13 AM
mapが(Int, Int)でforEachは () だから矛盾
Avatar
明示しない場合上のreturn で返してるのはどうなるんです?
Avatar
omochimetaru 2/6/2019 7:14 AM
[1, 2, 3] .map { a -> Void in return (a, a) } .forEach { print("-") }
Avatar
return ; ($0, $0) な解釈では
7:14 AM
どうやったらそうなるんだって感じだけど
Avatar
ん?返り値Voidで返り値あっても通るのか
Avatar
omochimetaru 2/6/2019 7:14 AM
func a(_ f: () -> Void) {} a { return 333 }
Avatar
タプルの場合のみとおる?
Avatar
@swift-4.2.4 var a: () -> Void = { return (1, 2) } (edited)
Avatar
swift42 BOT 2/6/2019 7:15 AM
stderr:<stdin>:3:10: warning: expression of type '(Int, Int)' is unused return (1, 2) ^~~~~~ (edited)
Avatar
omochimetaru 2/6/2019 7:15 AM
関数だとだめ
7:15 AM
クロージャを書く時だけいける?
Avatar
カオスだ
Avatar
omochimetaru 2/6/2019 7:15 AM
新発見か?
Avatar
クロージャだけ通る
Avatar
omochimetaru 2/6/2019 7:16 AM
知らなかった
Avatar
クロージャはreturn省略可能でfuncは省略不可、その辺りに何かありそう
Avatar
omochimetaru 2/6/2019 7:16 AM
@swift-4.2.4 let a: () -> Int = { return 3 } let b: () -> Void = a (edited)
Avatar
swift42 BOT 2/6/2019 7:16 AM
exit status: 1 with stderr:<stdin>:3:21: error: cannot convert value of type '() -> Int' to specified type '() -> Void' let b: () -> Void = a ^ (edited)
Avatar
omochimetaru 2/6/2019 7:17 AM
type checkerのバグな気がしてきた
7:18 AM
クロージャの返り値の評価のときだけ void への暗黙アップキャストが存在してる?
Avatar
expression of type '(Int, Int)' is unused だから暗黙変換系ではない
Avatar
omochimetaru 2/6/2019 7:18 AM
いや、それは前段のmap側だから 後段のクロージャが
7:19 AM
[1, 2, 3] .map { a -> Void in return (a, a) } .forEach { print("-") }
Avatar
foEachのクロージャによってmapの返り血はVoidに推論されている
Avatar
omochimetaru 2/6/2019 7:19 AM
@swift-4.2.4 [1, 2, 3] .map { a -> Void in return (a, a) } .forEach { print("-") }
Avatar
swift42 BOT 2/6/2019 7:19 AM
- - -stderr:<stdin>:3:32: warning: expression of type '(Int, Int)' is unused .map { a -> Void in return (a, a) } ^~~~~~
Avatar
そのうえで、return (a,a)が謎解釈で return ; (a, a)になってるんだと思うよ (edited)
7:20 AM
@swift-4.2.4 func a() -> Void { return; (1, 1) }
Avatar
swift42 BOT 2/6/2019 7:20 AM
stderr:<stdin>:2:28: warning: expression of type '(Int, Int)' is unused func a() -> Void { return; (1, 1) } ^~~~~~ <stdin>:2:28: warning: code after 'return' will never be executed func a() -> Void { return; (1, 1) } ^
Avatar
omochimetaru 2/6/2019 7:20 AM
いやそれだと
7:20 AM
うむ
7:20 AM
returnの後ろに死んだ文があることになるはずだから
Avatar
エラーメッセージ同じぽいし
Avatar
omochimetaru 2/6/2019 7:20 AM
will never be executedが出てるから違う
Avatar
片方だけでてる
7:21 AM
@swift-4.2.4 func fatal() -> Int { fatalError() } [1, 2, 3] .map { a -> Void in return (a, fatal()) } .forEach { print("-") }
Avatar
swift42 BOT 2/6/2019 7:21 AM
exit status: 4 with stderr:<stdin>:4:32: warning: expression of type '(Int, Int)' is unused .map { a -> Void in return (a, fatal()) } ^~~~~~~~~~~~ Fatal error: : file <stdin>, line 2 Current stack trace: 0 libswiftCore.so 0x00007fce9010bfa0 _swift_stdlib_reportFatalErrorInFile + 215 1 libswiftCore.so 0x00007fce8fe645c1 <unavailable> + 1504705 2 libswiftCore.so 0x00007fce900a10c2 <unavailable> + 3850434 3 libswiftCore.so 0x00007fce8fe63d0a <unavailable> + 1502474 4 libswiftCore.so 0x00007fce900a0f5c <unavailable> + 3850076 5 libswiftCore.so 0x00007fce8fe63d0a <unavailable> + 1502474 6 libswiftCore.so 0x00007fce8fffda28 <unavailable> + 3181096 7 libswiftCore.so 0x00007fce8fe635a9 <unavailable> + 1500585 12 libswiftCore.so 0x00007fce8fe27640 Collection.map<A>(_:) + 527 14 swift 0x0000000001043efe <unavailable> + 12861182 15 swift 0x0000000001048022 <unavailable> + 12877858 16 swift 0x00000000004f8b42 <unavailable> + 1018690 17 swift 0x00000000004df0bb <unavailable> + 913595 18 swift 0x00000000004da3f0 <unavailable> + 893936 19 swift 0x000000000048a348 <unavailable> + 566088 20 libc.so.6 0x00007fce92ab0740 __libc_start_main + 240 21 swift 0x0000000000488009 <unavailable> + 557065 #0 0x000000000410ac94 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410ac94) #1 0x0000000004108b22 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108b22) #2 0x000000000410ae42 SignalHandler(int) (/usr/bin/swift+0x410ae42) #3 0x00007fce94386390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x0
Avatar
おー
7:22 AM
実行はされてる
Avatar
omochimetaru 2/6/2019 7:25 AM
なるほどw
7:26 AM
とりあえずbugs行きっぽいな
7:26 AM
@swift-main @swift-5.0.3 [1, 2, 3] .map { a -> Void in return (a, a) } .forEach { print("-") }
Avatar
swift50 BOT 2/6/2019 7:26 AM
- - -stderr:<stdin>:3:32: warning: expression of type '(Int, Int)' is unused .map { a -> Void in return (a, a) } ^~~~~~
Avatar
swiftNightly BOT 2/6/2019 7:26 AM
- - -stderr:<stdin>:3:32: warning: expression of type '(Int, Int)' is unused .map { a -> Void in return (a, a) } ^~~~~~
Avatar
omochimetaru 2/6/2019 7:27 AM
@swift-4.2.4 let a = { () -> Void in return 333 }
Avatar
swift42 BOT 2/6/2019 7:27 AM
stderr:<stdin>:3:12: warning: integer literal is unused return 333 ^~~
Avatar
omochimetaru 2/6/2019 7:27 AM
シンプルにこういうことだよね
Avatar
そう
Avatar
omochimetaru 2/6/2019 7:28 AM
もしこれがそもそもコンパイルエラーになっていれば
7:28 AM
[1, 2, 3] .map { return ($0, $0) } .forEach { print("-") }
7:28 AM
これはコンパイルエラーになるから
7:28 AM
それでよかった
Avatar
どっちにエラーを出すかは結構難しい
7:29 AM
.forEach { print("-") } こいつはこの行だけで引数Voidが決定的だから
Avatar
omochimetaru 2/6/2019 7:29 AM
.map { } も決定的でしょ、 返り値 (A, A) (edited)
Avatar
まあ今はバグってるからそっちにエラーが出るのはわかる
Avatar
なるほど 😮
Avatar
norio_nomura 2/6/2019 9:54 AM
面白い
Avatar
norio_nomura 2/6/2019 12:35 PM
@swift-4.2.4 let a = { () -> Void in return 333 }
Avatar
stderr:<stdin>:2:12: warning: integer literal is unused return 333 ^~~
Avatar
norio_nomura 2/6/2019 12:36 PM
ボットのエラーメッセージに含まれる行番号が1つズレていたのを修正しました。
Avatar
  • single expression closure ではクロージャの返値が Void の時でも、非Void のexpressionを書ける
  • { ... in return <expr> } は single expression closure と解釈される
という事実が重なって起きてる不幸ですね
(edited)
5:48 PM
let _ : () -> Void = { return "test" } が通るの自体はもはや仕様なので、エラー診断のバグという扱いになると思います。
Avatar
omochimetaru 2/7/2019 12:45 AM
なるほど、コンパイラはそういう気持ちなのか
swift 1
Avatar
norio_nomura 3/1/2019 4:04 AM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
swift42 BOT 3/1/2019 4:04 AM
4.2.3-RELEASE
Avatar
@swift-4.2.4 import Foundation class Entity<Id: Hashable, Props> { let id: Id let data: Props init(id: Id, data: Props) { self.id = id self.data = data } } class User: Entity<User.Id, User.Props> { struct Id: Hashable { } struct Props { var name: String } } let user = User(id: .init(), data: .init(name: "user_name")) print(user, user.data.name)
Avatar
swift42 BOT 3/5/2019 5:14 AM
main.User user_name
Avatar
@swift-main func defaultValue<T>() -> T { fatalError() } struct S<T> { let value1: T = defaultValue() let value2: Int } func main() { _ = S<Int>(value2: 2) } (edited)
Avatar
swiftNightly BOT 3/10/2019 5:32 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/SILGen/SILGenConstructor.cpp:146: void emitImplicitValueConstructor(swift::Lowering::SILGenFunction &, swift::ConstructorDecl *): Assertion `fieldTy->isEqual(field->getParentInitializer()->getType()) && "Checked by sema"' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -Xcc -fmodule-map-file= (edited)
Avatar
@swift-4.2.4 class Some { lazy var thing = 1 } class Some2: Some { override lazy var thing = 2 } print(Some2().thing) Cannot (Cannotとは言っていない)
😂 1
Avatar
2stderr:<stdin>:6:23: warning: cannot override with a stored property 'thing' override lazy var thing = 2 ^ <stdin>:2:14: note: attempt to override property here lazy var thing = 1 ^
Avatar
↑なんですが、要はコンパイラが作るlazyに値を渡すためのfunctionはオーバーライド可能だったってことですかね
5:24 AM
結構便利なんですがこれw
Avatar
omochimetaru 3/13/2019 5:29 AM
stored propertyはそもそもオーバライド可能だから (edited)
5:30 AM
継承先の方のlazyが特殊なところ?
Avatar
@swift-5.0.3 @swift-4.2.4 import Foundation protocol Target { } protocol Foo { associatedtype Bar: Target } class TargetBase<X>: Target {} class Impl<X, TargetType>: Foo where TargetType: TargetBase<X> { typealias Bar = TargetType } (edited)
Avatar
no output (edited)
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-4.2-package-linux-ubuntu-16_04/swift/lib/AST/Type.cpp:3215: swift::Type swift::TypeBase::getSuperclassForDecl(const swift::ClassDecl *): Assertion `nominalDecl && "expected nominal type here"' failed. #0 0x000000000410acb4 PrintStackTraceSignalHandler(void*) (/usr/bin/swift+0x410acb4) #1 0x0000000004108b42 llvm::sys::RunSignalHandlers() (/usr/bin/swift+0x4108b42) #2 0x000000000410ae62 SignalHandler(int) (/usr/bin/swift+0x410ae62) #3 0x00007fefce714390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #4 0x00007fefcce53428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428) #5 0x00007fefcce5502a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a) #6 0x00007fefcce4bbd7 (/lib/x86_64-linux-gnu/libc.so.6+0x2dbd7) #7 0x00007fefcce4bc82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82) #8 0x00000000017ff77c swift::TypeBase::getSuperclassForDecl(swift::ClassDecl const*) (/usr/bin/swift+0x17ff77c) #9 0x00000000017e357a swift::ProtocolConformance::subst(swift::Type, llvm::function_ref<swift::Type (swift::SubstitutableType*)>, llvm::function_ref<llvm::Optional<swift::ProtocolConformanceRef> (swift::CanType, swift::Type, swift::ProtocolType*)>) const (/usr/bin/swift+0x17e357a) #10 0x00000000013c9607 swift::ConformanceChecker::ensureRequirementsAreSatisfied(bool)::GatherConformancesListener::satisfiedConformance(swift::Type, swift::Type, swift::ProtocolConformanceRef) (/usr/bin/swift+0x13c9607) #11 0x00000000013a7582 swift::TypeChecker::checkGenericArguments(swift::DeclContext*, swift::SourceLoc, swift::SourceLoc, swift::Type, swift::ArrayRefView<swift::Type, swift::GenericTypeParamType*, swift::GenericTypeParamType* swift::staticCastHelper<swift::GenericTypeParamType>(swift::Type const&), true>, llvm::ArrayRef<swift::Requirement>, llvm::function_ref<swift::Type (swift::SubstitutableType*)>, llvm::function_ref<llvm::Optional<swift::ProtocolConformanceRef> (swift::CanType, swift::Type, swift::Prot
Avatar
@swift-main let a = "abc" let b = "cde" dump(b.difference(from: a)) (edited)
Avatar
swiftNightly BOT 3/17/2019 11:55 PM
▿ Swift.CollectionDifference<Swift.Character> ▿ insertions: 2 elements ▿ Swift.CollectionDifference<Swift.Character>.Change.insert ▿ insert: (3 elements) - offset: 1 - element: "d" - associatedWith: nil ▿ Swift.CollectionDifference<Swift.Character>.Change.insert ▿ insert: (3 elements) - offset: 2 - element: "e" - associatedWith: nil ▿ removals: 2 elements ▿ Swift.CollectionDifference<Swift.Character>.Change.remove ▿ remove: (3 elements) - offset: 0 - element: "a" - associatedWith: nil ▿ Swift.CollectionDifference<Swift.Character>.Change.remove ▿ remove: (3 elements) - offset: 1 - element: "b" - associatedWith: nil (edited)
Avatar
@swift-5.0.3 @swift-main struct S { func f() -> Self { return self } }
Avatar
swiftNightly BOT 3/19/2019 12:24 PM
no output
Avatar
exit status: 1 with stderr:<stdin>:2:17: error: 'Self' is only available in a protocol or as the result of a method in a class; did you mean 'S'? func f() -> Self { return self } ^~~~ S
Avatar
あれ、まだ入ってない?
12:24 PM
マージされてたような
Avatar
5.0には入ってないね。
Avatar
あ、nightlyは通ったのか。
12:25 PM
お~ これほしかったので密かに喜んでいた
Avatar
Kishikawa Katsumi 3/19/2019 12:29 PM
Self書けるのいいですね。
Avatar
@swift-5.0.3 class Base { let val: String = "string" } class Sub: Base {} let object = Sub() print(object[keyPath: \Base.val]) // "string" print(object[keyPath: \Sub.val]) // Crash!
Avatar
string string
Avatar
@swift-4.2.4 class Base { let val: String = "string" } class Sub: Base {} let object = Sub() print(object[keyPath: \Base.val]) // "string" print(object[keyPath: \Sub.val]) // Crash!
Avatar
string string
Avatar
@swift-main class Base { let val: String = "string" } class Sub: Base {} let object = Sub() print(object[keyPath: \Base.val]) // "string" print(object[keyPath: \Sub.val]) // Crash!
Avatar
swiftNightly BOT 3/21/2019 10:10 AM
string string
Avatar
@swift-4.0.3 @swift-4.1.3 @swift-4.2.4 @swift-5.0.3 protocol P { associatedtype X } struct S<X>: P { } (edited)
Avatar
no output (edited)
Avatar
no output (edited)
Avatar
exit status: 1 with stderr:<stdin>:6:8: error: type 'S<X>' does not conform to protocol 'P' struct S<X>: P { ^ <stdin>:2:20: note: protocol requires nested type 'X'; do you want to add it? associatedtype X ^ (edited)
Avatar
no output
Avatar
型パラと同名assoctypeの束縛できるようになってる!!!!
1:53 AM
うれしい!
Avatar
@swift-main import Foundation let kp = \UUID.uuid let writable = kp as! WritableKeyPath<UUID, uuid_t> var uuid = UUID() print(uuid) var newUUID: uuid_t = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) uuid[keyPath: writable] = newUUID print(uuid) (edited)
Avatar
swiftNightly BOT 3/23/2019 7:32 AM
A1717B4D-EE97-460A-B7C6-1149A2E2561A 00000000-0000-0000-0000-000000000000 (edited)
Avatar
omochimetaru 3/25/2019 3:33 AM
@swift-4.2.4 @swift-5.0.3 protocol ProtoA {} protocol ProtoB { associatedtype T : ProtoA var stuff: Int { get } } extension ProtoB { var stuff: Int { return 0 } } class Foo<X: ProtoA> : ProtoB { typealias T = X }
Avatar
no output
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-5.0-package-linux-ubuntu-16_04/swift/lib/AST/ProtocolConformance.cpp:77: swift::ProtocolDecl *swift::ProtocolConformanceRef::getRequirement() const: Assertion `!isInvalid()' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-zlib-support/module.modulemap -module-name main
Avatar
omochimetaru 3/25/2019 3:34 AM
@swift-4.2.4 @swift-5.0.3 @swift-main protocol ProtoA {} protocol ProtoB { associatedtype T : ProtoA func stuff() -> Int } extension ProtoB { func stuff() -> Int { return 0 } } class Foo<X: ProtoA> : ProtoB { typealias T = X }
Avatar
no output
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-5.0-package-linux-ubuntu-16_04/swift/lib/AST/ProtocolConformance.cpp:77: swift::ProtocolDecl *swift::ProtocolConformanceRef::getRequirement() const: Assertion `!isInvalid()' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-zlib-support/module.modulemap -module-name main
Avatar
swiftNightly BOT 3/25/2019 3:34 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/AST/ProtocolConformance.cpp:77: swift::ProtocolDecl *swift::ProtocolConformanceRef::getRequirement() const: Assertion `!isInvalid()' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOZlib/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOZlib.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio-zlib-support/module.modulemap -module-name main -lL
Avatar
norio_nomura 3/25/2019 3:36 AM
ぬう、ログのアップローダとして使ってた https://ptpb.pw が無くなってるな…
Avatar
omochimetaru 3/25/2019 3:36 AM
無くなってるはすごいw
3:37 AM
跡形もない・・
Avatar
TL;DR: coin miners are assholes, ruining this great service for everyone Due to continued write and egress abuse, ptpb.pw is now ~permanently shut down. The current pb implementation has always bee...
Avatar
norio_nomura 3/25/2019 3:41 AM
ちょうどそれ読んでた。
3:46 AM
https://file.io へ戻しました。 (edited)
3:50 AM
file.io は一度開いたurlは無くなるんだよね。(最初に作った時は知らなかった)
3:52 AM
ゆる募) アップロードしたファイルをブラウザ内で見られるアップローダの情報。 (edited)
Avatar
@swift-5.0.3 let hello: Result<String, Error> = .success("Hello Swift 5!") print(try! hello.get()) (edited)
Avatar
Hello Swift 5! (edited)
Avatar
@swift-main let array = Array<Int>(unsafeUninitializedCapacity: 10) { for i in 0..<5 { $0[i] = i } $1 = 5 } dump(array)
👍 1
Avatar
swiftNightly BOT 3/27/2019 12:42 PM
▿ 5 elements - 0 - 1 - 2 - 3 - 4
Avatar
@swift-4.2.4 @swift-5.0.3 import Foundation class _Foo { } protocol BarType { typealias BaseFoo = _Foo } class Bar: BarType { class Foo: BaseFoo {} } class FooImpl: Bar.Foo { } print(FooImpl()) (edited)
Avatar
exit status: 1 with stderr:<unknown>:0: error: 'super' members cannot be referenced in a root class (edited)
Avatar
main.FooImpl (edited)
Avatar
norio_nomura 3/30/2019 6:48 AM
@swift-4.2.4 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
4.2.4-RELEASE
Avatar
norio_nomura 4/1/2019 2:28 AM
しばらくSwift50, SwiftNightly, SwiftTensorFlowはオフラインになりがちとなります。 メンテナンス終わりました。 (edited)
Avatar
omochimetaru 4/2/2019 7:42 AM
@swift-5.0.3 protocol Q {} protocol P { associatedtype T : Q } class C<T> : P where T : Q {} func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} (edited)
Avatar
swift50 BOT 4/2/2019 7:42 AM
exit status: 1 with stderr:<stdin>:7:46: warning: redundant conformance constraint 'U': 'P' func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ <stdin>:7:36: note: conformance constraint 'U': 'P' implied here func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ <stdin>:7:38: error: type 'T' does not conform to protocol 'Q' func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ (edited)
Avatar
omochimetaru 4/2/2019 7:42 AM
@swift-main protocol Q {} protocol P { associatedtype T : Q } class C<T> : P where T : Q {} func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} (edited)
Avatar
swiftNightly BOT 4/2/2019 7:42 AM
exit status: 1 with stderr:<stdin>:7:46: warning: redundant conformance constraint 'U': 'P' func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ <stdin>:7:36: note: conformance constraint 'U': 'P' implied here func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ <stdin>:7:38: error: type 'T' does not conform to protocol 'Q' func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ (edited)
Avatar
omochimetaru 4/2/2019 7:43 AM
@swift-4.2.4 protocol Q {} protocol P { associatedtype T : Q } class C<T> : P where T : Q {} func foo<U, T>(_: U, _: T) where U : C<T>, U : P {}
Avatar
swift42 BOT 4/2/2019 7:43 AM
stderr:<stdin>:7:46: warning: redundant conformance constraint 'U': 'P' func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^ <stdin>:7:36: note: conformance constraint 'U': 'P' implied here func foo<U, T>(_: U, _: T) where U : C<T>, U : P {} ^
Avatar
omochimetaru 4/2/2019 9:17 AM
@swift-4.2.4 protocol Q {} protocol P { associatedtype T : Q } class C<T> : P where T : Q {} func foo<U, T>(_: U, _: T) where U : P, U : C<T> {}
Avatar
swift42 BOT 4/2/2019 9:17 AM
stderr:<stdin>:6:36: warning: redundant conformance constraint 'U': 'P' func foo<U, T>(_: U, _: T) where U : P, U : C<T> {} ^ <stdin>:6:43: note: conformance constraint 'U': 'P' implied here func foo<U, T>(_: U, _: T) where U : P, U : C<T> {} ^
Avatar
omochimetaru 4/2/2019 9:17 AM
@swift-main protocol Q {} protocol P { associatedtype T : Q } class C<T> : P where T : Q {} func foo<U, T>(_: U, _: T) where U : P, U : C<T> {}
Avatar
swiftNightly BOT 4/2/2019 9:17 AM
stderr:<stdin>:6:36: warning: redundant conformance constraint 'U': 'P' func foo<U, T>(_: U, _: T) where U : P, U : C<T> {} ^ <stdin>:6:43: note: conformance constraint 'U': 'P' implied here func foo<U, T>(_: U, _: T) where U : P, U : C<T> {} ^
Avatar
omochimetaru 4/3/2019 4:20 AM
@swift-5.0.3 let fn: @pseudogeneric () -> () = {}
Avatar
swift50 BOT 4/3/2019 4:20 AM
no output
Avatar
omochimetaru 4/3/2019 4:20 AM
The Swift compiler accepts this code: let fn: @pseudogeneric () -> () = {} (This is a bug; @pseudogeneric is only meant for SIL mode, but due to an oversight it’s accepted and ignored during normal parsing too)
Avatar
@swift-5.0.3 @swift-main @swift-4.2.4 public protocol P1 { associatedtype X } struct A { } protocol P2: P1 { associatedtype X = A func foo() } public struct B {} extension B: P2 { } (edited)
Avatar
exit status: 134 with stderr:<stdin>:15:1: error: type 'B' does not conform to protocol 'P2' extension B: P2 { ^ Unhandled Decl kind UNREACHABLE executed at /home/buildnode/jenkins/workspace/oss-swift-5.0-package-linux-ubuntu-16_04/swift/lib/AST/DeclContext.cpp:893! Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -module-name main -lLibraries /usr/bin/swift[0x462b784] /usr/bin/swift[0x4629550] /usr/bin/swift[0x462b932] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fdd299dc390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7fdd2811b428] /lib/x86_64-linux-gnu/libc.so.6(ab (edited)
Avatar
exit status: 1 with stderr:<stdin>:15:1: error: type 'B' does not conform to protocol 'P2' extension B: P2 { ^ <stdin>:10:10: note: protocol requires function 'foo()' with type '() -> ()'; do you want to add a stub? func foo() ^
Avatar
swiftNightly BOT 4/3/2019 11:53 AM
exit status: 1 with stderr:<stdin>:15:1: error: type 'B' does not conform to protocol 'P2' extension B: P2 { ^ <stdin>:15:1: error: type alias 'X' must be declared public because it matches a requirement in public protocol 'P1' extension B: P2 { ^ main.B:2:22: note: mark the type alias as 'public' to satisfy the requirement public typealias X = main.A ^ <stdin>:10:10: note: protocol requires function 'foo()' with type '() -> ()'; do you want to add a stub? func foo() ^
Avatar
norio_nomura 4/3/2019 2:10 PM
@swift-4.0.3 @swift-4.1.3 @swift-4.2.4 @swift-5.0.3 @swift-main if #available(macOS 10.14, *) { print("macOS", terminator: " ") } if #available(iOS 12.3, *) { print("iOS", terminator: " ") } if #available(tvOS 12.3, *) { print("tvOS", terminator: " ") } if #available(watchOS 5.2, *) { print("watchOS", terminator: " ") }
Avatar
swift42 BOT 4/3/2019 2:10 PM
macOS iOS tvOS watchOS
Avatar
swiftNightly BOT 4/3/2019 2:10 PM
macOS iOS tvOS watchOS
Avatar
swift50 BOT 4/3/2019 2:10 PM
macOS iOS tvOS watchOS
Avatar
swift40 BOT 4/3/2019 2:10 PM
macOS iOS tvOS watchOS
Avatar
swift41 BOT 4/3/2019 2:10 PM
macOS iOS tvOS watchOS
Avatar
omochimetaru 4/4/2019 2:26 AM
@swift-main let a = [1,2,3] let b = [2] let diff = a.difference(from: b) dump(diff)
Avatar
swiftNightly BOT 4/4/2019 2:26 AM
▿ Swift.CollectionDifference<Swift.Int> ▿ insertions: 2 elements ▿ Swift.CollectionDifference<Swift.Int>.Change.insert ▿ insert: (3 elements) - offset: 0 - element: 1 - associatedWith: nil ▿ Swift.CollectionDifference<Swift.Int>.Change.insert ▿ insert: (3 elements) - offset: 2 - element: 3 - associatedWith: nil - removals: 0 elements
Avatar
happiness9721 4/11/2019 2:03 AM
@swift-main let a = [1,2,3] let b = [2] let diff = a.difference(from: b) print(diff)
Avatar
swiftNightly BOT 4/11/2019 2:03 AM
CollectionDifference<Int>(insertions: [Swift.CollectionDifference<Swift.Int>.Change.insert(offset: 0, element: 1, associatedWith: nil), Swift.CollectionDifference<Swift.Int>.Change.insert(offset: 2, element: 3, associatedWith: nil)], removals: [])
Avatar
omochimetaru 4/17/2019 1:47 AM
@swift-main class C { @inlinable func f() {} // error }
Avatar
swiftNightly BOT 4/17/2019 1:47 AM
no output
Avatar
@swift-4.2.4 import UIKit protocol Component: UIView { associatedtype Model func activate(with model: Model) func deactivate() } class ImageComponent: UIImageView, Component { typealias Model = UIImage func activate(with model: ImageComponent.Model) { image = model } func deactivate() { image = nil } }
Avatar
exit status: 1 with stderr:<stdin>:1:8: error: no such module 'UIKit' import UIKit ^
Avatar
そりゃそうだ
Avatar
macサーバーほしいよね
12:16 PM
でも安くやる方法がない (edited)
Avatar
norio_nomura 4/17/2019 2:37 PM
機能的にはAzure PipelinesのmacOS Agentが使えるのでは?とか考えたけど、TOSに反するかどうか未確認…>macサーバー
Avatar
Kishikawa Katsumi 4/17/2019 2:50 PM
Playground程度なら遊んでる家のMacでできるけど、AppKitはともかくUIKitはうまいこと実行するのが難しそうだな。
Avatar
omochimetaru 4/17/2019 5:32 PM
確かにPlaygroundは実行できてもコマンドラインバイナリとして実効する手段が無いですね。 ライブラリにしてシミュレーター上でテストケースを実行するとかはできるけど
Avatar
$ pbpaste import UIKit protocol Component: UIView { associatedtype Model func activate(with model: Model) func deactivate() } class ImageComponent: UIImageView, Component { typealias Model = UIImage func activate(with model: ImageComponent.Model) { image = model } func deactivate() { image = nil } $ pbpaste|swiftc -sdk $(xcrun -show-sdk-path -sdk iphonesimulator) -target x86_64-apple-ios12.2-simulator - -v Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5) Target: x86_64-apple-ios12.2-simulator /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file - -target x86_64-apple-ios12.2-simulator -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk -color-diagnostics -module-name main -o /var/folders/kt/2mwy9b_56_7993x190pl_1fh0000gn/T/--eec0d7.o /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld /var/folders/kt/2mwy9b_56_7993x190pl_1fh0000gn/T/--eec0d7.o /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/clang/lib/darwin/libclang_rt.ios.a -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk -lobjc -lSystem -arch x86_64 -L /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -ios_simulator_version_min 12.2.0 -no_objc_category_merging -o main $ ./main dyld: Library not loaded: /System/Library/Frameworks/UIKit.framework/UIKit Referenced from: /Users/norio/github/docker-swift/./main Reason: image not found [1] 91007 abort ./main
11:30 PM
swiftc -sdk $(xcrun -show-sdk-path -sdk iphonesimulator) -target x86_64-apple-ios12.2-simulatorでビルド出来る。
11:31 PM
DYLDの環境変数を調整すれば、実行も出来るかな?
Avatar
おお!
11:32 PM
-Xlinkerでrpath埋め込むのでもいけそう
Avatar
ふむ。
Avatar
これもできた $ swiftc -emit-library m.swift $ swiftc -L . -lm -I . a.swift -Xlinker -rpath -Xlinker /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx $ ./a
11:33 PM
↑こんなふんいき
Avatar
@rpathを使わずにリンクされてるから、それは効かないですね。 $ otool -L main main: /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.250.1) /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 61000.0.0) @rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftMetal.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 1001.0.82) @rpath/libswiftUIKit.dylib (compatibility version 1.0.0, current version 1001.0.82)
Avatar
UIKitの部分とかはOSに入ってる想定だから、そうなるのか。なるほど。
Avatar
install_name_toolUIKitのパスを変えたら、@rpath/libswiftCore.dylibをロードできないと言われた。 $ install_name_tool -change /System/Library/Frameworks/UIKit.framework/UIKit $(xcrun --show-sdk-platform-path --sdk iphoneos)/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot//System/Library/Frameworks/UIKit.framework/UIKit main $ ./main dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /Users/norio/github/docker-swift/./main Reason: image not found [1] 95202 abort ./main (edited)
12:03 AM
で、rpathを設定したらUIKitにリンクされてるDocumentManagerをロードできないと言われ、ここで「実行時の環境を変えないとダメだ。」となりinstall_name_toolを使う方法は終了。 $ pbpaste|swiftc -sdk $(xcrun --show-sdk-path --sdk iphonesimulator) -target x86_64-apple-ios12.2-simulator - -Xlinker -rpath -Xlinker $(xcrun --show-sdk-platform-path --sdk iphoneos)/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift $ install_name_tool -change /System/Library/Frameworks/UIKit.framework/UIKit $(xcrun --show-sdk-platform-path --sdk iphoneos)/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot//System/Library/Frameworks/UIKit.framework/UIKit main $ ./main dyld: Library not loaded: /System/Library/PrivateFrameworks/DocumentManager.framework/DocumentManager Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot//System/Library/Frameworks/UIKit.framework/UIKit Reason: image not found [1] 95440 abort ./main
Avatar
バイナリをシミュレーターコンテナ?のなかで起動しないとだめそうですね
Avatar
simctlはアプリケーションバンドルを起動するコマンドしかないから、chroot的な仕組みを使うしか無さげ。
Avatar
playground/iosとかはどうやってるんだろうなあ
Avatar
playgroundはsimulatorが動いてる。
Avatar
そのシミュレーターに対して、任意のコードを送り込める所の仕組みが知りたい
Avatar
アプリケーションバンドルを作成してるんじゃないかな。
Avatar
最近のxcodeで1行ずつ実行できるようになったから
12:20 AM
あれはREPLな気がします 昔のやつはアプリにしてIOは頑張ってるのかな
Avatar
アクティビティモニタで見るとやはりアプリケーションバンドルを作成して実行してる様に見えます。 /Users/norio/Library/Developer/XCPGDevices/8B3C76D2-C6BA-49FA-A03F-76AA29054FF3/data/Containers/Bundle/Application/269B83DA-876D-4C78-8197-D055CD0E0B5C/PlayNow-20190418-86360-2.app/PlayNow-20190418
Avatar
ああ、DYLD操作で実行出来た。 $ DYLD_FRAMEWORK_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks DYLD_FALLBACK_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot DYLD_FALLBACK_FRAMEWORK_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks DYLD_LIBRARY_PATH= ./main
Avatar
おお!
Avatar
rpath設定は必要。 $ pbpaste import UIKit print("UIKit") $ pbpaste|swiftc -sdk $(xcrun --show-sdk-path --sdk iphonesimulator) -target x86_64-apple-ios12.2-simulator - -Xlinker -rpath -Xlinker $(xcrun --show-sdk-platform-path --sdk iphoneos)/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift $ DYLD_FRAMEWORK_PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks DYLD_FALLBACK_LIBRARY_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot DYLD_FALLBACK_FRAMEWORK_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks DYLD_LIBRARY_PATH= ./main UIKit
12:41 AM
まあiPhoneのUIを実際に使うコードは動かないけど、UIKitをリンクして動かすことは出来た。
Avatar
フルパスで参照してるフレームワークも 差し替え効くんですね DYRD_ROOT_PATHがそれか?
Avatar
DYLD_*環境変数は、playgroundが実行してるアプリケーションに渡されてたものを全部記述しました。 (edited)
Avatar
なるほど!どうやって読み取ったんですか?
Avatar
アクティビティモニタでプロセス名を調べps axe|grep プロセス名ですね。
12:45 AM
該当プロセスとgrepのプロセスの情報が出ます。 (edited)
Avatar
psのe知りませんでした なるほどーー
Avatar
norio_nomura 4/18/2019 1:14 AM
DYLD_FALLBACK_LIBRARY_PATHusr/lib/swiftの分も追加すれば、rpath指定無しでいける。 $ ROOT_PATH=$(xcrun --show-sdk-platform-path --sdk iphoneos)/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot && \ DYLD_FALLBACK_FRAMEWORK_PATH=$ROOT_PATH/System/Library/Frameworks \ DYLD_FALLBACK_LIBRARY_PATH=$ROOT_PATH/usr/lib:$ROOT_PATH/usr/lib/swift \ DYLD_LIBRARY_PATH= \ DYLD_ROOT_PATH=$ROOT_PATH \ ./main (edited)
Avatar
omochimetaru 4/18/2019 1:21 AM
なるほど
Avatar
norio_nomura 4/18/2019 1:36 AM
DYLD_LIBRARY_PATH= は無くても良さげ。simctljq.simruntimeの場所を取得する方法に書き換えると $ ROOT_PATH=$(xcrun simctl list -j runtimes ios|jq -r '.runtimes[-1]|.bundlePath')/Contents/Resources/RuntimeRoot && \ DYLD_FALLBACK_FRAMEWORK_PATH=$ROOT_PATH/System/Library/Frameworks \ DYLD_FALLBACK_LIBRARY_PATH=$ROOT_PATH/usr/lib:$ROOT_PATH/usr/lib/swift \ DYLD_ROOT_PATH=$ROOT_PATH \ ./main が一番シンプルな記述かな。 (edited)
1:40 AM
まとめると $ pbpaste import UIKit protocol Component: UIView { associatedtype Model func activate(with model: Model) func deactivate() } class ImageComponent: UIImageView, Component { typealias Model = UIImage func activate(with model: ImageComponent.Model) { image = model } func deactivate() { image = nil } } print("UIKit") $ pbpaste|swiftc -sdk $(xcrun --show-sdk-path --sdk iphonesimulator) -target x86_64-apple-ios12.2-simulator - $ ROOT_PATH=$(xcrun simctl list -j runtimes ios|jq -r '.runtimes[-1]|.bundlePath')/Contents/Resources/RuntimeRoot && \ DYLD_FALLBACK_FRAMEWORK_PATH=$ROOT_PATH/System/Library/Frameworks \ DYLD_FALLBACK_LIBRARY_PATH=$ROOT_PATH/usr/lib:$ROOT_PATH/usr/lib/swift \ DYLD_ROOT_PATH=$ROOT_PATH \ ./main UIKit
Avatar
omochimetaru 4/18/2019 1:41 AM
xcrun simctlってJSONで出してくれるオプションあるんですね。
Avatar
norio_nomura 4/18/2019 1:41 AM
うん。
1:41 AM
-target x86_64-apple-ios12.2-simulatorが決め打ちになっちゃうのだけ気持ちが悪いな。
Avatar
omochimetaru 4/18/2019 1:42 AM
もしbotだとしたら swift-5.0-iOS12.2
1:42 AM
みたいな名前になりそう。
Avatar
norio_nomura 4/18/2019 1:47 AM
あれ?swiftcへ渡す-targetって任意なの?
Avatar
Kishikawa Katsumi 4/18/2019 1:48 AM
無くても実行できました?
Avatar
norio_nomura 4/18/2019 1:49 AM
あいや、-target x86_64-apple-ios12までは短く出来たけど、無くすまでは無理だった。
Avatar
Kishikawa Katsumi 4/18/2019 1:50 AM
12無くせません?
Avatar
norio_nomura 4/18/2019 1:51 AM
無くすと、-Xlinker-ios_simulator_version_minを指定する必要が出てきそうです。
1:52 AM
$ pbpaste|swiftc -sdk $(xcrun --show-sdk-path --sdk iphonesimulator) -target x86_64-apple-ios - -v <unknown>:0: error: Swift requires a minimum deployment target of iOS 7
Avatar
Kishikawa Katsumi 4/18/2019 1:52 AM
なるほど。なくすより10あたりを指定しておくのが良さそうかな。
Avatar
norio_nomura 4/18/2019 1:52 AM
ですね。
Avatar
Kishikawa Katsumi 4/18/2019 1:52 AM
そこに数字が出てくるのはしょうがないので。
Avatar
norio_nomura 4/18/2019 2:01 AM
あえてバージョンを取得するなら $ jq -r .Version $(xcrun --show-sdk-path --sdk iphonesimulator)/SDKSettings.json 12.2 辺りかな。 (edited)
Avatar
norio_nomura 4/18/2019 2:20 AM
このiOS Simulator向けにビルドしてCLIで実行って、WWDC19以降は簡単になりそうだよね。
Avatar
omochimetaru 4/18/2019 2:20 AM
マジパン関係ですか?
Avatar
norio_nomura 4/18/2019 2:22 AM
既に/System/iOSSupport/System/Library/Frameworks/UIKit.frameworkとかMojaveにあるし。
Avatar
omochimetaru 4/18/2019 2:23 AM
ほんとだw
Avatar
norio_nomura 4/18/2019 2:25 AM
先の手法でビルドしたものに /System/iOSSupport を渡すとこんな感じ。 $ ROOT_PATH=/System/iOSSupport && \ DYLD_FALLBACK_FRAMEWORK_PATH=$ROOT_PATH/System/Library/Frameworks \ DYLD_FALLBACK_LIBRARY_PATH=$ROOT_PATH/usr/lib:$ROOT_PATH/usr/lib/swift \ DYLD_ROOT_PATH=$ROOT_PATH \ ./main dyld: mach-o, but built for simulator (not macOS) [1] 7681 abort DYLD_FALLBACK_FRAMEWORK_PATH=$ROOT_PATH/System/Library/Frameworks = = ./main
2:31 AM
$ otool -l /System/iOSSupport/System/Library/Frameworks/UIKit.framework/UIKit … Load command 7 cmd LC_BUILD_VERSION cmdsize 32 platform iosmac sdk 10.14 minos 12.0 ntools 1 tool ld version 450.1 … $ otool -l /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/UIKit.framework/UIKit … Load command 7 cmd LC_BUILD_VERSION cmdsize 32 platform iossimulator sdk 12.2 minos 12.2 ntools 1 tool ld version 450.1
2:31 AM
platform iosmac
Avatar
omochimetaru 4/18/2019 2:32 AM
iosmac
Avatar
norio_nomura 4/18/2019 2:41 AM
このiOS Simulator向けにビルドしてCLIで実行
正確には、macOSでUIKitを使う、か。
Avatar
norio_nomura 4/18/2019 3:20 AM
swift-5.1-DEVELOPMENT-SNAPSHOT-2019-04-16-aが出た。 @swift-5.1.5 -version
Avatar
Swift version 5.0-dev (LLVM f961e3dd74, Swift 85a776dac0) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 4/18/2019 3:24 AM
@swift-5.1.5 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
5.1-DEVELOPMENT-SNAPSHOT-2019-04-16-a
Avatar
@swift-5.0.3 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
5.0.1-RELEASE
Avatar
@swift-main protocol Animal {} struct Cat: Animal {} func makeAnimal() -> some Animal { return Cat() } print(makeAnimal()) (edited)
Avatar
swiftNightly BOT 4/20/2019 2:55 PM
exit status: 1 with stderr:<stdin>:3:26: error: consecutive statements on a line must be separated by ';' func makeAnimal() -> some Animal { ^ ; <stdin>:3:22: error: use of undeclared type 'some' func makeAnimal() -> some Animal { ^~~~ <stdin>:3:27: error: 'Animal' cannot be constructed because it has no accessible initializers func makeAnimal() -> some Animal { ^
Avatar
マージされてるけどまだか。 https://github.com/apple/swift/pull/22072
A continuation of #21137. This branch adds &quot;proper&quot; resilience support. Opaque types can now enter the SIL type system, and will be able to be represented at runtime with opaque a...
Avatar
omochimetaru 4/25/2019 5:37 AM
@swift-5.1.5 protocol P {} extension Int : P {} func f() -> some P { return 3 } (edited)
Avatar
exit status: 1 with stderr:<stdin>:3:17: error: consecutive statements on a line must be separated by ';' func f() -> some P { return 3 } ^ ; <stdin>:3:13: error: use of undeclared type 'some' func f() -> some P { return 3 } ^~~~ <stdin>:3:18: error: 'P' cannot be constructed because it has no accessible initializers func f() -> some P { return 3 } ^
Avatar
@swift-main protocol Animal {} struct Cat: Animal {} func makeAnimal() -> some Animal { return Cat() } print(makeAnimal())
Avatar
swiftNightly BOT 4/25/2019 7:05 AM
exit status: 1 with stderr:<stdin>:3:26: error: consecutive statements on a line must be separated by ';' func makeAnimal() -> some Animal { ^ ; <stdin>:3:22: error: use of undeclared type 'some' func makeAnimal() -> some Animal { ^~~~ <stdin>:3:27: error: 'Animal' cannot be constructed because it has no accessible initializers func makeAnimal() -> some Animal { ^
Avatar
見るの間違えた。まだ4/16から更新されてなかった。 https://swift.org/download/#snapshots
Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.
Avatar
omochimetaru 4/25/2019 7:30 AM
マージされたのが4.19か
7:31 AM
実際snapshot全然出てないな
Avatar
おじゃまします🙇 @swift-5.0.3 print("👶".unicodeScalars.first?.properties.isEmoji)
Avatar
exit status: 1 with stderr:<stdin>:1:36: error: value of type 'Unicode.Scalar.Properties' has no member 'isEmoji' print("👶".unicodeScalars.first?.properties.isEmoji)
🤔 1
Avatar
omochimetaru 4/26/2019 6:48 AM
@swift-main "👶".unicodeScalars.first!.properties.isEmoji (edited)
Avatar
swiftNightly BOT 4/26/2019 6:48 AM
exit status: 1 with stderr:<stdin>:1:41: error: value of type 'Unicode.Scalar.Properties' has no member 'isEmoji' "👶".unicodeScalars.first!.properties.isEmoji (edited)
Avatar
omochimetaru 4/26/2019 6:49 AM
@swift-main let scalars: [Unicode.Scalar] = ["😎", "$", "0"] for s in scalars { print(s, "-->", s.isEmoji) } // 😎 --> true // $ --> false // 0 --> true
Avatar
swiftNightly BOT 4/26/2019 6:49 AM
exit status: 1 with stderr:<stdin>:3:23: error: value of type 'Unicode.Scalar' has no member 'isEmoji' print(s, "-->", s.isEmoji) ~ ^~~~~~~
6:50 AM
@swift-main let scalars: [Unicode.Scalar] = ["😎", "$", "0"] scalars.forEach { dump($0.properties) } (edited)
Avatar
swiftNightly BOT 4/26/2019 6:50 AM
▿ Swift.Unicode.Scalar.Properties - _scalar: "\u{0001F60E}" ▿ Swift.Unicode.Scalar.Properties - _scalar: "$" ▿ Swift.Unicode.Scalar.Properties - _scalar: "0" (edited)
Avatar
omochimetaru 4/26/2019 6:50 AM
よくわからん。
Avatar
ですね...
Avatar
@swift-5.0.3 import Foundation print("👶".unicodeScalars.first?.properties) (edited)
Avatar
Optional(Swift.Unicode.Scalar.Properties(_scalar: "\u{0001F476}"))stderr:<stdin>:2:7: warning: expression implicitly coerced from 'Unicode.Scalar.Properties?' to 'Any' print("👶".unicodeScalars.first?.properties) <stdin>:2:36: note: provide a default value to avoid this warning print("👶".unicodeScalars.first?.properties) <stdin>:2:36: note: force-unwrap the value to avoid this warning print("👶".unicodeScalars.first?.properties) <stdin>:2:36: note: explicitly cast to 'Any' with 'as Any' to silence this warning print("👶".unicodeScalars.first?.properties) (edited)
Avatar
omochimetaru 4/26/2019 6:52 AM
6:52 AM
macはできた。
Avatar
Playgroundでもできるんだよねぇ
Avatar
ここはできた
Avatar
これじゃね? @available(OSX 10.12.2, iOS 10.2, tvOS 10.1, watchOS 3.1.1, *) public var isEmoji: Bool { get }
Avatar
omochimetaru 4/26/2019 6:56 AM
The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub.
6:56 AM
#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) // FIXME: These properties were introduced in ICU 57, but Ubuntu 16.04 comes // with ICU 55 so the values won't be correct there. Exclude them on // non-Darwin platforms for now; bundling ICU with the toolchain would resolve // this and other inconsistencies (https://bugs.swift.org/browse/SR-6076). /// A Boolean value indicating whether the scalar has an emoji /// presentation, whether or not it is the default. 略 @available(macOS 10.12.2, iOS 10.2, tvOS 10.1, watchOS 3.1.1, *) public var isEmoji: Bool { return _hasBinaryProperty(__swift_stdlib_UCHAR_EMOJI) }
👌 1
🙇 1
6:56 AM
ICU57で入ったけどUbuntu16.04のICUは55だから対応してないってさ。
Avatar
:naruhodo:
Avatar
5.1の新しいスナップショットきたけど、someが入るのは次かな。 @swift-5.1.5 protocol Animal {} struct Cat: Animal {} func makeAnimal() -> some Animal { return Cat() } print(makeAnimal()) (edited)
😩 1
Avatar
exit status: 1 with stderr:<stdin>:3:26: error: consecutive statements on a line must be separated by ';' func makeAnimal() -> some Animal { ^ ; <stdin>:3:22: error: use of undeclared type 'some' func makeAnimal() -> some Animal { ^~~~ <stdin>:3:27: error: 'Animal' cannot be constructed because it has no accessible initializers func makeAnimal() -> some Animal { ^ (edited)
Avatar
5.1 に入るんですっけ?
Avatar
はやい。次のわいわいでもう使えるかな
Avatar
Trunk Development (master) の方は April 16 のままですね。
1:52 AM
@tarunon スナップショットは出てないですがマージはされてるんで自分でビルドすれば使えるんじゃないかと思います。 Bot の話の意かもですが・・・。
Avatar
Botの意でした
👌 1
Avatar
おお、じゃあ5.1に入るんですね!
Avatar
https://github.com/ReactiveX/RxSwift/issues/1921#issuecomment-487286983 RxSwiftのswift5のIF決めるスレでORTの話題出てきたけど、「出てきてからね」の流れになったw 認知はされてるから、もしかしたらRxSwiftにも入るかもですね
Hey @kzaher &amp; others - Since RxSwift 5 is around the corner, I took the liberty of making a list of PRs/Issues that were delayed for RxSwift 5. The goal here is to see if: Any of them are e...
5:21 PM
後方互換性キツそうだなという気はする
Avatar
norio_nomura 5/1/2019 11:45 PM
@swift-main @swift-5.1.5 protocol Animal {} struct Cat: Animal {} func makeAnimal() -> some Animal { return Cat() } print(makeAnimal()) (edited)
Avatar
swiftNightly BOT 5/1/2019 11:45 PM
Cat() (edited)
🎉 3
Avatar
Cat()
Avatar
omochimetaru 5/7/2019 4:22 AM
@swift-main protocol P1 {} protocol P2 {} extension Int : P1 {} extension Int : P2 {} func f() -> some P1 { return 0 } func f() -> some P2 { return 0 }
Avatar
swiftNightly BOT 5/7/2019 4:22 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/SIL/SILFunctionBuilder.cpp:112: swift::SILFunction *swift::SILFunctionBuilder::getOrCreateFunction(swift::SILLocation, swift::SILDeclRef, swift::ForDefinition_t, swift::ProfileCounter): Assertion `fn->getLoweredFunctionType() == constantType' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -module-name main 1. Swift version 5.0-dev (LLVM 082dec2e22, Swift f5ba89d372) 2. While emitting SIL for 'f()' (at <stdin>:6:1) /usr/bin/swift[0x48f7534] /usr/bin/swift[0x48f5150] /usr/bin/swift[0x48f7958] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fc231aaf390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7fc2301ee428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7fc2301f002a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7fc2301e6bd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7fc2301e6c82] /usr/bin/swift[0xdf2d10] /usr/bin/swift[0x893a8c] /usr/bin/swift[0x89433d] /usr/bin/swift[0x89a2ec] /usr/bin/swift[0x89b334] /usr/bin/swift[0x89b93b] /usr/bin/swift[0x508302] /usr/bin/swift[0x504b9f] /usr/bin/swift[0x4a002d] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fc2301d9830] /usr/bin/swift[0x49fb89]
Avatar
omochimetaru 5/7/2019 4:28 AM
@swift-5.1.5 protocol P1 {} protocol P2 {} extension Int : P1 {} extension Int : P2 {} func f() -> some P1 { return 0 } func f() -> some P2 { return 0 }
Avatar
swift51 BOT 5/7/2019 4:28 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-5.1-package-linux-ubuntu-16_04/swift/lib/SIL/SILFunctionBuilder.cpp:108: swift::SILFunction *swift::SILFunctionBuilder::getOrCreateFunction(swift::SILLocation, swift::SILDeclRef, swift::ForDefinition_t, swift::ProfileCounter): Assertion `fn->getLoweredFunctionType() == constantType' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -module-name main 1. While emitting SIL for 'f()' (at <stdin>:6:1) /usr/bin/swift[0x48e9374] /usr/bin/swift[0x48e6f90] /usr/bin/swift[0x48e9798] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fcf15036390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7fcf13775428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7fcf1377702a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7fcf1376dbd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7fcf1376dc82] /usr/bin/swift[0xdda2b0] /usr/bin/swift[0x89124c] /usr/bin/swift[0x891afd] /usr/bin/swift[0x897d7c] /usr/bin/swift[0x898da4] /usr/bin/swift[0x8993ab] /usr/bin/swift[0x5081da] /usr/bin/swift[0x504a8f] /usr/bin/swift[0x4a000d] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fcf13760830] /usr/bin/swift[0x49fb89]
Avatar
omochimetaru 5/7/2019 4:29 AM
@swift-main protocol P1 {} protocol P2 {} extension Int : P1 {} extension Int : P2 {} func f() -> some P1 { return Int(0) } func f() -> some P2 { return Int(0) }
Avatar
swiftNightly BOT 5/7/2019 4:29 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/SIL/SILFunctionBuilder.cpp:112: swift::SILFunction *swift::SILFunctionBuilder::getOrCreateFunction(swift::SILLocation, swift::SILDeclRef, swift::ForDefinition_t, swift::ProfileCounter): Assertion `fn->getLoweredFunctionType() == constantType' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -module-name main 1. Swift version 5.0-dev (LLVM 082dec2e22, Swift f5ba89d372) 2. While emitting SIL for 'f()' (at <stdin>:6:1) /usr/bin/swift[0x48f7534] /usr/bin/swift[0x48f5150] /usr/bin/swift[0x48f7958] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7ff7202b0390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7ff71e9ef428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7ff71e9f102a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7ff71e9e7bd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7ff71e9e7c82] /usr/bin/swift[0xdf2d10] /usr/bin/swift[0x893a8c] /usr/bin/swift[0x89433d] /usr/bin/swift[0x89a2ec] /usr/bin/swift[0x89b334] /usr/bin/swift[0x89b93b] /usr/bin/swift[0x508302] /usr/bin/swift[0x504b9f] /usr/bin/swift[0x4a002d] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7ff71e9da830] /usr/bin/swift[0x49fb89]
Avatar
omochimetaru 5/7/2019 4:30 AM
あれ〜 このオーバーロードsemaでエラーになるテストが既にマージされてるんだけどな。
Avatar
norio_nomura 5/7/2019 6:05 AM
This is necessary because: func foo() -&gt; some P func foo() -&gt; some P theoretically defines two distinct return types, but there&#39;d be no way to disambiguate them. Disallow ove...
Avatar
norio_nomura 5/7/2019 6:14 AM
なんか微妙に違うな。
Avatar
omochimetaru 5/7/2019 6:14 AM
はい
6:14 AM
テストケースのここ func redeclaration() -> some P { return 0 } // expected-note{{previously declared}} func redeclaration() -> some P { return 0 } // expected-error{{redeclaration}} func redeclaration() -> some Q { return 0 } (edited)
6:15 AM
some Pとsome Qが並んでるので(エラーにはなってないみたいだけど)少なくともコンパイラクラッシュはしないはず
Avatar
norio_nomura 5/7/2019 10:22 AM
ふむ @swift-5.1.5 -frontend -typecheck -verify protocol P1 {} protocol P2 {} extension Int : P1 {} extension Int : P2 {} func f() -> some P1 { return Int(0) } func f() -> some P2 { return Int(0) }
Avatar
no output
Avatar
omochimetaru 5/7/2019 10:23 AM
あ、そうか、テストコードはIRGenまでやってないのか。
Avatar
@swift-5.1.5 protocol P1 {} protocol P2 {} extension Int : P1 {} extension Int : P2 {} func f() -> some P1 { return Int(0) } func f() -> some P2 { return Int(0) } func r<T: P1>(_ a: T) { print(a) } r(f()) (edited)
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-5.1-package-linux-ubuntu-16_04/swift/lib/SIL/SILFunctionBuilder.cpp:108: swift::SILFunction *swift::SILFunctionBuilder::getOrCreateFunction(swift::SILLocation, swift::SILDeclRef, swift::ForDefinition_t, swift::ProfileCounter): Assertion `fn->getLoweredFunctionType() == constantType' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -module-name main 1. While emitting SIL for 'f()' (at <stdin>:6:1) /usr/bin/swift[0x48e9374] /usr/bin/swift[0x48e6f90] /usr/bin/swift[0x48e9798] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f0ffb06b390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f0ff97aa428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f0ff97ac02a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7f0ff97a2bd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7f0ff97a2c82] /usr/bin/swift[0xdda2b0] /usr/bin/swift[0x89124c] /usr/bin/swift[0x891afd] /usr/bin/swift[0x897d7c] /usr/bin/swift[0x898da4] /usr/bin/swift[0x8993ab] /usr/bin/swift[0x5081da] /usr/bin/swift[0x504a8f] /usr/bin/swift[0x4a000d] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f0ff9795830] /usr/bin/swift[0x49fb89]
Avatar
型が解ってもクラッシュするのか。
10:24 AM
一瞬いけるんじゃないかと期待してしまった
Avatar
omochimetaru 5/7/2019 10:24 AM
mangling結果が同じになるんだよね
10:25 AM
それで後段のIRGenでぶっ壊れる
Avatar
なるほど
Avatar
omochimetaru 5/7/2019 10:25 AM
前見たときはそうだった。
Avatar
@swift-5.0.3 @swift-main import Foundation let data = Data([1, 2, 3]) print(data.range(of: Data([1, 2, 3])) ?? []) print(data.firstRange(of: Data([1, 2, 3])) ?? []) (edited)
Avatar
swiftNightly BOT 5/15/2019 1:24 AM
0..<3 [] (edited)
Avatar
0..<3 [] (edited)
Avatar
@swift-5.0.3 @swift-main import Foundation let data = Data([1, 2, 3, 2, 1]) print(data.range(of: Data([1]), options: .backwards) ?? []) print(data.lastRange(of: Data([1])) ?? []) (edited)
Avatar
4..<5 0..<1 (edited)
Avatar
swiftNightly BOT 5/15/2019 1:25 AM
4..<5 0..<1 (edited)
Avatar
@swift-5.0.3 @swift-main import Foundation let data = Data([1, 2, 3]) print(data.range(of: Data([1]), options: .backwards, in: data.startIndex..<data.endIndex) ?? []) print(data.lastRange(of: Data([1]), in: data.startIndex..<data.endIndex) ?? []) (edited)
Avatar
swiftNightly BOT 5/15/2019 1:27 AM
exit status: 4 with stderr:Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -module-name main 1. Swift version 5.0-dev (LLVM 082dec2e22, Swift 87e1efd1a2) /usr/bin/swift[0x48fde14] /usr/bin/swift[0x48fba30] /usr/bin/swift[0x48fe238] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f02906e8390] /usr/lib/swift/linux/libFoundation.so($s10Foundation4DataV15_RepresentationOys5UInt8VSicig+0x1b3)[0x7f028930b133] (edited)
Avatar
exit status: 4 with stderr:Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOLinux.build/module.modulemap -module-name main -lLibraries /usr/bin/swift[0x4626bd4] /usr/bin/swift[0x46249a0] /usr/bin/swift[0x4626d82] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f14d1559390] /usr/lib/swift/linux/libFoundation.so($s10Foundation4DataV15_RepresentationOys5UInt8VSicig+0x1b3)[0x7f14c9cc7203] (edited)
Avatar
firstRange/lastRange 周りがバグい
Avatar
omochimetaru 5/15/2019 2:27 AM
なんだこれ。
2:30 AM
@swift-5.1.5 import Foundation let data = Data([1, 2, 3]) let tests = [Data([1]), Data([1, 2]), Data([1, 2, 3])] for test in tests { let range = data.firstRange(of: test) print("\(range)") }
Avatar
Optional(Range(0..<1)) Optional(Range(0..<1)) nilstderr:<stdin>:8:14: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit? print("\(range)") ^~~~~ <stdin>:8:14: note: use 'String(describing:)' to silence this warning print("\(range)") ^~~~~ String(describing: ) <stdin>:8:14: note: provide a default value to avoid this warning print("\(range)") ^~~~~ ?? <#default value#>
Avatar
@swift-5.1.5 import Foundation let data = Data([1, 2, 3]) let tests = [Data([1]), Data([1, 2]), Data([1, 2, 3])] for test in tests { let range = (data as NSData).firstRange(of: test) print("\(range)") } (edited)
Avatar
Optional(Range(0..<1)) Optional(Range(0..<2)) Optional(Range(0..<3))stderr:<stdin>:8:14: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit? print("\(range)") ^~~~~ <stdin>:8:14: note: use 'String(describing:)' to silence this warning print("\(range)") ^~~~~ String(describing: ) <stdin>:8:14: note: provide a default value to avoid this warning print("\(range)") ^~~~~ ?? <#default value#> (edited)
Avatar
DataProtocolのデフォルト実装が正しい実装になっていない 例えば↓など https://github.com/apple/swift-corelibs-foundation/blob/8043670b9d991d45ca72cfadc3806c68e9e16a05/Foundation/DataProtocol.swift#L82-L84
The Foundation Project, providing core utilities, internationalization, and OS independence - apple/swift-corelibs-foundation
😂 5
Avatar
omochimetaru 5/15/2019 4:45 AM
これはww
Avatar
いつから last最後 だと錯覚していたwww
Avatar
残念だ。いったんレビューの指摘を受けて直っているのに、PRをout of dateにして別のPRで作り直されたときにfirstに先祖返りしてしまってる 😭 https://github.com/apple/swift-corelibs-foundation/pull/1813#discussion_r243387179
This brings Data in sync with the overlay changes for the new inline revamp.
Avatar
omochimetaru 5/16/2019 3:56 AM
マージ前に指摘はされていたのか〜
Avatar
DataProtocol.lastRange(of:) の件、apple/swiftの(つまりDarwin用の)swift-5.0-branchだけ正しい状態だったので、まずapple/swiftのmasterに修正のPR出してみました https://github.com/apple/swift/pull/25065 (edited)
DataProtocol.lastRange(of:) is correct in swift-5.0-branch, but not in master and swift-5.1-branch. The changes are from #21292 (d7fcb87).
🙏 1
10:34 PM
これが通ればswift-5.1-branchと、foundationのmasterと5.0-branchにも修正出す流れで。
Avatar
おお、ありがとうございます
Avatar
norio_nomura 5/26/2019 3:21 AM
@swift-main -frontend -repl import Foundation :print_decl URLSession import FoundationNetworking
Avatar
swiftNightly BOT 5/26/2019 3:21 AM
@available(*, unavailable, message: "This type has moved to the FoundationNetworking module. Import that module to use it.") typealias URLSession = AnyObjectstderr:<REPL Input>:1:8: error: no such module 'FoundationNetworking' import FoundationNetworking ^
Avatar
@swift-main @swift-5.1.5 @swift-5.0.3 @swift-4.2.4 indirect enum A { case case1 case case2(A, B) case case3(A, A, B) } indirect enum B { case case4(B) case case5 case case6 } func foo(_ a: A) { switch a { case .case2: break } }
Avatar
exit status: 1 with stderr:<stdin>:13:5: error: switch must be exhaustive switch a { ^ <stdin>:13:5: note: add missing case: '.case1' switch a { ^ <stdin>:13:5: note: add missing case: '.case3(_, _, _)' switch a { ^
Avatar
no output
Avatar
no output
Avatar
swiftNightly BOT 5/27/2019 1:59 PM
exit status: 1 with stderr:<stdin>:13:5: error: switch must be exhaustive switch a { ^ <stdin>:13:5: note: add missing case: '.case1' switch a { ^ <stdin>:13:5: note: add missing case: '.case3(_, _, _)' switch a { ^
Avatar
exhaustiveのチェックを壊してしまった
2:00 PM
5.0は壊れてるけど5.0.1では治ってるのか (edited)
Avatar
@swift-main @swift-5.1.5 @swift-5.0.3 import Foundation public protocol NMBComparable { func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult } extension NSNumber: NMBComparable { public func NMB_compare(_ otherObject: NMBComparable!) -> ComparisonResult { return compare(otherObject as! NSNumber) } } func take<T: Comparable>(_ a: T, _ b: T) {} func take<T: NMBComparable>(_ a: T, _ b: T) {} take(1, 2) take(NSNumber(value: 1), NSNumber(value: 2)) take(1, NSNumber(value: 2)) take(NSNumber(value: 1), 2) (edited)
Avatar
swiftNightly BOT 5/30/2019 3:05 PM
exit status: 1 with stderr:<stdin>:17:1: error: ambiguous use of 'take' take(NSNumber(value: 1), NSNumber(value: 2)) ^ <stdin>:13:6: note: found this candidate func take<T: Comparable>(_ a: T, _ b: T) {} ^ <stdin>:14:6: note: found this candidate func take<T: NMBComparable>(_ a: T, _ b: T) {} ^ <stdin>:18:1: error: ambiguous use of 'take' take(1, NSNumber(value: 2)) ^ <stdin>:13:6: note: found this candidate func take<T: Comparable>(_ a: T, _ b: T) {} ^ <stdin>:14:6: note: found this candidate func take<T: NMBComparable>(_ a: T, _ b: T) {} ^ <stdin>:19:1: error: ambiguous use of 'take' take(NSNumber(value: 1), 2) ^ <stdin>:13:6: note: found this candidate func take<T: Comparable>(_ a: T, _ b: T) {} ^ <stdin>:14:6: note: found this candidate func take<T: NMBComparable>(_ a: T, _ b: T) {} ^ (edited)
Avatar
exit status: 1 with stderr:<stdin>:17:1: error: ambiguous use of 'take' take(NSNumber(value: 1), NSNumber(value: 2)) ^ <stdin>:13:6: note: found this candidate func take<T: Comparable>(_ a: T, _ b: T) {} ^ <stdin>:14:6: note: found this candidate func take<T: NMBComparable>(_ a: T, _ b: T) {} ^ <stdin>:18:1: error: ambiguous use of 'take' take(1, NSNumber(value: 2)) ^ <stdin>:13:6: note: found this candidate func take<T: Comparable>(_ a: T, _ b: T) {} ^ <stdin>:14:6: note: found this candidate func take<T: NMBComparable>(_ a: T, _ b: T) {} ^ <stdin>:19:1: error: ambiguous use of 'take' take(NSNumber(value: 1), 2) ^ <stdin>:13:6: note: found this candidate func take<T: Comparable>(_ a: T, _ b: T) {} ^ <stdin>:14:6: note: found this candidate func take<T: NMBComparable>(_ a: T, _ b: T) {} ^ (edited)
Avatar
no output (edited)
Avatar
@swift-main @swift-5.1.5 @swift-5.0.3 import Foundation func take<T: Comparable>(_ a: T, _ b: T) {} take(NSNumber(value: 1), NSNumber(value: 2))
Avatar
swiftNightly BOT 5/30/2019 3:12 PM
no output
Avatar
exit status: 1 with stderr:<stdin>:3:6: error: argument type 'NSNumber' does not conform to expected type 'Comparable' take(NSNumber(value: 1), NSNumber(value: 2)) ^
Avatar
no output
Avatar
master, Swift 5.1で、なぜかLinuxでNSNumberがComparableとして認識されている?
3:16 PM
DarwinでのNSNumber
3:20 PM
Implement the parts that can be implemented and annotate the rest with diagnostics. Add a partially source-compatible version of init(keyPath:ascending:) that works with Comparable values. A li...
3:21 PM
Implement the parts that can be implemented and annotate the rest with diagnostics. Add a partially source-compatible version of init(keyPath:ascending:) that works with Comparable values. A li...
Avatar
norio_nomura 6/1/2019 9:42 AM
@swift-main @ _propertyWrapper enum Lazy<Value> { case uninitialized(() -> Value) case initialized(Value) init(initialValue: @autoclosure @escaping () -> Value) { self = .uninitialized(initialValue) } var value: Value { mutating get { switch self { case .uninitialized(let initializer): let value = initializer() self = .initialized(value) return value case .initialized(let value): return value } } set { self = .initialized(newValue) } } } @Lazy var foo = 1738
Avatar
swiftNightly BOT 6/1/2019 9:42 AM
no output
Avatar
@swift-5.1.5 -frontend -c -enable-experimental-static-assert func isOne(_ x: Int) -> Bool { return x == 1 } func test_assertionSuccess() { #assert(isOne(1)) #assert(isOne(1), "1 is not 1") } func test_assertionFailure() { #assert(isOne(2)) // expected-error{{assertion failed}} #assert(isOne(2), "2 is not 1") // expected-error{{2 is not 1}} }
Avatar
swift51 BOT 6/8/2019 4:05 AM
exit status: 1 with stderr:<stdin>:11:3: error: assertion failed #assert(isOne(2)) // expected-error{{assertion failed}} ^ <stdin>:12:3: error: 2 is not 1 #assert(isOne(2), "2 is not 1") // expected-error{{2 is not 1}} ^
Avatar
便利だ
Avatar
omochimetaru 6/9/2019 4:21 AM
お、マージされたか!
4:26 AM
これパッチのころから追いかけていて、次の勉強会で紹介しようと思ってた
Avatar
Constant Evaluatorで検索するとたくさんPR出てきます https://github.com/apple/swift/pulls?utf8=%E2%9C%93&q=is%3Apr+constant+evaluator
The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub.
10:48 AM
これってSILの最適化パスの一つとして実行されてる?という理解でよいのかな
Avatar
そうです、SILのパスになってる
🙌 1
Avatar
@swift-5.1.5 import FoundationNetworking
Avatar
no output
Avatar
@swift-5.1.5 func f(g: () -> Int) -> String { "\(g())" } print(f { 42 })
Avatar
42
Avatar
@tarunon
Avatar
いけるのか
11:09 AM
引数のとこが自由度高すぎるように見えるので
11:09 AM
例えば環境から値注入するとか出来ちゃうよなーと思った次第です
11:09 AM
注入してる側でコンパイルエラーするのかな
Avatar
そうそう、できちゃうのでgも @compilerEvaluable にしなきゃいけなくて、 そうすると依存性切り離して使いたい関数を @compilerEvaluable にするような運用はできないってことになるので、 普段使いできそうにないなーと
Avatar
今の所暗黙的に計算してるのかなと思いますが…フーム
Avatar
@takasek printじゃなくて#assertですね
Avatar
あーいや、もとからできない例として書いたつもりだった
11:29 AM
@swift-5.1.5 #assert(1 < 2)
Avatar
exit status: 1 with stderr:<stdin>:1:1: error: #assert is an experimental feature that is currently disabled #assert(1 < 2) ^
Avatar
@swift-5.1.5 -frontend -c -enable-experimental-static-assert #assert(1 < 2)
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-5.1-package-linux-ubuntu-16_04/llvm/lib/Support/raw_ostream.cpp:735: uint64_t llvm::raw_fd_ostream::seek(uint64_t): Assertion `SupportsSeeking && "Stream does not support seeking!"' failed. Stack dump: 0. Program arguments: swift -frontend -c -enable-experimental-static-assert - swift[0x4938c34] swift[0x4936850] swift[0x4939058] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f7c86339390] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f7c84a78428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f7c84a7a02a] /lib/x86_64-linux-gnu/libc.so.6(+0x2dbd7)[0x7f7c84a70bd7] /lib/x86_64-linux-gnu/libc.so.6(+0x2dc82)[0x7f7c84a70c82] swift[0x49196b0] swift[0x4919701] swift[0x4657dda] swift[0x4651a63] swift[0x45ed347] swift[0x1eaf048] swift[0x47b2e45] swift[0x47b3423] swift[0x5847c1] swift[0x50a4e4] swift[0x5058cf] swift[0x4a022d] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f7c84a63830] swift[0x49fda9]
Avatar
おや
Avatar
なぜころたし
Avatar
@swift-5.0.3 class Animal { func foo() -> Int? { return nil } } class Cat: Animal { override func foo() -> Int { return 42 } } let animal: Animal = Cat() print(animal.foo()!)
Avatar
swift50 BOT 7/2/2019 4:19 AM
42
Avatar
omochimetaru 7/2/2019 7:27 AM
@swift-5.1.5 class Animal { func foo() -> Int? { return nil } } class Cat: Animal { override func foo() -> Int { return 42 } override func foo() -> Int? { return nil } }
Avatar
swift51 BOT 7/2/2019 7:27 AM
exit status: 1 with stderr:<stdin>:9:19: error: 'foo()' has already been overridden override func foo() -> Int? { return nil } ^ <stdin>:8:19: note: 'foo()' previously overridden here override func foo() -> Int { return 42 } ^
Avatar
omochimetaru 7/2/2019 7:28 AM
ちゃんとしてる
Avatar
norio_nomura 7/8/2019 1:19 PM
Swift 5.1 で OpenCombine https://github.com/broadwaylamb/OpenCombine をインポート出来るようにしました。 @swift-5.1.5 import OpenCombine let publisher = Just(28) _ = publisher .map { number in return "Antoine's age is \(number)" } .sink { (value) in print(value) } (edited)
Open-source implementation of Apple's Combine framework for processing values over time. - broadwaylamb/OpenCombine
Avatar
swift51 BOT 7/8/2019 1:19 PM
Antoine's age is 28 (edited)
Avatar
omochimetaru 7/9/2019 1:16 AM
OpenCombineなるほど
1:17 AM
そういうのがあればCombineによせても、Linux対応問題は一応解決するな、挙動同じなら・・・
Avatar
完全に挙動同じライブラリがある場合Combineのメリットって何になるんでしょう。 アプリサイズが小さくなるくらいしか思いつかないですが。
Avatar
omochimetaru 7/9/2019 1:33 AM
iOSでもこっちを使うってこと?
Avatar
iOS開発の場合はそうですね。 コマンドラインツールとかubuntuでも動くのの場合のことを考えてました。
Avatar
omochimetaru 7/9/2019 1:34 AM
FoundationとかUIkitの関連APIを全部2重で生やさないといけないけど
1:34 AM
実装されているならApple版は要らないね
1:35 AM
どっちかというと、すでにapple版があるのにOSS版の実装が完全に整うかどうかって点で
1:35 AM
実現しない気がする。
1:36 AM
てか挙動同じならなおさらどっちでもいいので作る必要がない
1:36 AM
あ、でもソース付きデバッグできるとかあるかも。
1:36 AM
ストリーム系は特にややこいし。
Avatar
やはりapple系ではCombineでしょうね。 それになれた開発者がlinux開発に行くときに使うかも?ってくらいになりそうでしょうか。
Avatar
omochimetaru 7/9/2019 1:38 AM
うん。
1:38 AM
あ〜
1:38 AM
SSSで非同期処理の基盤で使うってのはあるかなあ?
1:38 AM
Promiseの代わり。
1:38 AM
Rx.Single型相当があるんだったらありな気がする
Avatar
既存フレームワークはswift-nioベースで割り込む余地無さそうですけどね。 (edited)
Avatar
omochimetaru 7/9/2019 1:40 AM
nioはネットワークレイヤーであって非同期基盤ではなくない?Promiseも提供してんだっけ。
Avatar
vaporのはswift-nio上で実装されてたような?
1:41 AM
(あんまり自信ないので見てみます)
1:43 AM
Event-driven network application framework for high performance protocol servers & clients, non-blocking. - apple/swift-nio
Avatar
norio_nomura 7/9/2019 3:39 AM
VaporのFuture, Promiseは swift-nio 版のtypealias + extension https://github.com/vapor/core/blob/master/Sources/Async/Async%2BNIO.swift#L4-L8 swift-nioにはストリームぽいのは無かったと思う。 (edited)
🌎 Utility package containing tools for byte manipulation, Codable, OS APIs, and debugging. - vapor/core
Avatar
肝心のそっちを貼るのを忘れてました💦
3:56 AM
typealiasのせいで補完が毎回EventLoopFutureになってちょっと長いのが気にならないでもない
Avatar
omochimetaru 7/9/2019 6:22 AM
ストリームの方がスコープとしては広いので置き換えりゃいいってもんでもないので悩ましいですね
Avatar
@swift-main -Xfrontend -emit-sil -O protocol Observable { associatedtype Element func subscribe(_ f: @escaping (Element) -> Void) } struct Just<T>: Observable { typealias Element = T let value: T func subscribe(_ f: @escaping (T) -> Void) { f(value) } } struct Map<Source: Observable, U>: Observable { typealias Element = U let source: Source let transformer: (Source.Element) -> U func subscribe(_ f: @escaping (U) -> Void) { source.subscribe { [transformer] element in f(transformer(element)) } } } extension Observable { func map<U>(_ f: @escaping (Element) -> U) -> Map<Self, U> { return Map(source: self, transformer: f) } } Just(value: 122) .map { $0.description } .map { $0.count } .subscribe { element in print(element.description) }
Avatar
swiftNightly BOT 7/11/2019 8:48 AM
sil_stage canonical import Builtin import Swift import SwiftShims protocol Observable { associatedtype Element func subscribe(_ f: @escaping (Self.Element) -> ()) } struct Just<T> : Observable { typealias Element = T @_hasStorage let value: T { get } func subscribe(_ f: @escaping (T) -> ()) init(value: T) } struct Map<Source, U> : Observable where Source : Observable { typealias Element = U @_hasStorage let source: Source { get } @_hasStorage let transformer: (Source.Element) -> U { get } func subscribe(_ f: @escaping (U) -> ()) init(source: Source, transformer: @escaping (Source.Element) -> U) } extension Observable { func map<U>(_ f: @escaping (Self.Element) -> U) -> Map<Self, U> } // _swiftEmptyArrayStorage sil_global @_swiftEmptyArrayStorage : $_SwiftEmptyArrayStorage // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Int64, 122 // user: %3 %3 = struct $Int (%2 : $Builtin.Int64) // users: %6, %4 debug_value %3 : $Int, let, name "$0", argno 1 // id: %4 %5 = alloc_stack $Int // users: %9, %8, %6 store %3 to %5 : $*Int // id: %6 // function_ref BinaryInteger.description.getter %7 = function_ref @$sSzsE11descriptionSSvg : $@convention(method) <τ_0_0 where τ_0_0 : BinaryInteger> (@in_guaranteed τ_0_0) -> @owned String // users: %32, %8 %8 = apply %7<Int>(%5) : $@convention(method) <τ_0_0 where τ_0_0 : BinaryInteger> (@in_guaranteed τ_0_0) -> @owned String // users: %51, %10, %11, %12, %14 dealloc_stack %5 : $*Int // id: %9 debug_value %8 : $String, let, name "element", argno 1 // id: %10 debug_value %8 : $String, let, name "element", argno 1 // id: %11 debug_value %8 : $String, let, name "$0", argno 1 // id: %12 // function_ref String.count
Avatar
このくらい単純だと全部スペシャライズとインライン化で消えるし、Combineもそうなってほしい
8:50 AM
うーん、Combine実験してみたけど特にspecializeされなくてあんまり嬉しみが無い・・・
Avatar
norio_nomura 7/11/2019 9:57 AM
@inlinableにした時点で実装が丸見えですからね。AppleがCombineをOSSにするつもりがなければ無理そう。
Avatar
Combineに関しては隠す必要あるのかなぁ、という感じですけど。
Avatar
omochimetaru 7/11/2019 9:58 AM
オープンソースでよいやんね
Avatar
OSに同梱されてるフレームワークに関してはクローズドにしておく、みたいなポリシーなのかな (edited)
Avatar
インライン化するとライブラリのアップデートができないという問題は、まあ、ある
Avatar
うーん、まあそれはそう…
Avatar
標準ライブラリが specialize できるのはなんでだっけ?
Avatar
あれは中身見えてますね
Avatar
OSに同梱されてるフレームワークに関してはクローズドにしておく、みたいなポリシーなのかな
一応 Foundation はオープンだから、 Combine も同じで良さそうな気も。
10:13 AM
あれは中身見えてますね
中身が見えるかじゃなくて、ライブラリのアップデートができないという問題について。
(edited)
Avatar
インライン化されたアプリは実装改善の恩恵は受けられないと思います
10:14 AM
そういう余地が無い自明な処理しかinlinableつけてない気がする
10:15 AM
transparentもありますね
Avatar
標準ライブラリレベルでそれやってるなら Combine でも良さそうだと思ったけど、まだ安定性が違いすぎるのか。
Avatar
Combineの中身に関しては単純なmapでもストリームオブジェクトの構築とかが絡むので
10:16 AM
実装が自明じゃなさそうなので渋る気持ちはわかる
Avatar
OS標準フレームワークを立ち上げ時点からOSSにするのは難しそう。
Avatar
今は無理でも Combine はそのうちオープンソース化はありそう。
😄 1
Avatar
この記事は、RxSwift, ReactiveSwiftよりCombineの方が速いと書いてる。 https://medium.com/flawless-app-stories/problem-solving-with-combine-swift-4751885fda77
Combine has many benefits: simple asynchronous code, simplified multithreading, compassable components. Let’s learn Combine essentials and see what practical problems we can solve with it.
Avatar
Combineにインライン化して消える最適化がなくても、RxSwiftは内部的にはサブクラス化していてvtableの参照が沢山あるので、納得感のある結果に見えます。 (edited)
Avatar
norio_nomura 7/16/2019 2:58 AM
@swift-5.0.3 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
5.0.2-RELEASE
Avatar
norio_nomura 7/18/2019 3:14 AM
@swift-5.1.5 @available(macCatalyst 13.0, *) func f() {}
Avatar
stderr:<stdin>:1:28: warning: unrecognized platform name 'macCatalyst' @available(macCatalyst 13.0, *) ^
Avatar
norio_nomura 7/18/2019 3:18 AM
認識するのはまだXcode 11 beta 4だけか。
Avatar
@swift-5.1.5 import Foundation print(FileManager.default.fileExists(atPath: "/usr/bin/sourcekit-lsp"))
Avatar
true
Avatar
sourcekit-lspがtoolchainに含まれる様になったのか。
Avatar
omochimetaru 8/19/2019 4:55 AM
とっくに含まれてると思いこんでた。
Avatar
norio_nomura 8/29/2019 3:02 AM
@swift-main struct Adder { var base: Int func callAsFunction(_ x: Int) -> Int { return x + base } } var adder = Adder(base: 3) print(adder(10)) // 13
Avatar
swiftNightly BOT 8/29/2019 3:02 AM
13
Avatar
Kishikawa Katsumi 8/29/2019 3:24 AM
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - apple/swift-evolution
3:25 AM
call-syntax can also be useful for other values ... , parsers ... というところ割と同意。
Avatar
omochimetaru 8/29/2019 3:27 AM
func callAsFunction has been merged and is available in latest development snapsnots from swift.org/download. I just tested swift-DEVELOPMENT-SNAPSHOT-2019-08-27-a: struct Adder { var base: Int func callAsFunction(_ x: Int) -> Int { return x + base } } var adder =...
3:29 AM
なんちゃらParserとかLoaderとかConverterとか 〜〜er系のクラスって、補助的なパラメータをカスタムするためのプロパティと、対応するparse(), load(), convert() とかを呼ぶだけのインターフェースになることがわりとあるので
Avatar
Kishikawa Katsumi 8/29/2019 3:29 AM
まあしかしだいぶ単純な名前を予約したな。
Avatar
omochimetaru 8/29/2019 3:29 AM
そういうケースでこれ使うとよさそうっすね
3:30 AM
はい、そのへんの名前はめっちゃ議論がぐるぐるして
Avatar
確かもとはcallだったはずw
Avatar
omochimetaru 8/29/2019 3:30 AM
最初はcallに落ち着きそうだったんだけどcallFunctionになってcallAsFunctionになっていった
3:30 AM
メソッド名無しとか
3:31 AM
funcの代わりに新しい予約語としてcallで定義するとかの案もありました。 (edited)
Avatar
Kishikawa Katsumi 8/29/2019 3:31 AM
まあでもコールサイトの問題だから影響はないのか。
3:31 AM
func call()でも
Avatar
omochimetaru 8/29/2019 3:32 AM
使う側からするとどうせ見えないっすね
3:32 AM
でも僕はfunc callが良かったな・・・ (edited)
Avatar
Kishikawa Katsumi 8/29/2019 3:33 AM
まあこのマニアックな言語仕様を知らなかったらわからんというのはある。 func call() だと
Avatar
omochimetaru 8/29/2019 3:33 AM
@callableとかもあったな。
Avatar
Kishikawa Katsumi 8/29/2019 3:34 AM
Codableとかはなんとなく知識の延長でわかる気がするけど func callAsFuncion() は閃きが必要じゃないか。
3:34 AM
@callableはいいんじゃない。
Avatar
特に違和感なくcallAsFunction使ってましたけど仕様知らなかったら完全に意味不明ですね……
Avatar
omochimetaru 8/29/2019 3:34 AM
特殊な事が起こる感があってググりやすそうですよね
3:35 AM
アトリビュート増やしまくるのやめてくれ〜みたいな反論もあった
3:36 AM
結局コアチームの言うcallがダメな最大の理由は、それまでにたまたま使われたcallに新しい意味が衝突するのは良くないって事だったと記憶 (edited)
3:37 AM
つまりこの仕様が出るのがSwift2.0とかだったらcallになった可能性もあるって事で
3:37 AM
保守的になったなあ、と思った。
Avatar
Kishikawa Katsumi 8/29/2019 3:37 AM
callAsFunctionでも一緒だけど、その辺は柔軟だなあ
Avatar
omochimetaru 8/29/2019 3:37 AM
そうですね、確率的に多いだろう、って話ですね (edited)
Avatar
Kishikawa Katsumi 8/29/2019 3:38 AM
まあ本質的に一緒だけどcallよりだいぶマシというのはわかります。
Avatar
omochimetaru 8/29/2019 3:38 AM
それでcallFunctionが出て、それ英語的に命名がおかしい、ってなってcallAsFunctionになっていった。
Avatar
@swift-main struct Adder { var base: Int func callAsFunction(_ x: Int) -> Int { return x + base } } var adder = Adder(base: 3) [1].map(adder).forEach { print($0) }
Avatar
swiftNightly BOT 8/29/2019 6:38 AM
exit status: 1 with stderr:<stdin>:10:5: error: cannot invoke 'map' with an argument list of type '(Adder)' [1].map(adder).forEach { print($0) } ^
Avatar
あ、はい
6:44 AM
@swift-main struct Adder { var base: Int func callAsFunction(_ x: Int) -> Int { return x + base } } var adder = Adder(base: 3) [1].map(adder.callAsFunction).forEach { print($0) }
Avatar
swiftNightly BOT 8/29/2019 6:44 AM
4
Avatar
.initと同じ扱い的な
Avatar
@swift-5.0.3 -version
Avatar
Swift version 5.0.3 (swift-5.0.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Taketo Sano 9/7/2019 1:50 PM
@swift-5.0.3 --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath let a = RationalNumber(2, 3) print(a)
Avatar
swift50 BOT 9/7/2019 1:50 PM
exit status: 1 with stderr:<unknown>:0: error: unknown argument: '--options="-I'
Avatar
Taketo Sano 9/7/2019 1:50 PM
どうやるんだったかw
1:50 PM
@swift-5.0.3 import SwiftyMath let a = RationalNumber(2, 3) print(a)
Avatar
swift50 BOT 9/7/2019 1:50 PM
exit status: 1 with stderr:<stdin>:1:8: error: no such module 'SwiftyMath' import SwiftyMath ^
Avatar
Taketo Sano 9/7/2019 1:52 PM
@swiftbot --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath let a = RationalNumber(2, 3) print(a) (edited)
🛠 1
Avatar
swiftbot BOT 9/7/2019 1:52 PM
(edited)
Author icon
taketo1024
import SwiftyMath let a = RationalNumber(2, 3) print(a)
Version:
swift-4.2.1-RELEASE
Output:
Error:
/usercode/main.swift:1:8: error: no such module 'SwiftyMath' import SwiftyMath ^
Avatar
Taketo Sano 9/7/2019 1:55 PM
@swiftbot --options="-I /vendor/SwiftyMath/.build/release/ -I /usr/lib/swift/clang/include/ -I /vendor/swift-package-libbsd/ -L /vendor/SwiftyMath/.build/release/ -ldSwiftyMath" import SwiftyMath let a = RationalNumber(2, 3) print(a)
🛠 1
Avatar
swiftbot BOT 9/7/2019 1:55 PM
Author icon
taketo1024
import SwiftyMath let a = RationalNumber(2, 3) print(a)
Version:
swift-4.2.1-RELEASE
Output:
Error:
/usercode/main.swift:1:8: error: no such module 'SwiftyMath' import SwiftyMath ^
Avatar
Taketo Sano 9/7/2019 1:55 PM
ビルドが通らなくなったりしてたから外してあるのかな
Avatar
Taketo Sano 9/7/2019 2:03 PM
@swiftbot -version
2:03 PM
うーむw
Avatar
norio_nomura 9/9/2019 4:43 AM
最近、ここ見てませんでした、ごめんなさい。
4:50 AM
ビルドが通らなくなったりしてたから外してあるのかな
外してあります。4.2はオプション無しでインポート可能です。 @swift-4.2.4 import SwiftyMath
Avatar
swift42 BOT 9/9/2019 4:50 AM
no output
Avatar
了解です,ありがとうございます!
11:56 AM
こちらこそビルド通らないまま放置してしまってすみません 🙇
11:56 AM
@swift-4.2.4 import SwiftyMath typealias AlgebraicExtension<F, p: IrrPolynomialTP> = PolynomialQuotientRing<p> where p.CoeffRing == F typealias Q = RationalNumber typealias Qx = xPolynomial<Q> let x = Qx.indeterminate struct p1: IrrPolynomialTP { static let value = Qx(coeffs: -2, 0, 1) } typealias A = AlgebraicExtension<Q, p1> // A = Q[x]/p1 let α = A(x) print(α) print(α * α) print(α * α == 2) struct p2: IrrPolynomialTP { static let value = xPolynomial<Q>(coeffs: 1, 0, 1) } typealias B = AlgebraicExtension<Q, p2> // B = Q[x]/p2 let i = B(x) print(i) print(i * i) print(i * i == -1) (edited)
Avatar
exit status: 1 with stderr:<stdin>:4:7: error: use of undeclared type 'PolynomialQuotientRing' = PolynomialQuotientRing<p> where p.CoeffRing == F ^~~~~~~~~~~~~~~~~~~~~~ <stdin>:7:16: error: use of undeclared type 'xPolynomial' typealias Qx = xPolynomial<Q> ^~~~~~~~~~~ <stdin>:11:8: error: type 'p1' does not conform to protocol 'PolynomialTP' struct p1: IrrPolynomialTP { ^ SwiftyMath.PolynomialTP:2:20: note: protocol requires nested type 'CoeffRing'; do you want to add it? associatedtype CoeffRing : Ring ^ SwiftyMath.PolynomialTP:3:20: note: protocol requires nested type 'x'; do you want to add it? associatedtype x : Indeterminate ^ <stdin>:24:24: error: use of unresolved identifier 'xPolynomial' static let value = xPolynomial<Q>(coeffs: 1, 0, 1) ^~~~~~~~~~~ SwiftyMath.MPolynomial:1:15: note: did you mean 'MPolynomial'? public struct MPolynomial<R> : Ring, Module where R : Ring { ^ SwiftyMath._Polynomial:1:15: note: did you mean '_Polynomial'? public struct _Polynomial<T, R, x> : Ring, Module where T : PolynomialType, R : Ring, x : Indeterminate { ^ SwiftyMath.Polynomial:1:18: note: did you mean 'Polynomial'? public typealias Polynomial<R, x> = SwiftyMath._Polynomial<SwiftyMath.NormalPolynomialType, R, x> ^ <stdin>:23:8: error: type 'p2' does not conform to protocol 'PolynomialTP' struct p2: IrrPolynomialTP { ^ SwiftyMath.PolynomialTP:2:20: note: protocol requires nested type 'CoeffRing'; do you want to add it? associatedtype CoeffRing : Ring ^ SwiftyMath.PolynomialTP:3:20: note: protocol requires nested type 'x'; do you want to add it? associatedtype x : Indeterminate ^
Avatar
あぁ,やはりw
11:57 AM
Swift 5.1 正式リリースのタイミングで master も更新しておくので,そのときにでもまた組み込んで頂けると嬉しいです 🙇
👍 1
Avatar
norio_nomura 9/9/2019 12:35 PM
どのバージョンのSwiftで動くのかがCIやドキュメントから判ると、対応がしやすいと思います。 あと、バージョニングのルールもSemVerに従ってもらえてると、リリースwatchで気づきやすくなります。
Avatar
Taketo Sano 9/9/2019 2:10 PM
これを機に CI 導入するのはありな気がしてきました.
Avatar
norio_nomura 9/19/2019 9:36 PM
@swift-5.1.5 -version
Avatar
Swift version 5.1 (swift-5.1-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
@swift-5.1.5 @dynamicMemberLookup struct Foo<Content> { let content: Content subscript<T>(dynamicMember keyPath: KeyPath<Content, T>) -> T { return content[keyPath: keyPath] } } print(Foo<Int>(content: 100).description)
Avatar
100
Avatar
@swift-5.1.5 struct Foo<Content> { let content: Content } @dynamicMemberLookup extension Foo { subscript<T>(dynamicMember keyPath: KeyPath<Content, T>) -> T { return content[keyPath: keyPath] } } print(Foo<Int>(content: 100).description)
Avatar
exit status: 1 with stderr:<stdin>:5:1: error: '@dynamicMemberLookup' attribute cannot be applied to this declaration @dynamicMemberLookup ^~~~~~~~~~~~~~~~~~~~ <stdin>:12:30: error: value of type 'Foo<Int>' has no member 'description' print(Foo<Int>(content: 100).description) ~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~
Avatar
@swift-4.2.4 @swift-5.0.3 class Parent { var id: Int init(id: Int) { self.id = id } } protocol Abstract: Parent { func printID() } class Child: Parent, Abstract { override init(id: Int) { super.init(id: id) } func printID() { print("Child: \(id)") } } let c = Child(id: 0) c.printID()
Avatar
Child: 0
Avatar
exit status: 1 with stderr:<stdin>:9:10: error: non-class type 'Abstract' cannot inherit from class 'Parent' protocol Abstract: Parent { ^ ~~~~~~
Avatar
Swift4.2だと特定クラス条件のプロトコル作れないんですっけ? vaporが公式で用意してるaptリポジトリのバージョンが4.2なので困った (edited)
Avatar
@swift-4.2.4 @swift-5.0.3 class Parent { var id: Int init(id: Int) { self.id = id } } protocol Abstract where Self: Parent { var name: String { get } } extension Abstract { func printProfile() { print("\(id) \(name)") } } class Child: Parent, Abstract { var name: String init(id: Int, name: String) { self.name = name super.init(id: id) } } let c = Child(id: 42, name: "hoge") c.printProfile()
Avatar
42 hoge
Avatar
42 hoge
Avatar
Self: Parentなら使えると教えてもらいました。
Avatar
@swift-4.2.4 import Foundation let locale = Locale(identifier: "ja") let data = try JSONEncoder().encode(locale) let decoded = try JSONDecoder().decode(Locale.self, from: data) print(locale == decoded) print(locale.hashValue == decoded.hashValue)
Avatar
true false
Avatar
Dictionaryで引っかからないと思ったらバグかこれ(5以降は治っている)
Avatar
omochimetaru 10/4/2019 1:32 AM
やばすぎw
Avatar
norio_nomura 10/4/2019 1:44 AM
darwinとswift-corelibs-foundationで非互換になってたのか。 (edited)
Avatar
omochimetaru 10/4/2019 2:02 AM
非互換もまずいけど、そもそも ==なのに hashValueが同一にならないのはHashableとして誤りですね
2:03 AM
辞書に入れてもバグるので使い物にならない
Avatar
これ多分中にNSObjectが入ってたせいだと思うんですよね
Avatar
https://bugs.swift.org/browse/SR-8448 ==だけ上書きしたせいとのこと。 (edited)
Avatar
omochimetaru 10/4/2019 2:08 AM
そりゃあかんな。
2:08 AM
常にセットで実装しないと。
Avatar
norio_nomura 10/4/2019 4:25 AM
  • Archive NSLocale identifier as NSString
    • Override isEqual for NSLocale
    • Uncomment NSLocale archiving test
Avatar
norio_nomura 10/5/2019 1:54 AM
@swift-5.1.5 -version
Avatar
Swift version 5.1.1 (swift-5.1.1-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
@swift-5.1.5 @propertyWrapper struct Foo<Value> { var wrappedValue: Value var projectedValue: Self { self } } protocol Namespace { typealias MyFoo = Foo } struct Test { @Foo var val = 0 } struct MyTest: Namespace { @MyFoo var val = 0 } let t1 = Test() print(t1.val, t1.$val) let t2 = MyTest() print(t2.val, t2.$val) (edited)
Avatar
exit status: 1 with stderr:<stdin>:18:5: error: unknown attribute 'MyFoo' @MyFoo ^ <stdin>:26:18: error: value of type 'MyTest' has no member '$val' print(t2.val, t2.$val) ~~ ^~~~ (edited)
Avatar
Kishikawa Katsumi 10/14/2019 4:58 PM
@swiftbot versions
Avatar
2019-10-13-a 5.1 5.0.3 5.0.2 5.0.1 5.0 4.2.2 4.2.1 4.1.3 4.1.2 4.1.1 4.1 4.0.3 4.0.2 4.0 3.1.1 3.1 3.0.2 3.0.1
Avatar
Kishikawa Katsumi 10/14/2019 4:58 PM
5.x と最新のスナップショットサポートした。
🎊 2
Avatar
@swiftbot let rows: [(id: Int, name1: String, name2: String)] = [ (0, "x", "y"), (1, "z", "w") ] let results1 = rows.flatMap { row in var entries = [(Int, String)]() entries.append((row.id, row.name1)) entries.append((row.id, row.name2)) return entries } (edited)
🛠 1
Avatar
(edited)
Author icon
t.ae
let rows: [(id: Int, name1: String, name2: String)] = [ (0, "x", "y"), (1, "z", "w") ] let results1 = rows.flatMap { row in var entries = [(Int, String)]() entries.append((row.id, row.name1)) entries.append((row.id, row.name2)) return entries }
Version:
swift-4.2.1-RELEASE
Output:
Error:
/usercode/main.swift:10:12: error: cannot convert return expression of type '[(Int, String)]' to return type 'String?' return entries ^~~~~~~ /usercode/main.swift:6:21: warning: 'flatMap' is deprecated: Please use compactMap(_:) for the case where closure returns an optional value let results1 = rows.flatMap { row in ^ /usercode/main.swift:6:21: note: use 'compactMap(_:)' instead let results1 = rows.flatMap { row in ^~~~~~~ compactMap
5:04 AM
Avatar
Kishikawa Katsumi 10/17/2019 5:06 AM
あれ、デフォルトが4.2のままか?
Avatar
デフォ4.2.1みたいですね。
5:06 AM
(上コードは5.1でもコンパイルできないやつです。)
Avatar
Kishikawa Katsumi 10/17/2019 5:10 AM
@swiftbot let rows: [(id: Int, name1: String, name2: String)] = [ (0, "x", "y"), (1, "z", "w") ] let results1 = rows.flatMap { row in var entries = [(Int, String)]() entries.append((row.id, row.name1)) entries.append((row.id, row.name2)) return entries }
🛠 1
Avatar
Author icon
kishikawakatsumi
let rows: [(id: Int, name1: String, name2: String)] = [ (0, "x", "y"), (1, "z", "w") ] let results1 = rows.flatMap { row in var entries = [(Int, String)]() entries.append((row.id, row.name1)) entries.append((row.id, row.name2)) return entries }
Version:
swift-5.1-RELEASE
Output:
Error:
/usercode/main.swift:10:12: error: cannot convert return expression of type '[(Int, String)]' to return type 'String?' return entries ^~~~~~~ /usercode/main.swift:6:21: error: 'flatMap' has been renamed to 'compactMap(_:)': Please use compactMap(_:) for the case where closure returns an optional value let results1 = rows.flatMap { row in ^~~~~~~ compactMap Swift.Collection:3:17: note: 'flatMap' was obsoleted in Swift 5.0 public func flatMap(_ transform: (Self.Element) throws -> String?) rethrows -> [String] ^
Avatar
Kishikawa Katsumi 10/17/2019 5:11 AM
エラーメッセージ変わったし、5.1デフォルトになった。
Avatar
@swiftbot let rows = [10, 20] let results1 = rows.flatMap { row in var entries = [Int]() entries.append(row) return entries }
🛠 1
Avatar
Author icon
hironytic
let rows = [10, 20] let results1 = rows.flatMap { row in var entries = [Int]() entries.append(row) return entries }
Version:
swift-5.1-RELEASE
Output:
Error:
/usercode/main.swift:5:12: error: cannot convert return expression of type '[Int]' to return type 'String?' return entries ^~~~~~~ /usercode/main.swift:2:21: error: 'flatMap' has been renamed to 'compactMap(_:)': Please use compactMap(_:) for the case where closure returns an optional value let results1 = rows.flatMap { row in ^~~~~~~ compactMap Swift.Collection:3:17: note: 'flatMap' was obsoleted in Swift 5.0 public func flatMap(_ transform: (Self.Element) throws -> String?) rethrows -> [String] ^
Avatar
訳がわからない 😶
Avatar
@swiftbot let rows = [10, 20] let results1 = rows.flatMap { row -> [Int] in var entries = [Int]() entries.append(row) return entries }
🛠 1
Avatar
Author icon
tarunon
let rows = [10, 20] let results1 = rows.flatMap { row -> [Int] in var entries = [Int]() entries.append(row) return entries }
Version:
swift-5.1-RELEASE
Output:
Error:
Avatar
型推論壊れてるみたいですねぇ
Avatar
Kishikawa Katsumi 10/17/2019 10:35 AM
@swiftbot --version 2019-10-13-a let rows = [10, 20] let results1 = rows.flatMap { row in var entries = [Int]() entries.append(row) return entries }
🛠 1
Avatar
Author icon
kishikawakatsumi
let rows = [10, 20] let results1 = rows.flatMap { row in var entries = [Int]() entries.append(row) return entries }
Version:
swift-DEVELOPMENT-SNAPSHOT-2019-10-13-a
Output:
Error:
/usercode/main.swift:5:12: error: cannot convert return expression of type '[Int]' to return type 'String?' return entries ^~~~~~~ /usercode/main.swift:2:21: error: 'flatMap' has been renamed to 'compactMap(_:)': Please use compactMap(_:) for the case where closure returns an optional value let results1 = rows.flatMap { row in ^~~~~~~ compactMap Swift.Collection:3:17: note: 'flatMap' was obsoleted in Swift 5.0 public func flatMap(_ transform: (Self.Element) throws -> String?) rethrows -> [String] ^
Avatar
Kishikawa Katsumi 10/17/2019 10:35 AM
Snapshotでも一緒やな
Avatar
@swift-4.2.4 struct View<Value> { typealias Value = Value var value: Value } print(View<Int>.Value.self)
Avatar
exit status: 1 with stderr:<stdin>:2:23: error: type alias 'Value' references itself typealias Value = Value ^ <stdin>:2:15: note: type declared here typealias Value = Value ^
Avatar
@swift-5.0.3 struct View<Value> { typealias Value = Value var value: Value } print(View<Int>.Value.self)
Avatar
Int
Avatar
@swiftbot let a: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] let b = UnsafeRawPointer(a).load(fromByteOffset: 1, as: Int.self).littleEndian
🛠 1
Avatar
Author icon
hironytic
let a: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] let b = UnsafeRawPointer(a).load(fromByteOffset: 1, as: Int.self).littleEndian
Version:
swift-5.1-RELEASE
Output:
Error:
Fatal error: load from misaligned raw pointer Current stack trace: 0 libswiftCore.so 0x00007fc6a04293c0 swift_reportError + 50 1 libswiftCore.so 0x00007fc6a049a230 _swift_stdlib_reportFatalError + 69 2 libswiftCore.so 0x00007fc6a0395c07 <unavailable> + 3349511 3 libswiftCore.so 0x00007fc6a02453c0 UnsafeRawPointer.load<A>(fromByteOffset:as:) + 88 5 swift 0x000000000052826e <unavailable> + 1213038 6 swift 0x000000000052cb52 <unavailable> + 1231698 7 swift 0x000000000051cc2f <unavailable> + 1166383 8 swift 0x000000000050b468 <unavailable> + 1094760 9 swift 0x0000000000506de1 <unavailable> + 1076705 10 swift 0x00000000004a022d <unavailable> + 655917 ...
2:33 AM
Avatar
オオオ(俺も今試してた
Avatar
@hironytic @d_date それ僕も思ったんですけど現状macとLinuxでアライメント違反って実行時エラー起きるんですかね?僕は気にして書いてますけど・・・
2:35 AM
@swiftbot let a: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] let b = UnsafeRawPointer(a).load(fromByteOffset: 8, as: Int.self).littleEndian
🛠 1
Avatar
Author icon
hironytic
let a: [UInt8] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] let b = UnsafeRawPointer(a).load(fromByteOffset: 8, as: Int.self).littleEndian
Version:
swift-5.1-RELEASE
Output:
Error:
Avatar
アラインメントに合った8なら大丈夫。
Avatar
@swift-5.1.5 import Foundation let array: [UInt8] = [ 0x10, 0x20, 0x30, 0x40, 0x11, 0x21, 0x31, 0x41, 0x99] let a = array.withUnsafeBufferPointer { (buf) -> Int in buf.baseAddress!.withMemoryRebound(to: Int.self, capacity: 1) { (ip) in ip.pointee } } print(String(format: "%016llx", a), a == Int(bitPattern: 0x4131211140302010)) let b = array.withUnsafeBufferPointer { (buf) -> Int in buf.baseAddress!.advanced(by: 1).withMemoryRebound(to: Int.self, capacity: 1) { (ip) in ip.pointee } } print(String(format: "%016llx", b), b == Int(bitPattern: 0x9941312111403020)) print(MemoryLayout<Int>.size)
Avatar
4131211140302010 true 9941312111403020 true 8
Avatar
あれ、もしかして、withMemoryReboundってアライメント治すの?
2:41 AM
@swift-5.1.5 import Foundation let array: [UInt8] = [ 0x10, 0x20, 0x30, 0x40, 0x11, 0x21, 0x31, 0x41, 0x99] func reboundToInt(pointer: UnsafePointer<UInt8>) -> Int { return pointer.withMemoryRebound(to: Int.self, capacity: 1) { (ip) in ip.pointee } } func assumeToInt(pointer: UnsafePointer<UInt8>) -> Int { return UnsafeRawPointer(pointer).assumingMemoryBound(to: Int.self).pointee } let a = array.withUnsafeBufferPointer { (buf) -> Int in reboundToInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", a), a == Int(bitPattern: 0x4131211140302010)) let b = array.withUnsafeBufferPointer { (buf) -> Int in reboundToInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", b), b == Int(bitPattern: 0x9941312111403020)) let c = array.withUnsafeBufferPointer { (buf) -> Int in assumeToInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", c), c == Int(bitPattern: 0x4131211140302010)) let d = array.withUnsafeBufferPointer { (buf) -> Int in assumeToInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", d), d == Int(bitPattern: 0x9941312111403020))
Avatar
4131211140302010 true 9941312111403020 true 4131211140302010 true 9941312111403020 true
Avatar
@swift-5.1.5 import Foundation let array: [UInt8] = [ 0x10, 0x20, 0x30, 0x40, 0x11, 0x21, 0x31, 0x41, 0x99] func reboundToInt(pointer: UnsafePointer<UInt8>) -> Int { return pointer.withMemoryRebound(to: Int.self, capacity: 1) { (ip) in ip.pointee } } func assumeToInt(pointer: UnsafePointer<UInt8>) -> Int { let intp = UnsafeRawPointer(pointer).assumingMemoryBound(to: Int.self) print("[assume] p: \(Int(bitPattern: pointer))") print("[assume] intp: \(Int(bitPattern: intp))") return intp.pointee } let a = array.withUnsafeBufferPointer { (buf) -> Int in reboundToInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", a), a == Int(bitPattern: 0x4131211140302010)) let b = array.withUnsafeBufferPointer { (buf) -> Int in reboundToInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", b), b == Int(bitPattern: 0x9941312111403020)) let c = array.withUnsafeBufferPointer { (buf) -> Int in assumeToInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", c), c == Int(bitPattern: 0x4131211140302010)) let d = array.withUnsafeBufferPointer { (buf) -> Int in assumeToInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", d), d == Int(bitPattern: 0x9941312111403020))
Avatar
4131211140302010 true 9941312111403020 true [assume] p: 156675312 [assume] intp: 156675312 4131211140302010 true [assume] p: 156675313 [assume] intp: 156675313 9941312111403020 true
Avatar
ええー
Avatar
@swift-5.1.5 import Foundation let array: [UInt8] = [ 0x10, 0x20, 0x30, 0x40, 0x11, 0x21, 0x31, 0x41, 0x99] func reboundToInt(pointer: UnsafePointer<UInt8>) -> Int { return pointer.withMemoryRebound(to: Int.self, capacity: 1) { (ip) in ip.pointee } } func assumeToInt(pointer: UnsafePointer<UInt8>) -> Int { let intp = UnsafeRawPointer(pointer).assumingMemoryBound(to: Int.self) print("[assume] p: \(Int(bitPattern: pointer))") print("[assume] intp: \(Int(bitPattern: intp))") return intp.pointee } func loadAsInt(pointer: UnsafePointer<UInt8>) -> Int { return UnsafeRawPointer(pointer).load(as: Int.self) } let a = array.withUnsafeBufferPointer { (buf) -> Int in reboundToInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", a), a == Int(bitPattern: 0x4131211140302010)) let b = array.withUnsafeBufferPointer { (buf) -> Int in reboundToInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", b), b == Int(bitPattern: 0x9941312111403020)) let c = array.withUnsafeBufferPointer { (buf) -> Int in assumeToInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", c), c == Int(bitPattern: 0x4131211140302010)) let d = array.withUnsafeBufferPointer { (buf) -> Int in assumeToInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", d), d == Int(bitPattern: 0x9941312111403020)) let e = array.withUnsafeBufferPointer { (buf) -> Int in loadAsInt(pointer: buf.baseAddress!) } print(String(format: "%016llx", e), e == Int(bitPattern: 0x4131211140302010)) let f = array.withUnsafeBufferPointer { (buf) -> Int in loadAsInt(pointer: buf.baseAddress!.advanced(by: 1)) } print(String(format: "%016llx", f), f == Int(bitPattern: 0x9941312111403020)) (edited)
Avatar
exit status: 4 with stderr:Fatal error: load from misaligned raw pointer Current stack trace: 0 libswiftCore.so 0x00007f98e95ea3c0 swift_reportError + 50 1 libswiftCore.so 0x00007f98e965b230 _swift_stdlib_reportFatalError + 69 2 libswiftCore.so 0x00007f98e9556c07 <unavailable> + 3349511 3 libswiftCore.so 0x00007f98e94063c0 UnsafeRawPointer.load<A>(fromByteOffset:as:) + 88 8 libswiftCore.so 0x00007f98e93633b0 Array.withUnsafeBufferPointer<A>(_:) + 38 10 swift 0x00000000005283fe <unavailable> + 1213438 11 swift 0x000000000052cce2 <unavailable> + 1232098 12 swift 0x000000000051cdbf <unavailable> + 1166783 13 swift 0x000000000050b5e8 <unavailable> + 1095144 14 swift 0x0000000000506f41 <unavailable> + 1077057 15 swift 0x00000000004a033d <unavailable> + 656189 16 libc.so.6 0x00007f98ec28a740 __libc_start_main + 240 17 swift 0x000000000049feb9 <unavailable> + 655033 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux/debug -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/OpenCombine/Sources/COpenCombineHelpers/include -module-cache-path /Libraries/.build/x86_64-unknown-linux/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file= (edited)
Avatar
なるほど〜〜〜
2:46 AM
UnsafePointer<T>の.pointeeはmemcpy semanticsだからアライメントエラーは起きないんだ
2:47 AM
UnsafeRawPointerの.loadが本当の生のポインターデリファレンスで、こっちはエラーが起きる。
2:47 AM
知らなかった。
Avatar
知りませんでした。。。
Avatar
つまり、メモリレイアウトレベルのハードキャストをしたいだけの状況であれば、UnsafePointer<T>を使う限りアライメントのことは忘れてよいっぽいですね
2:50 AM
一方で、最高速度を求めてメモリ操作したいのであれば、非効率な場合に死んでくれるUnsafeRawPointerを使ったほうが良い・・・?
2:50 AM
なんかそれも微妙な話だな。型ないし。
Avatar
あ、でも、これってfatalErrorが出てるだけ?もしかして、fatalErrorが入ってなければ単に落ちないかもだけな可能性もある?
2:52 AM
最適化オプションで挙動が変わったりとかしないですかね。
Avatar
fatalErrorが呼ばれているので本当に処理系からメモリ違反シグナル等が飛んでいるわけではないですね。 でもfatalErrorに関しては-Ouncheckedでも無効化しないです。 uncheckedで消せるのはprecondition。 (edited)
3:52 AM
The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub.
3:52 AM
むむ、debugPreconditionだ。
3:53 AM
4131211140302010 true 9941312111403020 true [assume] p: 4300947488 [assume] intp: 4300947488 4131211140302010 true [assume] p: 4300947489 [assume] intp: 4300947489 9941312111403020 true 4131211140302010 true 9941312111403020 true Program ended with exit code: 0
3:53 AM
手元のmac環境ではReleaseにするだけで通過しました。
Avatar
なるほど。
Avatar
手元のiPod touchでも、Releaseにするだけでおもちさんのコードが通過して全部trueになったので、アライメント違反で実行時エラーになるデバイスは今のところないのかも。
Avatar
Swift Compiler Bot on macOSを動かすのに使えないかな。 https://www.macstadium.com/opensource
Encouraging innovation through collaboration is one of MacStadium’s core beliefs. We know that despite finite resources, a lack of hardware, and limited support, tremendously important innovation is happening through free and open source software. Learn how MacStadium is he...
Avatar
おお!
Avatar
Kishikawa Katsumi 11/6/2019 12:17 AM
おおー
12:22 AM
PublicリポジトリならOKなのかな。とりあえず先に進んでみよう。
Avatar
Kishikawa Katsumi 11/6/2019 12:39 AM
Formを送信したら今度はProject Logoを送る必要があるらしいけどどうするべきか。
12:39 AM
なんかロゴを作るしかない。
Avatar
ロボットの鳥の絵を描けば良いのかな
Avatar
Kishikawa Katsumi 11/6/2019 12:43 AM
おお!助かります😇
Avatar
参考資料です
Avatar
@kishikawakatsumi ペン入れツール無かったので線がぐちゃってしまった!
Avatar
omochimetaru 11/6/2019 1:12 AM
Linuxっぽい
Avatar
もうちょっとお目々大きくしても良いかも
Avatar
Kishikawa Katsumi 11/6/2019 1:12 AM
これはいいですね!
1:13 AM
参考資料が何の参考になったかサッパリわからないけど、出てきたものはすばらしい。
Avatar
omochimetaru 11/6/2019 1:13 AM
Avatar
ペンギンなのはbotのためのツールなので飛べないと言うことで
1:14 AM
これ差し替え可能ですか?ペン入れしたものを後日用意します
1:14 AM
今日はそろそろ出ないと
1:14 AM
あともうちょっとロボットっぽくしたい
Avatar
Kishikawa Katsumi 11/6/2019 1:16 AM
ASAPって書いてあるけど、向こうからさらにメールが送られてくるらしいので、今すぐってことはないでしょう。時差もあるし。 というわけで納得がいくものができるまで保留しておくので、そんなに急がずやってください。
Avatar
わーい、ありがとうございます
🙏 1
Avatar
norio_nomura 11/6/2019 2:02 AM
swiftってsandbox内で動くのかな?Xcode Serverはどうしてるのだろう?
Avatar
norio_nomura 11/6/2019 2:58 AM
Xcode Serverはsandbox使ってなかった。XcodeのPlaygroundも、macOSはsandbox使ってなかった。
Avatar
@swift-5.1.5 if let line = readLine() { print(line) }
Avatar
no output
Avatar
@Kishikawa Katsumi
2:00 PM
ペン入れしてタイヤつけました。なんかちょっとアンバランスだな…
2:04 PM
2:04 PM
やっぱこっちの方がいいですね!
2:05 PM
線太くしたいとかあれば対応するのでお知らせください〜 (edited)
Avatar
Kishikawa Katsumi 11/7/2019 4:31 PM
下の方がいいですね。いったんこれを送ってみますよ。ありがとうございます😊
Avatar
norio_nomura 11/8/2019 3:37 AM
@swift-5.1.5 -version
Avatar
Swift version 5.1 (swift-5.1.2-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Kishikawa Katsumi 11/11/2019 2:50 AM
Mac StadiumのOSS利用、許可されました 😄 (edited)
🎉 7
Avatar
おっ!!!
Avatar
Kishikawa Katsumi 11/11/2019 2:52 AM
時間をみてMacホストのボットや、SwiftUI Playgroundとか作りたい。
Avatar
mac版のbotがあるととても便利そう
2:52 AM
なんだかんだ時々挙動違うから。 (edited)
Avatar
Kishikawa Katsumi 11/11/2019 2:56 AM
今のところ、フォームはそこそこ入力項目があったけどフォームで申請した以外のコミュニケーションは必要なかったので、簡単だった 😄
Avatar
@swift-5.1.5 @swift-5.0.3 @swift-4.2.4 public extension Int {}
Avatar
no output
Avatar
no output
Avatar
no output
Avatar
@swift-5.1.5 class Animal {} func f(_ a: AnyObject) { } f(Animal.self)
Avatar
exit status: 1 with stderr:<stdin>:3:3: error: argument type 'Animal.Type' does not conform to expected type 'AnyObject' f(Animal.self) ^
Avatar
norio_nomura 12/1/2019 1:26 AM
@swift-5.1.5 -version
Avatar
Swift version 5.1.2 (swift-5.1.2-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
@swift-5.0.3 @swift-5.1.5 struct Pair<T, U> { let values: (T, U) init(_ t: T, _ u: U) { values = (t, u) } } let pair = Pair(1, "2") print(pair[keyPath: \Pair.values.0]) print(pair[keyPath: \Pair.values.1])
Avatar
exit status: 1 with stderr:<stdin>:9:7: error: value of type 'Pair<Int, String>' has no subscripts print(pair[keyPath: \Pair.values.0]) ^~~~ <stdin>:10:7: error: value of type 'Pair<Int, String>' has no subscripts print(pair[keyPath: \Pair.values.1]) ^~~~
Avatar
1 2
Avatar
@swift-5.1.5 -version
Avatar
Swift version 5.1.3 (swift-5.1.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
@swift-4.0.3 @swift-4.1.3 @swift-4.2.4 @swift-5.0.3 @swift-5.1.5 @swift-main let evens = (1...10).lazy .filter { ($0 % 2) == 0 } .filter { print($0, terminator: ","); return true } _ = evens.count
☠️ 1
Avatar
2,4,6,8,10,
Avatar
2,4,6,8,10,
Avatar
2,4,6,8,10,
Avatar
1,2,3,4,5,6,7,8,9,10,
Avatar
1,2,3,4,5,6,7,8,9,10,
Avatar
swiftNightly BOT 12/24/2019 12:27 AM
2,4,6,8,10,
Avatar
@swift-5.1.5 let evens = (1...10).lazy .filter { ($0 % 2) == 0 } .filter { print($0, terminator: ","); return true } print("\nfirst", evens.first!, "\ncount:", evens.count)
Avatar
1,2,1,2,3,4,5,6,7,8,9,10, first 2 count: 5
Avatar
なるほど
Avatar
@swift-5.1.5 @swift-5.0.3 protocol A { func isEquatable() -> Bool } extension A { func isEquatable() -> Bool { return false } } extension A where Self: Equatable { func isEquatable() -> Bool { return true } } struct Foo: A { } extension String: A { } print(Foo().isEquatable()) print(String().isEquatable()) (edited)
Avatar
swift50 BOT 1/6/2020 1:27 PM
false true (edited)
Avatar
swift51 BOT 1/6/2020 1:27 PM
false true (edited)
Avatar
せや5.0.3はreturnいるんじゃ
1:29 PM
これちょっと応用すればEquatableの時だけ動きを変えるのが簡単に書けそう
Avatar
なるほど、Existentialにできないプロトコルの is P が書けるのか
Avatar
ですね
1:30 PM
ただなんか不安定な気がします。半分動かない
1:30 PM
今手元に動かない型と動く型の混在したコードがあるが、分水嶺を見極められない
Avatar
omochimetaru 1/6/2020 1:31 PM
<T: P> になってるコンテキストでちゃんと動くのかな?
1:31 PM
isEquatableがAのrequirementsだから大丈夫か。
Avatar
動かないケースがあるんですよね
1:34 PM
@swift-5.1.5 protocol A { func isEquatable() -> Bool } extension A { func isEquatable() -> Bool { return false } } extension A where Self: Equatable { func isEquatable() -> Bool { return true } } struct Foo: A { } struct Foo2: A, Equatable { } extension String: A { } print("direct") print(Foo().isEquatable()) print(Foo2().isEquatable()) print(String().isEquatable()) func generics<X: A>(arg: X) { print(arg.isEquatable()) } func existential(arg: A) { print(arg.isEquatable()) } print("from generics") generics(arg: Foo()) generics(arg: Foo2()) generics(arg: String()) print("from existential") existential(arg: Foo()) existential(arg: Foo2()) existential(arg: String()) (edited)
Avatar
swift51 BOT 1/6/2020 1:34 PM
direct false true true from generics false true true from existential false true true (edited)
Avatar
すまん
1:34 PM
動いてるなぁ
Avatar
omochimetaru 1/6/2020 1:34 PM
うん
1:34 PM
Swift 5.1.?だとdynamic cond confが無かったからダメだったかも (edited)
Avatar
これはcond confいらないんじゃないですかね
Avatar
omochimetaru 1/6/2020 1:36 PM
あ、ほんとだ
Avatar
静的にwitness tableが決定できる気がする
Avatar
いらないです
1:36 PM
ただ手元のコードで半分動いてない
Avatar
omochimetaru 1/6/2020 1:36 PM
きっと別のバグだ
Avatar
@swift-5.1.5 protocol AnyEquatableBase { associatedtype Value var value: Value { get } func isEqual(to other: Self) -> Bool } extension AnyEquatableBase { func isEqual(to other: Self) -> Bool { false } } extension AnyEquatableBase where Value: Equatable { func isEqual(to other: Self) -> Bool { value == other.value } } struct AnyEquatable<T>: AnyEquatableBase { var value: T } print(AnyEquatable(value: "abc").isEqual(to: AnyEquatable(value: "abc"))) print(AnyEquatable(value: ()).isEqual(to: AnyEquatable(value: ()))) print(AnyEquatable(value: String.self).isEqual(to: AnyEquatable(value: String.self))) print(AnyEquatable(value: { }).isEqual(to: AnyEquatable(value: { })))
Avatar
swift51 BOT 1/6/2020 2:08 PM
true false false false
Avatar
AnyEquatable2020だw
2:08 PM
クソ便利な予感
2:11 PM
これに包めば今動いてないやつも動きそうだな
Avatar
型パラによってwitness tableに載る実装を静的に切り替えるテクニック、結構使えそうですね
2:12 PM
おもしろい
Avatar
最小ケース再現できてないですが、エッジケースで動かない
2:13 PM
俺の頭がおかしいかもしれない
2:15 PM
ちょっと飯作るので、動いてない途中のコミット貼っておきます。興味あったらチェックしてみて下さい。
2:17 PM
Generate UIKit (not SwiftUI) components from FunctionBuilder. - tarunon/UIViewBuilder
Generate UIKit (not SwiftUI) components from FunctionBuilder. - tarunon/UIViewBuilder
Avatar
inline(__always)の挙動ちゃんと把握してないんですけど、これ付いててもwitness method経由で呼ばれるんですかね
Avatar
他の場所でもやってるので大丈夫です
2:19 PM
インライン化されてるかはわからないですが… (edited)
2:20 PM
Generate UIKit (not SwiftUI) components from FunctionBuilder. - tarunon/UIViewBuilder
Avatar
あ、わかった
Avatar
天才か
Avatar
これどっちもWT経由の呼び出しになってないんじゃ無いですかね
Avatar
デバッガでwt確認済みです
2:22 PM
Avatar
Witness methodはテーブルに乗ってなくても経由される気がします
2:25 PM
プロトコルの要求に_differenceが無いのでWTに乗らず、静的にディスパッチされてるんじゃ無いですかね
2:26 PM
ベースになってる_Componentの要求なんですよね
Avatar
本当だ…そしたら全く分からなくなった…
Avatar
ここで1時間ぐらいハマってしまった。AnyEquatable2020を使うプランに切り替えます。偽equalityそこら中で使うので。
Avatar
時間ある時にちゃんとみます 👀 ぼくもこのテクニック使いたいので。
Avatar
このコミットはこのまま置いておこう
Avatar
🙏
Avatar
もしかしたら、呼び出し時に型を参照できなくなってるかもしれないですね。その場合AnyEquatableでもダメだ (edited)
Avatar
@swift-5.1.5 protocol AnyEquatableBase { associatedtype Value var value: Value { get } func isEqual(to other: Self) -> Bool } extension AnyEquatableBase { func isEqual(to other: Self) -> Bool { false } } extension AnyEquatableBase where Value: Equatable { func isEqual(to other: Self) -> Bool { value == other.value } } struct AnyEquatable<T>: AnyEquatableBase { var value: T } print(AnyEquatable(value: "abc" as Any).isEqual(to: AnyEquatable(value: "abc" as Any)))
Avatar
swift51 BOT 1/6/2020 2:49 PM
false
Avatar
こういうことだと思うんです
2:53 PM
やっぱり呼び出し元でEquatableが見えてないとAnyEquatableを作った瞬間にfalse側に倒れちゃいますね。上位から伝播させなければいけない
2:54 PM
@swift-5.1.5 protocol AnyEquatableBase { associatedtype Value var value: Value { get } func isEqual(to other: Self) -> Bool } extension AnyEquatableBase { func isEqual(to other: Self) -> Bool { false } } extension AnyEquatableBase where Value: Equatable { func isEqual(to other: Self) -> Bool { value == other.value } } struct AnyEquatable<T>: AnyEquatableBase { var value: T } func check<T>(lhs: T, rhs: T) -> Bool { AnyEquatable(value: lhs).isEqual(to: AnyEquatable(value: rhs)) } print(check(lhs: "test", rhs: "test"))
Avatar
swift51 BOT 1/6/2020 2:54 PM
false
Avatar
omochimetaru 1/6/2020 2:59 PM
AnyEquatable<Any>になっちゃってると、Value: Equatableの評価がAnyに対して行われてしまって、
2:59 PM
Anyに入ってる実際の値の型では処理されないってこと?
Avatar
そうです
Avatar
omochimetaru 1/6/2020 3:00 PM
なるほど。う~ん、それは正しい挙動だな。
3:00 PM
Anyにしまうことで型情報が消去されたと。
Avatar
Generics内部でなんでこうなるかは謎だが
Avatar
そうかなるほど
Avatar
うわうわうわうわう
3:01 PM
@swift-5.1.5 protocol AnyEquatableBase { associatedtype Value var value: Value { get } func isEqual(to other: Self) -> Bool } extension AnyEquatableBase { func isEqual(to other: Self) -> Bool { false } } extension AnyEquatableBase where Value: Equatable { func isEqual(to other: Self) -> Bool { value == other.value } } struct AnyEquatable<T>: AnyEquatableBase { var value: T } func check<T>(lhs: T, rhs: T) { print(AnyEquatable(value: lhs)) print(AnyEquatable(value: lhs).isEqual(to: AnyEquatable(value: rhs))) } func check2(lhs: String, rhs: String) { print(AnyEquatable(value: lhs)) print(AnyEquatable(value: lhs).isEqual(to: AnyEquatable(value: rhs))) } check(lhs: "test", rhs: "test") check2(lhs: "test", rhs: "test")
Avatar
swift51 BOT 1/6/2020 3:01 PM
AnyEquatable<String>(value: "test") false AnyEquatable<String>(value: "test") true
Avatar
シュレディンガーの猫みたいな動きをするな
Avatar
omochimetaru 1/6/2020 3:02 PM
お~
Avatar
同じ型なのにwtの参照先が違うのはやばいなw
Avatar
omochimetaru 1/6/2020 3:02 PM
バグっぽい
Avatar
いやー、これは無理じゃ無いですかねー
Avatar
Anyで潰れるのは許せると思うんですが
3:03 PM
GenericsでStringが渡ったのに潰れるのは微妙では
3:04 PM
AnyEquatable<Any>(value: "test")なら良い
Avatar
checkがWTを受け取るようになってないから現状のABIでは厳しそう
Avatar
ふむー
Avatar
omochimetaru 1/6/2020 3:04 PM
ん?TとしてRuntimeにString.selfは渡ってきていて
3:05 PM
String.selfからEquatable conformance for StringのWTはダイナミックに取れない?
3:06 PM
そうじゃないのか? AnyEquatable<$T> みたいなものとして静的に解決している?
Avatar
取れることは取れるんですけど、本来それは呼び出し元でコンフォーマンスを取得してcheckに渡す形になるはずで、checkの中で任意の型に対して毎回コンフォーマンスを取得するのはコストが大きい気がします
Avatar
omochimetaru 1/6/2020 3:06 PM
クエリ自体でキャッシュされるはず
Avatar
それはそうですけど…
Avatar
とりあえずバグレポいってみよう
Avatar
そうですね
Avatar
omochimetaru 1/6/2020 3:07 PM
dup探すのむずそう。
Avatar
きびしーね
Avatar
omochimetaru 1/6/2020 3:08 PM
まあとりあえず現状のふるまいとしては
3:08 PM
extensionの解決は一般のTでコンパイル時に確定しているってことね
3:08 PM
これそうか、
3:09 PM
func check3<T: Equatable>(...) {}
Avatar
そうです
Avatar
omochimetaru 1/6/2020 3:09 PM
↑これも作っておけばよいのね
Avatar
そうそう
Avatar
まあそこをオーバーロードで解決が丸いかな
3:09 PM
因みに
Avatar
omochimetaru 1/6/2020 3:09 PM
めんどいけど対応はできるね
Avatar
挙動からの推測ですが、おもちさんのextensionを使った擬似open existentialで
3:10 PM
この壁を突破できる予感があります。少なくともそうでないと、私のコードが動いてる理由がよくわからない。
Avatar
omochimetaru 1/6/2020 3:10 PM
たしかに。
Avatar
今回消滅を起こしてる箇所はわかっていて
3:10 PM
そこをなんとかできないかこれから試す
3:11 PM
あ、擬似open existential、これでもかというほど役に立っています。ありがとう
Avatar
omochimetaru 1/6/2020 3:11 PM
ただの
3:11 PM
Anyにextensionはやせたっけ
Avatar
だめ
Avatar
omochimetaru 1/6/2020 3:11 PM
じゃあだめだ
3:11 PM
疑似ってか本物のopenだと思う (edited)
Avatar
Equatable確認したいよprotocolを作れば良い
Avatar
omochimetaru 1/6/2020 3:12 PM
ああそっか。
3:12 PM
便利だよね
3:12 PM
知らないとかけないコード結構ある
3:13 PM
僕が呼び方を名付けるとしたら、existential extensionによる間接open、とかかな
Avatar
あ、ダメだった
3:14 PM
@swift-5.1.5 protocol AnyEquatableBase { associatedtype Value var value: Value { get } func isEqual(to other: Self) -> Bool } extension AnyEquatableBase { func isEqual(to other: Self) -> Bool { false } } extension AnyEquatableBase where Value: Equatable { func isEqual(to other: Self) -> Bool { value == other.value } } protocol MaybeEquatable { } extension MaybeEquatable { func isEqual(to other: Self) -> Bool { AnyEquatable(value: self).isEqual(to: AnyEquatable(value: other)) } } struct AnyEquatable<T>: AnyEquatableBase { var value: T } extension String: MaybeEquatable {} func check<T: MaybeEquatable>(lhs: T, rhs: T) { print(lhs.isEqual(to: rhs)) } func check2(lhs: String, rhs: String) { print(AnyEquatable(value: lhs), AnyEquatable(value: lhs).isEqual(to: AnyEquatable(value: rhs))) } check(lhs: "test", rhs: "test") check2(lhs: "test", rhs: "test")
Avatar
swift51 BOT 1/6/2020 3:14 PM
false AnyEquatable<String>(value: "test") true
Avatar
だめです
Avatar
Selfの型が静的に決まっちゃうからダメなのかー
Avatar
雑に探した感じ特に無さそうなのでダブってたら閉じてもらおう
Avatar
omochimetaru 1/6/2020 3:18 PM
なんか俺が思ったのと違うな ちょっとやってみる
3:25 PM
あー、事前に対象の型を extension Cat: MaybeEquatable {} しておかないといけない。
Avatar
ん、してあると思う
3:25 PM
あ、Tにってことか!
Avatar
omochimetaru 1/6/2020 3:26 PM
AnyEquatableのTに制約として T: MaybeEquatable した上で
3:26 PM
Cat: MaybeEquatable みたいな。
Avatar
おk理解
3:26 PM
しかしそこまで行くと使いたいかっていうとウーンだな
Avatar
omochimetaru 1/6/2020 3:27 PM
うむ。
3:27 PM
結局 check3 をオーバーロードするか
Avatar
MaybeEquatableをpublicにしなきゃいけない、バッちすぎ
Avatar
omochimetaru 1/6/2020 3:27 PM
扱いたい型全部にそれを付けるかになる
3:27 PM
use-site overloadかtype-decl site conformanceか、みたいな・・・
Avatar
use-siteじゃなくても、型の要求する関数の宣言箇所でEquatableを条件にしたWTがあれば、一応open existentialで動く。私のコードはそれでもって動いてるからなぁ (edited)
Avatar
omochimetaru 1/6/2020 3:32 PM
制約のないT から実行時に T: P で分岐する事は不可能なのかな? (edited)
Avatar
それは可能
3:33 PM
上の方に貼った動いてる方のコード、がそれを実現してる
3:33 PM
あー
3:33 PM
正確にはComponentのProtocolでは縛られてるから
3:34 PM
関係のない型で縛る必要はあると思う
Avatar
omochimetaru 1/6/2020 3:34 PM
どれだ
3:34 PM
ああ
3:34 PM
そうね、なにか引っ掛けるためのプロトコルが必要
3:34 PM
なにもない T だったらってこと。
3:34 PM
やはりRuntime APIを使う必要があるな
Avatar
無から有は作れないか〜
Avatar
omochimetaru 1/6/2020 3:36 PM
// witness_table* swift_conformsToProtocol(type*, protocol*);
3:36 PM
ただこれ使ってもそこから先も工夫が必要なんだよな、witness tableで、どうすんのっていう
Avatar
これが使えたところで==の呼び出しが叶わなければ無駄
3:37 PM
今回のハックの激アツだったところは無から==が呼び出せる可能性があったからなのだ
Avatar
omochimetaru 1/6/2020 3:37 PM
witness tableから static funcを引っ張ってこないといけない
3:37 PM
つまりwitness method callの自作
3:38 PM
いや、なんかerasureを用意してそれのinit呼び出しにすればいいのか まあそれもgeneric method callですが
3:39 PM
厳しいな、swift calling conventionがC言語から使えないから
3:40 PM
マシンごとにアセンブリでレジスタ登録して呼び出さないとダメそう
3:42 PM
うーん
3:43 PM
swiftselfもswifterrorも関係ないからC言語で辻褄合わせた関数シグネチャ作ったらABIが合う気がしなくもない
Avatar
うーんBaseProtocolの中にこっそり混ぜる分にはアリな気がしてきた>MaybeEquatable
3:48 PM
ちょっとこれ無しでValue:Equatableハックは複雑な型だと厳しすぎる
3:51 PM
どうせprotocolで引っ掛けてるならやってること一緒なんだよな
Avatar
再現できなかった😞
4:11 PM
全てがGenericsで渡ってるとうまく動く、一回でもExistentialに墜ちるとダメっぽい。じゃあ私のコードはなぜ動いていたの
Avatar
解決しました。 Existentialになった型自身でWTの探索をさせるのがポイントだったようです。 一般化した実装をつくりました。 https://gist.github.com/tarunon/85bdeccf8bc8f44b7b27d4974e0a843f
GitHub Gist: instantly share code, notes, and snippets.
Avatar
omochimetaru 1/7/2020 1:16 AM
これだと、AnyEquatableのinitのところで、E:Equatableの制約を静的に見てるから
1:16 AM
結局制約のないTのパターンのcheckだと無理なのは一緒に見える
Avatar
それはそう、なのでMaybeEquatableを外側に置いて、そこからAnyEquatableを生成する事でその課題をクリアしている
Avatar
omochimetaru 1/7/2020 1:18 AM
ああ、出発点(ユーザーが触る方)はそっちか。
1:18 AM
これは、extensionのisEqualの中からだと
1:19 AM
動的な判定でSelf:Equatableのwhereの方を呼び出せるってこと?
Avatar
そういうことです
Avatar
omochimetaru 1/7/2020 1:20 AM
よし、理解あってた
Avatar
公開するProtocolのベースにMaybeEquatableを使う事で、ユーザーサイドで付与したEquatableを使って動作を切り替えることができる
Avatar
omochimetaru 1/7/2020 1:20 AM
やはりexistential extension openは魔法的だ
Avatar
魔法ですねぇ
1:20 AM
しかもこれ、ちょっと作り方違うと動かないので
Avatar
omochimetaru 1/7/2020 1:34 AM
あ〜 簡単にしようとしたら、 MaybeEquatableにSelfが入って ダウンキャストできなくなったw
Avatar
でしょw
Avatar
omochimetaru 1/7/2020 1:34 AM
でももうちょっときれいにできる気がするなあ
Avatar
AnyEquatableとMaybeEquatableの関係が、この間Twitterで言ってた逆転させるprotocolのテクニックです
1:35 AM
型消去を使ってprotocolの宣言を外しつつwtを別の場所に移動させる
Avatar
omochimetaru 1/7/2020 1:56 AM
GitHub Gist: instantly share code, notes, and snippets.
Avatar
私のやつ、public protocolにwtを乗せたくなかったからわけていたのだ
Avatar
omochimetaru 1/7/2020 2:01 AM
どういう意味?
Avatar
_isEqualとか__isEqualをユーザーサイドで実装したり呼び出したり、を出来ないようにしたかった
Avatar
omochimetaru 1/7/2020 2:02 AM
asAnyEquatable().isEqual()が呼び出せるのは良いのか
Avatar
そこinternalにできるよ
Avatar
omochimetaru 1/7/2020 2:03 AM
あ〜
Avatar
AnyEquatableの存在だけをpublicにして、他のすべてを封印できる
Avatar
omochimetaru 1/7/2020 2:03 AM
func anyIsEqual と asAnyEquatable だけが見えてて
Avatar
そういうテクニックですだ
2:03 AM
そうそう
Avatar
omochimetaru 1/7/2020 2:03 AM
AnyEquatableの機能は使えない
2:03 AM
って状態にできるのね。
Avatar
確かにもうちょい減らせる気がしてきたな
Avatar
いらんprotocol減らしてあとは比較対象の方は値しか使わない(関数は利用されてない)のでopenしなくて良さそう
Avatar
omochimetaru 1/7/2020 2:14 AM
as? T でいいよね。 (edited)
Avatar
そうね
Avatar
omochimetaru 1/7/2020 2:27 AM
う〜ん不思議だ、継承boxを作らないでやろうとすると何かしら詰まる。
Avatar
継承boxが==をキャプチャするのがミソと思われる
Avatar
omochimetaru 1/7/2020 2:38 AM
GitHub Gist: instantly share code, notes, and snippets.
2:38 AM
できた。 MaybeEquatable.isEqual(to)と MaybeEquatable.eraseToOpaqueEquatable()と ErasedOpaqueEquatableしか露出していない。 ErasedOpaqueEquatableのメンバは全部隠した。 (edited)
Avatar
めっちゃいい
Avatar
omochimetaru 1/7/2020 2:39 AM
erasureは外側はなくして継承Boxそのままにした。 (edited)
Avatar
そうか、どうせ公開しないなら外側が要らなくなるのね
Avatar
omochimetaru 1/7/2020 2:39 AM
ErasedOpaqueEquatableもpublicだけどopenじゃないからユーザー継承もできないし。
Avatar
継承消せたw
3:18 AM
@swift-5.1.5 public protocol MaybeEquatable { func eraseToOpaqueEquatable() -> ErasedOpaqueEquatable } extension MaybeEquatable { public func isEqual(to other: Any) -> Bool { eraseToOpaqueEquatable().isEqualTo(other) } } extension MaybeEquatable { public func eraseToOpaqueEquatable() -> ErasedOpaqueEquatable { ErasedOpaqueEquatable() } } extension MaybeEquatable where Self: Equatable { public func eraseToOpaqueEquatable() -> ErasedOpaqueEquatable { ErasedOpaqueEquatable(value: self) } } public struct ErasedOpaqueEquatable { var isEqualTo: (Any) -> Bool init() { isEqualTo = { _ in false } } init<T: Equatable>(value: T) { isEqualTo = { value == $0 as? T } } } // end user interface public func anyIsEqual(_ a: Any, _ b: Any) -> Bool { guard let a = a as? MaybeEquatable else { return false } return a.isEqual(to: b) } // you need to mark your type extension String: MaybeEquatable {} print(anyIsEqual("str", "str")) // => true print(anyIsEqual({}, {})) // => false
Avatar
omochimetaru 1/7/2020 3:18 AM
おお
Avatar
swift51 BOT 1/7/2020 3:18 AM
true false
Avatar
これが一番短いと思います
Avatar
omochimetaru 1/7/2020 3:19 AM
あ〜wクロージャねw
3:19 AM
確かにクロージャってそもそもが型Fに対して
3:19 AM
値で実装を分けてるから
3:19 AM
ベースクロージャ型と、個別のクロージャ式に対応する型の
3:19 AM
アドホックな継承関係なんだよな
Avatar
うむ
Avatar
omochimetaru 1/7/2020 3:20 AM
今回はどうせ処理を切り分けたいだけの継承だからクロージャでもいいか。 強いて言えば若干デバッグしづらいかな。
Avatar
まあここをデバッグする事はあんまり無さそう
Avatar
omochimetaru 1/7/2020 3:21 AM
そうすると、ErasedOpaqueEquatableもなくして、 (Any)->Bool を返すのもありだな
Avatar
お、なるほど
Avatar
omochimetaru 1/7/2020 3:21 AM
func partialApplySelfToIsEqual() -> (Any) -> Bool
Avatar
ヤベェ関数が生えたw
Avatar
omochimetaru 1/7/2020 3:22 AM
まあユーザーにこれが見えるのと、ErasedOpaqueEquatableが見えるの、どっちが良いかって択だな
Avatar
typealiasにして誤魔化すのはどうだろう
3:24 AM
typealias PartialAppySelfToIsEqual = (Any)->Bool
Avatar
omochimetaru 1/7/2020 3:26 AM
ユーザーからするとErasedOpaqueEquatableはその先のisEqualの呼び出しができないけど
3:26 AM
typealias PartialAppySelfToIsEqualは、関数としての呼び出しができるという意味では
3:26 AM
露出はやっぱり増えてるね
Avatar
確かに
3:27 AM
コードは圧倒的に短いな、4ブロックだ
Avatar
omochimetaru 1/7/2020 3:27 AM
そういう意味ではさっきのtarunonのやつが露出最小の場合の実装最小な気がする
Avatar
まあでも実質的にisEqual(to:)呼ぶのと変わらんけ
Avatar
omochimetaru 1/7/2020 3:27 AM
露出をちょっと許すなら partialApplySelfToIsEqualだと思う
3:27 AM
うん。そうね。
Avatar
実行時に軽い方でもいい気がする
3:27 AM
ヘッダーから見える世界はこう
3:28 AM
綺麗では
Avatar
omochimetaru 1/7/2020 3:28 AM
typealiasなのも見えるでしょ?
Avatar
typealiasも見えてるけど
3:28 AM
まあ許せる範囲かな
3:29 AM
しかしこのテクニック凄いね、今までできなかったことが出来るようになった
Avatar
omochimetaru 1/7/2020 3:30 AM
まあMaybeEquatableでマーキングするという作業は残っちゃってるけどね
3:30 AM
実行時ダウンキャストで where を復元できるのは面白い。
Avatar
protocol conformingを通してexistentialを作れないprotocolへのダウンキャストを実装する、という手法かな
3:31 AM
open existentialと並ぶ革命だわ
Avatar
omochimetaru 1/7/2020 3:31 AM
そうだね、PATへのダウンキャストを普通のprotocolを一回挟むとできる
3:31 AM
業務だと、
3:31 AM
レスポンスの型を登録しておいて
3:32 AM
レスポンスの中にあるtypeってフィールドを見て、対応するレスポンスの型を動的にdecodeする、
3:32 AM
みたいなパターンで似たような事をしていた
3:33 AM
リクエストの型のassociatedtypeからレスポンスの型をジェネリクスで引っ張るのが一般的だと思うんだけど
3:33 AM
正常系のレスポンスはそれで良いとして、エラーレスポンスも型付けしたいからそうしてた
Avatar
APIの話だと私の書いたコードだとエラーもあらかじめ型付けしてあってレスポンス同様にデコードしてたな
Avatar
omochimetaru 1/7/2020 3:35 AM
普通にやるとエラーをデコードしてる処理を、エラーの種類を足すごとに追加するか、 リクエストに対して固定のエラー型にならない?
Avatar
protocol Request { associatedtype Response associatedtype Error }
Avatar
omochimetaru 1/7/2020 3:36 AM
そうよね。
Avatar
これで事足りる気がするけど
Avatar
omochimetaru 1/7/2020 3:37 AM
let possibleErrorTypes: [APIResponseErrorProtocol.Type] = [LoginError.self, ValidationError.self, ...]
3:37 AM
こういう感じに配列で登録しておいてどんな型のエラーも飛ばせるようにした感じ。
Avatar
ほー
3:37 AM
enumじゃだめなん
Avatar
omochimetaru 1/7/2020 3:38 AM
enumにした場合、結局、そのenumのdecodeを書くところで
3:38 AM
JSONのtypeフィールドの文字列を見て、switch-caseで
3:38 AM
type文字列ごとに対応するcaseをdecodeするって処理を
3:38 AM
書く部分が出てくるでしょ?
Avatar
配列だと出ない?
Avatar
omochimetaru 1/7/2020 3:39 AM
でない。
Avatar
omochimetaru 1/7/2020 3:39 AM
enumだと、
普通にやるとエラーをデコードしてる処理を、エラーの種類を足すごとに追加するか、 リクエストに対して固定のエラー型にならない?
↑で書いたように、エラーの種類を足すごとに case を書かないといけない
3:39 AM
配列に入れておいて、
3:40 AM
protocol APIResponseErrorProtocol: Decodable { static var typeName: String { get } }
3:40 AM
↑こうしておいて、
3:40 AM
あとはループしながらtypeNameの対応がみつかったらDecodableでdecode
3:40 AM
って形にすると、 エラーの型を定義して、possibleErrorTypes配列にメタタイプを追加していくだけで
3:41 AM
decodeのcaseの追加はしなくて良くなる。
Avatar
そうすると取り出す側はキャストにならない?
Avatar
omochimetaru 1/7/2020 3:41 AM
取り出す側はキャストになる。
Avatar
Error型だから別にいいやって感じか
Avatar
omochimetaru 1/7/2020 3:41 AM
でもそれは、 do { } catch { } してるとき、いつもそうだから。
3:41 AM
てか、結局の所throwすることになって、画面レベルの 根っこのcatchで分岐する感じ。
3:42 AM
エラーレスポンスがそのままアプリの中のエラーとしてthrowされてくる状態。
Avatar
なるほどね
Avatar
omochimetaru 1/7/2020 3:42 AM
Error型だから別にいいやって感じか
そういうことやね
(edited)
Avatar
私が書いたのはAPIの関数の返り値はAsync<Result<T,E>>だから、型がしっかりしてるモチベが高いから
3:44 AM
あとエンドポイントごとにエラー型を明示的に定義したいモチベもあったのでそういう作りになっていたのだ
3:44 AM
enumでもデコード処理をループで書くのは昔作ったから、それでもいい気はしたけど、まあ色々根底が違いそうである
Avatar
omochimetaru 1/7/2020 3:46 AM
enumでもデコード処理をループで書く
このケースで同じことをやってそうな気がする
Avatar
そんな気はするね
3:47 AM
今回の価値はextension Tと、extension T where Self: Uが、きちんと期待通りに動くケースを一般化できたことだな
Avatar
omochimetaru 1/7/2020 3:49 AM
それで、そのループするために、メタタイプを登録していくと、 要素が APIResponseErrorProtocol.Type になるから、 existential openを使わないと init(from decoder: Decoder) が呼べないという話
Avatar
なるほどね
Avatar
omochimetaru 1/7/2020 3:51 AM
今回の価値はextension Tと、extension T where Self: Uが、きちんと期待通りに動くケース
3:52 AM
そうね
3:52 AM
protocol requirementsにエントリがあってwitness tableに載ってると、 existential extensionのselfからのメソッド呼び出しでディスパッチできる。
Avatar
try swiftのltにもっていこうかしら、このサイズなら収まりそう
Avatar
omochimetaru 1/7/2020 3:59 AM
Equatableにダウンキャストできないよね、ってところから流れで行けばまとまりそう
3:59 AM
ただexistential openが結構深いトリックであるってことはスルーされそうだ
Avatar
聴衆はそもそもGenericsとExistentialの違いもアヤフヤな人が多い想定なので、敢えてそこは解説しないでいいと思う
Avatar
omochimetaru 1/7/2020 4:03 AM
できることの結果だけ話すってことね。
Avatar
条件と結果、一般化できるぞいというところまでだな。
Avatar
omochimetaru 1/7/2020 4:04 AM
たしかにタルノンが発表する時ってそういう構成の事が多いな
Avatar
いやだって…
Avatar
omochimetaru 1/7/2020 4:04 AM
いやいや・・・
Avatar
Contribute to kateinoigakukun/AnyEquatable development by creating an account on GitHub.
12:04 PM
SPMがCとSwiftの混じったターゲットを作れないので微妙にシンボルが公開されちゃってますが、手でリンクすればisEqualだけ公開するようにできるはず
12:07 PM
Contribute to kateinoigakukun/AnyEquatable development by creating an account on GitHub.
Avatar
すごww
12:23 PM
C経由でSwiftRuntimeを無理やりこねくり回すの、禁断の果実感あって良いですね
Avatar
ミソはwitness methodの呼び出しをSwift側に移譲してる部分です
Avatar
これはC部分はどうしてもSwiftだとかけない感じですか?
Avatar
書けそう!
Avatar
書けない理由が特に無さそうに見えたので
Avatar
最初はもうちょっと込み入ったことをしようとしてたんですけど結局シンプルにできたのでフルSwiftで書けそう
12:29 PM
あー、フルは無理でした
😞 1
12:30 PM
ProtocolDescriptorをシンボル経由で抜いてるんですけど、そこで@_silgen_nameが使えなかった…
Avatar
なるほど
Avatar
いや、dlsymすればいいのか (edited)
Avatar
dlsymはXcode環境下で謎に動かない場合があるので
12:31 PM
動くかチェックは必要そう
12:32 PM
動かない場合も退避先にMachO使えるし何とかなるんじゃないかな
Avatar
Contribute to kateinoigakukun/AnyEquatable development by creating an account on GitHub.
1:14 PM
Swift関数にメタタイプとWTを差し込むためにはC側から呼んでやらないとダメなんですよねー
Avatar
omochimetaru 1/7/2020 1:21 PM
あれ、やろうと思ってたらもうできちゃった?
Avatar
@convention(c)をつけた関数ポインタの首を挿げ替えて無理やりコールは出来ないかな
Avatar
import Foundation let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: -2) @_silgen_name("foo") func foo() {} let fooPtr = { dlsym(RTLD_DEFAULT, "foo")!.assumingMemoryBound(to: (() -> Void).self) }() fooPtr.pointee
1:29 PM
これがクラッシュするんですよね、デリファレンスした瞬間にbad accessになる (edited)
1:30 PM
@convention(c)どこにもつけられなくて困った
Avatar
norio_nomura 1/8/2020 9:07 AM
こんな感じにすると@convention(c)使える。 import Foundation public func isEqual(_ lhs: Any, _ rhs: Any) -> Bool { let lhsType = type(of: lhs) let rhsType = type(of: rhs) guard lhsType == rhsType else { return false } guard let witnessTable = swift_conformsToProtocol(lhsType, EquatableProtocolDescriptor) else { return false } let theType = unsafeBitCast(lhsType, to: UnsafeRawPointer.self) return withUnsafePointer(to: lhs) { lhsPtr in withUnsafePointer(to: rhs) { rhsPtr in AnyEquatable_internalIsEqual(lhsPtr, rhsPtr, theType, witnessTable) } } } @_silgen_name("swift_conformsToProtocol") func swift_conformsToProtocol(_: Any.Type, _: UnsafeRawPointer) -> UnsafeRawPointer? func load<T>(symbol: String) -> T { if let sym = dlsym(dlopen(nil, RTLD_LAZY), symbol) { return unsafeBitCast(sym, to: T.self) } let errorString = String(validatingUTF8: dlerror()) fatalError("Finding symbol \(symbol) failed: \(errorString ?? "unknown error")") } let AnyEquatable_internalIsEqual: @convention(c) (UnsafeRawPointer, UnsafeRawPointer, UnsafeRawPointer, UnsafeRawPointer) -> Bool = load(symbol: "AnyEquatable_internalIsEqual") let EquatableProtocolDescriptor: UnsafeRawPointer = load(symbol: "$sSQMp") @_silgen_name("AnyEquatable_internalIsEqual") func _internalIsEqual<T: Equatable>(_ lhs: T, rhs: T) -> Bool { return lhs == rhs } (edited)
9:08 AM
しかし、LinuxだとシンボルAnyEquatable_internalIsEqualを見つけられないな。
Avatar
なるほどなるほど
12:39 PM
Linuxでシンボル見つけられないのはなんでだろう…
12:43 PM
そもそも、フルSwiftで書くためにわざわざダイナミックリンクするのは微妙な気がしてきた (edited)
Avatar
norio_nomura 1/8/2020 1:18 PM
面白いけど、実際に使おうとは思えないですね。
Avatar
norio_nomura 1/8/2020 11:33 PM
swift52ボット、新規で作るか、swift40ボットを動かしてるHeroku環境を流用してしまおうか、迷う。
Avatar
Kishikawa Katsumi 1/9/2020 3:46 AM
どういう違いがあるんですか?
Avatar
norio_nomura 1/9/2020 4:00 AM
一つのボットに一つのherokuアカウントを使う構成なのです。
4:01 AM
流用すればアカウントを増やさずに済む。swift40ボットは無くなるけど。
4:06 AM
ボットを使う側に対しては「swift40ボットにまだ生き残って欲しいか?」という質問になりますね。
Avatar
4系は4.2が生きていれば良さそうに思えます。Xcodeもそうだし。
Avatar
Kishikawa Katsumi 1/9/2020 4:08 AM
あ、そういう意味ですか。なんとなく残っていたら便利かなと思います。
Avatar
norio_nomura 1/9/2020 4:11 AM
追加するかな。
Avatar
norio_nomura 1/9/2020 5:17 AM
@swift-5.2.5 -version
Avatar
swift52 BOT 1/9/2020 5:17 AM
Swift version 5.2-dev (Swift 74df1132af) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 1/9/2020 5:26 AM
@swift-5.2.5 struct SimpleCallable { func callAsFunction(_ x: Float) -> Float { return x } } let foo = SimpleCallable() print(foo(1)) print(foo(foo(1)))
Avatar
swift52 BOT 1/9/2020 5:26 AM
1.0 1.0
Avatar
@swift-main func f(g: @escaping () -> Void) { } class C { var name = "tama" func main() { f { [self] in print(name) } } }
Avatar
swiftNightly BOT 1/10/2020 10:06 AM
no output
Avatar
@swift-5.2.5 func f(g: @escaping () -> Void) { } class C { var name = "tama" func main() { f { [self] in print(name) } } }
Avatar
exit status: 1 with stderr:<stdin>:7:13: error: reference to property 'name' in closure requires explicit 'self.' to make capture semantics explicit print(name) ^ self. <stdin>:6:10: warning: capture 'self' was never used f { [self] in ^
Avatar
Update the lookup logic for closures to allow resolution of implicit self to resolve to any direct captures of self (e.g. { [self] in ... }) in closures. Also introduce new diagnostic logic to sugg...
Avatar
Kishikawa Katsumi 1/10/2020 5:05 PM
@swiftbot #if os(Linux) print("Running on Linux") #else print("Running on macOS") #endif
Avatar
swiftbot BOT 1/10/2020 5:05 PM
Author icon
kishikawakatsumi
#if os(Linux) print("Running on Linux") #else print("Running on macOS") #endif
Version:
swift-5.1.3-RELEASE
Output:
Running on Linux
Error:
Avatar
Kishikawa Katsumi 1/10/2020 5:06 PM
@swiftbot --platform=mac #if os(Linux) print("Running on Linux") #else print("Running on macOS") #endif
Avatar
swiftbot BOT 1/10/2020 5:06 PM
Author icon
kishikawakatsumi
#if os(Linux) print("Running on Linux") #else print("Running on macOS") #endif
Version:
Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) Target: x86_64-apple-darwin19.2.0
Output:
Running on macOS
Error:
Avatar
Kishikawa Katsumi 1/10/2020 5:06 PM
とりあえずMac上の実行サポートしました。Macで動作が変わるコードってどんなんでしたっけ?
Avatar
omochimetaru 1/10/2020 6:28 PM
@swiftbot --platform=mac class C {} let a = C.self as AnyObject
Avatar
swiftbot BOT 1/10/2020 6:28 PM
Author icon
omochimetaru
class C {} let a = C.self as AnyObject
Version:
Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) Target: x86_64-apple-darwin19.2.0
Output:
Error:
Avatar
omochimetaru 1/10/2020 6:28 PM
@swiftbot --platform=linux class C {} func f(_ a: AnyObject) {} f(C.self) (edited)
Avatar
swiftbot BOT 1/10/2020 6:28 PM
(edited)
Author icon
omochimetaru
class C {} func f(_ a: AnyObject) {} f(C.self)
Version:
swift-5.1.3-RELEASE
Output:
Error:
/usercode/main.swift:3:3: error: argument type 'C.Type' does not conform to expected type 'AnyObject' f(C.self) ^
Avatar
omochimetaru 1/10/2020 6:30 PM
@swiftbot --platform=mac class C {} func f(_ a: AnyObject) {} f(C.self)
Avatar
swiftbot BOT 1/10/2020 6:30 PM
Author icon
omochimetaru
class C {} func f(_ a: AnyObject) {} f(C.self)
Version:
Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) Target: x86_64-apple-darwin19.2.0
Output:
Error:
Avatar
omochimetaru 1/10/2020 6:30 PM
おーmacだ
Avatar
@swiftbot struct Example { var value: some Equatable { 1 } } struct Foo { typealias Body = @_opaqueReturnTypeOf("$s4main7ExampleV5valueQrvp", 0) 🦸 } print(Foo.Body.self)
Avatar
swiftbot BOT 1/15/2020 8:48 AM
nanasi
struct Example { var value: some Equatable { 1 } } struct Foo { typealias Body = @_opaqueReturnTypeOf("$s4main7ExampleV5valueQrvp", 0) 🦸 } print(Foo.Body.self)
Version:
swift-5.1.3-RELEASE
Output:
Int
Error:
Avatar
@swiftbot @propertyWrapper struct Generics<T> { var wrappedValue: T { 100 as! T } init(_ type: T.Type = T.self) {} } struct Example { @Generics(Int.self) var value } print(Example().value)
Avatar
swiftbot BOT 1/16/2020 4:57 AM
nanasi
@propertyWrapper struct Generics<T> { var wrappedValue: T { 100 as! T } init(_ type: T.Type = T.self) {} } struct Example { @Generics(Int.self) var value } print(Example().value)
Version:
swift-5.1.3-RELEASE
Output:
100
Error:
Avatar
@swiftbot @propertyWrapper struct NoGenerics { var wrappedValue: Int { 100 } } struct Example { @NoGenerics var value } print(Example().value)
Avatar
swiftbot BOT 1/16/2020 4:58 AM
nanasi
@propertyWrapper struct NoGenerics { var wrappedValue: Int { 100 } } struct Example { @NoGenerics var value } print(Example().value)
Version:
swift-5.1.3-RELEASE
Output:
Error:
/usercode/main.swift:7:21: error: type annotation missing in pattern @NoGenerics var value ^
Avatar
@swiftbot @propertyWrapper struct NoGenerics { var wrappedValue: Int { 100 } } struct Example { @NoGenerics() var value } print(Example().value)
Avatar
swiftbot BOT 1/17/2020 7:04 AM
nanasi
@propertyWrapper struct NoGenerics { var wrappedValue: Int { 100 } } struct Example { @NoGenerics() var value } print(Example().value)
Version:
swift-5.1.3-RELEASE
Output:
100
Error:
Avatar
明示的なイニシャライザ呼び出しがあると型を省略できるのか🤔
Avatar
omochimetaru 1/17/2020 7:06 AM
ww
7:06 AM
微妙な推論器の走らせ方の違いが引き起こしてそうだ。
Avatar
@swift-5.1.5 class Cat { private let _bow: String = "にゃー" var bow: String { get { _bow } _modify { yield &_bow } } } var tama = Cat() tama.a = "わん" print(tama.a)
Avatar
exit status: 1 with stderr:<stdin>:8:20: error: cannot assign to property: '_bow' is a 'let' constant yield &_bow ^~~~ <stdin>:2:13: note: change 'let' to 'var' to make it mutable private let _bow: String = "にゃー" <stdin>:13:6: error: value of type 'Cat' has no member 'a' tama.a = "わん" <stdin>:14:12: error: value of type 'Cat' has no member 'a' print(tama.a) ~~~~ ^
Avatar
あ、みすってた
1:44 AM
@swift-5.1.5 class Cat { let _bow: String = "にゃー" var bow: String { get { _bow } _modify { yield &_bow } } } var tama = Cat() tama.bow = "わん" print(tama.bow)
Avatar
exit status: 1 with stderr:<stdin>:8:20: error: cannot assign to property: '_bow' is a 'let' constant yield &_bow ^~~~ <stdin>:2:5: note: change 'let' to 'var' to make it mutable let _bow: String = "にゃー"
Avatar
まあそうか
Avatar
でもこれ僕のプロジェクトだとコンパイルとおってるの不思議だ 見間違えだった (edited)
Avatar
あ、コンパイルとおった Apple Swift version 5.1.3 (swiftlang-1100.0.282.1 clang-1100.0.33.15) Target: x86_64-apple-darwin18.6.0 だと class Neko { private let _bow: String = "にゃん" var bow: String { get { _bow } _modify { yield &bow } } } let cat = Neko() cat.bow = "わん" print(cat.bow) は通るっぽい、多分もう修正されてるってことかな
Avatar
omochimetaru 1/20/2020 2:01 AM
それ実行したら無限ループしないのか
Avatar
あ、たしかに
2:01 AM
あ、あんだーばーが抜けてましたね
2:02 AM
凡ミスで草ですね
2:02 AM
ちゃんとエラーでた、失礼しました 🙇‍♂️ (edited)
Avatar
exit status: 1 with stderr:<stdin>:5:30: error: type 'C2' constrained to non-protocol, non-class type 'Self.X' associatedtype X where C2: X ^
Avatar
norio_nomura 1/24/2020 3:34 AM
ボットの不調、Herokuのログシステムにも障害が起きてて、不調だった際のログが残ってない。 https://status.heroku.com
Heroku Status provides the current status and incident history report for the Heroku platform.
Avatar
omochimetaru 1/24/2020 3:34 AM
クラウドレベルでのトラブなのか。
Avatar
norio_nomura 1/24/2020 3:38 AM
外部へ送ってるログを見ると、swift50ボットだけリクエストを受け付けたログに漏れがある様なので、swift50ボットだけ影響を受けてたぽい。
😮 1
Avatar
norio_nomura 2/1/2020 5:29 AM
@swift-5.1.5 -version
Avatar
swift51 BOT 2/1/2020 5:29 AM
Swift version 5.1.4 (swift-5.1.4-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Kishikawa Katsumi 2/1/2020 7:33 AM
5.1.4が12時間くらい前にひっそりリリースされてるんですね。
Avatar
norio_nomura 2/1/2020 9:09 AM
リリースタグがついてからswift.orgに現れるまでは、毎回かなり時間がかかりますね。
Avatar
Kishikawa Katsumi 2/1/2020 9:12 AM
あら、そうなんですね。
Avatar
norio_nomura 2/1/2020 9:29 AM
タグが付いたらすぐにswift.orgで公開されるスナップショットと違って、リリースはタグ付けから公開までの時間がまちまちだから、たぶん途中に手作業が入ってる。
Avatar
Kishikawa Katsumi 2/1/2020 3:15 PM
@swiftbot --version=3.0.1 class Foo { private var fooPrivate = "private property" } extension Foo { func bar() -> String { return fooPrivate } } print(Foo().bar())
Avatar
swiftbot BOT 2/1/2020 3:15 PM
Author icon
kishikawakatsumi
class Foo { private var fooPrivate = "private property" } extension Foo { func bar() -> String { return fooPrivate } } print(Foo().bar())
Version:
swift-3.0.1-RELEASE
Output:
Error:
/usercode/main.swift:7:16: error: 'fooPrivate' is inaccessible due to 'private' protection level return fooPrivate ^ /usercode/main.swift:2:17: note: 'fooPrivate' declared here private var fooPrivate = "private property" ^
Avatar
@swift-5.2.5 @dynamicMemberLookup public protocol Entity { associatedtype Identifier associatedtype Props var id: Identifier { get } var props: Props { get set } } extension Entity { public typealias SegFaultHere<T> = T @inlinable public subscript <Value>(dynamicMember keyPath: WritableKeyPath<Props, Value>) -> Value { get { props[keyPath: keyPath] } set { props[keyPath: keyPath] = newValue } } }
Avatar
swift52 BOT 2/8/2020 6:49 AM
no output
Avatar
@swift-5.2.5 protocol CallAsFunction { func callAsFunction() } struct Foo: CallAsFunction { func callAsFunction() { print("foo") } } func call<C: CallAsFunction>(_ caller: C) { caller() } call(Foo())
Avatar
foo
Avatar
@swiftbot struct Value: Hashable { let id = 5 } struct Value2: Hashable { let id = 5 func hash(into hasher: inout Hasher) { hasher.combine(id) } } enum EnumValue: Hashable { case a(Int) case b(Int) } enum EnumValue2: Hashable { case a(Int) case b(Int) func hash(into hasher: inout Hasher) { switch self { case .a(let v): hasher.combine(v) case .b(let v): hasher.combine(v) } } } print(5.hashValue) print(Value().hashValue) print(Value2().hashValue) print(EnumValue.a(5).hashValue) print(EnumValue.b(5).hashValue) print(EnumValue2.a(5).hashValue) print(EnumValue2.b(5).hashValue)
Avatar
swiftbot BOT 2/19/2020 5:27 AM
nanasi
struct Value: Hashable { let id = 5 } struct Value2: Hashable { let id = 5 func hash(into hasher: inout Hasher) { hasher.combine(id) } } enum EnumValue: Hashable { case a(Int) case b(Int) } enum EnumValue2: Hashable { case a(Int) case b(Int) func hash(into hasher: inout Hasher) { switch self { case .a(let v): hasher.combine(v) case .b(let v): hasher.combine(v) } } } print(5.hashValue) print(Value().hashValue) print(Value2().hashValue) print(EnumValue.a(5).hashValue) print(EnumValue.b(5).hashValue) print(EnumValue2.a(5).hashValue) print(EnumValue2.b(5).hashValue)
Version:
swift-5.1.3-RELEASE
Output:
-5563881854129666050 -5563881854129666050 -5563881854129666050 1174769019477244301 8537611810857838151 -5563881854129666050 -5563881854129666050
Error:
Avatar
@swiftbot enum EnumValue: Hashable { case a(Int) case b(Int) } enum EnumValue2: Hashable { case a(Int) case b(Int) func hash(into hasher: inout Hasher) { switch self { case .a(let v): hasher.combine(0) hasher.combine(v) case .b(let v): hasher.combine(1) hasher.combine(v) } } } print(5.hashValue) print(EnumValue.a(5).hashValue) print(EnumValue.b(5).hashValue) print(EnumValue2.a(5).hashValue) print(EnumValue2.b(5).hashValue) (edited)
Avatar
swiftbot BOT 2/19/2020 5:29 AM
(edited)
nanasi
enum EnumValue: Hashable { case a(Int) case b(Int) } enum EnumValue2: Hashable { case a(Int) case b(Int) func hash(into hasher: inout Hasher) { switch self { case .a(let v): hasher.combine(0) hasher.combine(v) case .b(let v): hasher.combine(1) hasher.combine(v) } } } print(5.hashValue) print(EnumValue.a(5).hashValue) print(EnumValue.b(5).hashValue) print(EnumValue2.a(5).hashValue) print(EnumValue2.b(5).hashValue)
Version:
swift-5.1.3-RELEASE
Output:
3666440306759404138 7344323318427966468 4893249820943752864 7344323318427966468 4893249820943752864
Error:
Avatar
norio_nomura 2/20/2020 2:40 AM
Standard Library Preview Packageをインポートできる様にしました。 @swift-5.1.5 @swift-5.2.5 @swift-main import StandardLibraryPreview var numbers = [10, 12, -5, 14, -3, -9, 15] let negatives = numbers.subranges(where: { $0 < 0 }) print(negatives) numbers.moveSubranges(negatives, to: 0) print(numbers) https://swift.org/blog/preview-package/
Avatar
RangeSet(2..<3, 4..<6) [-5, -3, -9, 10, 12, 14, 15]
Avatar
RangeSet(2..<3, 4..<6) [-5, -3, -9, 10, 12, 14, 15]
Avatar
swiftNightly BOT 2/20/2020 2:41 AM
RangeSet(2..<3, 4..<6) [-5, -3, -9, 10, 12, 14, 15]
Avatar
omochimetaru 2/20/2020 2:41 AM
おお〜
Avatar
norio_nomura 2/28/2020 2:21 AM
https://swift.org/blog/argument-parser/ Swift Argument Parserをインポートできるようにしました。 @swift-main @swift-5.2.5 - --help import ArgumentParser struct Repeat: ParsableCommand { @Flag(help: "Include a counter with each repetition.") var includeCounter: Bool @Option(name: .shortAndLong, help: "The number of times to repeat 'phrase'.") var count: Int? @Argument(help: "The phrase to repeat.") var phrase: String } extension Repeat { func run() throws { let repeatCount = count ?? .max for i in 1...repeatCount { if includeCounter { print("\(i): \(phrase)") } else { print(phrase) } } } } Repeat.main() (edited)
Avatar
USAGE: repeat [--include-counter] [--count <count>] <phrase> ARGUMENTS: <phrase> The phrase to repeat. OPTIONS: --include-counter Include a counter with each repetition. -c, --count <count> The number of times to repeat 'phrase'. -h, --help Show help information. (edited)
Avatar
swiftNightly BOT 2/28/2020 2:21 AM
USAGE: repeat [--include-counter] [--count <count>] <phrase> ARGUMENTS: <phrase> The phrase to repeat. OPTIONS: --include-counter Include a counter with each repetition. -c, --count <count> The number of times to repeat 'phrase'. -h, --help Show help information. (edited)
Avatar
norio_nomura 2/28/2020 2:23 AM
StandardLibraryPreviewと同時にビルドするには下記エラー回避にSE-0226が必要なため、Swift 5.2以降です。 error: multiple targets named 'TestHelpers' in: swift-argument-parser, swift-se0270-range-set (edited)
Avatar
omochimetaru 3/10/2020 4:16 AM
@swift-main func f1(apple: Int..., banana: Int) {} f1(apple: 1, 2, banano: 2)
Avatar
swiftNightly BOT 3/10/2020 4:16 AM
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/Sema/CSSimplify.cpp:704: bool swift::constraints::matchCallArguments(SmallVectorImpl<AnyFunctionType::Param> &, ArrayRef<AnyFunctionType::Param>, const swift::ParameterListInfo &, bool, bool, swift::constraints::MatchCallArgumentListener &, SmallVectorImpl<ParamBinding> &): Assertion `args[fromArgIdx].getLabel().empty()' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOLinux.build/module.modulemap -module-name main -lLibraries 1. Swift version 5.2-dev (LLV
Avatar
omochimetaru 3/10/2020 4:16 AM
倒した
Avatar
Kishikawa Katsumi 3/10/2020 5:22 AM
おお〜、おもしろい不具合だ
Avatar
omochimetaru 3/10/2020 5:23 AM
Xcode11.3とXcode11.4 beta1 , beta3 だと大丈夫だったので割と新しいバグっぽい。 (edited)
Avatar
omochimetaru 3/14/2020 2:12 PM
@swift-main func f(aa: Int, bb: Int, cc: Int = 0) {} f(bbx: 0) (edited)
Avatar
swiftNightly BOT 3/14/2020 2:12 PM
exit status: 1 with stderr:<stdin>:3:2: error: incorrect argument labels in call (have 'bbx:', expected 'aa:bb:cc:') f(bbx: 0) ^~~~ aa <stdin>:3:3: error: missing argument for parameter 'aa' in call f(bbx: 0) ^ aa: <#Int#>, <stdin>:1:6: note: 'f(aa:bb:cc:)' declared here func f(aa: Int, bb: Int, cc: Int = 0) {} ^ (edited)
Avatar
omochimetaru 3/14/2020 2:16 PM
@swift-main -frontend -typecheck func f() {}
Avatar
swiftNightly BOT 3/14/2020 2:16 PM
no output
Avatar
omochimetaru 3/14/2020 2:17 PM
@swift-main -frontend -typecheck -debug-constraints func f(){} f()
Avatar
swiftNightly BOT 3/14/2020 2:17 PM
stderr:---Constraint solving at [<stdin>:2:1 - line:2:3]--- (overload set choice binding $T0 := () -> ()) ---Initial constraints for the given expression--- (call_expr type='()' location=<stdin>:2:1 range=[<stdin>:2:1 - line:2:3] arg_labels= (declref_expr type='() -> ()' location=<stdin>:2:1 range=[<stdin>:2:1 - line:2:1] decl=main.(file).f()@<stdin>:1:6 function_ref=single) (tuple_expr type='()' location=<stdin>:2:2 range=[<stdin>:2:2 - line:2:3])) Score: 0 0 0 0 0 0 0 0 0 0 0 0 Contextual Type: <null> Type Variables: $T0 [lvalue allowed] [noescape allowed] as () -> () @ locator@0x8d2bf90 [DeclRef@<stdin>:2:1] $T1 [noescape allowed] as () @ locator@0x8d2bff8 [Call@<stdin>:2:1 -> function result] Active Constraints: Inactive Constraints: Resolved overloads: selected overload set choice f: $T0 == () -> () (found solution 0 0 0 0 0 0 0 0 0 0 0 0) ---Solver statistics--- Total number of scopes explored: 1 Maximum depth reached while exploring solutions: 1 Time: 4.000000e+00ms ---Solution--- Fixed score: 0 0 0 0 0 0 0 0 0 0 0 0 Type variables: $T1 as () @ locator@0x8d2bff8 [Call@<stdin>:2:1 -> function result] $T0 as () -> () @ locator@0x8d2bf90 [DeclRef@<stdin>:2:1] Overload choices: locator@0x8d2bf90 [DeclRef@<stdin>:2:1] with main.(file).f()@<stdin>:1:6 as f: () -> () Constraint restrictions: Disjunction choices: ---Type-checked expression--- (call_expr type='()' location=<stdin>:2:1 range=[<stdin>:2:1 - line:2:3] arg_labels= (declref_expr type='() -> ()' location=<stdin>:2:1 range=[<stdin>:2:1 - line:2:1] decl=main.(file).f()@<stdin>:1:6 function_ref=single) (tuple_expr type='()' location=<stdin>:2:2 range=[<stdin>:2:2 - line:2:3]))
Avatar
omochimetaru 3/14/2020 2:18 PM
@swift-main -frontend -typecheck func f(aa: Int..., bb: Int, cc: Int) {} f(aa: 1, 2, 3, bbx: 4, cc: 5) (edited)
Avatar
swiftNightly BOT 3/14/2020 2:18 PM
exit status: 1 with stderr:<stdin>:2:2: error: incorrect argument label in call (have 'aa:_:_:bbx:cc:', expected 'aa:_:_:bb:cc:') f(aa: 1, 2, 3, bbx: 4, cc: 5) ^ ~~~ bb (edited)
Avatar
omochimetaru 3/14/2020 2:23 PM
@swift-main -frontend -typecheck -debug-constraints func f(aa: Int, bb: Int) {} f(aa: 1, aa: 2) (edited)
Avatar
swiftNightly BOT 3/14/2020 2:23 PM
exit status: 1 with stderr:---Constraint solving at [<stdin>:2:1 - line:2:15]--- (overload set choice binding $T0 := (Int, Int) -> ()) (attempting fix [fix: re-label argument(s)] @ locator@0x95ce7c0 [Call@<stdin>:2:1 -> apply argument]) (increasing score due to attempting to fix the source) ---Initial constraints for the given expression--- (call_expr type='()' location=<stdin>:2:1 range=[<stdin>:2:1 - line:2:15] arg_labels=aa:aa: (declref_expr type='(Int, Int) -> ()' location=<stdin>:2:1 range=[<stdin>:2:1 - line:2:1] decl=main.(file).f(aa:bb:)@<stdin>:1:6 function_ref=single) (tuple_expr type='(aa: $T1, aa: $T2)' location=<stdin>:2:2 range=[<stdin>:2:2 - line:2:15] names=aa,aa (integer_literal_expr type='$T1' location=<stdin>:2:7 range=[<stdin>:2:7 - line:2:7] value=1 builtin_initializer=**NULL** initializer=**NULL**) (integer_literal_expr type='$T2' location=<stdin>:2:14 range=[<stdin>:2:14 - line:2:14] value=2 builtin_initializer=**NULL** initializer=**NULL**))) Score: 2 0 0 0 0 0 0 0 0 0 0 0 Contextual Type: <null> Type Variables: $T0 [lvalue allowed] [noescape allowed] as (Int, Int) -> () @ locator@0x95ce4e0 [DeclRef@<stdin>:2:1] $T1 [noescape allowed] literal=3 bindings={(subtypes of) (default from ExpressibleByIntegerLiteral) Int} @ locator@0x95ce530 [IntegerLiteral@<stdin>:2:7] $T2 [noescape allowed] literal=3 bindings={(subtypes of) (default from ExpressibleByIntegerLiteral) Int} @ locator@0x95ce5e8 [IntegerLiteral@<stdin>:2:14] $T3 [noescape allowed] as () @ locator@0x95ce6f8 [Call@<stdin>:2:1 -> function result] Active Constraints: Inactive Constraints: $T1 literal conforms to ExpressibleByIntegerLiteral [[locator@0x95ce530 [IntegerLiteral@<stdin>:2:7]]]; $T2 literal conforms to ExpressibleByIntegerLiteral [[locator@0x95ce5e8 [IntegerLiteral@<stdin>:2:14]]]; $T1 arg conv Int [[locator@0x95ce818 [Call@<stdin>:2:1 -> apply argument -> comparing call argument #0 to parameter #0]]]; $T2 arg conv Int [[locator@0x95ce8a8 (edited)
Avatar
@swift-main -frontend -typecheck -enable-educational-notes -diagnostic-documentation-path /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/userdocs/diagnostics protocol P { associatedtype T } func f(p: P) {}
Avatar
swiftNightly BOT 3/15/2020 11:03 AM
exit status: 1 with stderr:<stdin>:2:11: error: protocol 'P' can only be used as a generic constraint because it has Self or associated type requirements func f(p: P) {} ^
Avatar
@norio_nomura botってswiftのソースコード持ってますか?バイナリしか持ってない?
Avatar
ソースコードは持っていません。
11:09 AM
https://hub.docker.com/r/norionomura/swift にボットと必要なライブラリを加えたDockerイメージで動いてます。
Avatar
なるほど。 ↑の-diagnostics-documentation-pathにswiftリポジトリの/userdocs/diagnostics を指定すると使える新機能があるので参照したかった。
Avatar
ふむ。ソースコード全体を持つのは容量的にちょっと厳しいかな。
Avatar
ああ、容量の負担があるのかあ。
11:14 AM
そのうち /share とかにデプロイされるようになるといいな。
11:15 AM
swift_install_in_component(DIRECTORY diagnostics DESTINATION "share/doc/swift" COMPONENT compiler)
11:15 AM
いやなんかかいてあるな
11:17 AM
@swift-main -frontend -typecheck -enable-educational-notes -diagnostic-documentation-path /usr/share/doc/swift/diagnostics extension (Int, Int) {} (edited)
Avatar
swiftNightly BOT 3/15/2020 11:17 AM
exit status: 1 with stderr:<stdin>:1:1: error: non-nominal type '(Int, Int)' cannot be extended extension (Int, Int) {} ^ ~~~~~~~~~~ Nominal types -------------- In Swift, a type is considered a nominal type if it is named. In other words, it has been defined by declaring the type somewhere in code. Examples of nominal types include classes, structs and enums, all of which must be declared before using them. Nominal types are an important concept in Swift because they can be extended, explicitly initialized using the 'MyType()' syntax, and may conform to protocols. In contrast, non-nominal types have none of these capabilities. A non-nominal type is any type which is not nominal. They are sometimes called “structural types” because they are usually obtained by composing other types. Examples include function types like '(Int) -> (String)', tuple types like '(Int, String)', metatypes like 'Int.Type', and special types like 'Any' and 'AnyObject'. Whether the name of a protocol refers to a nominal or non-nominal type depends on where it appears in code. When used in a declaration or extension like 'extension MyProtocol { … }', 'MyProtocol' refers to a protocol type, which is nominal. This means that it may be extended and conform to protocols. However, when written as the type of a constant or variable, 'MyProtocol' instead refers to a non-nominal, existential type. As a result, code like 'let value: MyProtocol = MyProtocol()' is not allowed because 'MyProtocol' refers to a non-nominal type in this context and cannot be explicitly initialized. (edited)
Avatar
swift-5.2とswift-nightlyには /usr/share/doc/swift/diagnostics 入ってる。
🙏 1
Avatar
出た〜
Avatar
$ docker-swiftnightly-run ls -la /usr/share/doc/swift/diagnostics total 28 drwxr-xr-x 2 root root 4096 Mar 14 05:33 . drwxr-xr-x 3 root root 4096 Mar 14 05:33 .. -rw-r--r-- 1 root root 1898 Mar 14 04:05 associated-type-requirements.md -rw-r--r-- 1 root root 1162 Mar 14 04:05 complex-closure-inference.md -rw-r--r-- 1 root root 1501 Mar 14 04:05 dynamic-callable-requirements.md -rw-r--r-- 1 root root 1431 Mar 14 04:05 nominal-types.md -rw-r--r-- 1 root root 727 Mar 14 04:05 property-wrapper-requirements.md $ docker-swift52-run ls -la /usr/share/doc/swift/diagnostics total 16 drwxr-xr-x 2 root root 4096 Mar 15 09:30 . drwxr-xr-x 3 root root 4096 Mar 15 09:30 .. -rw-r--r-- 1 root root 1162 Mar 15 07:57 complex-closure-inference.md -rw-r--r-- 1 root root 1440 Mar 15 07:57 nominal-types.md
Avatar
@swift-main -frontend -typecheck -enable-experimental-diagnostic-formatting extension (Int, Int) {}
Avatar
swiftNightly BOT 3/15/2020 11:19 AM
exit status: 1 with stderr:<stdin>:1:1 1 | extension (Int, Int) {} | ~~~~~~~~~~ | ^ error: non-nominal type '(Int, Int)' cannot be extended 2 |
Avatar
あとこれも。
Avatar
へー
Avatar
あと、GSoC2020で、エラーメッセージの国際化ってテーマも出てました。
11:21 AM
エラーメッセージ系を強化したいっぽい。
Avatar
macOS版にも入ってるね。
Avatar
macOS版って?
Avatar
OSSツールチェイン
Avatar
あなるほど
Avatar
$ la (dirname (xcrun --toolchain org.swift.52202003141a -find swift))/../share/doc/swift/diagnostics total 16 drwxr-xr-x 4 norio staff 128B 3 15 11:16 ./ drwxr-xr-x 3 norio staff 96B 3 15 11:16 ../ -rw-r--r-- 1 norio staff 1.1K 3 15 07:56 complex-closure-inference.md -rw-r--r-- 1 norio staff 1.4K 3 15 07:56 nominal-types.md
Avatar
[omochi@omochi-iMacPro diagnostics]$ pwd /Applications/Xcode11.4.beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/doc/swift/diagnostics [omochi@omochi-iMacPro diagnostics]$ ls complex-closure-inference.md nominal-types.md
11:27 AM
Xcode11.4 beta 3 にも同梱されてた。
Avatar
@swift-main -frontend -typecheck -enable-educational-notes -diagnostic-documentation-path /usr/share/doc/swift/diagnostics protocol P { associatedtype T } func f(p: P) {}
Avatar
swiftNightly BOT 3/15/2020 11:36 AM
exit status: 1 with stderr:<stdin>:2:11: error: protocol 'P' can only be used as a generic constraint because it has Self or associated type requirements func f(p: P) {} ^ Using Protocols with 'Self' or Associated Type Requirements Protocols in Swift may be used as types, as part of a generic constraint, or as part of an opaque result type. // CustomStringConvertible can be used as a type. func foo(bar: CustomStringConvertible) { /* ... */ } // ...or as a generic constraint on 'T'. func bar<T: CustomStringConvertible>(baz: T) { /* ... */ } // ...or as part of an opaque result type. func baz() -> some CustomStringConvertible { /* ... */ } While all Swift protocols can be used as generic constraints and as part of opaque result types, not all protocols can be used as types in general. Specifically, if a protocol has a requirement which references 'Self' or an associated type, it cannot be used as a type. One such protocol is 'Identifiable', which has the requirement 'var id: ID { get }', where 'ID' is an associated type. As a result, the following code is not allowed: func foo(bar: Identifiable) { /* ... */ } // error: protocol 'Identifiable' can only be used as a generic constraint because it has Self or associated type requirements Protocols like 'Identifiable' which have 'Self' or associated type requirements cannot be used as types because such types would rarely be useful in practice. They would be unable to allow use of 'Self' or associated type requirements like 'var id: ID { get }' because the associated type is not specified. When working with protocols having 'Self' or associated type requirements constrained generics, opaque result types, or manual type erasure is sufficient to support most use cases. To learn more, see the [Protocols](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html), [Generics](https://docs.swift.org/swift-book/LanguageGuide/Generics.html), and [Opaque Types](https://docs.swif
Avatar
markdownのコードブロックを認識してインデントしてる。
11:38 AM
リンク部分はそのままだ。まあリンク作れんしなあ。
Avatar
Xcode projectのOTHER_SWIFT_FLAGS-Xfrontend -enable-educational-notes -Xfrontend -diagnostic-documentation-path -Xfrontend $TOOLCHAIN_DIR/usr/share/doc/swift/diagnosticsって設定してエラーを出させてみたけど、Xcodeのエラーログではmarkdown syntax認識されなかった。
Avatar
IDE連携モードの時は生のマークダウンが渡ってて、将来的にはXcode側でレンダリングするのかな。 Xcodeからならリンク部分もクリックできるようになりそう。
12:50 PM
結構良さそうな機能だな。PATとかみんなハマるし。
Avatar
全ボットダウン中…
Avatar
Kishikawa Katsumi 3/24/2020 10:18 AM
あらら 🙏
Avatar
このDiscordサーバーが新しいFeatureをサポートするようになり、ボットで使ってるDiscordライブラリSwordがそのFeatureを認識出来なくてクラッシュしてた。
12:00 PM
新しいFeatureはANIMATED_ICON guild has access to set an animated guild iconだったかな。
Avatar
もしかしてさっき @tarunon がboost課金したからか?
Avatar
お。。
12:01 PM
それっぽいですね
12:01 PM
AnimatedIconか。申し訳ない
Avatar
まあ、Swordが悪い。
Avatar
とりあえず1週間僕のboostきかなくなるんですが
12:02 PM
対応まで外しておきます
Avatar
Swordが悪いと知ってて、それを古いままパッチ当てて使ってる僕が悪い。
12:02 PM
5.0以降のボットは対応しました。 (edited)
Avatar
全完了したら戻すのでお知らせくださいまし (edited)
Avatar
古いボットもdeploy待ちなだけなので、戻していただいて構いません。
Avatar
12:03 PM
ではそのままで。
🙂 1
Avatar
norio_nomura 3/24/2020 1:21 PM
@swift-4.0.3 @swift-4.1.3 @swift-4.2.4 @swift-5.0.3 @swift-5.1.5 @swift-5.2.5 @swift-main -version
Avatar
swiftNightly BOT 3/24/2020 1:21 PM
Swift version 5.3-dev (LLVM fa328efd5a, Swift 667bec0f21) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 5.0.3 (swift-5.0.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 4.2.4 (swift-4.2.4-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 5.1.5 (swift-5.1.5-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 4.1.3 (swift-4.1.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 4.0.3 (swift-4.0.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
Swift version 5.2-dev (Swift 33150e32b4) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 3/24/2020 1:22 PM
復帰した。
🙏 3
Avatar
@swift-5.2.5 class Foo: Foo.Base { class Base {} }
Avatar
exit status: 1 with stderr:<stdin>:1:7: error: circular reference class Foo: Foo.Base { ^ <stdin>:1:16: note: through reference here class Foo: Foo.Base { ^
Avatar
@swift-5.1.5 class Foo: Foo.Base { class Base {} }
Avatar
no output
Avatar
omochimetaru 4/20/2020 2:31 PM
@swift-5.2.5 struct S { let a: Int = 1 } S(a: 2)
Avatar
exit status: 1 with stderr:<stdin>:2:6: error: argument passed to call that takes no arguments S(a: 2) ^
Avatar
@swift-5.2.5 -O class Foo { private let deinitBody: () -> Void init(_ deinitBody: @escaping () -> Void) { self.deinitBody = deinitBody } deinit { deinitBody() } } func main() { var a = 42 var foo = Foo {} foo = Foo { a = -1 } let _ = foo // to ignore warnings print(a) } main() (edited)
Avatar
-1 (edited)
Avatar
@swift-5.3.3 -version
Avatar
Swift version 5.3-dev (LLVM 38f04f051e, Swift 587da7ce60) Target: x86_64-unknown-linux-gnu
Avatar
@swift-5.2.5 @swift-5.3.3 class Record { var storage: [String: Any] init(_ storage: [String: Any]) { self.storage = storage } } extension Record { @propertyWrapper public struct Field<Value> { @available(*, unavailable) public var wrappedValue: Value { fatalError("only works on instance properties of classes") } private let key: String public init(key: String) { self.key = key } public static subscript<Instance: Record>( _enclosingInstance instance: Instance, wrapped wrappedKeyPath: KeyPath<Instance, Value>, storage storageKeyPath: ReferenceWritableKeyPath<Instance, Self> ) -> Value { let field = instance[keyPath: storageKeyPath] return instance.storage[field.key] as! Value } } } class User: Record { @Field(key: "id") var id: Int } let user = User(["id": 100]) print(user.id) (edited)
Avatar
100 (edited)
Avatar
100 (edited)
Avatar
@swift-5.3.3 class Record { var storage: [String: Any] init(_ storage: [String: Any]) { self.storage = storage } } extension Record { @propertyWrapper public struct Field<Value> { @available(*, unavailable) public var wrappedValue: Value { get { fatalError("only works on instance properties of classes") } set { fatalError("only works on instance properties of classes") } } private let key: String public init(key: String) { self.key = key } public static subscript<Instance: Record>( _enclosingInstance instance: Instance, wrapped wrappedKeyPath: ReferenceWritableKeyPath<Instance, Value>, storage storageKeyPath: ReferenceWritableKeyPath<Instance, Self> ) -> Value { get { let field = instance[keyPath: storageKeyPath] return instance.storage[field.key] as! Value } set {} } } } class User: Record { @Field(key: "id") var id: Int } let user = User(["id": 100]) print(user.id) (edited)
Avatar
100 (edited)
Avatar
@swift-5.3.3 class Base { class var keyPath: AnyKeyPath { fatalError() } } final class Derived: Base { override class var keyPath: AnyKeyPath { \Self.value } var value: Int = 0 } print(Derived.keyPath)
Avatar
swift53 BOT 5/1/2020 2:44 AM
exit status: 4 with stderr:Fatal error: could not demangle keypath type from '�: file /home/buildnode/jenkins/workspace/oss-swift-5.3-package-linux-ubuntu-16_04/swift/stdlib/public/core/KeyPath.swift, line 2623 Current stack trace: 0 libswiftCore.so 0x00007fa81bf3dc30 swift_reportError + 50 1 libswiftCore.so 0x00007fa81bfb01a0 _swift_stdlib_reportFatalErrorInFile + 115 2 libswiftCore.so 0x00007fa81bc7b465 <unavailable> + 1410149 3 libswiftCore.so 0x00007fa81bc7b0a7 <unavailable> + 1409191 4 libswiftCore.so 0x00007fa81bc7b642 <unavailable> + 1410626 5 libswiftCore.so 0x00007fa81bc79a70 _assertionFailure(_:_:file:line:flags:) + 523 6 libswiftCore.so 0x00007fa81bd55451 <unavailable> + 2303057 7 libswiftCore.so 0x00007fa81bd556ae <unavailable> + 2303662 8 libswiftCore.so 0x00007fa81bd54c97 <unavailable> + 2301079 9 libswiftCore.so 0x00007fa81bd54990 _swift_getKeyPath(pattern:arguments:) + 120 12 swift 0x0000000000599cdc <unavailable> + 1678556 13 swift 0x000000000058723f <unavailable> + 1602111 14 swift 0x000000000056c471 <unavailable> + 1492081 15 swift 0x000000000055fa38 <unavailable> + 1440312 16 swift 0x000000000055c87e <unavailable> + 1427582 17 swift 0x00000000004d653b <unavailable> + 877883 18 libc.so.6 0x00007fa81e044740 __libc_start_main + 240 19 swift 0x00000000004d5fe9 <unavailable> + 876521 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftB
Avatar
@swift-5.1.5 @swift-5.2.5 func foo(_ closure: () -> Void, defaultArg: Int = 0) { closure() } foo { print("foo") }
Avatar
exit status: 1 with stderr:<stdin>:5:4: error: missing argument for parameter #1 in call foo { print("foo") } ^ (<#() -> Void#>) <stdin>:1:6: note: 'foo(_:defaultArg:)' declared here func foo(_ closure: () -> Void, defaultArg: Int = 0) { ^
Avatar
foo
Avatar
やはりSwift 5.2から最後の引数がデフォルト引数の時に、その1つ前のクロージャがtrailing closureとして呼べるようになっている
Avatar
yutailang0119 5/13/2020 12:56 PM
SE-0279の下準備がされていた?
Avatar
omochimetaru 5/13/2020 3:45 PM
0279の前からmasterでは入ってたよ (edited)
Avatar
なるほどー。いつくらいの変更なんだろう。
11:44 PM
https://github.com/Quick/Nimble/issues/755 これで動き見てて気付きました
I have read CONTRIBUTING and have done my best to follow them. What did you do? Using containElementSatisfying in swift test using XCTest (not QuickSpec). Tests compile and run in Xcode 11.4 on my ...
Avatar
omochimetaru 5/14/2020 2:01 AM
クロージャの部分がautoclosureなケースであてはまったのか
2:05 AM
…efaulted If the last parameter is defaulted, there might be an attempt to use a trailing closure with previous parameter that accepts a function type e.g. ```swift func foo(_: () -&gt; Int, ...
2:06 AM
いつくらいの変更なんだろう。
2019/11/2のコミット。半年前ですね。
Avatar
yutailang0119 5/14/2020 2:06 AM
結構前だった
Avatar
omochimetaru 5/14/2020 2:07 AM
これデフォルト引数が一個の場合だけしかできなくて
Avatar
おー、ありがとうございます!
Avatar
omochimetaru 5/14/2020 2:08 AM
2個や3個でも同じ挙動になるべきだろうと思って
2:08 AM
This patch improve trailing closure matching with parameters. Currently, trailing closure can match with function parameter followed by one defaulted parameter. But it can not do if: function type...
2:08 AM
PRを出したらマージされたんだけど、そのあといろいろあってrevertされた。
Avatar
なるほど https://bugs.swift.org/browse/SR-12291 これ、Nimbleのビルドがエラーになったやつだ。 https://github.com/Quick/Nimble/issues/733
https://travis-ci.org/github/Quick/Nimble/jobs/669964944 /home/travis/build/Quick/Nimble/Tests/NimbleTests/Matchers/PostNotificationTest.swift:17:9: error: ambiguous use of &#39;expect&#39;...
Avatar
omochimetaru 5/14/2020 2:11 AM
これさ〜
2:11 AM
2このケースでリグレッションになるなら
2:11 AM
同じ理屈で1このケースでもリグレッションがあったはずだと思うんだけど😠
Avatar
この件があったからsource-compat-suiteにNimble追加してくれたのか https://github.com/apple/swift-source-compat-suite/pull/418
The overload resolution broke recently on master (SR-12291). Add this to the test suite for future testing. Pull Request Description Replace with a description of this pull request. Instructions f...
Avatar
omochimetaru 5/14/2020 2:14 AM
そんな因果がw
2:14 AM
じゃあ俺がPR29845をやったことでNimbleがそこに入ったって事だw
😆 1
Avatar
色々話が繋がって面白い、助かりました 🙌
😀 1
Avatar
@swift-5.3.3 protocol Dekiru { static var hoge: Dekiruzo { get } } enum Dekiruzo: Dekiru { case hoge } (edited)
Avatar
swift53 BOT 6/2/2020 4:49 PM
no output (edited)
Avatar
@swift-5.3.3 protocol P { associatedtype T static var hoge: Types<T> { get } } enum Types<T>: P { case hoge }
Avatar
swift53 BOT 6/2/2020 4:51 PM
no output
Avatar
@swift-5.3.3 protocol P { static var hoge: Types<Int> { get } } enum Types<T>: P { case hoge }
Avatar
swift53 BOT 6/2/2020 4:51 PM
exit status: 1 with stderr:<stdin>:5:6: error: type 'Types<T>' does not conform to protocol 'P' enum Types<T>: P { ^ <stdin>:6:10: note: candidate has non-matching type '<T> (Types<T>.Type) -> Types<T>' case hoge ^ <stdin>:2:16: note: protocol requires property 'hoge' with type 'Types<Int>'; do you want to add a stub? static var hoge: Types<Int> { get } ^
Avatar
@swift-5.3.3 protocol P { static var hoge: Types<Int> { get } } enum Types<T> { case hoge } extension Types: P where T == Int {} func use<T>(_ type: Types<T>) { print("1", type) } use(.hoge) (edited)
Avatar
swift53 BOT 6/2/2020 4:57 PM
exit status: 1 with stderr:<stdin>:15:1: error: generic parameter 'T' could not be inferred use(.hoge) ^ <stdin>:11:6: note: in call to function 'use' func use<T>(_ type: Types<T>) { ^ (edited)
Avatar
@swift-5.3.3 protocol EntityProtocol { associatedtype ID init(id: ID) } class Entity<ID>: EntityProtocol { let id: ID required init(id: ID) { self.id = id } enum CodingKeys: CodingKey { case id(String) var stringValue: String { switch self { case .id(let id): return id } } var intValue: Int? { nil } init?(stringValue: String) { self = .id(stringValue) } init?(intValue: Int) { return nil } } class func codingKeysForID() -> CodingKeys { .id("id") } } extension EntityProtocol where Self: Decodable, ID: Decodable { init(from decoder: Decoder) throws { let type = Self.self as! Entity<ID>.Type let c = try decoder.container(keyedBy: type.CodingKeys.self) self.init(id: try c.decode(ID.self, forKey: type.codingKeysForID())) } } (edited)
Avatar
no output
Avatar
@swift-5.3.3 struct MySet<Element: Hashable> { private var set: Set<Element> } extension MySet: Collection { subscript(idx: Set<Element>.Index) -> Element { set[idx] } var startIndex: Set<Element>.Index { set.startIndex } var endIndex: Set<Element>.Index { set.endIndex } func index(after i: Set<Element>.Index) -> Set<Element>.Index { set.index(after: i) } } (edited)
Avatar
exit status: 1 with stderr:<stdin>:6:56: error: expected '{' to start setter definition subscript(idx: Set<Element>.Index) -> Element { set[idx] } ^ <stdin>:7:45: error: expected '{' to start setter definition var startIndex: Set<Element>.Index { set.startIndex } ^ <stdin>:8:43: error: expected '{' to start setter definition var endIndex: Set<Element>.Index { set.endIndex } ^ (edited)
Avatar
@swift-5.3.3 struct MySet<Element: Hashable> { private var _set: Set<Element> } extension MySet: Collection { subscript(idx: Set<Element>.Index) -> Element { _set[idx] } var startIndex: Set<Element>.Index { _set.startIndex } var endIndex: Set<Element>.Index { _set.endIndex } func index(after i: Set<Element>.Index) -> Set<Element>.Index { _set.index(after: i) } }
Avatar
no output
Avatar
@swift-5.2.5 import Foundation protocol Foo: NSObjectProtocol { func a() } class Bar: NSObject, Foo { func a() { } } print(class_getInstanceMethod(Bar.self, Selector("a")))
Avatar
swift52 BOT 7/3/2020 1:54 AM
exit status: 1 with stderr:<stdin>:13:7: error: use of unresolved identifier 'class_getInstanceMethod' print(class_getInstanceMethod(Bar.self, Selector("a"))) ^~~~~~~~~~~~~~~~~~~~~~~ <stdin>:13:41: error: use of unresolved identifier 'Selector' print(class_getInstanceMethod(Bar.self, Selector("a"))) ^~~~~~~~
Avatar
無いか…
Avatar
@swift-5.2.5 class A { class var i: String { "i" } init() {} func setup() { a = { if let a = self.a { return a() } return Self.i } } var a: (() -> String)? } class Test { weak var a: A? init(a: A) { self.a = a a.setup() } func main() { print(a?.a?()) } } Test(a: A()).main()
Avatar
exit status: 11 with stderr:<stdin>:21:15: warning: expression implicitly coerced from 'String?' to 'Any' print(a?.a?()) ^~~~~~~ <stdin>:21:19: note: provide a default value to avoid this warning print(a?.a?()) ~~~~^~~ ?? <#default value#> <stdin>:21:19: note: force-unwrap the value to avoid this warning print(a?.a?()) ~~~~^~~ ! <stdin>:21:19: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(a?.a?()) ~~~~^~~ as Any Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-m
Avatar
@swift-5.3.3 class A { class var i: String { "i" } init() {} func setup() { a = { if let a = self.a { return a() } return Self.i } } var a: (() -> String)? } class Test { weak var a: A? init(a: A) { self.a = a a.setup() } func main() { print(a?.a?()) } } Test(a: A()).main()
Avatar
exit status: 11 with stderr:<stdin>:21:15: warning: expression implicitly coerced from 'String?' to 'Any' print(a?.a?()) ^~~~~~~ <stdin>:21:19: note: provide a default value to avoid this warning print(a?.a?()) ~~~~^~~ ?? <#default value#> <stdin>:21:19: note: force-unwrap the value to avoid this warning print(a?.a?()) ~~~~^~~ ! <stdin>:21:19: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(a?.a?()) ~~~~^~~ as Any Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-m
Avatar
@swift-main struct NotEquatable {} func test() { struct A: Equatable { var value: NotEquatable static func == (lhs: A, rhs: A) -> Bool { true } } }
Avatar
swiftNightly BOT 7/18/2020 4:49 PM
exit status: 1 with stderr:<stdin>:4:12: error: type 'A' does not conform to protocol 'Equatable' struct A: Equatable { ^ <stdin>:5:13: note: stored property type 'NotEquatable' does not conform to protocol 'Equatable', preventing synthesized conformance of 'A' to 'Equatable' var value: NotEquatable ^ Swift.==:1:24: note: candidate would match if 'A' conformed to 'RawRepresentable' @inlinable public func == <T>(lhs: T, rhs: T) -> Bool where T : RawRepresentable, T.RawValue : Equatable ^ Swift.FloatingPoint:2:24: note: candidate would match if 'A' conformed to 'FloatingPoint' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.BinaryInteger:2:24: note: candidate would match if 'A' conformed to 'BinaryInteger' public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : BinaryInteger ^ Swift._Pointer:2:24: note: candidate would match if 'A' conformed to '_Pointer' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.Strideable:3:35: note: candidate would match if 'A' conformed to 'Strideable' @inlinable public static func == (x: Self, y: Self) -> Bool ^ Swift.StringProtocol:2:35: note: candidate would match if 'A' conformed to 'StringProtocol' @inlinable public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : StringProtocol ^ Swift.SIMD:4:24: note: candidate would match if 'A' conformed to 'SIMD' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.Equatable:2:17: note: protocol requires function '==' with type '(A, A) -> Bool' static func == (lhs: Self, rhs: Self) -> Bool ^
Avatar
@swift-5.2.5 -emit-ir func contains(i: Int, lim: Int) -> Bool { (0..<lim).contains(i) } contains(1, 100)
Avatar
exit status: 1 with stderr:<unknown>:0: error: option '-emit-ir' is not supported by 'swift'; did you mean to use 'swiftc'?
Avatar
norio_nomura 8/1/2020 12:42 AM
-frontendの後に付けると動きます。 @swift-5.2.5 -frontend -emit-ir func contains(_ i: Int, _ lim: Int) -> Bool { (0..<lim).contains(i) } contains(1, 100)
Avatar
; ModuleID = '-' source_filename = "-" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" module asm ".section .swift1_autolink_entries,\220x80000000\22" %TSnySiG = type <{ %TSi, %TSi }> %TSi = type <{ i64 }> @0 = private unnamed_addr constant [46 x i8] c"Can't form Range with upperBound < lowerBound\00" @1 = private unnamed_addr constant [112 x i8] c"/home/buildnode/jenkins/workspace/oss-swift-5.2-package-linux-ubuntu-16_04/swift/stdlib/public/core/Range.swift\00" @2 = private unnamed_addr constant [12 x i8] c"Fatal error\00" @__swift_reflection_version = linkonce_odr hidden constant i16 3 @_swift1_autolink_entries = private constant [49 x i8] c"-lswiftSwiftOnoneSupport\00-lswiftCore\00-lLibraries\00", section ".swift1_autolink_entries", align 8 @llvm.used = appending global [2 x i8*] [i8* bitcast (i16* @__swift_reflection_version to i8*), i8* getelementptr inbounds ([49 x i8], [49 x i8]* @_swift1_autolink_entries, i32 0, i32 0)], section "llvm.metadata", align 8 define protected i32 @main(i32, i8**) #0 { entry: %2 = bitcast i8** %1 to i8* %3 = call swiftcc i1 @"$s4main8containsySbSi_SitF"(i64 1, i64 100) ret i32 0 } define hidden swiftcc i1 @"$s4main8containsySbSi_SitF"(i64, i64) #0 { entry: %i.debug = alloca i64, align 8 %2 = bitcast i64* %i.debug to i8* call void @llvm.memset.p0i8.i64(i8* align 8 %2, i8 0, i64 8, i1 false) %lim.debug = alloca i64, align 8 %3 = bitcast i64* %lim.debug to i8* call void @llvm.memset.p0i8.i64(i8* align 8 %3, i8 0, i64 8, i1 false) %4 = alloca %TSnySiG, align 8 %5 = alloca %TSi, align 8 %6 = alloca %TSi, align 8 %7 = alloca %TSnySiG, align 8 %8 = alloca %TSi, align 8 store i64 %0, i64* %i.debug, align 8 store i64 %1, i64* %lim.debug, align 8 %9 = bitcast %TSnySiG* %4 to i8* call void @llvm.lifetime.start.p0i8(i64 16, i8* %9) br label %10 10: ; preds = %entry %11 = icmp slt i64 %1, 0
🙏 1
Avatar
norio_nomura 8/5/2020 6:30 AM
@swift-5.2.5 -version
Avatar
swift52 BOT 8/5/2020 6:30 AM
Swift version 5.2.4-dev (Swift b623e823d4) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 8/5/2020 6:38 AM
あーこれswift-5.2.5-RELEASEタグが付いたけど、やり直しになるパターンだ…
Avatar
omochimetaru 8/5/2020 6:39 AM
どういうことです?
Avatar
norio_nomura 8/5/2020 6:39 AM
swift -versionが5.2.4-devを返して来る。
Avatar
omochimetaru 8/5/2020 6:40 AM
swift-5.2.5-RELEASEタグを付ける時にバージョン定義を5.2.5に変更するのを忘れてたのか。
Avatar
norio_nomura 8/5/2020 6:44 AM
バージョンの横に表示されてるb623e823d4ってコミットのハッシュではないのかな?
Avatar
omochimetaru 8/5/2020 6:44 AM
え、そうだと思ってた
6:44 AM
Version.cpp のコミットハッシュとか。
Avatar
omochimetaru 8/5/2020 6:48 AM
あ、ほんとだ、これがそのハッシュですね
6:48 AM
The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub.
6:48 AM
↑こっちかと思ってたけど、こっちは #define を参照してるだけだから、
6:48 AM
Version.cpp自体は変化しなかったか。
6:49 AM
#define の値をセットしてるのはそのCMakeList.txtですね。
Avatar
norio_nomura 8/5/2020 6:51 AM
ci.swift.orgのログを見ると、直前までそのハッシュでテストビルドしてたみたいだから、正式リリースバイナリとは違いそう。 https://ci.swift.org/view/Packages/job/oss-swift-5.2-package-linux-ubuntu-16_04/
Avatar
omochimetaru 8/5/2020 6:51 AM
6:51 AM
なんども付け替えてるんですかね?
Avatar
norio_nomura 8/5/2020 6:52 AM
ボットの更新はgithubにタグがついて、タグから予想される予定地にファイルが現れたらリリースとみなしてる。
6:53 AM
forums.swift.orgでアナウンスされない限り、正式リリースでは無いと考えておくべきかな。
Avatar
omochimetaru 8/5/2020 6:53 AM
なるほど。
Avatar
norio_nomura 8/5/2020 6:54 AM
6:54 AM
swift-5.2.5-RELEASEをプレイしているつもり。
Avatar
omochimetaru 8/5/2020 6:55 AM
なるほどw
Avatar
norio_nomura 8/6/2020 12:26 AM
@swift-5.2.5 -version
Avatar
Swift version 5.2.5 (swift-5.2.5-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
norio_nomura 8/21/2020 6:08 AM
@swift-main -Xfrontend -enable-experimental-concurrency func asyncFunc() async { print(#function) } await asyncFunc()
fastparrot 1
Avatar
swiftNightly BOT 8/21/2020 6:08 AM
asyncFunc()
Avatar
@swift-4.0.3 protocol P {} struct S<T: P> {} func fun<T>(arg: S<T>) {}
Avatar
no output
Avatar
@swift-5.2.5 -O import Foundation protocol P { var prev: P? { get set } } struct Foo: P, CustomStringConvertible { var prev: P? let uuid = UUID() var description: String { "Foo(prev: \(prev.map { String(describing: $0) } ?? "nil"), uuid: \(uuid.uuidString.prefix(4)))" } } func insert(_ p: P, into array: inout [P], _ prev: inout P?) { var p = p p.prev = prev prev = p print("new p =", p) array.append(p) } var p: P? var result: [P] = [] insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) for r in result { print("inserted =", r) } print("last 'p' =", p!) (edited)
Avatar
swift52 BOT 9/2/2020 7:02 AM
new p = Foo(prev: nil, uuid: 5D6E) new p = Foo(prev: Foo(prev: nil, uuid: 5D6E), uuid: 0264) new p = Foo(prev: Foo(prev: Foo(prev: nil, uuid: 5D6E), uuid: 0264), uuid: B254) new p = Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 5D6E), uuid: 0264), uuid: B254), uuid: 5D51) new p = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 5D6E), uuid: 0264), uuid: B254), uuid: 5D51), uuid: 0A52) new p = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 5D6E), uuid: 0264), uuid: B254), uuid: 5D51), uuid: 0A52), uuid: 381A) inserted = Foo(prev: nil, uuid: 5D6E) inserted = Foo(prev: nil, uuid: 0264) inserted = Foo(prev: nil, uuid: B254) inserted = Foo(prev: nil, uuid: 5D51) inserted = Foo(prev: nil, uuid: 0A52) inserted = Foo(prev: nil, uuid: 381A) last 'p' = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 5D6E), uuid: 0264), uuid: B254), uuid: 5D51), uuid: 0A52), uuid: 381A) (edited)
Avatar
@swift-5.2.5 import Foundation protocol P { var prev: P? { get set } } struct Foo: P, CustomStringConvertible { var prev: P? let uuid = UUID() var description: String { "Foo(prev: \(prev.map { String(describing: $0) } ?? "nil"), uuid: \(uuid.uuidString.prefix(4)))" } } func insert(_ p: P, into array: inout [P], _ prev: inout P?) { var p = p p.prev = prev prev = p print("new p =", p) array.append(p) } var p: P? var result: [P] = [] insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) insert(Foo(), into: &result, &p) for r in result { print("inserted =", r) } print("last 'p' =", p!)
Avatar
swift52 BOT 9/2/2020 7:03 AM
new p = Foo(prev: nil, uuid: 0628) new p = Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A) new p = Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7) new p = Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7) new p = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7), uuid: 7C27) new p = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7), uuid: 7C27), uuid: 6E9E) inserted = Foo(prev: nil, uuid: 0628) inserted = Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A) inserted = Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7) inserted = Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7) inserted = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7), uuid: 7C27) inserted = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7), uuid: 7C27), uuid: 6E9E) last 'p' = Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: Foo(prev: nil, uuid: 0628), uuid: A27A), uuid: 85E7), uuid: 12A7), uuid: 7C27), uuid: 6E9E)
Avatar
最適化で結果が変わる🤔
Avatar
@swift-5.2.5 import Foundation @propertyWrapper struct DefaultValue<Storage: DefaultValueStorage>: Decodable { var wrappedValue: Storage.Value = Storage.value } extension DefaultValue { init(from decoder: Decoder) throws { let container = try decoder.singleValueContainer() self.wrappedValue = try container.decode(Storage.Value.self) } } protocol DefaultValueStorage { associatedtype Value: Decodable static var value: Value { get } } enum DefaultValueStorages { enum Nil<T: Decodable>: DefaultValueStorage { static var value: T? { nil } } } // MARK: - 1. 直接書く struct S1 { @DefaultValue<DefaultValueStorages.Nil<String>> var string } // MARK: - 2. 別enumでtypealiasする enum Default { typealias Nil<T: Decodable> = DefaultValue<DefaultValueStorages.Nil<T>> } struct S2 { @Default.Nil<String> var string } // MARK: - 3. extension DefaultValueでtypealiasする extension DefaultValue { typealias Nil<T: Decodable> = DefaultValue<DefaultValueStorages.Nil<T>> } struct S3 { @DefaultValue.Nil<String> var string }
Avatar
exit status: 134 with stderr:<stdin>:27:57: error: type annotation missing in pattern @DefaultValue<DefaultValueStorages.Nil<String>> var string ^ <stdin>:35:30: error: type annotation missing in pattern @Default.Nil<String> var string ^ swift: /home/buildnode/jenkins/workspace/oss-swift-5.2-package-linux-ubuntu-16_04/swift/lib/Sema/TypeCheckType.cpp:865: static swift::Type swift::TypeChecker::applyUnboundGenericArguments(swift::UnboundGenericType *, swift::GenericTypeDecl *, swift::SourceLoc, swift::TypeResolution, ArrayRef<swift::Type>): Assertion `!resultType->hasTypeParameter()' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libr
Avatar
@swift-5.3.3 import Foundation @propertyWrapper struct DefaultValue<Storage: DefaultValueStorage>: Decodable { var wrappedValue: Storage.Value = Storage.value } extension DefaultValue { init(from decoder: Decoder) throws { let container = try decoder.singleValueContainer() self.wrappedValue = try container.decode(Storage.Value.self) } } protocol DefaultValueStorage { associatedtype Value: Decodable static var value: Value { get } } enum DefaultValueStorages { enum Nil<T: Decodable>: DefaultValueStorage { static var value: T? { nil } } } // MARK: - 1. 直接書く struct S1 { @DefaultValue<DefaultValueStorages.Nil<String>> var string } // MARK: - 2. 別enumでtypealiasする enum Default { typealias Nil<T: Decodable> = DefaultValue<DefaultValueStorages.Nil<T>> } struct S2 { @Default.Nil<String> var string } // MARK: - 3. extension DefaultValueでtypealiasする extension DefaultValue { typealias Nil<T: Decodable> = DefaultValue<DefaultValueStorages.Nil<T>> } struct S3 { @DefaultValue.Nil<String> var string } (edited)
Avatar
exit status: 134 with stderr:swift: /home/buildnode/jenkins/workspace/oss-swift-5.3-package-linux-ubuntu-16_04/swift/lib/Sema/TypeCheckType.cpp:881: swift::Type swift::TypeChecker::applyUnboundGenericArguments(swift::UnboundGenericType *, swift::GenericTypeDecl *, swift::SourceLoc, swift::TypeResolution, ArrayRef<swift::Type>): Assertion `!resultType->hasTypeParameter()' failed. Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOLinux.build/module.modulemap -module-name main -lLibraries 1. Swift version 5.3-dev (LLVM b87e6c6a2b, Swift 6446e640ec) 2. While evaluating request TypeCh (edited)
Avatar
norio_nomura 9/16/2020 9:39 PM
@swift-5.3.3 -version
Avatar
Swift version 5.3 (swift-5.3-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
@swift-5.3.3 struct Container<Value> { var value: Value init(value: Value) { self.value = value } func withValue(action: (Value) -> ()) { action(value) } } var container = Container<Any>(value: "foo") container.withValue { value in print(value) container.value = "bar" print(value) }
Avatar
exit status: 1 with stderr:<stdin>:2:9: error: initializers may only be declared within a type init(value: Value) { ^ <stdin>:8:1: error: extraneous '}' at top level } ^ <stdin>:1:16: error: cannot find type 'Value' in scope var value: Value ^~~~~ <stdin>:5:29: error: cannot find type 'Value' in scope func withValue(action: (Value) -> ()) { ^~~~~ <stdin>:10:17: error: cannot find 'Container' in scope var container = Container<Any>(value: "foo") ^~~~~~~~~
Avatar
@swift-5.3.3 class Container<Value> { var value: Value init(value: Value) { self.value = value } func withValue(action: (Value) -> ()) { action(value) } } let container = Container<Any>(value: "foo") container.withValue { value in print(value) container.value = "bar" print(value) } (edited)
Avatar
exit status: 1 with stderr:<stdin>:2:9: error: initializers may only be declared within a type init(value: Value) { ^ <stdin>:8:1: error: extraneous '}' at top level } ^ <stdin>:1:16: error: cannot find type 'Value' in scope var value: Value ^~~~~ <stdin>:5:29: error: cannot find type 'Value' in scope func withValue(action: (Value) -> ()) { ^~~~~ <stdin>:10:17: error: cannot find 'Container' in scope let container = Container<Any>(value: "foo") ^~~~~~~~~
Avatar
@swift-5.3.3 struct Container { var value: Any = "foo" func withValue(action: (Any) -> Void) { action(value) } } var container = Container() container.withValue { value in print(value) container.value = "bar" print(value) }
Avatar
foo foo
Avatar
@swift-5.3.3 -O struct Container { var value: Any = "foo" func withValue(action: (Any) -> Void) { action(value) } } var container = Container() container.withValue { value in print(value) container.value = "bar" print(value) }
Avatar
foo bar
Avatar
@swift-5.2.5 -O struct Container { var value: Any = "foo" func withValue(action: (Any) -> Void) { action(value) } } var container = Container() container.withValue { value in print(value) container.value = "bar" print(value) } (edited)
Avatar
foo foo (edited)
Avatar
@swift-5.2.5 -O @swift-5.3.3 -O var global: Any = 1 func withValue(action: (Any) -> Void) { action(global) } withValue { value in print(value) global = 24 print(value) } (edited)
Avatar
1 24 (edited)
Avatar
1 1 (edited)
Avatar
@swift-main import Foundation func download(from url: URL) async throws -> Data { fatalError("Unimplemented yet.") } let url: URL! = nil @asyncHandler func onButtonPressed(_ sender: Any) { do { let data = try await download(from: url) print(data.count) } catch { print("\(error)") } }
Avatar
swiftNightly BOT 9/26/2020 8:47 AM
exit status: 1 with stderr:<stdin>:3:29: error: consecutive statements on a line must be separated by ';' func download(from url: URL) async throws -> Data { ^ ; <stdin>:9:2: error: 'asyncHandler' attribute is only valid when experimental concurrency is enabled @asyncHandler ^ <stdin>:12:29: error: consecutive statements on a line must be separated by ';' let data = try await download(from: url) ^ ; <stdin>:3:6: error: expected '{' in body of function declaration func download(from url: URL) async throws -> Data { ^ <stdin>:3:30: error: cannot find 'async' in scope func download(from url: URL) async throws -> Data { ^~~~~ <stdin>:3:30: error: expected type before '->' func download(from url: URL) async throws -> Data { ^ <stdin>:3:46: error: expected type after '->' func download(from url: URL) async throws -> Data { ^ <stdin>:12:24: error: cannot find 'await' in scope let data = try await download(from: url) ^~~~~
Avatar
async/await なんかフラグがいるんだっけ (edited)
Avatar
-enable-experimental-concurrency
8:49 AM
@swift-main -Xfrontend -enable-experimental-concurrency import Foundation func download(from url: URL) async throws -> Data { fatalError("Unimplemented yet.") } let url: URL! = nil @asyncHandler func onButtonPressed(_ sender: Any) { do { let data = try await download(from: url) print(data.count) } catch { print("\(error)") } }
Avatar
swiftNightly BOT 9/26/2020 8:49 AM
no output
Avatar
おお、すごい!もうコンパイルできてる。
Avatar
型チェックだけじゃなくて、ちゃんと実行可能形式として動くんですね
Avatar
今調べてたら昨日話してた以外にも大量の PR が見つかって、動きそうな感じがしました。
Avatar
@swift-main -Xfrontend -emit-sil -Xfrontend -enable-experimental-concurrency import Foundation func download(from url: URL) async throws -> Data { fatalError("Unimplemented yet.") } let url: URL! = nil @asyncHandler func onButtonPressed(_ sender: Any) { do { let data = try await download(from: url) print(data.count) } catch { print("\(error)") } }
Avatar
swiftNightly BOT 9/26/2020 8:58 AM
sil_stage canonical import Builtin import Swift import SwiftShims import Foundation func download(from url: URL) async throws -> Data @_hasStorage @_hasInitialValue let url: URL! { get } @asyncHandler func onButtonPressed(_ sender: Any) // url sil_global hidden [let] @$s4main3url10Foundation3URLVSgvp : $Optional<URL> // main sil @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): alloc_global @$s4main3url10Foundation3URLVSgvp // id: %2 %3 = global_addr @$s4main3url10Foundation3URLVSgvp : $*Optional<URL> // user: %5 %4 = enum $Optional<URL>, #Optional.none!enumelt // user: %5 store %4 to %3 : $*Optional<URL> // id: %5 %6 = integer_literal $Builtin.Int32, 0 // user: %7 %7 = struct $Int32 (%6 : $Builtin.Int32) // user: %8 return %7 : $Int32 // id: %8 } // end sil function 'main' // download(from:) sil hidden @$s4main8download4from10Foundation4DataVAD3URLV_tYKF : $@convention(thin) (@guaranteed URL) -> (@owned Data, @error Error) { // %0 "url" // user: %1 bb0(%0 : $URL): debug_value %0 : $URL, let, name "url", argno 1 // id: %1 debug_value undef : $Error, var, name "$error", argno 2 // id: %2 %3 = string_literal utf8 "main/<stdin>" // user: %5 %4 = integer_literal $Builtin.Word, 12 // user: %9 %5 = builtin "ptrtoint_Word"(%3 : $Builtin.RawPointer) : $Builtin.Word // user: %9 br bb1 // id: %6 bb1: // Preds: bb0 %7 = integer_literal $Builtin.Int8, 2 // user: %9 br bb2 // id: %8 bb2: // Preds: bb1 %9 = struct $StaticString (%5 : $Builtin.Word, %4 : $Builtin.Word, %7 : $Builtin.Int8) // user: %28 %1
9:01 AM
今の状況でほんとに動くかまではわからないけど、構文は相当の範囲がカバーされてそう。 (edited)
Avatar
@swift-main -Xfrontend -emit-sil -Xfrontend -enable-experimental-concurrency struct Foo { init() async throws { fatalError() } } (edited)
Avatar
swiftNightly BOT 9/30/2020 4:49 AM
exit status: 1 with stderr:<stdin>:2:12: error: initializer cannot be marked 'async' init() async throws { ^~~~~~
Avatar
@swift-main @swift-5.3.3 @swift-5.2.5 @swift-5.0.3 @swift-4.2.4 import Foundation @objc public protocol C { @objc optional var field1: ObjCBool { get set } } extension C { public func set(value: Bool) { self[keyPath: \C.field1] = ObjCBool(value) } }
Avatar
exit status: 134 with stderr:SIL verification failed: keypath value type should match value type of keypath pattern: leafTy == pattern->getValueType().subst(patternSubs)->getCanonicalType() Verifying instruction: -> %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter.1 : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %16 = apply %15<C, Optional<ObjCBool>>(%11, %6, %13) : $@convention(thin) <τ_0_0, τ_0_1> (@in_guaranteed τ_0_0, @guaranteed ReferenceWritableKeyPath<τ_0_0, τ_0_1>, @in τ_0_1) -> () destroy_value %6 : $ReferenceWritableKeyPath<C, Optional<ObjCBool>> // id: %20 In function: // C.set(value:) sil [ossa] @$s4main1CPAAE3set5valueySb_tF : $@convention(method) <Self where Self : C> (Bool, @guaranteed Self) -> () { // %0 // users: %9, %2 // %1 // users: %4, %3 bb0(%0 : $Bool, %1 : @guaranteed $Self): debug_value %0 : $Bool, let, name "value", argno 1 // id: %2 debug_value %1 : $Self, let, name "self", argno 2 // id: %3 %4 = copy_value %1 : $Self // user: %5 %5 = init_existential_ref %4 : $Self : $Self, $C // user: %12 %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter.1 : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %7 = metatype $@thin ObjCBool.Type /
Avatar
exit status: 134 with stderr:SIL verification failed: keypath value type should match value type of keypath pattern: leafTy == pattern->getValueType().subst(patternSubs)->getCanonicalType() Verifying instruction: -> %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter.1 : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %16 = apply %15<C, Optional<ObjCBool>>(%11, %6, %13) : $@convention(thin) <τ_0_0, τ_0_1> (@in_guaranteed τ_0_0, @guaranteed ReferenceWritableKeyPath<τ_0_0, τ_0_1>, @in τ_0_1) -> () destroy_value %6 : $ReferenceWritableKeyPath<C, Optional<ObjCBool>> // id: %20 In function: // C.set(value:) sil @$s4main1CPAAE3set5valueySb_tF : $@convention(method) <Self where Self : C> (Bool, @guaranteed Self) -> () { // %0 // users: %9, %2 // %1 // users: %4, %3 bb0(%0 : @trivial $Bool, %1 : @guaranteed $Self): debug_value %0 : $Bool, let, name "value", argno 1 // id: %2 debug_value %1 : $Self, let, name "self", argno 2 // id: %3 %4 = copy_value %1 : $Self // user: %5 %5 = init_existential_ref %4 : $Self : $Self, $C // user: %12 %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter.1 : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %7 = metatype $@thin ObjCBool.Type
Avatar
exit status: 134 with stderr:SIL verification failed: keypath value type should match value type of keypath pattern Optional<ObjCBool> ObjCBool Verifying instruction: -> %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %16 = apply %15<C, Optional<ObjCBool>>(%11, %6, %13) : $@convention(thin) <τ_0_0, τ_0_1> (@in_guaranteed τ_0_0, @guaranteed ReferenceWritableKeyPath<τ_0_0, τ_0_1>, @in τ_0_1) -> () destroy_value %6 : $ReferenceWritableKeyPath<C, Optional<ObjCBool>> // id: %20 In function: // C.set(value:) sil [ossa] @$s4main1CPAAE3set5valueySb_tF : $@convention(method) <Self where Self : C> (Bool, @guaranteed Self) -> () { // %0 "value" // users: %9, %2 // %1 "self" // users: %4, %3 bb0(%0 : $Bool, %1 : @guaranteed $Self): debug_value %0 : $Bool, let, name "value", argno 1 // id: %2 debug_value %1 : $Self, let, name "self", argno 2 // id: %3 %4 = copy_value %1 : $Self // user: %5 %5 = init_existential_ref %4 : $Self : $Self, $C // user: %12 %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %7 = metatype $@thin ObjCBool.Type // user: %9 // function_ref ObjCBool.init(_:)
Avatar
exit status: 1 with stderr:<stdin>:5:9: error: property cannot be marked @objc because its type cannot be represented in Objective-C var field1: ObjCBool { get set } ^ ~~~~~~~~ <stdin>:5:17: note: Swift structs cannot be represented in Objective-C var field1: ObjCBool { get set } ^~~~~~~~
Avatar
swiftNightly BOT 10/13/2020 4:51 AM
exit status: 134 with stderr:SIL verification failed: keypath value type should match value type of keypath pattern Optional<ObjCBool> ObjCBool Verifying instruction: -> %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %16 = apply %15<C, Optional<ObjCBool>>(%11, %6, %13) : $@convention(thin) <τ_0_0, τ_0_1> (@in_guaranteed τ_0_0, @guaranteed ReferenceWritableKeyPath<τ_0_0, τ_0_1>, @in τ_0_1) -> () destroy_value %6 : $ReferenceWritableKeyPath<C, Optional<ObjCBool>> // id: %20 In function: // C.set(value:) sil [ossa] @$s4main1CPAAE3set5valueySb_tF : $@convention(method) <Self where Self : C> (Bool, @guaranteed Self) -> () { // %0 "value" // users: %9, %2 // %1 "self" // users: %4, %3 bb0(%0 : $Bool, %1 : @guaranteed $Self): debug_value %0 : $Bool, let, name "value", argno 1 // id: %2 debug_value %1 : $Self, let, name "self", argno 2 // id: %3 %4 = copy_value %1 : $Self // user: %5 %5 = init_existential_ref %4 : $Self : $Self, $C // user: %12 %6 = keypath $ReferenceWritableKeyPath<C, Optional<ObjCBool>>, (root $C; settable_property $ObjCBool, id #C.field1!getter : <Self where Self : C> (Self) -> () -> ObjCBool, getter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTK : $@convention(thin) (@in_guaranteed C) -> @out ObjCBool, setter @$s4main1CP6field110Foundation8ObjCBoolVvpAaB_pTk : $@convention(thin) (@in_guaranteed ObjCBool, @in_guaranteed C) -> ()) // users: %20, %16 %7 = metatype $@thin ObjCBool.Type // user: %9 // function_ref ObjCBool.init(_:)
Avatar
@swift-main class Foo<T> {} class Bar: Foo<Bar> {} func foo<F: Foo<F>>(_ foo: F) {}
Avatar
swiftNightly BOT 10/13/2020 1:57 PM
exit status: 1 with stderr:<stdin>:4:13: error: superclass constraint 'F' : 'Foo<F>' is recursive func foo<F: Foo<F>>(_ foo: F) {} ^
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency import Dispatch func suspendAsync<T>( _ body: (_ continuation: @escaping (T) -> ()) -> () ) async -> T { let semaphore = DispatchSemaphore(value: 0) var result: T! body { value in result = value semaphore.signal() } semaphore.wait() return result } extension DispatchQueue { func asyncAfter(deadline: DispatchTime) async { await suspendAsync { continuation in asyncAfter(deadline: deadline) { continuation(()) } } } } @asyncHandler func main() { print("A") await DispatchQueue.global().asyncAfter(deadline: .now() + 1) print("B") await DispatchQueue.global().asyncAfter(deadline: .now() + 1) print("C") } main()
Avatar
swiftNightly BOT 10/16/2020 2:03 PM
A B C
Avatar
@swift-5.3.3 @swift-5.2.5 func primes(upTo number: Int) -> [Int] { precondition(number >= 0) if number < 2 { return [] } var sieve: [Bool] = .init(repeating: false, count: number + 1) for m in stride(from: 3, through: Int(Double(number).squareRoot() + 1.5), by: 2) { if sieve[m] { continue } let maxK = number / m if maxK < 2 { continue } for k in 2 ... maxK { sieve[k * m] = true } } var result: [Int] = [2] for m in stride(from: 3, through: number, by: 2) { if sieve[m] { continue } result.append(m) } return result } print(primes(upTo: 100))
Avatar
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
Avatar
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
Avatar
@swift-5.1.5 func primes(upTo number: Int) -> [Int] { precondition(number >= 0) if number < 2 { return [] } var sieve: [Bool] = .init(repeating: false, count: number + 1) for m in stride(from: 3, through: Int(Double(number).squareRoot() + 1.5), by: 2) { if sieve[m] { continue } let maxK = number / m if maxK < 2 { continue } for k in 2 ... maxK { sieve[k * m] = true } } var result: [Int] = [2] for m in stride(from: 3, through: number, by: 2) { if sieve[m] { continue } result.append(m) } return result } print(primes(upTo: 100))
Avatar
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
Avatar
@swift-5.2.5 print("Hello, World!")
Avatar
Hello, World!
Avatar
@swift-5.3.3 -version
Avatar
Swift version 5.3.1 (swift-5.3.1-RELEASE) Target: x86_64-unknown-linux-gnu
Avatar
execution timeout with no output
👀 1
Avatar
@swift-5.3.3 -O import Foundation func measure(_ body: () -> Void) { let start = Date.timeIntervalSinceReferenceDate for _ in 0 ..< 10 { body() } let end = Date.timeIntervalSinceReferenceDate print((end - start) / 10) } extension Array { mutating func mySwapAt(_ i: Int, _ j: Int) { let t = self[i] self[i] = self[j] self[j] = t } } func swapBySwapAt(_ array: inout [Int]) { for i in array.indices.dropFirst() { array.swapAt(i - 1, i) } } func swapByT(_ array: inout [Int]) { for i in array.indices.dropFirst() { let t = array[i] array[i] = array[i - 1] array[i - 1] = t } } func swapByMySwapAt(_ array: inout [Int]) { for i in array.indices.dropFirst() { array.mySwapAt(i - 1, i) } } let n: Int = 10_000_000 + (1 ... 100).randomElement()! var a: [Int] = Array(1 ... n) measure { swapBySwapAt(&a) } measure { swapByT(&a) } measure { swapByMySwapAt(&a) } print(a.count)
Avatar
0.07282540798187256 0.07877689599990845 0.0749101996421814 10000014
Avatar
手元と結果が違うw
Avatar
omochimetaru 12/4/2020 9:41 AM
Linuxだから?
9:42 AM
あーでもArrayなのか
9:42 AM
Foudationの違いは関係無さそうだ (edited)
Avatar
手元環境だと swapBySwapAt が 10% くらい遅いんだけどなぁ。
Avatar
omochimetaru 12/4/2020 9:43 AM
CPUの違いでベクトル最適化が効いたり効かなかったりとかもあるかも
Avatar
トピックが一つ死んだ😢
Avatar
@swift-5.3.3 -O import Foundation func measure(_ body: () -> Void) { let start = Date.timeIntervalSinceReferenceDate for _ in 0 ..< 10 { body() } let end = Date.timeIntervalSinceReferenceDate print((end - start) / 10) } func mapFilter(_ n: Int) -> [Int] { precondition(n >= 1) return (1 ... n).map { $0 * $0 }.filter { $0 % 7 == 1 } } func lazyMapFilter(_ n: Int) -> [Int] { precondition(n >= 1) return Array((1 ... n).lazy.map { $0 * $0 }.filter { $0 % 7 == 1 }) } func mapFilterByLoop(_ n: Int) -> [Int] { precondition(n >= 1) var result: [Int] = [] for i in 1 ... n { let square = i * i guard square % 7 == 1 else { continue } result.append(square) } return result } let n: Int = 10_000_000 + (1 ... 100).randomElement()! var a = 0 measure { a += mapFilter(n).count } measure { a += lazyMapFilter(n).count } measure { a += mapFilterByLoop(n).count } print(a)
Avatar
0.5088738918304443 0.09912219047546386 0.09465489387512208 85715100
Avatar
@swift-5.3.3 -O import Foundation func measure(_ body: () -> Void) { let start = Date.timeIntervalSinceReferenceDate for _ in 0 ..< 10 { body() } let end = Date.timeIntervalSinceReferenceDate print((end - start) / 10) } func sumOfArray(_ a: [Int], indices: [Int]) -> Int { var sum = 0 for i in indices { sum &+= a[i] } return sum } func sumOfArraySlice(_ a: ArraySlice<Int>, indices: [Int]) -> Int { var sum = 0 for i in indices { sum &+= a[i] } return sum } let n: Int = 1_000_000 + (1 ... 100).randomElement()! let a: [Int] = .init(1 ... n) let b: ArraySlice<Int> = .init(a) let indices: [Int] = a.indices.shuffled() var sum = 0 measure { sum &+= sumOfArray(a, indices: indices) } measure { sum &+= sumOfArraySlice(b, indices: indices) } print(sum)
Avatar
0.02275540828704834 0.022072792053222656 10002010101000
Avatar
なんかいろいろでてくる
Avatar
@swift-5.3.3 -O import Foundation func measure(_ body: () -> Void) { let start = Date.timeIntervalSinceReferenceDate for _ in 0 ..< 10 { body() } let end = Date.timeIntervalSinceReferenceDate print((end - start) / 10) } public func sumOfEvensByStride(_ n: Int) -> Int { var sum = 0 for m in stride(from: 0, through: n * 2, by: 2) { sum &+= m } return sum } public func sumOfEvensByRange(_ n: Int) -> Int { var sum = 0 for m in 0 ... n { sum &+= m * 2 } return sum } public func sumOfMultiplesByStride(_ n: Int, k: Int) -> Int { var sum = 0 for m in stride(from: 0, through: n * k, by: k) { sum &+= m } return sum } public func sumOfMultiplesByRange(_ n: Int, k: Int) -> Int { var sum = 0 for m in 0 ... n { sum &+= m * k } return sum } let n = 100_000_000 + (1 ... 100).randomElement()! var a = 0 measure { a &+= sumOfEvensByStride(n) } measure { a &+= sumOfEvensByRange(n) } measure { a &+= sumOfMultiplesByStride(n, k: 3) } measure { a &+= sumOfMultiplesByRange(n, k: 3) } print(a)
Avatar
0.1298200011253357 0.0950276017189026 0.09767409563064575 0.09397300481796264 500000385000074100
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency // Ported from https://www.raywenderlich.com/741-swift-algorithm-club-swift-merge-sort func mergeSort<T: Comparable>(_ array: [T]) async -> [T] { guard array.count > 1 else { return array } let middleIndex = array.count / 2 async let leftArray = await mergeSort(Array(array[0..<middleIndex])) async let rightArray = await mergeSort(Array(array[middleIndex..<array.count])) return merge(await leftArray, await rightArray) } func merge<T: Comparable>(_ left: [T], _ right: [T]) -> [T] { var leftIndex = 0 var rightIndex = 0 var orderedArray: [T] = [] while leftIndex < left.count && rightIndex < right.count { let leftElement = left[leftIndex] let rightElement = right[rightIndex] if leftElement < rightElement { orderedArray.append(leftElement) leftIndex += 1 } else if leftElement > rightElement { orderedArray.append(rightElement) rightIndex += 1 } else { orderedArray.append(leftElement) leftIndex += 1 orderedArray.append(rightElement) rightIndex += 1 } } while leftIndex < left.count { orderedArray.append(left[leftIndex]) leftIndex += 1 } while rightIndex < right.count { orderedArray.append(right[rightIndex]) rightIndex += 1 } return orderedArray } func getRandomArray(n: Int) -> [Int] { var array = [Int]() for i in 0..<n { array.append(Int.random(in: 0..<1000)) } return array } func test(n: Int) async { let array = getRandomArray(n: n) let sortedArray = await mergeSort(array) print(sortedArray) } runAsyncAndBlock { await test(n: 100) } (edited)
Avatar
swiftNightly BOT 12/13/2020 11:01 AM
[2, 19, 20, 28, 28, 52, 67, 69, 72, 89, 91, 103, 104, 106, 116, 125, 165, 175, 184, 187, 196, 198, 208, 211, 214, 235, 243, 247, 248, 251, 268, 293, 306, 309, 312, 321, 339, 339, 345, 364, 393, 396, 404, 406, 420, 425, 434, 446, 453, 455, 474, 478, 480, 483, 485, 487, 488, 493, 499, 511, 520, 528, 543, 604, 628, 636, 645, 650, 650, 666, 670, 673, 678, 690, 713, 716, 720, 721, 723, 730, 761, 764, 797, 811, 819, 832, 834, 839, 843, 844, 860, 885, 905, 916, 925, 931, 942, 959, 959, 986]stderr:<stdin>:52:7: warning: immutable value 'i' was never used; consider replacing with '_' or removing it for i in 0..<n { ^ _ (edited)
Avatar
5.4のスナップショットは年内に出始めそう。 https://ci.swift.org/view/Swift%205.4/
Avatar
norio_nomura 1/9/2021 1:31 AM
@swift-main -Xfrontend -enable-experimental-concurrency // // main.swift // ConcurrencyPlayground // // Created by Max Desiatov on 07/01/2021. // import _Concurrency import Foundation import FoundationNetworking struct UnknownError: Error {} func download(url: URL) async throws -> Data { try await withUnsafeThrowingContinuation { c in let task = URLSession.shared.dataTask(with: url) { data, _, error in switch (data, error) { case let (_, error?): return c.resume(throwing: error) case let (data?, _): return c.resume(returning: data) case (nil, nil): c.resume(throwing: UnknownError()) } } task.resume() } } runAsyncAndBlock { print("task started") let data = try! await download(url: URL(string: "https://httpbin.org/uuid")!) print(String(data: data, encoding: .utf8)!) } print("end of main") (edited)
Avatar
swiftNightly BOT 1/9/2021 1:31 AM
task started end of main
Avatar
swiftNightly BOT 1/11/2021 12:08 PM
exit status: 11 with stderr:Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace. /usr/bin/swift-frontend[0x56a4d34] /usr/bin/swift-frontend[0x56a2bb0] /usr/bin/swift-frontend[0x56a4f1a] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f6d470ce390] /lib/x86_64-linux-gnu/libc.so.6(strlen+0x26)[0x7f6d45a89746] /lib/x86_64-linux-gnu/libc.so.6(__strdup+0xe)[0x7f6d45a8947e] /usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x1de88)[0x7f6d3e9dde88] /usr/lib/x86_64-linux-gnu/libcurl.so.4(curl_easy_setopt+0x9e)[0x7f6d3e9ed8ae] /usr/lib/swift/linux/libFoundationNetworking.so($s20FoundationNetworking11_EasyHandleC3set3urly0A03URLV_tF+0xcc)[0x7f6d3ed25afc] /usr/lib/swift/linux/libFoundationNetworking.so($s20FoundationNetworking16_HTTPURLProtocolC19configureEasyHandle3for4bodyyAA10URLRequestV_AA14URLSessionTaskC5_BodyOtF+0x230)[0x7f6d3ecf65f0] /usr/lib/swift/linux/libFoundationNetworking.so(+0xd5bb3)[0x7f6d3ed04bb3] /usr/lib/swift/linux/libFoundationNetworking.so($s20FoundationNetworking14URLSessionTaskC7getBody10completionyyAC01_F0Oc_tF+0x128)[0x7f6d3ed14a48] /usr/lib/swift/linux/libFoundationNetworking.so($s20FoundationNetworking15_NativeProtocolC16startNewTransfer4withyAA10URLRequestV_tF+0xe1)[0x7f6d3ed02041] /usr/lib/swift/linux/libFoundationNetworking.so($s20FoundationNetworking15_NativeProtocolC6resumeyyF+0x28a)[0x7f6d3ed0233a] /usr/lib/swift/linux/libFoundationNetworking.so(+0xf04c7)[0x7f6d3ed1f4c7] /usr/lib/swift/linux/libFoundationNetworking.so(+0xa0c59)[0x7f6d3eccfc59] /usr/lib/swift/linux/libdispatch.so(+0x224e7)[0x7f6d3ef8d4e7] /usr/lib/swift/linux/libdispatch.so(+0x2de39)[0x7f6d3ef98e39] /usr/lib/swift/linux/libdispatch.so(+0x2eade)[0x7f6d3ef99ade] /usr/lib/swift/linux/libdispatch.so(+0x2dcd4)[0x7f6d3ef98cd4] /usr/lib/swift/linux/libdispatch.so(+0x2eade)[0x7f6d3ef99ade] /usr/lib/swift/linux/libdispatch.so(+0x36752)[0x7f6d3efa1752] /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7f6d470c46ba] /li
Avatar
@swift-5.4.3 -version
Avatar
Swift version 5.3-dev (LLVM 52eb795d06cc2c1, Swift eb8c8ecef009d64) Target: x86_64-unknown-linux-gnu
Avatar
@swift-5.4.3 import Foundation print(ProcessInfo.processInfo.environment["SWIFT_VERSION"]!)
Avatar
5.4-DEVELOPMENT-SNAPSHOT-2021-01-11-a
Avatar
@swift-5.4.3 -Xfrontend -enable-experimental-concurrency // // main.swift // ConcurrencyPlayground // // Created by Max Desiatov on 07/01/2021. // import _Concurrency import Foundation import FoundationNetworking struct UnknownError: Error {} func download(url: URL) async throws -> Data { await try withUnsafeThrowingContinuation { c in let task = URLSession.shared.dataTask(with: url) { data, _, error in switch (data, error) { case let (_, error?): return c.resume(throwing: error) case let (data?, _): return c.resume(returning: data) case (nil, nil): c.resume(throwing: UnknownError()) } } task.resume() } } runAsyncAndBlock { print("task started") let data = await try! download(url: URL(string: "https://httpbin.org/uuid")!) print(String(data: data, encoding: .utf8)!) } print("end of main") (edited)
Avatar
task started end of main (edited)
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency print(Task.self)
Avatar
swiftNightly BOT 1/22/2021 7:34 AM
Task
Avatar
omochimetaru 1/22/2021 7:35 AM
おお。居る。
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency print(await Task.currentPriority())
Avatar
swiftNightly BOT 1/22/2021 7:36 AM
exit status: 1 with stderr:<stdin>:1:13: error: 'async' in a function that does not support concurrency print(await Task.currentPriority()) ^
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency print(Task.userInteractive)
Avatar
swiftNightly BOT 1/22/2021 7:37 AM
exit status: 1 with stderr:<stdin>:1:12: error: type 'Task' has no member 'userInteractive' print(Task.userInteractive) ~~~~ ^~~~~~~~~~~~~~~
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency print(Task.Priority.self) (edited)
Avatar
swiftNightly BOT 1/22/2021 7:38 AM
Priority
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency print(Task.Priority.init(rawValue: 0)!)
Avatar
swiftNightly BOT 1/22/2021 7:39 AM
unspecified
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency print(Task.Priority.init(rawValue: 1)!)
Avatar
swiftNightly BOT 1/22/2021 7:39 AM
exit status: 4 with stderr:main/<stdin>:1: Fatal error: Unexpectedly found nil while unwrapping an Optional value Current stack trace: 0 libswiftCore.so 0x00007f8d025ef150 swift_reportError + 50 1 libswiftCore.so 0x00007f8d026638f0 _swift_stdlib_reportFatalErrorInFile + 112 2 libswiftCore.so 0x00007f8d02343de6 <unavailable> + 1433062 3 libswiftCore.so 0x00007f8d02343a0f <unavailable> + 1432079 4 libswiftCore.so 0x00007f8d023437ac <unavailable> + 1431468 5 libswiftCore.so 0x00007f8d023432c0 _assertionFailure(_:_:file:line:flags:) + 441 7 swift-frontend 0x0000000000597635 <unavailable> + 1668661 8 swift-frontend 0x000000000056102e <unavailable> + 1445934 9 swift-frontend 0x000000000052c442 <unavailable> + 1229890 10 swift-frontend 0x000000000052baac <unavailable> + 1227436 11 swift-frontend 0x000000000051ee4d <unavailable> + 1175117 12 swift-frontend 0x00000000004b8f78 <unavailable> + 757624 13 libc.so.6 0x00007f8d0462a740 __libc_start_main + 240 14 swift-frontend 0x00000000004b8a49 <unavailable> + 756297 Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace. Stack dump: 0. Program arguments: /usr/bin/swift-frontend -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency let handle: Task.Handle<Int, Never> = Task.runDetached { 42 } print(await handle.get()) (edited)
Avatar
swiftNightly BOT 1/22/2021 8:03 AM
exit status: 1 with stderr:<stdin>:1:18: error: generic type 'Handle' specialized with too many type parameters (got 2, but expected 1) let handle: Task.Handle<Int, Never> = Task.runDetached { 42 } ^ ~~~~~~~~~~~~ _Concurrency.Task:2:19: note: generic type 'Handle' declared here public struct Handle<Success> { ^
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency let handle: Task.Handle<Int> = Task.runDetached { 42 } print(try await handle.get()) (edited)
Avatar
swiftNightly BOT 1/22/2021 8:03 AM
exit status: 1 with stderr:<stdin>:2:17: error: 'async' in a function that does not support concurrency print(try await handle.get()) ^ (edited)
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency _ = Task.runDetached { 42 }
Avatar
swiftNightly BOT 1/22/2021 8:06 AM
no output
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency func foo() async -> Int { 42 } @asyncHandler func bar() { let a = await foo() print(a) }
Avatar
swiftNightly BOT 1/22/2021 8:08 AM
no output
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency func foo() async -> Int { 3 } func main() async { async let a = foo() async let b = foo() print(await a + b) }
Avatar
swiftNightly BOT 1/22/2021 8:43 AM
no output
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency func foo() async -> Int { 3 } func main() async { async let a = foo() async let b = foo() print(await a + b) } runAsyncAndBlock { await main() } (edited)
Avatar
swiftNightly BOT 1/22/2021 2:09 PM
6
Avatar
@swift-main @swift-5.4.3 -Xfrontend -enable-experimental-concurrency func f() async throws -> Int { 1 } func g() async throws -> Int { let a = try await f() let b = await try f() return a + b }
Avatar
swiftNightly BOT 1/25/2021 11:57 PM
stderr:<stdin>:4:13: warning: 'try' must precede 'await' let b = await try f() ^~~~~~ await
Avatar
exit status: 1 with stderr:<stdin>:3:17: error: 'await' must precede 'try' let a = try await f() ^~~~~~ await
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency func foo() async -> Int { 42 } runAsyncAndBlock { await foo() } (edited)
Avatar
swiftNightly BOT 1/26/2021 1:31 AM
stderr:<stdin>:2:26: warning: result of call to 'foo()' is unused runAsyncAndBlock { await foo() } ^ ~~
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency
Avatar
swiftNightly BOT 1/26/2021 1:38 AM
exit status: 127 with stderr:/usr/bin/lldb: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency import Foundation import FoundationNetworking struct User: Identifiable, Codable { typealias ID = Int let id: ID var name: String var thumbnailURL: URL } func download(from url: URL, completion: @escaping (Data) -> Void) { let data: Data = try! Data(contentsOf: url) completion(data) } func fetchUser(for id: User.ID, completion: @escaping (User) -> Void) { let url: URL = URL(string: "https://koherent.org/async-await-challenge/api/user?id=\(id.description)")! download(from: url) { data in let user = try! JSONDecoder().decode(User.self, from: data) completion(user) } } fetchUser(for: 123) { user in print(user.name) }
Avatar
swiftNightly BOT 1/26/2021 1:38 AM
koher
Avatar
monolithic-adam 1/26/2021 1:39 AM
@swift-main -Xfrontend -enable-experimental-concurrency import Foundation struct User: Identifiable, Codable { typealias ID = Int let id: ID var name: String var thumbnailURL: URL } func download(from url: URL) async -> Data { let data: Data = try! Data(contentsOf: url) return data } func fetchUser(for id: User.ID) async -> User { let url: URL = URL(string: "https://koherent.org/async-await-challenge/api/user?id=\(id.description)")! let data = await download(from: url) let user = try! JSONDecoder().decode(User.self, from: data) return user } runAsyncAndBlock { let user = await fetchUser(for: 123) print(user.name) } (edited)
Avatar
swiftNightly BOT 1/26/2021 1:39 AM
exit status: 4 with stderr:Foundation/NSSwiftRuntime.swift:401: Fatal error: You must link or load module FoundationNetworking to load non-file: URL content using String(contentsOf:…), Data(contentsOf:…), etc. Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace. Stack dump: 0. Program arguments: /usr/bin/swift-frontend -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -enable-experimental-concurrency -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-li (edited)
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency import Foundation import FoundationNetworking struct User: Identifiable, Codable { typealias ID = Int let id: ID var name: String var thumbnailURL: URL } func download(from url: URL) async -> Data { let data: Data = try! Data(contentsOf: url) return data } func fetchUser(for id: User.ID) async -> User { let url: URL = URL(string: "https://koherent.org/async-await-challenge/api/user?id=\(id.description)")! let data = await download(from: url) return try! JSONDecoder().decode(User.self, from: data) } runAsyncAndBlock { let user = await fetchUser(for: 123) print(user.name) }
Avatar
swiftNightly BOT 1/26/2021 1:40 AM
koher
Avatar
@swift-5.3.3 import Foundation extension Process { struct RunResult { var output: Data var error: Data var status: Int32 } static func which(_ i: Int) throws -> RunResult { let p = Process() p.executableURL = URL(fileURLWithPath: "/usr/bin/which") p.arguments = ["which"] let g = DispatchGroup() var outData = Data() let outPipe = Pipe() p.standardOutput = outPipe g.enter() outPipe.fileHandleForReading.readabilityHandler = { (handle) in let availableData = handle.availableData outData.append(availableData) print("[\(i)] stdout \(availableData)") if availableData.isEmpty { outPipe.fileHandleForReading.readabilityHandler = nil g.leave() } } var errData = Data() let errPipe = Pipe() p.standardError = errPipe g.enter() errPipe.fileHandleForReading.readabilityHandler = { (handle) in let availableData = handle.availableData errData.append(availableData) print("[\(i)] stderr \(availableData)") if availableData.isEmpty { errPipe.fileHandleForReading.readabilityHandler = nil g.leave() } } try p.run() p.waitUntilExit() print("[\(i)] process end") guard case .success = g.wait(timeout: .now()+3) else { fatalError("[\(i)] timeout") } print("[\(i)] wait end") let status = p.terminationStatus let result = RunResult(output: outData, error: errData, status: status) print("[\(i)] end output=\(result.output) error=\(result.error)") return result } } DispatchQueue.concurrentPerform(iterations: 3) { i in _ = try! Process.which(i) } print("end")
Avatar
exit status: 4 with stderr:Fatal error: [1] timeout: file main/<stdin>, line 46 Fatal error: [2] timeout: file main/<stdin>, line 46 Current stack trace: Current stack trace: Fatal error: [0] timeout: file main/<stdin>, line 46 Current stack trace: 0 libswiftCore.so 0x00007f76f2276df0 swift_reportError + 50 1 libswiftCore.so 0x00007f76f22ea160 _swift_stdlib_reportFatalErrorInFile + 115 2 libswiftCore.so 0x00007f76f1fcfeb5 <unavailable> + 1400501 3 libswiftCore.so 0x00007f76f1fcfaf7 <unavailable> + 1399543 4 libswiftCore.so 0x00007f76f1fd00e2 <unavailable> + 1401058 5 libswiftCore.so 0x00007f76f1fce530 _assertionFailure(_:_:file:line:flags:) + 517 8 libswiftDispatch.so 0x00007f76ee5f2bf1 <unavailable> + 117745 9 libswiftDispatch.so 0x00007f76ee5f2c14 <unavailable> + 117780 10 libdispatch.so 0x00007f76ee39560e <unavailable> + 128526 11 libdispatch.so 0x00007f76ee3ac787 <unavailable> + 223111 12 libpthread.so.0 0x00007f76f66ed6ba <unavailable> + 30394 13 libc.so.6 0x00007f76f4ef63b0 clone + 109 0 libswiftCore.so 0x00007f76f2276df0 swift_reportError + 50 0 libswiftCore.so 0x00007f76f2276df0 swift_reportError + 50 1 libswiftCore.so 0x00007f76f22ea160 _swift_stdlib_reportFatalErrorInFile + 115 2 libswiftCore.so 0x00007f76f1fcfeb5 <unavailable> + 1400501 3 libswiftCore.so 0x00007f76f1fcfaf7 <unavailable> + 1399543 4 libswiftCore.so 0x00007f76f1fd00e2 <unavailable> + 1401058 5 libswiftCore.so 0x00007f76f1fce530 _assertionFailure(_:_:file:line:flags:) + 517 8 libswiftDispatch.so 0x00007f76ee5f2bf1 <unavailable> + 117745 9 libswiftDispatch.so
Avatar
@swift-5.3.3 import Foundation extension Process { struct RunResult { var output: Data var error: Data var status: Int32 } static func which(_ i: Int) throws -> RunResult { let p = Process() p.executableURL = URL(fileURLWithPath: "/usr/bin/which") p.arguments = ["which"] let g = DispatchGroup() var outData = Data() let outPipe = Pipe() p.standardOutput = outPipe g.enter() outPipe.fileHandleForReading.readabilityHandler = { (handle) in let availableData = handle.availableData outData.append(availableData) print("[\(i)] stdout \(availableData)") if availableData.isEmpty { outPipe.fileHandleForReading.readabilityHandler = nil g.leave() } } var errData = Data() let errPipe = Pipe() p.standardError = errPipe g.enter() errPipe.fileHandleForReading.readabilityHandler = { (handle) in let availableData = handle.availableData errData.append(availableData) print("[\(i)] stderr \(availableData)") if availableData.isEmpty { errPipe.fileHandleForReading.readabilityHandler = nil g.leave() } } try p.run() p.waitUntilExit() print("[\(i)] process end") guard case .success = g.wait(timeout: .now()+3) else { fatalError("[\(i)] timeout") } print("[\(i)] wait end") let status = p.terminationStatus let result = RunResult(output: outData, error: errData, status: status) print("[\(i)] end output=\(result.output) error=\(result.error)") return result } } DispatchQueue.concurrentPerform(iterations: 1) { i in _ = try! Process.which(i) } print("end")
Avatar
exit status: 4 with stderr:Fatal error: [0] timeout: file main/<stdin>, line 46 Current stack trace: 0 libswiftCore.so 0x00007fe78a46edf0 swift_reportError + 50 1 libswiftCore.so 0x00007fe78a4e2160 _swift_stdlib_reportFatalErrorInFile + 115 2 libswiftCore.so 0x00007fe78a1c7eb5 <unavailable> + 1400501 3 libswiftCore.so 0x00007fe78a1c7af7 <unavailable> + 1399543 4 libswiftCore.so 0x00007fe78a1c80e2 <unavailable> + 1401058 5 libswiftCore.so 0x00007fe78a1c6530 _assertionFailure(_:_:file:line:flags:) + 517 8 libswiftDispatch.so 0x00007fe7867eabf1 <unavailable> + 117745 9 libswiftDispatch.so 0x00007fe7867eac14 <unavailable> + 117780 10 libdispatch.so 0x00007fe78658df60 <unavailable> + 130912 11 libdispatch.so 0x00007fe7865993aa <unavailable> + 177066 12 libdispatch.so 0x00007fe78658da40 dispatch_apply_f + 1044 13 libswiftDispatch.so 0x00007fe7867eaaa0 static DispatchQueue.concurrentPerform(iterations:execute:) + 204 15 swift 0x00000000005b4501 <unavailable> + 1787137 16 swift 0x00000000005a1d04 <unavailable> + 1711364 17 swift 0x0000000000587e88 <unavailable> + 1605256 18 swift 0x000000000057b322 <unavailable> + 1553186 19 swift 0x00000000005780ef <unavailable> + 1540335 20 swift 0x0000000000501c2c <unavailable> + 1055788 21 libc.so.6 0x00007fe78d007740 __libc_start_main + 240 22 swift 0x00000000005017a9 <unavailable> + 1054633 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libr
Avatar
@swift-5.3.3 import Foundation func print(_ item: String) { fputs(item + "\n", stderr) } extension Process { struct RunResult { var output: Data var status: Int32 } static func which(_ i: Int) throws -> RunResult { let p = Process() p.executableURL = URL(fileURLWithPath: "/usr/bin/which") p.arguments = ["which"] let g = DispatchGroup() var outData = Data() let outPipe = Pipe() p.standardOutput = outPipe g.enter() outPipe.fileHandleForReading.readabilityHandler = { (handle) in let availableData = handle.availableData outData.append(availableData) print("[\(i)] stdout \(availableData)") if availableData.isEmpty { outPipe.fileHandleForReading.readabilityHandler = nil g.leave() } } try p.run() p.waitUntilExit() print("[\(i)] process end") guard case .success = g.wait(timeout: .now()+3) else { fatalError("[\(i)] timeout") } print("[\(i)] wait end") let status = p.terminationStatus let result = RunResult(output: outData, status: status) print("[\(i)] end output=\(result.output)") return result } } DispatchQueue.concurrentPerform(iterations: 3) { i in _ = try! Process.which(i) } print("end")
Avatar
exit status: 4 with stderr:[2] process end [0] stdout 15 bytes [2] stdout 15 bytes [1] process end [1] stdout 15 bytes [0] process end Fatal error: [2] timeout: file main/<stdin>, line 34 Current stack trace: 0 libswiftCore.so 0x00007fbd21293df0 swift_reportError + 50 1 libswiftCore.so 0x00007fbd21307160 _swift_stdlib_reportFatalErrorInFile + 115 2 libswiftCore.so 0x00007fbd20feceb5 <unavailable> + 1400501 3 libswiftCore.so 0x00007fbd20fecaf7 <unavailable> + 1399543 4 libswiftCore.so 0x00007fbd20fed0e2 <unavailable> + 1401058 5 libswiftCore.so 0x00007fbd20feb530 _assertionFailure(_:_:file:line:flags:) + 517 8 libswiftDispatch.so 0x00007fbd1d60fbf1 <unavailable> + 117745 9 libswiftDispatch.so 0x00007fbd1d60fc14 <unavailable> + 117780 10 libdispatch.so 0x00007fbd1d3b260e <unavailable> + 128526 11 libdispatch.so 0x00007fbd1d3c9787 <unavailable> + 223111 12 libpthread.so.0 0x00007fbd2570a6ba <unavailable> + 30394 13 libc.so.6 0x00007fbd23f133b0 clone + 109 /usr/bin/swift[0x50aee34] /usr/bin/swift[0x50ace00] /usr/bin/swift[0x50af11a] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7fbd25714390] /usr/lib/swift/linux/libswiftCore.so($ss17_assertionFailure__4file4line5flagss5NeverOs12StaticStringV_SSAHSus6UInt32VtF+0x212)[0x7fbd20feb742] [0x7fbd2594de50] [0x7fbd2594e209] /usr/lib/swift/linux/libswiftDispatch.so(+0x1cbf1)[0x7fbd1d60fbf1] /usr/lib/swift/linux/libswiftDispatch.so(+0x1cc14)[0x7fbd1d60fc14] /usr/lib/swift/linux/libdispatch.so(+0x1f60e)[0x7fbd1d3b260e] /usr/lib/swift/linux/libdispatch.so(+0x36787)[0x7fbd1d3c9787] /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7fbd2570a6ba] /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fbd23f1341d]
Avatar
@swift-main -Xfrontend -enable-experimental-concurrency -Xfrontend -parse-as-library // // main.swift // ConcurrencyPlayground // // Created by Max Desiatov on 07/01/2021. // import Foundation import FoundationNetworking struct UnknownError: Error {} func download(url: URL) async throws -> Data { try await withUnsafeThrowingContinuation { c in let task = URLSession.shared.dataTask(with: url) { data, _, error in switch (data, error) { case let (_, error?): return c.resume(throwing: error) case let (data?, _): return c.resume(returning: data) case (nil, nil): c.resume(throwing: UnknownError()) } } task.resume() } } @main struct Main { static func main() async { print("task started") let data = try! await download(url: URL(string: "https://httpbin.org/uuid")!) print(String(data: data, encoding: .utf8)!) } }
Avatar
swiftNightly BOT 2/23/2021 10:51 AM
task started { "uuid": "791fc520-32b9-40a9-bf49-77ca7f8e2d4e" }
Avatar
お、 Linux でもちゃんと並行に動くようになったんですか?
2:29 AM
あ、 #swift の方でその話題 https://discord.com/channels/291054398077927425/291054454793306112/813681284592828427 になってた。 (edited)
Avatar
Avatar
koher
あ、 #swift の方でその話題 https://discord.com/channels/291054398077927425/291054454793306112/813681284592828427 になってた。 (edited)
Kishikawa Katsumi 2/24/2021 5:14 AM
そうそう。できるようになったので前に作られてたBefore/Afterの例とかすごくわかりやすかったのでよかったらシェアしてください 🙏🏼
Avatar
treastrain / Tanaka.R 3/5/2021 5:07 AM
@swift-5.3.3 import Foundation let formatter = NumberFormatter() formatter.numberStyle = .decimal print("1:", formatter.string(from: 100)) // Optional("100") formatter.formatWidth = 6 print("2:", formatter.string(from: 100)) // Optional(" 100") formatter.paddingPosition = .beforePrefix print("3:", formatter.string(from: 100)) // Optional(" 100") formatter.paddingPosition = .afterPrefix print("4:", formatter.string(from: 100)) // Optional(" 100") formatter.paddingPosition = .beforeSuffix print("5:", formatter.string(from: 100)) // Optional("100 ") formatter.paddingPosition = .afterSuffix print("6:", formatter.string(from: 100)) // Optional("100 ") (edited)
Avatar
swift53 BOT 3/5/2021 5:07 AM
1: Optional("100") 2: Optional(" 100") 3: Optional(" 100") 4: Optional(" 100") 5: Optional("100 ") 6: Optional("100 ")stderr:<stdin>:5:13: warning: expression implicitly coerced from 'String?' to 'Any' print("1:", formatter.string(from: 100)) // Optional("100") ^~~~~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:5:23: note: provide a default value to avoid this warning print("1:", formatter.string(from: 100)) // Optional("100") ~~~~~~~~~~^~~~~~~~~~~~~~~~~ ?? <#default value#> <stdin>:5:23: note: force-unwrap the value to avoid this warning print("1:", formatter.string(from: 100)) // Optional("100") ~~~~~~~~~~^~~~~~~~~~~~~~~~~ ! <stdin>:5:23: note: explicitly cast to 'Any' with 'as Any' to silence this warning print("1:", formatter.string(from: 100)) // Optional("100") ~~~~~~~~~~^~~~~~~~~~~~~~~~~ as Any <stdin>:8:13: warning: expression implicitly coerced from 'String?' to 'Any' print("2:", formatter.string(from: 100)) // Optional(" 100") ^~~~~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:8:23: note: provide a default value to avoid this warning print("2:", formatter.string(from: 100)) // Optional(" 100") ~~~~~~~~~~^~~~~~~~~~~~~~~~~ ?? <#default value#> <stdin>:8:23: note: force-unwrap the value to avoid this warning print("2:", formatter.string(from: 100)) // Optional(" 100") ~~~~~~~~~~^~~~~~~~~~~~~~~~~ ! <stdin>:8:23: note: explicitly cast to 'Any' with 'as Any' to silence this warning print("2:", formatter.string(from: 100)) // Optional(" 100") ~~~~~~~~~~^~~~~~~~~~~~~~~~~ as Any <stdin>:11:13: warning: expression implicitly coerced from 'String?' to 'Any' print("3:", formatter.string(from: 100)) // Optional(" 100") ^~~~~ (edited)
Avatar
omochimetaru 3/12/2021 5:07 AM
@swift-5.3.3 import Foundation struct A: Encodable { var a1: Int = 1 var a2: Int = 2 } struct B: Encodable { var b1: Int = 3 var b2: Int = 4 } struct AAndB: Encodable { var a: A = .init() var b: B = .init() func encode(to encoder: Encoder) throws { try a.encode(to: encoder) try b.encode(to: encoder) } // func encode(to encoder: Encoder) throws { // do { // var c = encoder.singleValueContainer() // try c.encode(a) // } // do { // var c = encoder.singleValueContainer() // try c.encode(b) // } // } } func main() throws { let x = AAndB() let e = JSONEncoder() let j = try e.encode(x) print(String(decoding: j, as: UTF8.self)) } try! main()
Avatar
{"a2":2,"b1":3,"a1":1,"b2":4}
Avatar
https://forums.swift.org/t/array-compiles-to-array-of-type/45742 @swift-5.3.3 let foo = Array {} print(type(of: foo))
So I just found this out. Not sure if it's a bug or somehow expected behavior. let foo = Array {} The code above works, and foo is inferred to be of type Array<() -> ()> aka [() -> ()] with a single element inside: an empty closure () -> () (which I assume is our {}). Digging deeper into which initializer is responsible for the instantiation,...
Avatar
Array<() -> ()> (edited)
Avatar
omochimetaru 3/16/2021 4:34 AM
www
Avatar
この前のwaiwaiでも話題になった、 Trailing Closure のラベル省略が良くない事例だと思う。
Avatar
omochimetaru 3/16/2021 4:46 AM
init(arrayLiteral:) って Array Literal 用のinitだから、
4:46 AM
リテラルが書いてある場合もしくは、ラベルが書かれている場合しか、解決しないのが良さそう?
4:47 AM
ラベルが書かれていない場合、というケースはTrailing Closureを使ったときしか生じないだろうけど。
Avatar
うん。普通はラベルがあるから意味わかるんだけど、 Trailing Closure になるとラベルが省略されて意味わからんくなってる。
Avatar
omochimetaru 3/16/2021 4:49 AM
意味わからなくなるのは幅広い問題ですね。
Avatar
↓なら問題ないはず。 let foo = Array arrayLiteral: {}
Avatar
omochimetaru 3/16/2021 4:49 AM
それってIDEが解決するのは駄目なんだろうか
4:50 AM
今年のGSoCのテーマにもなってて。
4:50 AM
テキストデータとして書かれてなくても arrayLiteral: が Xcodeによって表示されてれば、問題は解決する。
Avatar
source breaking すぎてもはや↑の変更はできないだろうけど、ラベルを許す、ラベルなしは警告とかならできそう。
Avatar
omochimetaru 3/16/2021 4:51 AM
警告じゃなくてGUI上で表示しちゃう。
4:51 AM
型推論の結果とかもそうする。
Avatar
テキストデータとして書かれてなくても arrayLiteral: が Xcodeによって表示されてれば、問題は解決する。
現状としてはラベルがある場合は Trailing Closure を IDE がオススメしないのがいいんじゃない?
Avatar
Kishikawa Katsumi 3/16/2021 4:51 AM
JetBrains方式っすね
Avatar
omochimetaru 3/16/2021 4:52 AM
今だと 変数名を Alt + Click で表示だけど、そうじゃなくて、エディタがインラインテキストをさしこむかんじ。
Avatar
Multiple Trailing Closure で最初のラベル省略が普通に使われてるから難しいかなぁ。
Avatar
Avatar
Kishikawa Katsumi
JetBrains方式っすね
omochimetaru 3/16/2021 4:52 AM
はい。Kotlinはそうなってますね。なんかRustもそうなってきたらしくて。
Avatar
Kishikawa Katsumi 3/16/2021 4:52 AM
実際のコードをそうした方がというのは思うけどIDEがそういうサポートを入れるのはそれはそれでかなり良いと思います。
Avatar
それってラベルが言語機能である Swift と相性悪くないかなぁ。本物ラベルのときと IDE 挿入のときがあるわけで。
Avatar
Kishikawa Katsumi 3/16/2021 4:53 AM
それは表現方法で大丈夫だと思いますよ。
Avatar
視覚的に区別はできるでしょうけど、似ているけど異なる二つのものが共存する複雑性の問題という意味でです。
Avatar
Kishikawa Katsumi 3/16/2021 4:54 AM
明らかにわかるようにすれば大丈夫だと思います。
Avatar
omochimetaru 3/16/2021 4:54 AM
型推論結果が let の右に出てたらわかりやすいと思う。
Avatar
Kishikawa Katsumi 3/16/2021 4:54 AM
でもまあ初心者の人とか知らない人には難しくなる、というのはありそう。
4:55 AM
そう考えると簡単ではないか。。。
4:56 AM
リモートのトラブルシューティングで本当はラベル書いてないけどIDEが表示するから噛み合わない、とかあるかも。
Avatar
omochimetaru 3/16/2021 4:56 AM
あれだなあ、
4:56 AM
一個ずつAlt Clickするのはめんどくさいけど
4:56 AM
常に出てると混乱の原因にはなるから
4:56 AM
ショートカットを押してる間だけあらゆるものが浮かび上がるみたいな
4:56 AM
UIだったら便利そうだ
4:57 AM
見えないものが見えるようになるボタン
Avatar
Avatar
omochimetaru
型推論結果が let の右に出てたらわかりやすいと思う。
これも、パラメトリックポリモーフィズムでネストした長大な型パラメータが出来上がりがちなSwiftだと辛いかも? ショートカットの間だけとかならありだと思う。
Avatar
omochimetaru 3/16/2021 4:58 AM
たしかに。表示しない前提でめちゃ複雑な型が発生してる場面はありますね。
Avatar
ショートカット押してる間だけ表示は、かなり DX ( Experience の方の)上がりそうだなぁ。一個ずつ表示めんどすぎるので。 (edited)
Avatar
Avatar
koher
これも、パラメトリックポリモーフィズムでネストした長大な型パラメータが出来上がりがちなSwiftだと辛いかも? ショートカットの間だけとかならありだと思う。
Minimap が command 押してるときだけ表示増えるという前例もあるし、良さそう (edited)
Avatar
omochimetaru 3/16/2021 4:59 AM
Minimap が commnad 押してるときだけ表示増える
ほんとだ!!
😲 1
Avatar
IDEが頑張る世界線は、Githubにも頑張って貰う必要がある
6:51 AM
MSがJetBrainsを買収するでFAかな
Avatar
omochimetaru 3/16/2021 6:52 AM
そのへん LSP もそうだし、なんかその推論出すやつも規格があるらしくて
6:52 AM
標準化してるからGitHubはビュー作るだけみたいな未来になりそう
Avatar
それはいいね
Avatar
omochimetaru 3/16/2021 6:53 AM
👍 1
6:53 AM
Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.
6:54 AM
In the project, the student will extend SourceKit-LSP to offer functionality as described in this LSP proposal.
Avatar
それでもなお、trailing closureのラベル省略強制は失敗だったと思うなぁ
Avatar
omochimetaru 3/16/2021 6:54 AM
Rustがやったやつを、LSPでもできるように規格拡張するプロポーザルが出ているというステータスか
Avatar
既にラベル省略するかどうかは_の有無で決定できていたのだから、それに従うで良かったはずなんだ
Avatar
omochimetaru 3/16/2021 6:55 AM
ラベルなしクロージャが適切なデザインのAPIでは空ラベルにしておいて
6:55 AM
ラベルありクロージャが適切ならラベルをつけておいて
6:55 AM
呼び出し側はそれに同期すればいいよね。
Avatar
そうなんだよねぇ
Avatar
omochimetaru 3/16/2021 6:55 AM
ほんとだよなあ
Avatar
Swiftの中でOptionalサブタイピングの次くらいにイケてないところだと思う
Avatar
omochimetaru 3/16/2021 6:55 AM
最初見たときはめっちゃかっこいい最新の仕様だと思ったんだけど
6:56 AM
別に省略を強制する文法である必要全く無いと思った (edited)
6:57 AM
通常の引数でもラベルは省略できないところもSwiftが他の言語に対して大きな特徴なのに
6:57 AM
Trailing Closureだけそのへんと一貫性がない
Avatar
Avatar
tarunon
Swiftの中でOptionalサブタイピングの次くらいにイケてないところだと思う
これってどうイケてないと感じるやつですか?
Avatar
Optionalの話かな
Avatar
Optionalとラップされた型にサブタイピング関係があることでどういうときに困るんでしたっけ?
Avatar
omochimetaru 3/16/2021 7:11 AM
なんか細かい闇がたくさんあったからまとめが欲しくなってきたな。
Avatar
根本的にはOptionalがtagged unionであるということと、T?とTのサブタイピングを認めてかつTとUがサブタイピング関係があるときにT?とU?のサブタイピングも認める、ということをしちゃうと
7:15 AM
型理論に優先順位のルールを加えなきゃいけなくなるが、人間の認知はここまで追い付かないので
7:16 AM
文脈によってサブタイピングがあって欲しい場合とサブタイピングを認めたくない場合が混在してしまい
7:16 AM
人間はそれをバグと認知してしまう
7:16 AM
仕事終わったら詳しく書くか
Avatar
Avatar
tarunon
仕事終わったら詳しく書くか
Avatar
@swift-4.0.3 var foo : () -> Int foo = { foo() }
Avatar
exit status: 1 with stderr:<stdin>:2:7: error: variable 'foo' captured by a closure before being initialized foo = { foo() } ^ <stdin>:1:5: note: variable defined here var foo : () -> Int ^
Avatar
bot全滅中…
Avatar
norio_nomura 4/13/2021 2:08 AM
bot復帰
2:08 AM
DiscordがHTTPレスポンスのヘッダに Set-Cookie: … set-cookie: … を入れる様になり、使ってたライブラリ内で let headers = [String: Any](uniqueKeysWithValues: response.allHeaderFields.map { (($0.key as! String).lowercased(), $0.value) }) としてcase insensitive uniqueであることを期待してた箇所でランタイムエラーになってた。 (edited)
👀 1
Avatar
なるほど。やっぱりサーバーと連携する(アプリの外部で仕様が変わり得る)箇所で ! 使うのは危険ですね。
Avatar
norio_nomura 4/13/2021 3:08 AM
問題だったのは!の利用ではなく、init(uniqueKeysWithValues:)APIへ外部データがcase insensitive uniqueだと無邪気に信じて単純な変換のみで渡したことですね。
Avatar
ああ、すいません、わかっていたはずなのですが、 unique でない → Logic Failure → ! みたいなステップで思考がバグってました。
👍 1
3:13 AM
uniqueKeysWithValues に渡すものがおかしいのは Logic Failure でいいと思うんですが、ユニーク化のときにユニークでない場合に Recoverable なエラーハンドリングができる簡単な方法があるといいですよね。 uniqueKeysWithValues は割と踏みがちな気がするので・・・。
3:16 AM
guard let uniqueHeaderFields = response.allHeaderFields .map { (($0.key as! String).lowercased(), $0.value) } .unique(\.0) else { ... } とか?
Avatar
もっとシンプルに同じ値が積まれてることを期待しちゃって
3:17 AM
uniqueじゃ無い方を使えば良いと思いました
3:17 AM
この場合は特に
Avatar
norio_nomura 4/13/2021 3:17 AM
ああ、DarwinだとallHeaderFieldsがcase insensitiveなのか。
Avatar
uniqueじゃ無い方を使えば良いと思いました
これは Dictionary.init の話ですか?
Avatar
そうです
Avatar
そんな init ありましたっけ?
Avatar
Dictionary.init(_:uniquingKeysWith:) (edited)
3:20 AM
こっちか
3:20 AM
おおお、これ知りませんでした。
3:20 AM
これいいですね。合成もできるしエラーにもできる。
3:20 AM
rethrows がめっちゃ活きてますね。
Avatar
norio_nomura 4/13/2021 4:25 AM
Darwinでの挙動を調べてみると、複数のSet-Cookie[String]としてallHeaderFieldsに入るみたい。
4:26 AM
なので、ちゃんとやるとこんな感じになる。 @swift-5.0.3 import Foundation #if canImport(FoundationNetworking) import FoundationNetworking #endif guard let url = URL(string: "https://discordapp.com/api/v7/gateway/bot") else { exit(1) } let task = URLSession.shared.dataTask(with: url) { dataOrNil, responseOrNil, errorOrNil in guard let response = responseOrNil as? HTTPURLResponse else { exit(1) } let allHeaderFields = response.allHeaderFields.map { (key, value) in ((key as! String).lowercased(), value) } let headers = [String: Any](allHeaderFields, uniquingKeysWith: { (lhs, rhs) in switch (lhs, rhs) { case (let lhs as [String], let rhs as [String]): return lhs + rhs case (let lhs as [String], let rhs as String): return lhs + [rhs] case (let lhs as String, let rhs as [String]): return [lhs] + rhs case (let lhs as String, let rhs as String): return [lhs, rhs] default: return rhs } }) dump(headers) exit(0) } task.resume() dispatchMain() (edited)
Avatar
▿ 16 key/value pairs ▿ (2 elements) - key: "date" - value: "Tue, 13 Apr 2021 04:26:24 GMT" ▿ (2 elements) - key: "strict-transport-security" - value: "max-age=31536000; includeSubDomains" ▿ (2 elements) - key: "cf-ray" - value: "63f1ef9dbf553806-IAD" ▿ (2 elements) - key: "connection" - value: "keep-alive" ▿ (2 elements) - key: "cf-request-id" - value: "096b1416900000380660129000000001" ▿ (2 elements) - key: "cf-cache-status" - value: "DYNAMIC" ▿ (2 elements) - key: "via" - value: "1.1 google" ▿ (2 elements) - key: "content-length" - value: "43" ▿ (2 elements) - key: "expect-ct" - value: "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" ▿ (2 elements) - key: "report-to" - value: "{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report?s=6nGtl8vxSfMGS4%2Fg8PcS6skF%2FlvqoTCQES4uLM5cC146gNRLzD%2FY8X%2BPide4V6MCz57kfNUXBY084%2BCGO3VO91oIQiMHHDyZNq6LzNs4kw%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}" ▿ (2 elements) - key: "set-cookie" ▿ value: 2 elements - "__cfduid=d2062717f605ce464e7f88d444e655ede1618287984; expires=Thu, 13-May-21 04:26:24 GMT; path=/; domain=.discordapp.com; HttpOnly; SameSite=Lax" - "__dcfduid=8854356cde9c452195623d3534a3e91a; Expires=Thu, 13-May-2021 04:26:24 GMT; Max-Age=2592000; Secure; HttpOnly; Path=/" ▿ (2 elements) - key: "nel" - value: "{\"max_age\":604800,\"report_to\":\"cf-nel\"}" ▿ (2 elements) - key: "alt-svc" - value: "h3-27=\":443\"; ma=86400, h3-28=\":443\"; ma=86400, h3-29=\":443\"; ma=86400" ▿ (2 elements) - key: "x-envoy-upstream-service-time" - value: "5" ▿ (2 elements) - key: "server" - value: "cloudflare" ▿ (2 elements) - key: "content-type" - value: "application/json"
Avatar
norio_nomura 4/13/2021 4:33 AM
あとDarwinだとkeyの大文字小文字は最初に現れたものを維持するみたい。
📝 1
Avatar
@swift-5.3.3 struct Box<T> {} @_functionBuilder struct MyBuilder { static func buildBlock(_ component: Box<Never>) -> Box<Never> { component } } func take(_ c: () -> Box<Never>) {} func takeBuild(@MyBuilder _ c: () -> Box<Never>) {} take { Box() } takeBuild { Box() }
Avatar
exit status: 1 with stderr:<stdin>:19:5: error: cannot convert value of type 'Box<_>' to expected argument type 'Box<Never>' Box() ^ <stdin>:1:12: note: arguments to generic parameter 'T' ('_' and 'Never') are expected to be equal struct Box<T> {} ^ <stdin>:19:5: error: generic parameter 'T' could not be inferred Box() ^ <stdin>:1:12: note: 'T' declared as parameter to type 'Box' struct Box<T> {} ^ <stdin>:19:5: note: explicitly specify the generic arguments to fix this issue Box() ^ <Any>
Avatar
@swift-5.3.3 struct Box<T> {} @_functionBuilder struct MyBuilder { static func buildExpression(_ expression: Box<Never>) -> Box<Never> { expression } static func buildBlock(_ component: Box<Never>) -> Box<Never> { component } } func take(_ c: () -> Box<Never>) {} func takeBuild(@MyBuilder _ c: () -> Box<Never>) {} func test() { take { Box() } takeBuild { Box() } }
Avatar
no output
Avatar
Avatar
Iceman
@swift-5.3.3 struct Box<T> {} @_functionBuilder struct MyBuilder { static func buildBlock(_ component: Box<Never>) -> Box<Never> { component } } func take(_ c: () -> Box<Never>) {} func takeBuild(@MyBuilder _ c: () -> Box<Never>) {} take { Box() } takeBuild { Box() }
コンテキストで推論させたいときは、buildExpression(_:) が必要ですね。
Avatar
おおできました!ありがとうございます
Avatar
https://github.com/apple/swift-evolution/blob/main/proposals/0289-result-builders.md#result-building-methods
buildExpression(_ expression: Expression) -> Component is used to lift the results of expression-statements into the Component internal currency type. It is optional, but when provided it allows a result builder to distinguish Expression types from Component types or to provide contextual type information for statement-expressions.
Avatar
expression入れたらflatMapの例も通るようになりました
Avatar
他にも見たこと無いのあって面白い
Avatar
norio_nomura 4/21/2021 9:57 AM
今までボットを動かすHeroku用のアカウントを<メイン>+swift5.x@gmail.com的なGmailのエリアスアドレスでサインアップしてたけど、Swift 5.5ボット用に新規アカウントをサインアップしようとしたら、メールアドレスで弾かれた… なのでSwift 5.5ボット立ち上げは少し遅れそう。
📧 2
Avatar
5.5 の Release Process 、ブログじゃなくて↓こんなところにあったんですね。これはやっぱ 6 は今年は来ないのかな・・・。 https://forums.swift.org/t/swift-5-5-release-process/45644
This post describes the release process, and estimated schedule for Swift 5.5. Snapshots of Swift 5.5 Downloadable snapshots of the Swift 5.5 release branch will be posted regularly as part of continuous integration testing. As support is available, snapshot downloads will be added for newly supported platforms. Once Swift 5.5 is released, the...
Avatar
@swift-5.3.3 (["value": Int?(1)] as [String: String?])
Avatar
exit status: 134 with stderr:<stdin>:1:21: warning: coercion from '[String : Int?]' to '[String : String?]' may fail; use 'as?' or 'as!' instead (["value": Int?(1)] as [String: String?]) ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ <stdin>:1:21: warning: expression of type '[String : String?]' is unused (["value": Int?(1)] as [String: String?]) ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ SIL verification failed: branch argument types do not match arguments for dest bb: std::equal(BI->getArgs().begin(), BI->getArgs().end(), BI->getDestBB()->args_begin(), [&](SILValue branchArg, SILArgument *bbArg) { return verifyBranchArgs(branchArg, bbArg); }) Verifying instruction: %31 = enum $Optional<Int>, #Optional.some!enumelt, %30 : $Int // user: %32 -> br bb3(%31 : $Optional<Int>) // id: %32 In function: // main sil [ossa] @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Word, 1 // user: %4 // function_ref _allocateUninitializedArray<A>(_:) %3 = function_ref @$ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %4 %4 = apply %3<(String, Optional<String>)>(%2) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %5 (%5, %6) = destructure_tuple %4 : $(Array<(String, Optional<String>)>, Builtin.RawPointer) // users: %40, %7 %7 = pointer_to_address %6 : $Builtin.RawPointer to [strict] $*(String, Optional<String>) // users: %9, %8 %8 = tuple_element_addr %7 : $*(String, Optional<String>), 0 // user: %16 %9 = tuple_element_addr %7 : $*(String, Optional<String>), 1 // user: %36 %10 = string_literal utf8 "value" // user: %15 %11 = integer_literal $Builtin.Word, 5 // user: %15 %12 = integer_literal $Builtin.I
Avatar
@swift-5.3.3 _ = ["value": Int?(1)] as [String: String?]
Avatar
exit status: 134 with stderr:<stdin>:1:24: warning: coercion from '[String : Int?]' to '[String : String?]' may fail; use 'as?' or 'as!' instead _ = ["value": Int?(1)] as [String: String?] ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ SIL verification failed: branch argument types do not match arguments for dest bb: std::equal(BI->getArgs().begin(), BI->getArgs().end(), BI->getDestBB()->args_begin(), [&](SILValue branchArg, SILArgument *bbArg) { return verifyBranchArgs(branchArg, bbArg); }) Verifying instruction: %31 = enum $Optional<Int>, #Optional.some!enumelt, %30 : $Int // user: %32 -> br bb3(%31 : $Optional<Int>) // id: %32 In function: // main sil [ossa] @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Word, 1 // user: %4 // function_ref _allocateUninitializedArray<A>(_:) %3 = function_ref @$ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %4 %4 = apply %3<(String, Optional<String>)>(%2) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %5 (%5, %6) = destructure_tuple %4 : $(Array<(String, Optional<String>)>, Builtin.RawPointer) // users: %40, %7 %7 = pointer_to_address %6 : $Builtin.RawPointer to [strict] $*(String, Optional<String>) // users: %9, %8 %8 = tuple_element_addr %7 : $*(String, Optional<String>), 0 // user: %16 %9 = tuple_element_addr %7 : $*(String, Optional<String>), 1 // user: %36 %10 = string_literal utf8 "value" // user: %15 %11 = integer_literal $Builtin.Word, 5 // user: %15 %12 = integer_literal $Builtin.Int1, -1 // user: %15 %13 = metatype $@thin String.Type // user: %15 // function_ref String.init(_builtinStringLiteral:utf8Cod
Avatar
@swift-5.2.5 @swift-5.4.3 @swift-main _ = ["value": Int?(1)] as [String: String?]
Avatar
swiftNightly BOT 4/30/2021 7:14 AM
exit status: 134 with stderr:<stdin>:1:24: warning: coercion from '[String : Int?]' to '[String : String?]' may fail; use 'as?' or 'as!' instead _ = ["value": Int?(1)] as [String: String?] ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ SIL verification failed: branch argument types do not match arguments for dest bb: std::equal(BI->getArgs().begin(), BI->getArgs().end(), BI->getDestBB()->args_begin(), [&](SILValue branchArg, SILArgument *bbArg) { return verifyBranchArgs(branchArg, bbArg); }) Verifying instruction: %31 = enum $Optional<Int>, #Optional.some!enumelt, %30 : $Int // user: %32 -> br bb3(%31 : $Optional<Int>) // id: %32 In function: // main sil [ossa] @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Word, 1 // user: %4 // function_ref _allocateUninitializedArray<A>(_:) %3 = function_ref @$ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %4 %4 = apply %3<(String, Optional<String>)>(%2) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %5 (%5, %6) = destructure_tuple %4 : $(Array<(String, Optional<String>)>, Builtin.RawPointer) // users: %38, %7 %7 = pointer_to_address %6 : $Builtin.RawPointer to [strict] $*(String, Optional<String>) // users: %9, %8 %8 = tuple_element_addr %7 : $*(String, Optional<String>), 0 // user: %16 %9 = tuple_element_addr %7 : $*(String, Optional<String>), 1 // user: %36 %10 = string_literal utf8 "value" // user: %15 %11 = integer_literal $Builtin.Word, 5 // user: %15 %12 = integer_literal $Builtin.Int1, -1 // user: %15 %13 = metatype $@thin String.Type // user: %15 // function_ref String.init(_builtinStringLiteral:utf8Cod
Avatar
exit status: 1 with stderr:<stdin>:1:15: error: cannot convert value of type 'Optional<Int>' to expected dictionary value type 'String' _ = ["value": Int?(1)] as [String: String?] ^
Avatar
exit status: 134 with stderr:<stdin>:1:24: warning: coercion from '[String : Int?]' to '[String : String?]' may fail; use 'as?' or 'as!' instead _ = ["value": Int?(1)] as [String: String?] ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ SIL verification failed: branch argument types do not match arguments for dest bb: std::equal(BI->getArgs().begin(), BI->getArgs().end(), BI->getDestBB()->args_begin(), [&](SILValue branchArg, SILArgument *bbArg) { return verifyBranchArgs(branchArg, bbArg); }) Verifying instruction: %31 = enum $Optional<Int>, #Optional.some!enumelt, %30 : $Int // user: %32 -> br bb3(%31 : $Optional<Int>) // id: %32 In function: // main sil [ossa] @main : $@convention(c) (Int32, UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>) -> Int32 { bb0(%0 : $Int32, %1 : $UnsafeMutablePointer<Optional<UnsafeMutablePointer<Int8>>>): %2 = integer_literal $Builtin.Word, 1 // user: %4 // function_ref _allocateUninitializedArray<A>(_:) %3 = function_ref @$ss27_allocateUninitializedArrayySayxG_BptBwlF : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %4 %4 = apply %3<(String, Optional<String>)>(%2) : $@convention(thin) <τ_0_0> (Builtin.Word) -> (@owned Array<τ_0_0>, Builtin.RawPointer) // user: %5 (%5, %6) = destructure_tuple %4 : $(Array<(String, Optional<String>)>, Builtin.RawPointer) // users: %38, %7 %7 = pointer_to_address %6 : $Builtin.RawPointer to [strict] $*(String, Optional<String>) // users: %9, %8 %8 = tuple_element_addr %7 : $*(String, Optional<String>), 0 // user: %16 %9 = tuple_element_addr %7 : $*(String, Optional<String>), 1 // user: %36 %10 = string_literal utf8 "value" // user: %15 %11 = integer_literal $Builtin.Word, 5 // user: %15 %12 = integer_literal $Builtin.Int1, -1 // user: %15 %13 = metatype $@thin String.Type // user: %15 // function_ref String.init(_builtinStringLiteral:utf8Cod
Avatar
なんか壊れてるな
Avatar
キャスト周りをResultBuilderに噛ませると壊れるの観測してたけど、関係なく壊れてるのね
Avatar
omochimetaru 4/30/2021 7:25 AM
秘孔だ
Avatar
Kishikawa Katsumi 4/30/2021 7:52 AM
こんなバグがまだ見つかるんですねえ😲
Avatar
@swift-5.3.3 @swift-5.4.3 class MyCls {} let obj: MyCls = { obj }() print(obj)
Avatar
exit status: 1 with stderr:<stdin>:2:20: error: variable used within its own initial value let obj: MyCls = { obj }() ^
Avatar
exit status: 11 with stderr:Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace. Stack dump: 0. Program arguments: /usr/bin/swift-frontend -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIODarwin.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOLinux.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/include -module-name main -lLibraries 1. Swift version 5.4 (swift-5.4-RELEASE) 2. While running us
Avatar
omochimetaru 5/13/2021 1:26 AM
あらま
1:27 AM
謎のデグレ
1:27 AM
普通にテストケースありそうなシンプルなパターンなのに。
Avatar
omochimetaru 6/5/2021 12:43 AM
@swift-5.4.3 @swift-main enum E: Codable { case a(Int) }
Avatar
exit status: 1 with stderr:<stdin>:1:6: error: type 'E' does not conform to protocol 'Decodable' enum E: Codable { ^ <stdin>:1:6: error: type 'E' does not conform to protocol 'Encodable' enum E: Codable { ^ Swift.Decodable:2:5: note: protocol requires initializer 'init(from:)' with type '(from: Decoder)' init(from decoder: Decoder) throws ^ Swift.Encodable:2:10: note: protocol requires function 'encode(to:)' with type '(Encoder) throws -> ()' func encode(to encoder: Encoder) throws ^
Avatar
swiftNightly BOT 6/5/2021 12:43 AM
no output
Avatar
omochimetaru 6/5/2021 12:45 AM
5.5 development snapshot 使ってもSE-0295使えなかったんだけど
12:47 AM
12:47 AM
release/5.5 ブランチにこれがマージ済みかどうかってGitHubでどうやって調べればいいんだろう
12:48 AM
SE-295 has been accepted, so we don't need to hide the feature behind a flag anymore.
12:48 AM
Avatar
両方 release/5.5 に入ってそう
Avatar
omochimetaru 6/5/2021 12:51 AM
あれー?
12:51 AM
12:51 AM
これでいいんでしたっけ
Avatar
https://github.com/apple/swift/commit/c03c3b266d411481d81a86d1591aa96ab1bfbcd7 のタグリストに、swift-5.5-DEVELOPMENT-SNAPSHOT-2021-06-02-a あるのでいけると思うんですが・・・
[Frontend] Remove enable-experimental-enum-codable-derivation flag
Avatar
omochimetaru 6/5/2021 12:53 AM
あ、いけた、わかった
12:54 AM
xcodeが裏で立ててる?lldbが切り替わってなくて壊れたっぽかった
12:54 AM
ビルドはできるけどエディタでエラーが出てて実行するとlldbなんちゃらかんちゃらって謎のエラーが出てた
👍 1
12:54 AM
失礼しました
Avatar
release/5.5 ブランチにこれがマージ済みかどうかってGitHubでどうやって調べればいいんだろう
github じゃないけど git branch -a --contains c03c3b266d411481d81a86d1591aa96ab1bfbcd7 | grep release/5.5 とかですかね
Avatar
omochimetaru 6/5/2021 12:57 AM
gitでやるのが早いか。固定回線がいまなくて渋ってました。
12:57 AM
--contains というのがあるんすね。
12:57 AM
12:57 AM
ビルドはできるけど実行できないや Xcode12.5とswift5.5の何かが噛み合わないっぽいな
1:02 AM
[omochi@omochi-iMacPro Sandbox]$ swift --version Apple Swift version 5.5-dev (LLVM 32757f073852da0, Swift 976d23d3f72d24b) Target: x86_64-apple-macosx11.0 [omochi@omochi-iMacPro Sandbox]$ swift main.swift Killed: 9 [omochi@omochi-iMacPro Sandbox]$ swift dyld: Library not loaded: @rpath/Python3.framework/Versions/3.8/Python3 Referenced from: /Library/Developer/Toolchains/swift-5.5-DEVELOPMENT-SNAPSHOT-2021-06-02-a.xctoolchain/System/Library/PrivateFrameworks/LLDB.framework/Versions/A/LLDB Reason: image not found Abort trap: 6
1:03 AM
同梱されてるLLDBがPython3.8に依存してる?
Avatar
omochimetaru 6/5/2021 1:28 AM
うーん公式のPython3.8を入れてみたけど
1:28 AM
/Library/Frameworks/Python.framework で、 Python3.framework じゃない。
Avatar
omochimetaru 6/5/2021 1:42 AM
Load command 27 cmd LC_RPATH cmdsize 80 path /Applications/Xcode.app/Contents/Developer/Library/Frameworks/ (offset 12)
1:43 AM
[omochi@omochi-iMacPro Library]$ ls /Applications/Xcode12.5.app/Contents/Developer/Library/Frameworks | grep Python3 Python3.framework
1:43 AM
なるほど。
Avatar
omochimetaru 6/5/2021 1:50 AM
Xcode.app -> Xcode12.5.app 置いたけどまだ駄目だ
1:50 AM
[omochi@omochi-iMacPro Sandbox]$ swift error: failed to launch REPL process: process exited with status -1 (attach failed (Not allowed to attach to process. Look in the console messages (Console.app), near the debugserver entries when the attached failed. The subsystem that denied the attach permission will likely have logged an informative message about why it was denied.))
1:51 AM
Xcodeからは実行できるようになった・・・
Avatar
omochimetaru 6/5/2021 4:33 PM
@swift-main import Foundation enum E: Codable { case a(Int?) } let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted let json = try encoder.encode(E.a(nil)) print(String(data: json, encoding: .utf8)!)
Avatar
swiftNightly BOT 6/5/2021 4:33 PM
{ "a" : { } }
Avatar
omochimetaru 6/5/2021 4:33 PM
あーやっぱそうなんか。 (edited)
Avatar
omochimetaru 6/5/2021 4:48 PM
@swift-main import Foundation enum E: Codable { case a(Int??) } let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted let json = try encoder.encode(E.a(.some(.none))) print(String(data: json, encoding: .utf8)!)
Avatar
swiftNightly BOT 6/5/2021 4:48 PM
{ "a" : { "_0" : null } }
Avatar
omochimetaru 6/5/2021 4:48 PM
うぇえぇ
Avatar
Kishikawa Katsumi 6/5/2021 4:48 PM
意図した挙動なんだろうか
Avatar
omochimetaru 6/5/2021 4:49 PM
一応こうなってると、 .some(.some(1)) .some(.none) .none のどれもが異なるJSONになるので、
4:49 PM
デコードできていい・・・? ほんとか?デコード側どうなんだろう
Avatar
Kishikawa Katsumi 6/5/2021 4:49 PM
3重以上になったらどうなるのかなあ。
Avatar
omochimetaru 6/5/2021 4:49 PM
たしかに!w
4:50 PM
@swift-main import Foundation enum E: Codable { case a(Int???) } let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted let value: [E] = [ .a(.none), .a(.some(.none)), .a(.some(.some(.none))), .a(.some(.some(.some(1)))) ] let json = try encoder.encode(value) print(String(data: json, encoding: .utf8)!) (edited)
Avatar
swiftNightly BOT 6/5/2021 4:50 PM
exit status: 1 with stderr:<stdin>:10:6: error: enum case 'a' cannot be used as an instance member .a(.none) ~^~~~~~~~ E <stdin>:11:6: error: enum case 'a' cannot be used as an instance member .a(.some(.none)) ~~~~~^~~~~~~~~~~~~~~ E <stdin>:12:6: error: enum case 'a' cannot be used as an instance member .a(.some(.some(.none))) ~~~~~^~~~~~~~~~~~~~~~~~~~~~ E
Avatar
omochimetaru 6/5/2021 4:51 PM
@swift-main import Foundation enum E: Codable { case a(Int???) } let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted let value: [E] = [ .a(.none), .a(.some(.none)), .a(.some(.some(.none))), .a(.some(.some(.some(1)))) ] let json = try encoder.encode(value) print(String(data: json, encoding: .utf8)!)
Avatar
swiftNightly BOT 6/5/2021 4:51 PM
[ { "a" : { } }, { "a" : { "_0" : null } }, { "a" : { "_0" : null } }, { "a" : { "_0" : 1 } } ]
Avatar
Kishikawa Katsumi 6/5/2021 4:52 PM
元の型が2重または3重オプショナルの場合エンコード結果から元の型はわからないけどそれは問題ないんですよね?
Avatar
omochimetaru 6/5/2021 4:52 PM
型のほうは case名のキーの a で残ってるんでいいのです
Avatar
Kishikawa Katsumi 6/5/2021 4:53 PM
まあそうか。オプショナルは元々のEnum含まない使用でも広く受けることできますしね。
Avatar
omochimetaru 6/5/2021 4:53 PM
一番外側の none は キーレス、一番内側のsomeは値、その中間レベルの .some の中の .none は全部 null につぶれてしまうようだ。
4:53 PM
中間の null は正しくデコードできるのか・・・?
4:55 PM
@swift-main import Foundation enum E: Codable { case a(Int???) } let decoder = JSONDecoder() let json = """ [ { "a" : { } }, { "a" : { "_0" : null } }, { "a" : { "_0" : null } }, { "a" : { "_0" : 1 } } ] """.data(using: .utf8)! let value = try decoder.decode([E].self, from: json) dump(value)
Avatar
swiftNightly BOT 6/5/2021 4:55 PM
▿ 4 elements ▿ main.E.a - a: nil ▿ main.E.a - a: nil ▿ main.E.a - a: nil ▿ main.E.a ▿ a: Optional(Optional(Optional(1))) ▿ some: Optional(Optional(1)) ▿ some: Optional(1) - some: 1
Avatar
omochimetaru 6/5/2021 4:55 PM
駄目だな。デコード側はキーレスとキー有りのnullの区別もできない。
4:56 PM
エンコード側は3種類の出力があるけどデコードは2種類(最も外側noneと最も内側some)しか扱えないと。
Avatar
Kishikawa Katsumi 6/5/2021 4:56 PM
意図した挙動じゃない気がしますねえ。
4:56 PM
エンコードのほう。
4:57 PM
キーがあるnilで良さそうですけどキーがないほうが自然ですか?
4:57 PM
私の印象はパッと見ての印象だから違うかもしれない。
Avatar
omochimetaru 6/5/2021 4:58 PM
codableってそうなんですよね、キーも出さない
4:59 PM
SE-0295のenumのassoc valueのoptionalの扱いについては文書で触れてないけど、 (edited)
Avatar
Kishikawa Katsumi 6/5/2021 5:00 PM
なるほど。もともとのCodableはnilのときキーごと消すんでしたか。
5:01 PM
まあそうすると "_0" : null はnullという値があるっていう表現になるから合ってるのか。
5:01 PM
まあJSONの仕様を超えてるし難しいところだ。
Avatar
omochimetaru 6/5/2021 5:02 PM
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - apple/swift-evolution
5:02 PM
うーん、Codable自動実装のプロポーザルどれだ?
5:03 PM
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - apple/swift-evolution
5:03 PM
最初からあったのか。
5:04 PM
うーん、SE-0166に明確な言及は無い気がする・・・w
Avatar
omochimetaru 6/5/2021 5:32 PM
5:33 PM
できた。ちょっと実装がむずかった。
Avatar
@swift-main struct A { let i: Int } struct B { let a: A? = nil } let _: [Any] = [B()].compactMap(\.a?.i)
Avatar
swiftNightly BOT 6/9/2021 1:09 AM
exit status: 1 with stderr:<stdin>:2:1: error: extraneous '}' at top level } ^ <stdin>:4:10: error: cannot find type 'A' in scope let a: A? = nil ^
Avatar
@swift-main struct A { let i: Int } struct B { let a: A? = nil } let _: [Any] = [B()].compactMap(\.a?.i)
Avatar
swiftNightly BOT 6/9/2021 1:10 AM
exit status: 134 with stderr:swift-frontend: /home/buildnode/jenkins/workspace/oss-swift-package-linux-ubuntu-16_04/swift/lib/Sema/CSApply.cpp:4968: swift::Expr *(anonymous namespace)::ExprRewriter::visitKeyPathExpr(swift::KeyPathExpr *): Assertion `leafTy->getOptionalObjectType()->isEqual( componentTy->getWithoutSpecifierType())' failed. Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace. Stack dump: 0. Program arguments: /usr/bin/swift-frontend -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -module-cache-path /Libraries/.build/x86_64-unknown-linux-gnu/debug/ModuleCache -D DEBUG -new-driver-path /usr/bin/swift-driver -resource-dir /usr/lib/swift -Xllvm -enable-swifttailcc-musttail-check -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOSHA1.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOHTTPParser.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -Xcc -fmodule-map-file=/Libraries/.build/x86_64-unknown-linux-gnu/debug/CNIOAtomics.build/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -Xcc -fmodule-map-file=/Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include/module.modulemap -Xcc -I -Xcc /Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include -Xcc -fmodule-map-file=/Libraries/
Avatar
ふむ
Avatar
@swift-main @propertyWrapper struct Wrapper<T> { init(wrappedValue: T) { self.wrappedValue = wrappedValue } init(projectedValue: Self) { self.wrappedValue = projectedValue.wrappedValue } var wrappedValue: T var projectedValue: Self { return self } } let useWrapper: (Wrapper<Int>) -> Void = { $$0 in print($$0) print(_$0) }
Avatar
swiftNightly BOT 6/9/2021 2:57 AM
no output
Avatar
これがコンパイル通るのって正しいんでしょうか 変数名に$が使えるのか (edited)
Avatar
@swift-main protocol P1 {} protocol P2 { associatedtype X: P1 = Int }
Avatar
swiftNightly BOT 6/13/2021 11:00 AM
no output
Avatar
IntはP1にconformしないのでXのデフォルト値として常に成り立たないんだけど、デフォルト値の宣言の時点ではエラーにならない
11:04 AM
例えばP1がpublicかつ外部モジュールで extension Int: P1 {} された場合、 X: P1 が成り立つケースはあるがinternalな場合はエラーでいい気がする
Avatar
omochimetaru 6/16/2021 5:23 AM
@swift-5.3.3 @swift-5.4.3 @swift-main func f() { var a: Int? = 1 guard let a = a else { return } _ = a + 1 }
Avatar
stderr:<stdin>:2:7: warning: variable 'a' was never mutated; consider changing to 'let' constant var a: Int? = 1 ~~~ ^ let
Avatar
exit status: 1 with stderr:<stdin>:3:13: error: definition conflicts with previous value guard let a = a else { return } ^ <stdin>:2:7: note: previous definition of 'a' is here var a: Int? = 1 ^ <stdin>:4:7: error: value of optional type 'Int?' must be unwrapped to a value of type 'Int' _ = a + 1 ^ <stdin>:4:7: note: coalesce using '??' to provide a default when the optional value contains 'nil' _ = a + 1 ^ ?? <#default value#> <stdin>:4:7: note: force-unwrap using '!' to abort execution if the optional value contains 'nil' _ = a + 1 ^ !
Avatar
swiftNightly BOT 6/16/2021 5:23 AM
stderr:<stdin>:2:7: warning: variable 'a' was never mutated; consider changing to 'let' constant var a: Int? = 1 ~~~ ^ let
Avatar
omochimetaru 6/16/2021 5:24 AM
@swift-5.3.3 @swift-5.4.3 @swift-main func f() { var a = 1 var a = 1 }
Avatar
exit status: 1 with stderr:<stdin>:3:7: error: invalid redeclaration of 'a' var a = 1 ^ <stdin>:2:7: note: 'a' previously declared here var a = 1 ^
Avatar
exit status: 1 with stderr:<stdin>:3:7: error: definition conflicts with previous value var a = 1 ^ <stdin>:2:7: note: previous definition of 'a' is here var a = 1 ^ <stdin>:2:7: warning: initialization of variable 'a' was never used; consider replacing with assignment to '_' or removing it var a = 1 ~~~~^ _ <stdin>:3:7: warning: initialization of variable 'a' was never used; consider replacing with assignment to '_' or removing it var a = 1 ~~~~^ _
Avatar
swiftNightly BOT 6/16/2021 5:24 AM
exit status: 1 with stderr:<stdin>:3:7: error: invalid redeclaration of 'a' var a = 1 ^ <stdin>:2:7: note: 'a' previously declared here var a = 1 ^
Avatar
omochimetaru 6/16/2021 5:24 AM
Swift5.4からローカル変数をguardでshadowできるの知らなかった。
Avatar
@swift-main import Foundation enum Foo: String, Codable { case bar = "bar" } let data = try! JSONEncoder().encode(Foo.bar) let string = String(data: data, encoding: .utf8)! print(string)
Avatar
swiftNightly BOT 6/25/2021 8:05 AM
"bar"
Avatar
@swift-main import Foundation enum Foo: Codable { case bar } let data = try! JSONEncoder().encode(Foo.bar) let string = String(data: data, encoding: .utf8)! print(string)
Avatar
swiftNightly BOT 6/25/2021 8:06 AM
{"bar":{}}
Avatar
omochimetaru 6/25/2021 9:12 AM
うむ (edited)
Avatar
@swift-5.0.3 @swift-5.1.5 @swift-5.2.5 @swift-5.3.3 @swift-5.4.3 func test(_ callback: () -> Void) { let x = callback x() } https://forums.swift.org/t/an-odd-error-escaping-closure-captures-mutating-self/50118/10 (edited)
Avatar
no output
Avatar
no output
Avatar
no output
Avatar
exit status: 1 with stderr:<stdin>:2:13: error: non-escaping parameter 'callback' may only be called let x = callback ^ <stdin>:1:11: note: parameter 'callback' is implicitly non-escaping func test(_ callback: () -> Void) { ^ @escaping
Avatar
no output
Avatar
@swift-5.4.3 import CoreFoundation print(CFSwapInt16HostToBig)
Avatar
swift54 BOT 7/2/2021 6:32 AM
(Function)
Avatar
@swift-5.4.3 import Foundation print(CFSwapInt16HostToBig)
Avatar
swift54 BOT 7/2/2021 6:32 AM
exit status: 1 with stderr:<stdin>:2:7: error: cannot find 'CFSwapInt16HostToBig' in scope print(CFSwapInt16HostToBig) ^~~~~~~~~~~~~~~~~~~~
Avatar
@swift-main import Foundation enum A: Hashable { case unix(path: Swift.String) @available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) case url(_: URL) @available(macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0, *) case srv(_: Swift.String) }
Avatar
swiftNightly BOT 7/2/2021 8:00 AM
no output
Avatar
@swift-main struct Test { func left() async -> String { "l" } func right() async -> String { "r" } func test() async { async let (l, r) = (left(), right()) print(await l) print(await r) } }
Avatar
swiftNightly BOT 7/7/2021 2:51 PM
exit status: 1 with stderr:<stdin>:6:9: error: 'async' modifier is only valid when experimental concurrency is enabled async let (l, r) = (left(), right()) ^ <stdin>:8:15: warning: no 'async' operations occur within 'await' expression print(await l) ^ <stdin>:9:15: warning: no 'async' operations occur within 'await' expression print(await r) ^ <stdin>:6:28: error: expression is 'async' but is not marked with 'await' async let (l, r) = (left(), right()) ^~~~~~~~~~~~~~~~~ await <stdin>:6:29: note: call is 'async' async let (l, r) = (left(), right()) ^ <stdin>:6:37: note: call is 'async' async let (l, r) = (left(), right()) ^
Avatar
@swift-main import Foundation struct LoggedInState {} struct LoggedOutState {} let date1 = Date() let date2 = Date() enum Permission: Equatable { case freeDuring(Range<Date>) case free case subscriberOnly } print(enumTag(Permission.freeDuring(date1 ..< date2))) print(enumTag(Permission.free)) print(enumTag(Permission.subscriberOnly)) private func enumTag<Case>(_ `case`: Case) -> UInt32? { let metadataPtr = unsafeBitCast( type(of: `case`), to: UnsafeRawPointer.self ) let kind = metadataPtr.load(as: Int.self) let isEnumOrOptional = kind == 0x201 || kind == 0x202 guard isEnumOrOptional else { return nil } let vwtPtr = (metadataPtr - MemoryLayout<UnsafeRawPointer>.size) .load(as: UnsafeRawPointer.self) let vwt = vwtPtr.load(as: EnumValueWitnessTable.self) return withUnsafePointer(to: `case`) { vwt.getEnumTag($0, metadataPtr) } } private struct EnumValueWitnessTable { let f1, f2, f3, f4, f5, f6, f7, f8: UnsafeRawPointer let f9, f10: Int let f11, f12: UInt32 let getEnumTag: @convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> UInt32 let f13, f14: UnsafeRawPointer } (edited)
Avatar
swiftNightly BOT 7/8/2021 3:24 PM
stderr:<stdin>:14:1: warning: result of call to 'enumTag' is unused enumTag(Permission.freeDuring(date1 ..< date2)) ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:15:1: warning: result of call to 'enumTag' is unused enumTag(Permission.free) ^ ~~~~~~~~~~~~~~~~~ <stdin>:16:1: warning: result of call to 'enumTag' is unused enumTag(Permission.subscriberOnly) ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avatar
@swift-main import Foundation struct LoggedInState {} struct LoggedOutState {} let date1 = Date() let date2 = Date() enum Permission: Equatable { case freeDuring(Range<Date>) case free case subscriberOnly } print(enumTag(Permission.freeDuring(date1 ..< date2))) print(enumTag(Permission.free)) print(enumTag(Permission.subscriberOnly)) private func enumTag<Case>(_ `case`: Case) -> UInt32? { let metadataPtr = unsafeBitCast( type(of: `case`), to: UnsafeRawPointer.self ) let kind = metadataPtr.load(as: Int.self) let isEnumOrOptional = kind == 0x201 || kind == 0x202 guard isEnumOrOptional else { return nil } let vwtPtr = (metadataPtr - MemoryLayout<UnsafeRawPointer>.size) .load(as: UnsafeRawPointer.self) let vwt = vwtPtr.load(as: EnumValueWitnessTable.self) return withUnsafePointer(to: `case`) { vwt.getEnumTag($0, metadataPtr) } } private struct EnumValueWitnessTable { let f1, f2, f3, f4, f5, f6, f7, f8: UnsafeRawPointer let f9, f10: Int let f11, f12: UInt32 let getEnumTag: @convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> UInt32 let f13, f14: UnsafeRawPointer }
Avatar
swiftNightly BOT 7/8/2021 3:25 PM
Optional(0) Optional(1) Optional(2)stderr:<stdin>:14:7: warning: expression implicitly coerced from 'UInt32?' to 'Any' print(enumTag(Permission.freeDuring(date1 ..< date2))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:14:7: note: provide a default value to avoid this warning print(enumTag(Permission.freeDuring(date1 ..< date2))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ?? <#default value#> <stdin>:14:7: note: force-unwrap the value to avoid this warning print(enumTag(Permission.freeDuring(date1 ..< date2))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! <stdin>:14:7: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(enumTag(Permission.freeDuring(date1 ..< date2))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ as Any <stdin>:15:7: warning: expression implicitly coerced from 'UInt32?' to 'Any' print(enumTag(Permission.free)) ^~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:15:7: note: provide a default value to avoid this warning print(enumTag(Permission.free)) ^~~~~~~~~~~~~~~~~~~~~~~~ ?? <#default value#> <stdin>:15:7: note: force-unwrap the value to avoid this warning print(enumTag(Permission.free)) ^~~~~~~~~~~~~~~~~~~~~~~~ ! <stdin>:15:7: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(enumTag(Permission.free)) ^~~~~~~~~~~~~~~~~~~~~~~~ as Any <stdin>:16:7: warning: expression implicitly coerced from 'UInt32?' to 'Any' print(enumTag(Permission.subscriberOnly)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:16:7: note: provide a default value to avoid this warning print(enumTag(Permission.subscriberOnly)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ?? <#defau
Avatar
@swift-main import Foundation struct LoggedInState {} struct LoggedOutState {} let date1 = Date() let date2 = Date() enum Permission: Equatable { case freeDuring(Range<Date>) case free case subscriberOnly } print(enumTag(Permission.freeDuring(date1 ..< date2))!) print(enumTag(Permission.free)!) print(enumTag(Permission.subscriberOnly)!) private func enumTag<Case>(_ `case`: Case) -> UInt32? { let metadataPtr = unsafeBitCast( type(of: `case`), to: UnsafeRawPointer.self ) let kind = metadataPtr.load(as: Int.self) let isEnumOrOptional = kind == 0x201 || kind == 0x202 guard isEnumOrOptional else { return nil } let vwtPtr = (metadataPtr - MemoryLayout<UnsafeRawPointer>.size) .load(as: UnsafeRawPointer.self) let vwt = vwtPtr.load(as: EnumValueWitnessTable.self) return withUnsafePointer(to: `case`) { vwt.getEnumTag($0, metadataPtr) } } private struct EnumValueWitnessTable { let f1, f2, f3, f4, f5, f6, f7, f8: UnsafeRawPointer let f9, f10: Int let f11, f12: UInt32 let getEnumTag: @convention(c) (UnsafeRawPointer, UnsafeRawPointer) -> UInt32 let f13, f14: UnsafeRawPointer }
Avatar
swiftNightly BOT 7/8/2021 3:26 PM
0 1 2
Avatar
@swift-5.4.3 @propertyWrapper struct Wrapper { var wrappedValue: Int? init(wrappedValue: Int?) { self.wrappedValue = wrappedValue } } class Test { @Wrapper var foo: Int? init() { self.foo = foo } }
Avatar
swift54 BOT 7/9/2021 1:46 AM
no output
Avatar
@swift-main print("スウィフト".lowercased())
Avatar
swiftNightly BOT 7/12/2021 9:03 AM
スウィフト
Avatar
@swift-5.4.3 import Foundation let numberFormatter: NumberFormatter = { let f = NumberFormatter() f.numberStyle = .decimal f.usesGroupingSeparator = true return f }() print(numberFormatter.string(from: .init(value: 1000))) (edited)
Avatar
exit status: 1 with stderr:<stdin>:1:22: error: cannot find type 'NumberFormatter' in scope let numberFormatter: NumberFormatter = { ^~~~~~~~~~~~~~~ <stdin>:8:37: error: cannot infer contextual base in reference to member 'init' print(numberFormatter.string(from: .init(value: 1000))) ~^~~~
Avatar
@swift-5.4.3 import Foundation import CoreFoundation let numberFormatter: NumberFormatter = { let f = NumberFormatter() f.numberStyle = .decimal f.usesGroupingSeparator = true return f }() print(numberFormatter.string(from: .init(value: 1000))) (edited)
Avatar
exit status: 1 with stderr:<stdin>:3:22: error: cannot find type 'NumberFormatter' in scope let numberFormatter: NumberFormatter = { ^~~~~~~~~~~~~~~ <stdin>:10:37: error: cannot infer contextual base in reference to member 'init' print(numberFormatter.string(from: .init(value: 1000))) ~^~~~
Avatar
あれ、NumberFormatter無いんでしたっけ
Avatar
いや、いるらしいです。Botに何故か居ないのは謎https://swiftfiddle.com/rr4cuzgkcfe3jjxhlejmnkscna
SwiftFiddle is an online playground for creating, sharing and embedding Swift fiddles (little Swift programs that run directly in your browser).
Avatar
謎だ
Avatar
NumberFormatterってFoundationじゃないですか?
8:56 AM
The Foundation Project, providing core utilities, internationalization, and OS independence - apple/swift-corelibs-foundation
8:57 AM
あ、よく見たら試していたなんでもないです
Avatar
そうそう、実装もあるように見えるんですけどねえ
Avatar
Kishikawa Katsumi 7/13/2021 9:05 AM
BotとSwiftfiddleの (edited)
9:06 AM
違いは実行の仕方だな。Swiftfiddleはswift file.swiftで実行してるけどBotは一度実行ファイルを作ってるはず。
Avatar
@swift-5.4.3 import Foundation import CoreFoundation let numberFormatter: NumberFormatter = { let f = NumberFormatter() f.numberStyle = .decimal f.usesGroupingSeparator = true return f }() print(numberFormatter.string(from: .init(value: 1000)))
Avatar
Optional("1,000")stderr:<stdin>:11:7: warning: expression implicitly coerced from 'String?' to 'Any' print(numberFormatter.string(from: .init(value: 1000))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <stdin>:11:23: note: provide a default value to avoid this warning print(numberFormatter.string(from: .init(value: 1000))) ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ?? <#default value#> <stdin>:11:23: note: force-unwrap the value to avoid this warning print(numberFormatter.string(from: .init(value: 1000))) ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! <stdin>:11:23: note: explicitly cast to 'Any' with 'as Any' to silence this warning print(numberFormatter.string(from: .init(value: 1000))) ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ as Any
Avatar
あれ動いてる、何が違ったんですか?
Avatar
わかんない
Avatar
www
Avatar
コピペしただけなんですけどね
Avatar
Avatar
Kishikawa Katsumi
違いは実行の仕方だな。Swiftfiddleはswift file.swiftで実行してるけどBotは一度実行ファイルを作ってるはず。
実行ファイルは作っていません。ソースコードをswift -への標準入力として渡してます。 (edited)
Avatar
Kishikawa Katsumi 7/13/2021 11:00 AM
あら、そうでしたか。すみません。勘違いです。 じゃあ前に違いがある話が出たのは私が作ったBotとの違いかな?
Avatar
swift54ボットのインスタンスも午前3:55に再起動したきり起動しっぱなし。何が違ったのか…
11:13 AM
あー、ボットへのメンションが含まれたメッセージが編集された後、ボットからの返答を更新するのに失敗してるぽい。
11:14 AM
@swift-5.4.3 import Foundation import CoreFoundation let numberFormatter: NumberFormatter = { let f = NumberFormatter() f.numberStyle = .decimal f.usesGroupingSeparator = true return f }() print(numberFormatter.string(from: .init(value: 1000))) (edited)
Avatar
exit status: 1 with stderr:<stdin>:3:22: error: cannot find type 'NumberFormatter' in scope let numberFormatter: NumberFormatter = { ^~~~~~~~~~~~~~~ <stdin>:10:37: error: cannot infer contextual base in reference to member 'init' print(numberFormatter.string(from: .init(value: 1000))) ~^~~~
Avatar
^コンパイルエラーが出るメッセージを渡してから、それを修正することで再現した。
Avatar
なるほど
Avatar
DiscordのAPIが一部変わって、既存メッセージを編集するAPIへ渡すパラメータに省略出来ないものが追加されたらしく、編集に失敗してた。
11:21 AM
今日は直せそうにないかな
Avatar
Discord APIの変更の関係だったのか
Avatar
Kishikawa Katsumi 7/13/2021 11:28 AM
めっちゃ偶然の事象ですね😲ナイスデバッグだ。
Avatar
僕の操作のせいやった😂
Avatar
既存メッセージ削除APIは影響を受けていないので、ボットからの意図せぬ返事を残したくない場合は、メッセージ編集ではなく削除&新規投稿で回避できます。
👍 1
Avatar
@swift-5.4.3 @swift-5.3.3 @swift-main protocol P0 {} extension P0 { func openExistential() -> some P0 { return self } } func use<T: P0>(_: T) {} func make() -> P0 { fatalError() } let p0 = make() _ = p0.openExistential()
Avatar
exit status: 1 with stderr:<stdin>:13:5: error: member 'openExistential' cannot be used on value of protocol type 'P0'; use a generic constraint instead _ = p0.openExistential() ^~ ~~~~~~~~~~~~~~~
Avatar
swiftNightly BOT 7/25/2021 10:01 AM
exit status: 1 with stderr:<stdin>:13:5: error: member 'openExistential' cannot be used on value of protocol type 'P0'; use a generic constraint instead _ = p0.openExistential() ^~ ~~~~~~~~~~~~~~~
Avatar
exit status: 4 with stderr:Fatal error: file main/<stdin>, line 10 Current stack trace: 0 libswiftCore.so 0x00007fc7d0e80df0 swift_reportError + 50 1 libswiftCore.so 0x00007fc7d0ef4160 _swift_stdlib_reportFatalErrorInFile + 115 2 libswiftCore.so 0x00007fc7d0bd9eb5 <unavailable> + 1400501 3 libswiftCore.so 0x00007fc7d0bd9af7 <unavailable> + 1399543 4 libswiftCore.so 0x00007fc7d0bda0e2 <unavailable> + 1401058 5 libswiftCore.so 0x00007fc7d0bd8530 _assertionFailure(_:_:file:line:flags:) + 517 8 swift 0x00000000005b4501 <unavailable> + 1787137 9 swift 0x00000000005a1d04 <unavailable> + 1711364 10 swift 0x0000000000587e88 <unavailable> + 1605256 11 swift 0x000000000057b322 <unavailable> + 1553186 12 swift 0x00000000005780ef <unavailable> + 1540335 13 swift 0x0000000000501c2c <unavailable> + 1055788 14 libc.so.6 0x00007fc7d2f4f740 __libc_start_main + 240 15 swift 0x00000000005017a9 <unavailable> + 1054633 Stack dump: 0. Program arguments: /usr/bin/swift -frontend -interpret - -disable-objc-interop -I /Libraries/.build/x86_64-unknown-linux-gnu/debug -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/CSwiftBacktrace/include -I /Libraries/.build/checkouts/SwiftBacktrace/Sources/Clibunwind/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOSHA1/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOHTTPParser/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOAtomics/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOWindows/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIODarwin/include -I /Libraries/.build/checkouts/swift-nio/Sources/CNIOLinux/inc
Avatar
ORTでopen existentialできるか?と思ったけど制約付いてるっぽい
10:03 AM
ただ、5.3.2だとコンパイル通っちゃうw
Avatar
omochimetaru 7/25/2021 7:25 PM
実装はできるのか・・・
Avatar
@swift-5.4.3 struct Hoge { var hoge, fuga: Int } print(Hoge(hoge: 1, fuga: 2))
Avatar
Hoge(hoge: 1, fuga: 2)
Avatar
omochimetaru 7/28/2021 7:51 AM
@swift-5.4.3 import Foundation func f(q: URLRequest) {}
Avatar
exit status: 1 with stderr:<stdin>:2:11: error: cannot find type 'URLRequest' in scope func f(q: URLRequest) {} ^~~~~~~~~~
Avatar
omochimetaru 7/28/2021 7:51 AM
??
7:51 AM
@swift-5.1.5 @swift-5.2.5 @swift-5.3.3 import Foundation func f(q: URLRequest) {}
Avatar
exit status: 1 with stderr:<stdin>:2:11: error: cannot find type 'URLRequest' in scope func f(q: URLRequest) {} ^~~~~~~~~~
Avatar
exit status: 1 with stderr:<stdin>:2:11: error: use of undeclared type 'URLRequest' func f(q: URLRequest) {} ^~~~~~~~~~
Avatar
exit status: 1 with stderr:<stdin>:2:11: error: use of undeclared type 'URLRequest' func f(q: URLRequest) {} ^~~~~~~~~~
Avatar
FoundationNetworking
Avatar
omochimetaru 7/28/2021 7:52 AM
@swift-5.1.5 @swift-5.2.5 @swift-5.3.3 @swift-5.4.3 import FoundationNetworking func f(q: URLRequest) {}
Avatar
no output
Avatar
no output
Avatar
no output
Avatar
no output
Avatar
omochimetaru 7/28/2021 7:52 AM
えええ〜・・・・
7:52 AM
mac/linuxでクロスなコード書けないじゃん
Avatar
#if canImport(FoundationNetworking) import FoundationNetworking #endif をいたるところに貼り付けます…
Avatar
omochimetaru 7/28/2021 7:53 AM
開発をXcode/macでやって、デプロイ先がLinuxだから、厳しいなあ (edited)
Avatar
そのシナリオでcanImportのやつ動きますよ
Avatar
omochimetaru 7/28/2021 7:54 AM
canImportのやつを書かないといけない事に気づけない。 (edited)
Avatar
ああ
7:55 AM
LinuxベースのCIがあれば…
Avatar
omochimetaru 7/28/2021 7:55 AM
CIはあるので、そこでわかるね。
Avatar
Kishikawa Katsumi 7/28/2021 7:55 AM
FoundationNetworkingはワナ
Avatar
omochimetaru 7/28/2021 7:55 AM
罠でしかないですねこれ
7:55 AM
Appleもmac側で追従してくれないと意味がない
Avatar
逆にCIで気づけてよかった
Avatar
実装空でもいいからFoundationNetworkingモジュール作って欲しい…
Avatar
Kishikawa Katsumi 7/28/2021 7:57 AM
ほんまやなあ。
Avatar
omochimetaru 7/28/2021 8:02 AM
dockerでビルド通ったのでCIに投げた。
Avatar
毎回canImport書くのだるかったので https://github.com/rinsuki/FoundationWithNetworking を作ってしまった
no more #if canImport(FoundationNetworking). Contribute to rinsuki/FoundationWithNetworking development by creating an account on GitHub.
Avatar
@swift-5.1.5 @swift-5.4.3 import Foundation func foo() { struct Item<Content: Identifiable>: Equatable { let content: Content static func == (lhs: Item<Content>, rhs: Item<Content>) -> Bool { return lhs.content.id == rhs.content.id } } }
Avatar
exit status: 1 with stderr:<stdin>:4:12: error: type 'Item<Content>' does not conform to protocol 'Equatable' struct Item<Content: Identifiable>: Equatable { ^ <stdin>:5:13: note: stored property type 'Content' does not conform to protocol 'Equatable', preventing synthesized conformance of 'Item<Content>' to 'Equatable' let content: Content ^ Swift.==:1:24: note: candidate would match if 'Item<Content>' conformed to 'RawRepresentable' @inlinable public func == <T>(lhs: T, rhs: T) -> Bool where T : RawRepresentable, T.RawValue : Equatable ^ Swift.FloatingPoint:2:24: note: candidate would match if 'Item<Content>' conformed to 'FloatingPoint' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.BinaryInteger:2:24: note: candidate would match if 'Item<Content>' conformed to 'BinaryInteger' public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : BinaryInteger ^ Swift._Pointer:2:24: note: candidate would match if 'Item<Content>' conformed to '_Pointer' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.Strideable:3:35: note: candidate would match if 'Item<Content>' conformed to 'Strideable' @inlinable public static func == (x: Self, y: Self) -> Bool ^ Swift.StringProtocol:2:35: note: candidate would match if 'Item<Content>' conformed to 'StringProtocol' @inlinable public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : StringProtocol ^ Swift.SIMD:4:24: note: candidate would match if 'Item<Content>' conformed to 'SIMD' public static func == (lhs: Self, rhs: Self) -> Bool ^ Foundation.__BridgedNSError:2:24: note: candidate would match if 'Item<Content>' conformed to '__BridgedNSError' public static func == (lhs: Self, rhs: Self) -> Bool ^ Foundation._Bri
Avatar
exit status: 1 with stderr:<stdin>:4:12: error: type 'Item<Content>' does not conform to protocol 'Equatable' struct Item<Content: Identifiable>: Equatable { ^ Swift.==:1:24: note: candidate would match if 'Item<Content>' conformed to 'RawRepresentable' @inlinable public func == <T>(lhs: T, rhs: T) -> Bool where T : RawRepresentable, T.RawValue : Equatable ^ Swift.FloatingPoint:2:24: note: candidate would match if 'Item<Content>' conformed to 'FloatingPoint' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.BinaryInteger:2:24: note: candidate would match if 'Item<Content>' conformed to 'BinaryInteger' public static func == <Other>(lhs: Self, rhs: Other) -> Bool where Other : BinaryInteger ^ Swift._Pointer:2:24: note: candidate would match if 'Item<Content>' conformed to '_Pointer' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.Strideable:3:35: note: candidate would match if 'Item<Content>' conformed to 'Strideable' @inlinable public static func == (x: Self, y: Self) -> Bool ^ Swift.StringProtocol:2:35: note: candidate would match if 'Item<Content>' conformed to 'StringProtocol' @inlinable public static func == <RHS>(lhs: Self, rhs: RHS) -> Bool where RHS : StringProtocol ^ Swift.SIMD:4:24: note: candidate would match if 'Item<Content>' conformed to 'SIMD' public static func == (lhs: Self, rhs: Self) -> Bool ^ Foundation.__BridgedNSError:2:24: note: candidate would match if 'Item<Content>' conformed to '__BridgedNSError' public static func == (lhs: Self, rhs: Self) -> Bool ^ Foundation._BridgedStoredNSError:2:24: note: candidate would match if 'Item<Content>' conformed to '_BridgedStoredNSError' public static func == (lhs: Self, rhs: Self) -> Bool ^ Swift.Equatable
Avatar
@swift-5.2.5 @swift-5.3.3 @propertyWrapper struct Wrap { var wrappedValue: Int = 1 } struct S { @Wrap var val } (edited)
Avatar
exit status: 1 with stderr:<stdin>:6:13: error: type annotation missing in pattern @Wrap var val ^
Avatar
no output
Avatar
https://github.com/apple/swift/pull/30663 property wrapper で var 宣言の型アノテーション省略できる
Avatar
SwiftUIの@Environment使う時にべんり
Avatar
前に SwiftUI の @Namespace で初めて見たとき、なんじゃこりゃってなった。 @Namespace private var foo (edited)
Avatar
@swift-main func hoge() async {} Task { await hoge() }