swiftcoreとfoundationを読んでみた
TRANSCRIPT
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(CastToNativeObject, "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++を勉強する
→ 読んでるだけで楽しい!