kateinoigakukunのブログ

思考垂れ流しObserver

2018-01-01から1年間の記事一覧

18になった

18歳になりました。1年間の振り返りと気持ちを書いておきます。 17歳 やったこととしてはこんな感じ。 iOSエンジニアのバイト 勉強会参加 カンファレンス登壇 コンパイラいじり 卒論 OSS開発 アニメ鑑賞 自分としては結構充実していたと思ってます。が、行き…

iOSDCで登壇したよ

今年はスピーカーとして参加しました。 発表内容 とりあえずスライドを貼ります。コンパイラのコード部分は口頭で喋った部分が多いので動画が公開されるのを待ってください。 スライドも貼ったのでこの記事の役割は終わりました。ここからは思ったことをつら…

iOSDC Japan 2018でコンパイラの話をします

お前は誰 Twitter @kateinoigakukun GIthub @kateinoigakukun 今はStart Today TechnologiesでiOSエンジニアの学生バイト 話します こんにちは。今週の8/31にiOSDC Japan 2018でコンパイラの話をします。 コンパイラから紐解くSwift method dispatch by 家庭…

Swift LLVM IRを読む - classの初期化

swiftc -emit-ir foo.swift で出力したLLVM IRを読んだ際のメモ class A {} let a = A() このコードからLLVM IRを出力してmain関数のみを取り出したのが以下である。 define i32 @main(i32, i8**) #0 { entry: %2 = bitcast i8** %1 to i8* %3 = call swiftc…

Enumの生成を制限する

Discordで話題に上がってたやつ。遊んでたら見つけた。 tarunon - 2018/04/26 午後4時2分 Enumを生成勝手に出来ないようにする方法って無いですよね structはinitをpublicにしなければ勝手に生成出来ないけど protocol extensionで同名のstatic funcを生やす…

├の読み方

「├ 読み方 数学」とかいうアホっぽいクエリを投げてしまった。 シークエント - Wikipedia 一番悲しくなったのは、この記号が出現した数行下にキチンと解説してあったこと。さすが型システム入門、素晴らしい入門書だ。

コンパイルが通ってほしいSwiftコード

見つけたら随時更新。バグレポ出してないやつもある Protocol extension周り protocol extensionの中でtypealiasを貼ると何かが壊れる 'T' does not have a member type named 'A'; did you mean 'A'? func foo<T: P>(a: T) -> T.A { fatalError() } struct B {} p</t:>…