noppoMan / node-native-extension-in-swift

An experimental repo for Node.js native addons that written in Swift.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

An experimental repo for Node.js native addons that written in Swift.

License:MIT License


Languages

Language:C++ 40.6%Language:Swift 33.7%Language:Dockerfile 16.8%Language:Shell 4.4%Language:Python 2.9%Language:JavaScript 1.7%