Skip to content

Latest commit

 

History

History
56 lines (40 loc) · 1.59 KB

README.md

File metadata and controls

56 lines (40 loc) · 1.59 KB

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

  1. 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)
}
  1. Register fibonacci as callable function in Node.js (V8 side)

  2. 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.