streamed-tcc-goodness

TCC(Tiny C Compiler) bindings for node.js

npm install streamed-tcc-goodness
1 downloads in the last month

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.

npm loves you