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::RunImme