Denoには他の言語との接続するための仕組み、FFI(Foreign Function Interface / 他言語機能インターフェイス)を使えば、その活躍範囲をもっと広げることができます!
はじめのいっぽとして、簡単なC言語とSwiftで作った関数をJavaScriptから呼び出すコードを作って動かしてみました。
Swift側の記述
import Foundation @_cdecl("add") public func add(a: Int32, b: Int32) -> Int32 { return a + b }
コンパイル方法
swiftc -emit-library -o libadd.dylib -module-name add add.swift
呼び出し側Deno/JavaScriptコード
const lib = Deno.dlopen("./libadd.dylib", { add: { parameters: ["i32", "i32"], result: "i32" }, }); const result = lib.symbols.add(3, 5); console.log(`Result: ${result}`);
実行方法
deno --allow-ffi example.js
結構シンプルですね!
C言語でも、MacとLinuxで動作確認できました。Windowsで確認できた方、ぜひプルリクください。
(参考、deno_ffi/README.md)
ワクワクが広がりますね!