Skip to content

molayab/calling-swift-from-c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

About this

This is an experiment to call a Swift library inside of C, block the process and wait for Swift to ends. Give a way to share some sort of data sturectures to send and receive data. Consider the internal use of Tasks in Swift (async calls and thread creation).

Findings

  1. Swift can be called from C, Objective-C and recantly lang added interop for C++.
  2. C can send and receive data to interact with.
  3. Swift block the call if desired, but probably it does not by-default.
  4. We can use C as entrypoint and move then to Swift in a non-apple systems.

Cool things that possible can be achive

It should be possible to run a UI framework, maybe some open-source implementation for SwiftUI that could be run on non-apple machines. (This is possible but Apple remains core of SwiftUI close source.)

Hello World from Swift!!
 > DataIn :: 100
 > Actor 2 says: 0
 > Actor 3 says: 0
 > Actor 1 says: 0
 > Actor 3 says: 1
 > Actor 2 says: 1
 > Actor 3 says: 2
 > Actor 2 says: 2
 > Actor 3 says: 3
 > Actor 2 says: 3
 > Actor 3 says: 4
 > Actor 2 says: 4
 > Actor 3 says: 5
 > Actor 2 says: 5
 > Actor 1 says: 1
 > Actor 3 says: 6
 > Actor 2 says: 6
 > Actor 3 says: 7
 > Actor 2 says: 7
 > Actor 3 says: 8
 > Actor 2 says: 8
 > Actor 3 says: 9
 > Actor 2 says: 9
 > Actor 2 says: 10
 > Actor 1 says: 2
 > Actor 3 says: 10
 > Actor 2 says: 11
 > Actor 3 says: 11
 > Actor 2 says: 12
 > Actor 3 says: 12
 > Actor 2 says: 13
 > Actor 3 says: 13
 > Actor 2 says: 14
 > Actor 3 says: 14
 > Actor 3 says: 15
 > Actor 1 says: 3
 > Actor 2 says: 15
 > Actor 3 says: 16
 > Actor 2 says: 16
 > Actor 2 says: 17
 > Actor 3 says: 17
 > Actor 2 says: 18
 > Actor 3 says: 18
 > Actor 2 says: 19
 > Actor 3 says: 19
 > Actor 3 says: 20
 > Actor 1 says: 4
 > Actor 2 says: 20
 > Actor 3 says: 21
 > Actor 2 says: 21
 > Actor 3 says: 22
 > Actor 2 says: 22
 > Actor 3 says: 23
 > Actor 2 says: 23
 > Actor 3 says: 24
 > Actor 2 says: 24
 > Actor 3 says: 25
 > Actor 2 says: 25
 > Actor 1 says: 5
 > Actor 3 says: 26
 > Actor 2 says: 26
 > Actor 3 says: 27
 > Actor 2 says: 27
 > Actor 2 says: 28
 > Actor 3 says: 28
 > Actor 2 says: 29
 > Actor 3 says: 29
 > Actor 2 says: 30
 > Actor 3 says: 30
 > Actor 2 says: 31
 > Actor 3 says: 31
 > Actor 1 says: 6
 > Actor 2 says: 32
 > Actor 3 says: 32
 > Actor 2 says: 33
 > Actor 3 says: 33
 > Actor 2 says: 34
 > Actor 3 says: 34
 > Actor 2 says: 35
 > Actor 3 says: 35
 > Actor 1 says: 7
 > Actor 2 says: 36
 > Actor 3 says: 36
 > Actor 2 says: 37
 > Actor 3 says: 37
 > Actor 2 says: 38
 > Actor 3 says: 38
 > Actor 2 says: 39
 > Actor 3 says: 39
 > Actor 2 says: 40
 > Actor 3 says: 40
 > Actor 2 says: 41
 > Actor 3 says: 41
 > Actor 1 says: 8
 > Actor 3 says: 42
 > Actor 2 says: 42
 > Actor 3 says: 43
 > Actor 2 says: 43
 > Actor 3 says: 44
 > Actor 2 says: 44
 > Actor 3 says: 45
 > Actor 2 says: 45
 > Actor 2 says: 46
 > Actor 1 says: 9
 > Actor 3 says: 46
 > Actor 2 says: 47
 > Actor 3 says: 47
 > Actor 2 says: 48
 > Actor 3 says: 48
 > Actor 2 says: 49
 > Actor 3 says: 49
 > Actor 2 says: 50
 > Actor 3 says: 50
 > Actor 2 says: 51
 > Actor 1 says: 10
 > Actor 3 says: 51
 > Actor 2 says: 52
 > Actor 3 says: 52
 > Actor 2 says: 53
 > Actor 3 says: 53
 > Actor 2 says: 54
 > Actor 3 says: 54
 > Actor 3 says: 55
 > Actor 2 says: 55
 > Actor 2 says: 56
 > Actor 3 says: 56
 > Actor 1 says: 11
 > Actor 3 says: 57
 > Actor 2 says: 57
 > Actor 3 says: 58
 > Actor 2 says: 58
 > Actor 3 says: 59
 > Actor 2 says: 59
 > Actor 3 says: 60
 > Actor 2 says: 60
 > Actor 3 says: 61
 > Actor 2 says: 61
 > Actor 2 says: 62
 > Actor 1 says: 12
 > Actor 3 says: 62
 > Actor 2 says: 63
 > Actor 3 says: 63
 > Actor 2 says: 64
 > Actor 3 says: 64
 > Actor 2 says: 65
 > Actor 3 says: 65
 > Actor 2 says: 66
 > Actor 3 says: 66
 > Actor 2 says: 67
 > Actor 3 says: 67
 > Actor 3 says: 68
 > Actor 1 says: 13
 > Actor 2 says: 68
 > Actor 3 says: 69
 > Actor 2 says: 69
 > Actor 3 says: 70
 > Actor 2 says: 70
 > Actor 3 says: 71
 > Actor 2 says: 71
 > Actor 3 says: 72
 > Actor 2 says: 72
 > Actor 3 says: 73
 > Actor 2 says: 73
 > Actor 2 says: 74
 > Actor 1 says: 14
 > Actor 3 says: 74
 > Actor 2 says: 75
 > Actor 3 says: 75
 > Actor 2 says: 76
 > Actor 3 says: 76
 > Actor 2 says: 77
 > Actor 3 says: 77
 > Actor 2 says: 78
 > Actor 3 says: 78
 > Actor 2 says: 79
 > Actor 3 says: 79
 > Actor 1 says: 15
 > Actor 2 says: 80
 > Actor 3 says: 80
 > Actor 2 says: 81
 > Actor 3 says: 81
 > Actor 2 says: 82
 > Actor 3 says: 82
 > Actor 2 says: 83
 > Actor 3 says: 83
 > Actor 2 says: 84
 > Actor 3 says: 84
 > Actor 2 says: 85
 > Actor 3 says: 85
 > Actor 2 says: 86
 > Actor 3 says: 86
 > Actor 1 says: 16
 > Actor 2 says: 87
 > Actor 3 says: 87
 > Actor 2 says: 88
 > Actor 3 says: 88
 > Actor 2 says: 89
 > Actor 3 says: 89
 > Actor 3 says: 90
 > Actor 2 says: 90
 > Actor 3 says: 91
 > Actor 2 says: 91
 > Actor 3 says: 92
 > Actor 2 says: 92
 > Actor 1 says: 17
 > Actor 3 says: 93
 > Actor 2 says: 93
 > Actor 3 says: 94
 > Actor 2 says: 94
 > Actor 3 says: 95
 > Actor 2 says: 95
 > Actor 3 says: 96
 > Actor 2 says: 96
 > Actor 3 says: 97
 > Actor 2 says: 97
 > Actor 1 says: 18
 > Actor 3 says: 98
 > Actor 2 says: 98
 > Actor 3 says: 99
 > Actor 2 says: 99
 > Actor 3 says: 100
 > Actor 2 says: 100
 > Actor 1 says: 19
 > Actor 1 says: 20
 > Actor 1 says: 21
 > Actor 1 says: 22
 > Actor 1 says: 23
 > Actor 1 says: 24
 > Actor 1 says: 25
 > Actor 1 says: 26
 > Actor 1 says: 27
 > Actor 1 says: 28
 > Actor 1 says: 29
 > Actor 1 says: 30
 > Actor 1 says: 31
 > Actor 1 says: 32
 > Actor 1 says: 33
 > Actor 1 says: 34
 > Actor 1 says: 35
 > Actor 1 says: 36
 > Actor 1 says: 37
 > Actor 1 says: 38
 > Actor 1 says: 39
 > Actor 1 says: 40
 > Actor 1 says: 41
 > Actor 1 says: 42
 > Actor 1 says: 43
 > Actor 1 says: 44
 > Actor 1 says: 45
 > Actor 1 says: 46
 > Actor 1 says: 47
 > Actor 1 says: 48
 > Actor 1 says: 49
 > Actor 1 says: 50
 > Actor 1 says: 51
 > Actor 1 says: 52
 > Actor 1 says: 53
 > Actor 1 says: 54
 > Actor 1 says: 55
 > Actor 1 says: 56
 > Actor 1 says: 57
 > Actor 1 says: 58
 > Actor 1 says: 59
 > Actor 1 says: 60
 > Actor 1 says: 61
 > Actor 1 says: 62
 > Actor 1 says: 63
 > Actor 1 says: 64
 > Actor 1 says: 65
 > Actor 1 says: 66
 > Actor 1 says: 67
 > Actor 1 says: 68
 > Actor 1 says: 69
 > Actor 1 says: 70
 > Actor 1 says: 71
 > Actor 1 says: 72
 > Actor 1 says: 73
 > Actor 1 says: 74
 > Actor 1 says: 75
 > Actor 1 says: 76
 > Actor 1 says: 77
 > Actor 1 says: 78
 > Actor 1 says: 79
 > Actor 1 says: 80
 > Actor 1 says: 81
 > Actor 1 says: 82
 > Actor 1 says: 83
 > Actor 1 says: 84
 > Actor 1 says: 85
 > Actor 1 says: 86
 > Actor 1 says: 87
 > Actor 1 says: 88
 > Actor 1 says: 89
 > Actor 1 says: 90
 > Actor 1 says: 91
 > Actor 1 says: 92
 > Actor 1 says: 93
 > Actor 1 says: 94
 > Actor 1 says: 95
 > Actor 1 says: 96
 > Actor 1 says: 97
 > Actor 1 says: 98
 > Actor 1 says: 99
 > Actor 1 says: 100
 !! Here, back in C we got: 90909

Program ended with exit code: 0

About

This C files looks to call a library built in Swift and wait for a usable response back in C.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published