node-native-extension-in-swift
node-native-extension-in-swift copied to clipboard
An experimental repo for Node.js native addons that written in Swift.
node-native-extension-in-swift

An experimental repo for Node.js native addons that written in Swift.
The first motivation of implementeing this was reduceing overhead of execution between Node.js and Swift on the Serverless environment.
Writing native extensions with Swift
- Define function(s) in a format that can be exported to C/C++ in Swift side.
@_cdecl("swift_fibonacci") // Name the function symbol.
public func fibonacci(_ n: CInt) -> CInt {
if n == 0 {
return 0
} else if n == 1{
return 1
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
-
Register fibonacci as callable function in Node.js (V8 side)
-
The exported functions can be imported and executed in Node.js side.
const swift = require('bindings')('swift');
const result = swift.fibonacci(10);
console.log(result);
Running Example
Linux
$ docker build -t node-native-extension-in-swift .
$ docker run -t node-native-extension-in-swift
Mac
$ git clone https://github.com/noppoMan/node-native-extension-in-swift.git
$ cd node-native-extension-in-swift
$ swift build --package-path NativeExtensionInSwift
$ npm i
$ node index.js
License
node-native-extension-in-swift is released under the MIT license. See LICENSE for details.