Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/noppoMan/node-native-extension-in-swift
An experimental repo for Node.js native addons that written in Swift.
https://github.com/noppoMan/node-native-extension-in-swift
node-native-addons nodejs swift
Last synced: 11 days ago
JSON representation
An experimental repo for Node.js native addons that written in Swift.
- Host: GitHub
- URL: https://github.com/noppoMan/node-native-extension-in-swift
- Owner: noppoMan
- License: mit
- Created: 2017-10-26T14:05:37.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-09-01T13:11:48.000Z (about 5 years ago)
- Last Synced: 2024-10-28T11:56:06.985Z (16 days ago)
- Topics: node-native-addons, nodejs, swift
- Language: C++
- Homepage:
- Size: 9.77 KB
- Stars: 44
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-native-extension-in-swift
An experimental repo for [Node.js native addons](https://nodejs.org/api/addons.html) 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.
```swift
@_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)
}
```2. [Register fibonacci as callable function in Node.js (V8 side)](https://github.com/noppoMan/node-native-extension-in-swift/blob/master/swift.cc#L53)
3. The exported functions can be imported and executed in Node.js side.
```js
const swift = require('bindings')('swift');const result = swift.fibonacci(10);
console.log(result);
```## Running Example
## Linux
```sh
$ docker build -t node-native-extension-in-swift .
$ docker run -t node-native-extension-in-swift
```## Mac
```sh
$ 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.