Linker.js è una libreria dinamica che consente di accedere a librerie C, C++, Rust e Go con NodeJS. In futuro dovrebbe essere implementato anche il supporto per altri linguaggi e framework tra cui ad esempio Java e Rails. Disponibile sotto licenza Open Source attraverso un repository su GitHub, attualmente il progetto è compatibile unicamente con sistemi operativi Linux, presenta un'API minimale ed è in grado di raccogliere automaticamente i buffer di memoria.
Linker.js: cos'è e come funziona
Si tratta di una libreria sviluppata a partire da Node-API, libffi e le librerie C-API di Python. Tecnicamente è parte del progetto concurrent.js, una soluzione per l'importazione dinamica dei moduli sviluppata per svolgere una funzione simile a quella di require
e import
. A differenza di questi ultimi essa infatti non carica un modulo nel main thread ma nel thread di background.
Linker.js: installazione e utilizzo
L'installazione è molto semplice e sfrutta apt
ed npm
:
sudo apt -y install build-essential cmake
npm i -D cmake-js
npm i @bitair/linker.js
Una volta installata la libreria entra in gioco un apposito Linker che mette a disposizione l'interfaccia per l'accesso alle librerie. Per installarlo, nel caso di C è sufficiente lanciare le istruzioni:
sudo apt -y install libffi-dev
npx linker.js install c_linker
Nello stesso modo si possono inviare i seguenti comandi nel caso in cui si abbia la necessità di un Linker per Python:
sudo apt -y install python3-dev
npx linker.js install py_linker
Indicazioni per l'uso di Linker.js
Prima di utilizzare Linker.js, il cui codice è disponibile su questa pagina, è bene tenere presente che stringhe, booleani e numeri vengono condivisi come valori tra JavaScript e una funzione esterna. Una stringa restituita da una funzione C deve essere allocata dinamicamente. La memoria allocata verrà poi liberata automaticamente una volta che la stringa è stata passata a JavaScript.