Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift on Linux

Swift on Linux

Presented at CocoaConf Austin 2016 and Pragmaconf '16 in Verona, Italy

Ben Scheirman

October 13, 2016
Tweet

More Decks by Ben Scheirman

Other Decks in Programming

Transcript

  1. Swift on Linux

    View Slide

  2. Hi, I’m Ben
    @subdigital

    View Slide

  3. View Slide

  4. View Slide

  5. Written in Swift

    View Slide

  6. Running on $5/mo
    Linux VPS

    View Slide

  7. (my little secret)

    View Slide

  8. Swift 1.0
    Sept 2014
    Swift 2.0
    Swift Open Sourced Swift 3.0!
    Sept 2015
    Dec 2015 Sept 2016

    View Slide

  9. … but what does that mean?
    +
    github.com/apple

    View Slide

  10. 1. Swift Language,
    Compiler, & Debugger
    (with full commit history!)

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. 2. Swift Core Libraries

    View Slide

  15. *not on Linux (yet)
    github.com/apple/swift-corelibs-foundation
    github.com/apple/swift-corelibs-xctest
    github.com/apple/swift-corelibs-libdispatch
    Foundation
    XCTest
    libDispatch*

    View Slide

  16. 3. Swift Package Manager
    github.com/apple/swift-package-manager

    View Slide

  17. • Defines how modules are built
    • Resolves Dependencies
    • Convention over Configuration

    View Slide

  18. // Package.swift
    import PackageDescription
    let package = Package(
    name: “Foo”,
    dependencies: []
    )

    View Slide

  19. View Slide

  20. 4. Swift Evolution
    github.com/apple/swift-evolution

    View Slide

  21. View Slide


  22. let’s play

    View Slide

  23. vagrantup.com

    View Slide

  24. git.io/vwJ4g

    View Slide

  25. “Trusty Tahr”
    trusty(14.04) 64-bit

    View Slide

  26. View Slide

  27. View Slide

  28. $ sudo apt-get install -y \
    git \
    clang \
    libicu-dev

    View Slide

  29. $ Demo

    View Slide

  30. github.com/subdigital/
    nsdateformatter

    View Slide

  31. What Else?

    View Slide

  32. ?

    View Slide

  33. Wrap your favorite C library!

    View Slide

  34. Create a modulemap:
    module CCurl [system] {
    header "/usr/include/curl/curl.h"
    link "curl"
    export *
    }

    View Slide

  35. Add a git tag….
    $ git add .
    $ git commit -m “Initial commit”
    [master (root-commit) fa72d04] initial commit
    1 file changed, 1 insertion(+)
    $ git tag 0.0.1

    View Slide

  36. Reference from your Package.swift
    .Package(url: “../CCurl”,
    majorVersion: 0)

    View Slide

  37. Doing active development?
    Don’t forget to update the tag…. every time…

    View Slide

  38. View Slide

  39. Thanks!
    @subdigital
    nsscreencast.com

    View Slide