streamed-tcc-goodness v0.0.1
Introduction
Execute C code from inside NodeJS using Fabrice Bellard's famous Tiny C Compiler.
var fs = require('fs');
var TCC = require('streamed-tcc-goodness');
fs.createReadStream('/path/to/my-source.c')
.pipe(TCC).stdout
.pipe(process.stdout);
Installation
Using the brilliant Node Package Manager:
npm install streamed-tcc-goodness
The installation script compiles TCC using make. Using Microft Windows? Awkward.
History
Here is the TCC homepage, though it is no longer under active development it remains one of Bellard's famous achievements.
Original NodeJS bindings: tokuhirom/node-tcc.
Project Goal
Perhaps this could be a way of moving CPU bound tasks from the NodeJS VM environment into C code, in an async parallelizable kind of way?
API
TCC is a writable stream and a function. It returns an EventEmitter object with the standard I/O files available as streams. Under the hood it is a fairly trivial mapping of the core child-process API.
I'm aiming for a similar API to Mikeal's popular request library
var TCC = require('streamed-tcc-goodness');
var fs = require('fs');
var task = TCC('/path/to/my-source-file.c');
task.stdin.write('Here is some input.');
task.stdout.pipe(process.stdout);
task.on('end', taskDoneCallback);
// Alternatively...
var task = TCC('int main (int argc, char ** argv) {'
+' printf(\"Hello world.\\n\");'
+' return 0;'
+'}');
// Alternatively...
fs.createReadStream('/path/to/my-source.c')
.pipe(TCC).stdout
.pipe(process.stdout);
So it's a tool, that's about it.
License
TCC is distributed under the GNU Lesser General Public License.
12 years ago