SwiftCoreと
Foundationを読んで
みた
Mercari Inc.
@kitasuke
Swift open sourced!
事前準備
Swift のソースファイルを Xcode で開ける
ようにする
熊谷さんの記事が分かり易い
準備段階で出来なかったこと
.gybファイルが開かない?
Swift Package Managerのプロジェクトが
生成されない?
概要
主に使用されている言語
→ Swift
→ C++
→ C
Swiftで書かれている主な箇所
→ SwiftCore
→ Foundation
→ TestFoundation
→ Swift Package Manager
未実装・修正すべき箇所
→ fatalError("not implemented")
→ FIXME
→ NSUnimplemented()
Contributor出来そうな箇所
→ バグ修正
→ テスト修正
→ 未実装機能の追加
参考になったもの
(SwiftCore)
swift/docsにあるドキュメント
→ Array.rst
→ Generics.rst
→ Literals.rst
→ Pattern Matching.rst
→ Testing.rst
LangRefNew.rst
→ Whitespace and Comments
→ Reserved Punctuation Tokens
→ Reserved Keywords
→ Contextual Keywords
→ Integer Literals
→ Operator Tokens
良く見たもの
→ nonmutating set
→ public prefix func
→ infix operator
Attr.def
→ TYPEATTR(objcblock)
→ SIMPLEDECLATTR(noreturn, NoReturn,
OnFunc, 7)
→ DECL_ATTR(autoclosure, AutoClosure,
OnParam, 28)
良く見たもの
→ @_transparent
→ @silgenname
→ @inline(never)
→ @effects(readonly)
Swift Intermediate Language
(SIL.rst)
→ Address Types
→ Local Storage Types
→ Box Types
→ Function Types
→ Properties of Types
Builtin.def
→ BUILTINSILOPERATION(Retain, "retain",
Special)
→ BUILTINMISCOPERATION(Sizeof, "sizeof",
"n", Special)
→
BUILTINSILOPERATION(CastToNativeObj
ect, "castToNativeObject", Special)
良く見たもの
→ Builtin.addressof($0)
→ Builtin.NativeObject
→ Builtin.castFromNativeObject($0)
→ Builtin.bridgeToRawPointer($0)
参考になったもの
(Foundation)
TestFoundation
→ TestNSArray.swift
→ TestNSFileManager.swift
→ TestNSURL.swift
→ TestNSNull.swift
まとめ
→ Foundationの方が読みやすい
→ Swiftを勉強するためにC++を勉強する
→ 読んでるだけで楽しい!

SwiftCoreとFoundationを読んでみた