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.
- 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);
$ docker build -t node-native-extension-in-swift .
$ docker run -t node-native-extension-in-swift
$ 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
node-native-extension-in-swift is released under the MIT license. See LICENSE for details.