nbind - :sparkles: Magical headers that make your C++ library accessible from JavaScript :rocket:

  •        9

nbind is a set of headers that make your C++11 library accessible from JavaScript. With a single #include statement, your C++ compiler generates the necessary bindings without any additional tools. Your library is then usable as a Node.js addon or, if compiled to asm.js with Emscripten, directly in web pages without any plugins. nbind works with the autogypi dependency management tool, which sets up node-gyp to compile your library without needing any configuration (other than listing your source code file names).

https://github.com/charto/nbind#readme

Dependencies:

emscripten-library-decorator : ~0.2.2
mkdirp : ~0.5.1
nan : ^2.9.2

Tags
Implementation
License
Platform

   




Related Projects

node-gyp - Node.js native addon build tool

  •    Python

node-gyp is a cross-platform command-line tool written in Node.js for compiling native addon modules for Node.js. It bundles the gyp project used by the Chromium team and takes away the pain of dealing with the various differences in build platforms. It is the replacement to the node-waf program which is removed for node v0.8. If you have a native addon for node that still has a wscript file, then you should definitely add a binding.gyp file to support the latest versions of node.Multiple target versions of node are supported (i.e. 0.8, ..., 4, 5, 6, etc.), regardless of what version of node is actually installed on your system (node-gyp downloads the necessary development files or headers for the target version).

sql.js - SQLite compiled to JavaScript through Emscripten

  •    Javascript

sql.js is a port of SQLite to JavaScript, by compiling the SQLite C code with Emscripten. It uses a virtual database file stored in memory, and thus doesn't persist the changes made to the database. However, it allows you to import any existing sqlite file, and to export the created database as a javascript typed array. There is no C bindings or node-gyp compilation here, sql.js is a simple javascript file, that can be used like any traditional javascript library. If you are building a native application in javascript (using Electron for instance), or are working in node.js, you will likely prefer to use a native binding of SQLite to javascript.

node-pre-gyp - Node.js tool for easy binary deployment of C++ addons

  •    Javascript

node-pre-gyp stands between npm and node-gyp and offers a cross-platform method of binary deployment.For a hello world example of a module packaged with node-pre-gyp see https://github.com/springmeyer/node-addon-example and the wiki for real world examples.

node-fibers - Fiber/coroutine support for v8 and node.

  •    C++

Fibers, sometimes called coroutines, are a powerful tool which expose an API to jump between multiple call stacks from within a single thread. This can be useful to make code written for a synchronous library play nicely in an asynchronous environment. Note: node-fibers uses node-gyp for building. To manually invoke the build process, you can use node-gyp rebuild. This will put the compiled extension in build/Release/fibers.node. However, when you do require('fibers'), it will expect the module to be in, for example, bin/linux-x64-v8-3.11/fibers.node. You can manually put the module here every time you build, or you can use the included build script. Either npm install or node build -f will do this for you. If you are going to be hacking on node-fibers, it may be worthwhile to first do node-gyp configure and then for subsequent rebuilds you can just do node-gyp build which will be faster than a full npm install or node-gyp rebuild.

windows-build-tools - :package: Install C++ Build Tools for Windows using npm

  •    TypeScript

After installation, npm will automatically execute this module, which downloads and installs Visual C++ Build Tools, provided free of charge by Microsoft. These tools are required to compile popular native modules. If not already installed, it will also install Python 2.7, configuring your machine and npm appropriately. Both installations are conflict-free, meaning that they do not mess with existing installations of Visual Studio, C++ Build Tools, or Python. If you see anything that indicates otherwise, please file a bug.


mapbox-gl-native - Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node

  •    C++

A library for embedding interactive, customizable vector maps into native applications on multiple platforms. It takes stylesheets that conform to the Mapbox Style Specification, applies them to vector tiles that conform to the Mapbox Vector Tile Specification, and renders them using OpenGL. Mapbox GL JS is the WebGL-based counterpart, designed for use on the Web.If your platform or hybrid application framework isn’t listed here, consider embedding Mapbox GL JS using the standard Web capabilities on your platform.

electron - Build cross-platform desktop apps with JavaScript, HTML, and CSS

  •    C++

📝 Available Translations: 🇨🇳 🇹🇼 🇧🇷 🇪🇸 🇰🇷 🇯🇵 🇷🇺 🇫🇷 🇹🇭 🇳🇱 🇹🇷 🇮🇩 🇺🇦 🇨🇿 🇮🇹. View these docs in other languages at electron/i18n. The Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on Node.js and Chromium and is used by the Atom editor and many other apps.

electron-rebuild - Package to rebuild native Node

  •    TypeScript

This executable rebuilds native Node.js modules against the version of Node.js that your Electron project is using. This allows you to use native Node.js modules in Electron apps without your system version of Node.js matching exactly (which is often not the case, and sometimes not even possible). This package is automatically used with Electron Forge when packaging an Electron app.

leveldown - Pure C++ Node.js LevelDB binding serving as the back-end to LevelUP

  •    C++

This module was originally part of levelup but was later extracted and now serves as a stand-alone binding for LevelDB.It is strongly recommended that you use levelup in preference to leveldown unless you have measurable performance reasons to do so. levelup is optimised for usability and safety. Although we are working to improve the safety of the leveldown interface it is still easy to crash your Node process if you don't do things in just the right way.

asm-dom - A minimal WebAssembly virtual DOM to build C++ SPA (Single page applications)

  •    C++

asm-dom is a minimal WebAssembly virtual DOM to build C++ SPA (Single page applications). You can write an entire SPA in C++ and compile it to WebAssembly (or asmjs as fallback) using Emscripten, asm-dom will call DOM APIs for you. This will produce an app that aims to execute at native speed by taking advantage of common hardware capabilities, also, you can use your C/C++ code without any change, you haven't to create a binding layer to use it (as we have to do if we want to use a C++ lib from JS). Basically we are creating an app in C++ that call javascript if needed instead of the opposite. You can write only once in C++ and share as much code as possible with desktop/mobile apps and web site. If you want to learn more about performance, please see this. asm-dom is a low-level virtual DOM library. It is unopinionated with regards to how you should structure your application.

node-gyp - Node.js native addon build tool

  •    Python

Node.js native addon build tool

pce - Emulates Mac Plus, PC, & Atari ST in asm.js

  •    C

PCE.js runs classic computers in the browser. It's a port of Hampa Hug's excellent PCE emulator, put together by James Friend. PCE.js currently emulates Mac Plus, IBM PC/XT and Atari ST functionally in recent versions of Chrome and Firefox.

MyCrypto - MyCrypto is an open-source, client-side tool for generating ether wallets, handling ERC-20 tokens, and interacting with the blockchain more easily

  •    TypeScript

*Higher versions should work fine, but may cause inconsistencies. It's suggested you run 8.9.4 using nvm. **npm is NOT supported for package management. MyCrypto uses yarn.lock to ensure sub-dependency versions are pinned, so yarn is required to install node_modules ***Python 3 is not supported, since our dependencies use node-gyp. All of these builds are output to a folder in dist/.

ffmpeg.js - Port of FFmpeg with Emscripten

  •    Javascript

This library provides FFmpeg builds ported to JavaScript using Emscripten project. Builds are optimized for in-browser use: minimal size for faster loading, asm.js, performance tunings, etc. Though they work in Node as well.Note: only NPM releases contain abovementioned files.

v8pp - Bind C++ functions and classes into V8 JavaScript engine

  •    C++

The library is suitable to make Node.js and io.js addons. See addons document.

Electrometeor - Build desktop apps with Electron + Meteor.

  •    Javascript

Electrometeor combines Electron and Meteor to allow you to easily create desktop applications that work both 100% offline & online. The native Node modules are supported by Electron, but since Electron is using a different V8 version from official Node, you have to manually specify the location of Electron's headers when building native modules.

node-msgpack - A space-efficient object serialization library for NodeJS

  •    Javascript

node-msgpack is an addon for NodeJS that provides an API for serializing and de-serializing JavaScript objects using the MessagePack library. The performance of this addon compared to the native JSON object isn't too bad, and the space required for serialized data is far less than JSON. node-msgpack is currently slower than the built-in JSON.stringify() and JSON.parse() methods. In recent versions of node.js, the JSON functions have been heavily optimized. node-msgpack is still more compact, and we are currently working performance improvements. Testing shows that, over 500k iterations, msgpack.pack() is about 5x slower than JSON.stringify(), and msgpack.unpack() is about 3.5x slower than JSON.parse().

opencv4nodejs - Asynchronous OpenCV 3

  •    C++

By its nature, JavaScript lacks the performance to implement Computer Vision tasks efficiently. Therefore this package brings the performance of the native OpenCV library to your Node.js application. This project targets OpenCV 3 and provides an asynchronous as well as an synchronous API. The ultimate goal of this project is to provide a comprehensive collection of Node.js bindings to the API of OpenCV and the OpenCV-contrib modules. An overview of available bindings can be found in the API Documentation. Furthermore, contribution is highly appreciated. If you want to get involved you can have a look at the contribution guide.

Neutralinojs - Build browser based cross platform apps with JavaScript, HTML, and CSS

  •    C++

NeutralinoJs is a portable and lightweight framework to develop apps with native functions and allows you to run inside web browsers. In electron and NWjs you have to install NodeJs, hundreds of dependence libraries and also the bundled app size is large even we write hello world due to embedded chromium and Node runtime. Neutralino is lightweight solution for this issue.

nan - Native Abstractions for Node.js

  •    C++

A header file filled with macro and utility goodness for making add-on development for Node.js easier across versions 0.8, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 7, 8 and 9.Thanks to the crazy changes in V8 (and some in Node core), keeping native addons compiling happily across versions, particularly 0.10 to 0.12 to 4.0, is a minor nightmare. The goal of this project is to store all logic necessary to develop native Node.js addons without having to inspect NODE_MODULE_VERSION and get yourself into a macro-tangle.