Slide 1

Slide 1 text

SWIFT UNCHARTED TERRITORY

Slide 2

Slide 2 text

CHRIS LATTNER

Slide 3

Slide 3 text

CHRIS LATTNER LLVM

Slide 4

Slide 4 text

CHRIS LATTNER LLVM SWIFT

Slide 5

Slide 5 text

CHRIS LATTNER LLVM SWIFT ! HANDSOME

Slide 6

Slide 6 text

STUCK WITH ME JP Simard @simjp realm.io

Slide 7

Slide 7 text

THIS TALK 1. Early, incomplete version of a language? 2. Buggy, pre-release compiler, IDE, OS? 3. Unreleased beta of presentation app? 4. Presenter who doesn't fully understand the language?

Slide 8

Slide 8 text

WHAT COULD POSSIBLY GO WRONG?

Slide 9

Slide 9 text

WHY SWIFT > OBJC? ▸ Type safety & inference ▸ Closures ▸ Tuples ▸ Super-Enums ▸ Functional programming ▸ Generics

Slide 10

Slide 10 text

Q: WHAT DOES IT LOOK LIKE?

Slide 11

Slide 11 text

TYPE SAFETY & INFERENCE LIKE RUST & SCALA

Slide 12

Slide 12 text

CLOSURES SWIFT CLOSURES ! OBJC BLOCKS

Slide 13

Slide 13 text

TUPLES LIKE HASKELL & SCALA

Slide 14

Slide 14 text

SUPER-ENUMS* *OK, NOT EXACTLY THE CORRECT TECHNICAL TERM

Slide 15

Slide 15 text

FUNCTIONAL PROGRAMMING LIKE HASKELL, SCALA & MANY OTHERS

Slide 16

Slide 16 text

GENERICS LIKE... UH... EVERY MODERN LANGUAGE!

Slide 17

Slide 17 text

Q: WHAT HAPPENED TO MY BELOVED *

Slide 18

Slide 18 text

▸ concepts are still there: reference types and value types ▸ pointers still exist to interact with C APIs: UnsafePointer ▸ C APIs are still usable:

Slide 19

Slide 19 text

DEMO #1

Slide 20

Slide 20 text

Q: HOW DOES IT ALL WORK?

Slide 21

Slide 21 text

A: it barely does !

Slide 22

Slide 22 text

SERIOUSLY, HOW DOES IT WORK? ▸ Swift objects are actually Objective-C objects* ▸ *Without any methods or properties... strange! ▸ Just like C++, Swift methods are listed in a vtable ▸ Swift properties are ivars with Swift methods ▸ ivars have no type encoding!!! ivar_getTypeEncoding(); // always NULL

Slide 23

Slide 23 text

DEMO #2

Slide 24

Slide 24 text

XCODE & TOOLS INTEGRATION ▸ Clang knows absolutely nothing about Swift ▸ Swift compiler talks to clang through XPC /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ usr/bin

Slide 25

Slide 25 text

DEMO #3

Slide 26

Slide 26 text

JAZZY GITHUB.COM/REALM/JAZZY A SOULFUL WAY TO GENERATE DOCS FOR SWIFT & OBJECTIVE-C

Slide 27

Slide 27 text

LINKS () ▸ Official Swift website ▸ The Swift Programming Language Book ▸ WWDC Videos ▸ WWDC Sample Code ▸ Xcode 6 (and other resources) Apple Developer Account Required

Slide 28

Slide 28 text

LINKS (!) ▸ This talk: github.com/jpsim/talks ▸ Jay Freeman's AltConf talk: debugging your (Swift) apps with cycript ▸ ObjC/Swift doc generator: github.com/realm/jazzy ▸ Evan Swick: Inside Swift ▸ Swift on StackOverflow

Slide 29

Slide 29 text

THANK YOU!

Slide 30

Slide 30 text

Meetup().questions?.askThem! JP SIMARD, @SIMJP, REALM.IO