Slide 1

Slide 1 text

Swift on the Raspberry PI

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

TOC 1. Why 2. Building 3. GPIO 4. Tools

Slide 4

Slide 4 text

Why?

Slide 5

Slide 5 text

Just another language

Slide 6

Slide 6 text

Just another good language

Slide 7

Slide 7 text

Advantages 4 Expressive 4 Fast 4 Memory-efficient 4 C-compatible

Slide 8

Slide 8 text

Downsides 4 Not a real platform (such as Android Things) 4 Not many drivers 4 ARM Linux not officially supported by Apple (yet)

Slide 9

Slide 9 text

Building

Slide 10

Slide 10 text

Requirements 4 Raspberry PI 3 4 Micro-SD Card (8 or 16 GB) 4 Ubuntu Core (+ Ubuntu SSO Account) or Raspbian 4 External Screen (just for first booting) 4 HDMI Cable !

Slide 11

Slide 11 text

1. Ubuntu Core 1. Create an Ubuntu SSO Account 2. Read https://developer.ubuntu.com/core/get- started/raspberry-pi-2-3 3. Install on the micro-SD card 4. ssh @

Slide 12

Slide 12 text

2. The "Classic" mode 1. sudo snap install classic --edge --devmode 2. sudo classic

Slide 13

Slide 13 text

3. Building Swift 6 Hours From sources

Slide 14

Slide 14 text

3. (not) Building Swift (The I've-just-got-30-minutes way) $ http://swift-arm.ddns.net/job/Swift-3.0-Pi3-ARM-Incremental/ lastSuccessfulBuild/artifact/ swift-3.0-2016-12-21-RPi23-ubuntu16.04.tar.gz or $ wget https://www.dropbox.com/s/cah35gf5ap22d11/swift-3.0.2-RPi23-1604.tgz Courtesy of @uraimo

Slide 15

Slide 15 text

4. Dependencies $ sudo apt-get install -y libpython2.7 libxml2 libicu-dev clang-3.6 libcurl3 $ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.6 100 $ sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.6 100

Slide 16

Slide 16 text

5. All set! $ swift --version > Swift version 3.0.1-dev (LLVM a922364e5b, Clang 968470f170, Swift 0cca6668a2)

Slide 17

Slide 17 text

Resources 4 http://viteinfinite.com/2017/02/swift-on-the- raspberry-pi-part-1/ 4 http://dev.iachieved.it/iachievedit/building- swift-3-0-on-an-armv7-system/ 4 https://www.uraimo.com/2016/12/30/Swift-3-0-2- for-raspberrypi-zero-1-2-3/

Slide 18

Slide 18 text

GPIO

Slide 19

Slide 19 text

4 https://github.com/uraimo/SwiftyGPIO

Slide 20

Slide 20 text

let package = Package( name: "MyProject", dependencies: [ .Package(url: "https://github.com/uraimo/SwiftyGPIO.git", majorVersion: 0), ] )

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

A basic example import SwiftyGPIO func run() { let gpios = SwiftyGPIO.GPIOs(for:.RaspberryPi2) guard let gpio2 = gpios[.P2], let gpio3 = gpios[.P3] else { return } gpio2.direction = .IN gpio3.direction = .OUT gpio2.onChange{ gpio in gpio3.value = gpio.value } _ = readLine() } run()

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Tools

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

SourceKitten

Slide 28

Slide 28 text

SwiftKitten + rsub

Slide 29

Slide 29 text

SwiftKitten + rsub ssh -R 52698:localhost:52698 $ rsub file.swift

Slide 30

Slide 30 text

Resources 4 https://github.com/johncsnyder/SwiftKitten 4 https://github.com/Drarok/rsub

Slide 31

Slide 31 text

That's (almost) all!

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content