SlideShare a Scribd company logo
letswift(17)
What’s New in Swift 4
Fancy김영후
letswift(17)
What’s New in Swift 4
letswift(17)
What’s New in Swift 3 ?
letswift(17)
What’s New in Swift 2 ?
letswift(17)
What’s New in Swift 1.2 ?
Swift 1.2
if let data = dataStream.data {
if let encoding = data.encoding {
//Swift 1.0
}
}
if let data = dataStream.data, let encoding = data.encoding
where somethingTrue {
//Swift 2.0
}
}
Swift 2
guard let frog = frog, let cow = cow else {
return
}
extension MyViewController: UITableViewDataSource {
//implement UITableViewDataSource
}
Swift 2
enum DrinkError: ErrorType {
case NoBeerRemainingError
}
func drinkWithError() throws {
if beer.isAvailable() {
} else {
throw DrinkError.NoBeerRemainingError
}
}
do {
try drinkWithError()
} catch {
print(error)
}
Swift 3
helloString.stringByAppendingString("world")
helloString.appending("world")
UIColor.blueColor().colorWithAlphaComponent(0.5)
UIColor.blue.withAlphaComponent(0.5)
NSBundle.mainBundle()
Bundle.main
numbers.maxElement()
numbers.max()
animals.insert("Koala", atIndex: 0)
animals.insert("Koala", at: 0)
WKInterfaceDevice.currentDevice()
WKInterfaceDevice.current()
device.playHaptic(.success)
device.play(.success)
Swift 3
UIStatusBarStyle.LightContent
UIStatusBarStyle.lightContent
SKLabelVerticalAlignmentMode.Center
SKLabelVerticalAlignmentMode.center
Optional<String>.None
Optional<String>.none
letswift(17)
What’s New in Swift 4
letswift(17)
Multi-Line String Literals
Multi-Line Literals
let message = """
이것은
멀티라인
문자열
“""
//let single = """이것은 불가능"""
Multi-Line Literals
let single2 = """
이것은 
싱글라인
"""
Multi-Line Literals
let indentation = """
1
2
3
"""
// 1n 2n 3





let indentation = """
1
2
3
"""
//1n2n3
Multi-Line Literals
let indentation = """
1
2
3
“""
//Error: change indentation of this line to match closing
delimiter
let indentation = """
1
2
3
"""
letswift(17)
String
Collections once again
let string = "abcdefg"
print(string.characters.count)
print(string.count)
let cow = "Cow 🐮"
for char in cow {
print(char)
}
cow.count // 5
cow.isEmpty // false
cow.dropFirst() // "ow 🐮"
String(cow.reversed()) // "🐮 owC”
Unicode 9
""".count // Now: 1, Before: 2
"#".count // Now: 1, Before: 2
"$".count // Now: 1, Before, 4
Substring, StringProtocol
protocol StringProtocol : BidirectionalCollection {
// Implementation detail as described above
}
extension String : StringProtocol,
RangeReplaceableCollection {
typealias SubSequence = Substring
subscript(bounds: Range<String.Index>) -> Substring {
...
}
}
struct Substring : StringProtocol,
RangeReplaceableCollection {
typealias SubSequence = Substring
// near-identical API surface area to String
}
Substring, StringProtocol
let endIndex = cow.index(cow.startIndex, offsetBy: 2)
var cowSubstring = cow[cow.startIndex...endIndex]
type(of: cowSubstring) // Substring.Type
// Concatenate a String onto a Substring
cowSubstring += "🥛" // "Milk🥛"
// Create a String from a Substring
let milkString = String(cowSubstring) // "Milk🥛"
letswift(17)
Private
private, fileprivate
class Person {
private let name: String
init(name: String, age: Int) {
self.name = name
}
}
extension Person: CustomStringConvertible {
var description: String {
//Swift 3에선 fileprivate로 해야 컴파일 가능
return "(self.name)"
}
}
fileprivate in Swift 3
Extension Oriented Programming을 밀면서
fileprivate이 사실상 private 역할을 하게 됨

Swift3 private은 extension에서 접근 하지 못하는 필
드들을 구분할 수 있으나 과연 의미가 있는 구분인가?

Swift4 private “같은 소스 파일”에 있는 extension은
private 필드에 접근 가능함
fileprivate in Swift 4.0
class Person {
fileprivate var name: String
init(name: String) {
self.name = name
}
}
func run() {
let p = Person(name: "Younghoo")
p.name = "0hoo"
//fileprivate 필드는 같은 파일에서 접근 가능
}
letswift(17)
Smart KeyPaths
KeyPaths
struct Person {
var name: String
}
struct Book {
var title: String
var authors: [Person]
var primaryAuthor: Person {
return authors.first!
}
}
let abelson = Person(name: "Harold Abelson")
let sussman = Person(name: "Gerald Jay Sussman")
let book = Book(title: "Structure and Interpretation of
Computer Programs", authors: [abelson, sussman])
KeyPaths
book[keyPath: Book.title]
//"Structure and Interpretation of Computer Programs"
book[keyPath: Book.primaryAuthor.name]
//"Harold Abelson”
let authorKeyPath = Book.primaryAuthor
let nameKeyPath = authorKeyPath.appending(path: .name)
book[keyPath: nameKeyPath]
//"Harold Abelson"
KVO
import Foundation
class Child: NSObject {
let name: String
// KVO-enabled properties must be @objc dynamic
@objc dynamic var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
super.init()
}
func celebrateBirthday() {
age += 1
}
}
KVO, KeyPaths
let eugene = Child(name: "Eugene", age: 0)
let observation = eugene.observe(.age, options: [.initial, .old]) {
(child, change) in
if let oldValue = change.oldValue {
print("(child.name)’s age changed from (oldValue) to (child.age)")
} else {
print("(child.name)’s age is now (child.age)")
}
}

//Eugene’s age is now 0
eugene.celebrateBirthday()
//Eugene’s age changed from 0 to 1
옛날 옛적에…
//Objective-C
[self.controller addObserver:self forKeyPath:@"isEnabled"
options:NSKeyValueObservingOptionNew context:nil];
[self addObserver:self forKeyPath:@"controller.isEnabled"
options:NSKeyValueObservingOptionNew context:nil];
//Swift 2
addObserver(self, forKeyPath: "isEnabled", options: [],
context: nil)
//Swift 3
addObserver(self, forKeyPath: #keyPath(isEnabled), options:
[.old, .new], context: nil)
letswift(17)
Existentials
1.
(격식) (인간의) 존재에 관한[관련된]	
2.
(철학) 실존주의적인
Existentials
protocol Saveable {
func save()
}
protocol Loadable {
func load()
}
func doThing(thing: protocol<Saveable, Loadable>) {
thing.save()
thing.load()
}
Swift 3 SE-0095
func doThing(thing: Saveable & Loadable) {
thing.save()
thing.load()
}
func secondFunc<T : Saveable & Loadable>(x: T) {
}
Class and subtype
func reload(view: UIView & Reloadable) {
}
letswift(17)
One-Sided Ranges
One-Sided Ranges
let planets = ["Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", “Neptune"]
let outsideAsteroidBelt = planets[4...]
// Before: planets[4..<planets.endIndex]
let firstThree = planets[..<4]
// Before: planets[planets.startIndex..<4]
Pattern Matching
func temperature(planetNumber: Int) {
switch planetNumber {
case ...2: // anything less than or equal to 2
print("더워")
case 4...: // anything greater than or equal to 4
print("추워")
default:
print("좋아")
}
}
temperature(planetNumber: 3)
letswift(17)
Limiting @objc inference
@objc
Objective-C에 노출되는 코드는 @objc가 필요

Swift3에서 자동으로 추론함

• 사용자가 @objc를 원하는지 알기 어려움

• 컴파일러가 메타데이터를 생성해야 함

• 6~8%의 바이너리 사이즈 증가
@objc
이제 자동으로 추론되지 않는다

여전히 추론되는 예외

class Super {
@objc func foo() { }
}
class Sub : Super {
/* inferred @objc */
override func foo() { }
}
@objc
@objc protocol MyDelegate {
func bar()
}
class MyClass : MyDelegate {
/* inferred @objc */
func bar() { }
}
@IBAction, @IBOutlet, @NSManaged,
@IBInspectable 등
@objc
dynamic은 더 이상 자동으로 추론되지 않음

class MyClass {
dynamic func foo() { }
// error: 'dynamic' method must be '@objc'
@objc dynamic func bar() { } // okay
}
???

dynamic이 추후에 Objective-C 런타임과 떨어질 수 있다고 함

- (SE-0160)
letswift(17)
Codable
Before Swift4
struct Todo {
var id: Int?
var title: String
var userId: Int
var completed: Bool
}
Before Swift4
struct Todo {
var id: Int?
var title: String
var userId: Int
var completed: Bool
init?(json: [String: Any]) {
guard let title = json["title"] as? String,
let id = json["id"] as? Int,
let userId = json["userId"] as? Int,
let completed = json["completed"] as? Bool else {
return nil
}
self.title = title
self.userId = userId
self.completed = completed
self.id = id
}
}
Codable
struct Todo: Codable {
var id: Int?
var title: String
var userId: Int
var completed: Bool
}
Codable
let dict = [
"id": 1, "title":
"Let's Swift 준비",
"userId": 1,
"completed": false
] as [String: Any]
do {
let data = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
let todo = try JSONDecoder().decode(Todo.self, from: data)
print(todo.title)
} catch {
}
Before Swift4
struct Todo {
var id: Int?
var title: String
var userId: Int
var completed: Bool
func toJSON() -> [String: Any] {
var json = [String: Any]()
json["title"] = title
json["userId"] = userId
json["completed"] = completed
if let id = id {
json["id"] = id
}
return json
}
}
Before Swift4
let urlRequest = URLRequest(url: URL(string: “http://
letswift/api")!)
do {
let jsonTodo = try
JSONSerialization.data(withJSONObject: todo.toJSON(),
options: [])
urlRequest.httpBody = jsonTodo
}
Codable
let urlRequest = URLRequest(url: URL(string: “http://
letswift.com/api")!)
let encoder = JSONEncoder()
do {
let todo = Todo(id: nil, title: "Let's Swift 준비",
userId: 1, completed: false)
let json = try encoder.encode(todo)
urlRequest.httpBody = json
} catch {
}
Nested, Codable
struct Address: Codable {
let city: String
let zipcode: String
}
struct User: Codable {
let id: Int?
let name: String
let email: String
let address: Address
}
Decodable
struct Developer: Decodable {
let id: Int
let fullName: String
let iOS: Bool
}
let json = """
{
"id": 123456,
"fullName": "Kim Younghoo",
"iOS": false
}
""".data(using: .utf8)!
let dev = try JSONDecoder().decode(Developer.self, from:
json)
print(dev)
https://developer.apple.com/documentation/swift/
decodable
init(from: Decoder) Required???
Compiler Magic!
Decodable
struct Developer {
let id: Int
let fullName: String
let iOS: Bool
}
extension Developer: Decodable {
enum DeveloperKeys: String, CodingKey {
case fullName
case id
case iOS
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: DeveloperKeys.self)
let fullName: String = try container.decode(String.self,
forKey: .fullName)
let id: Int = try container.decode(Int.self, forKey: .id)
let iOS: Bool = try container.decode(Bool.self, forKey: .iOS)
self.init(id: id, fullName: fullName, iOS: iOS)
}
}
Array
let json = """
[{
"fullName": "Kim Younghoo",
"id": 123,
"iOS": true,
},{
"fullName": "Yoo Yongha",
"id": 789,
"iOS": false,
}]
""".data(using: .utf8)!
let structArray = try
JSONDecoder().decode([Developer].self, from: json)
structArray.forEach { print($0) }
Dictionary
let json = """
{
"one": {
"fullName": "Kim Younghoo",
"id": 123,
"iOS": true,
},
"two": {
"fullName": "Yoo Yongha",
"id": 789,
"iOS": false,
}
}
""".data(using: .utf8)!
let dict = try JSONDecoder().decode([String: Developer].self,
from: json)
dict.forEach { print($0) }
Change Key Names
struct Developer: Decodable {
let id: Int
let fullName: String
let iOS: Bool
private enum CodingKeys: String, CodingKey {
case id = "developer_id"
case fullName
case iOS = "is_iOS"
}
}
let json = """
{
"developer_id": 123456,
"fullName": "Kim Younghoo",
"is_iOS": false
}
""".data(using: .utf8)!
let dev = try JSONDecoder().decode(Developer.self, from: json)
Play with “Using JSON with Custom Types”
Playground
letswift(17)
Swift 5.0
Swift 5.0
Late 2018

Rust-inspired memory ownership model

Syntactic additions

Groundwork for a new concurrency model

• Non-goal for Swift 5

• maybe async/await
감사합니다

More Related Content

What's hot

Rust All Hands Winter 2011
Rust All Hands Winter 2011Rust All Hands Winter 2011
Rust All Hands Winter 2011Patrick Walton
 
Rust-lang
Rust-langRust-lang
The Ring programming language version 1.3 book - Part 84 of 88
The Ring programming language version 1.3 book - Part 84 of 88The Ring programming language version 1.3 book - Part 84 of 88
The Ring programming language version 1.3 book - Part 84 of 88
Mahmoud Samir Fayed
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
KHNOG
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojure
Abbas Raza
 
Scala - den smarta kusinen
Scala - den smarta kusinenScala - den smarta kusinen
Scala - den smarta kusinenRedpill Linpro
 
The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184
Mahmoud Samir Fayed
 
Rust Mozlando Tutorial
Rust Mozlando TutorialRust Mozlando Tutorial
Rust Mozlando Tutorial
nikomatsakis
 
Codable routing
Codable routingCodable routing
Codable routing
Pushkar Kulkarni
 
IO::Iron
IO::IronIO::Iron
C++ course start
C++ course startC++ course start
C++ course startNet3lem
 
Python in 90 minutes
Python in 90 minutesPython in 90 minutes
Python in 90 minutes
Bardia Heydari
 
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVMClojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
sunng87
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokusHamletDRC
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Anton Arhipov
 
Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programming
Rodolfo Finochietti
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Guillaume Laforge
 
Rust concurrency tutorial 2015 12-02
Rust concurrency tutorial 2015 12-02Rust concurrency tutorial 2015 12-02
Rust concurrency tutorial 2015 12-02
nikomatsakis
 

What's hot (20)

Rust All Hands Winter 2011
Rust All Hands Winter 2011Rust All Hands Winter 2011
Rust All Hands Winter 2011
 
Rust-lang
Rust-langRust-lang
Rust-lang
 
The Ring programming language version 1.3 book - Part 84 of 88
The Ring programming language version 1.3 book - Part 84 of 88The Ring programming language version 1.3 book - Part 84 of 88
The Ring programming language version 1.3 book - Part 84 of 88
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojure
 
Scala - den smarta kusinen
Scala - den smarta kusinenScala - den smarta kusinen
Scala - den smarta kusinen
 
iSoligorsk #3 2013
iSoligorsk #3 2013iSoligorsk #3 2013
iSoligorsk #3 2013
 
The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184The Ring programming language version 1.5.3 book - Part 25 of 184
The Ring programming language version 1.5.3 book - Part 25 of 184
 
Rust Mozlando Tutorial
Rust Mozlando TutorialRust Mozlando Tutorial
Rust Mozlando Tutorial
 
Codable routing
Codable routingCodable routing
Codable routing
 
IO::Iron
IO::IronIO::Iron
IO::Iron
 
C++ course start
C++ course startC++ course start
C++ course start
 
Python in 90 minutes
Python in 90 minutesPython in 90 minutes
Python in 90 minutes
 
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVMClojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokus
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012
 
Introduction to Rust language programming
Introduction to Rust language programmingIntroduction to Rust language programming
Introduction to Rust language programming
 
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene EuroconSolr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
 
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume LaforgeGroovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
Groovy and Grails in Action - Devoxx 2008 - University - Guillaume Laforge
 
Rust concurrency tutorial 2015 12-02
Rust concurrency tutorial 2015 12-02Rust concurrency tutorial 2015 12-02
Rust concurrency tutorial 2015 12-02
 

Similar to What's New in Swift 4

How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)
Giuseppe Filograno
 
Writing Swift code with great testability
Writing Swift code with great testabilityWriting Swift code with great testability
Writing Swift code with great testability
John Sundell
 
Python Part 1
Python Part 1Python Part 1
Python Part 1
Mohamed Ramadan
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
Lorenzo Dematté
 
Node.js - iJS 2019
Node.js - iJS 2019Node.js - iJS 2019
Node.js - iJS 2019
NilsMehlhorn
 
Taming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, MacoscopeTaming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, Macoscope
Macoscope
 
Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03
Omar Miatello
 
FlashAir Android App Development
FlashAir Android App DevelopmentFlashAir Android App Development
FlashAir Android App Development
FlashAir Developers
 
Scaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with ScalaScaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with Scala
Ostap Andrusiv
 
스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내
Jung Kim
 
What's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritageWhat's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritage
DroidConTLV
 
working with files
working with filesworking with files
working with files
SangeethaSasi1
 
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...julien.ponge
 
Building android apps with kotlin
Building android apps with kotlinBuilding android apps with kotlin
Building android apps with kotlin
Shem Magnezi
 
Swift Study #7
Swift Study #7Swift Study #7
Swift Study #7
chanju Jeon
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
hwilming
 
Optionals Swift - Swift Paris Junior #3
Optionals Swift - Swift Paris Junior #3 Optionals Swift - Swift Paris Junior #3
Optionals Swift - Swift Paris Junior #3
LouiseFonteneau
 
2019-01-29 - Demystifying Kotlin Coroutines
2019-01-29 - Demystifying Kotlin Coroutines2019-01-29 - Demystifying Kotlin Coroutines
2019-01-29 - Demystifying Kotlin Coroutines
Eamonn Boyle
 
Introduction kot iin
Introduction kot iinIntroduction kot iin
Introduction kot iin
Jedsada Tiwongvokul
 

Similar to What's New in Swift 4 (20)

How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)
 
Writing Swift code with great testability
Writing Swift code with great testabilityWriting Swift code with great testability
Writing Swift code with great testability
 
Python Part 1
Python Part 1Python Part 1
Python Part 1
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Node.js - iJS 2019
Node.js - iJS 2019Node.js - iJS 2019
Node.js - iJS 2019
 
Taming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, MacoscopeTaming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, Macoscope
 
Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03
 
FlashAir Android App Development
FlashAir Android App DevelopmentFlashAir Android App Development
FlashAir Android App Development
 
Scaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with ScalaScaladroids: Developing Android Apps with Scala
Scaladroids: Developing Android Apps with Scala
 
스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내스위프트를 여행하는 히치하이커를 위한 스타일 안내
스위프트를 여행하는 히치하이커를 위한 스타일 안내
 
What's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritageWhat's in Kotlin for us - Alexandre Greschon, MyHeritage
What's in Kotlin for us - Alexandre Greschon, MyHeritage
 
Introduction to c ++ part -2
Introduction to c ++   part -2Introduction to c ++   part -2
Introduction to c ++ part -2
 
working with files
working with filesworking with files
working with files
 
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
 
Building android apps with kotlin
Building android apps with kotlinBuilding android apps with kotlin
Building android apps with kotlin
 
Swift Study #7
Swift Study #7Swift Study #7
Swift Study #7
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
 
Optionals Swift - Swift Paris Junior #3
Optionals Swift - Swift Paris Junior #3 Optionals Swift - Swift Paris Junior #3
Optionals Swift - Swift Paris Junior #3
 
2019-01-29 - Demystifying Kotlin Coroutines
2019-01-29 - Demystifying Kotlin Coroutines2019-01-29 - Demystifying Kotlin Coroutines
2019-01-29 - Demystifying Kotlin Coroutines
 
Introduction kot iin
Introduction kot iinIntroduction kot iin
Introduction kot iin
 

Recently uploaded

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 

Recently uploaded (20)

GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 

What's New in Swift 4