Furious.js is a scientific computing package for JavaScript. Furious.js features:
- Provides n-dimensional array (NDArray) class
- Programming interface similar to NumPy
- Works with all modern browsers and Node.js
- Accelerates computation on Portable Native Client (PNaCl) and WebCL
- Computes asynchronously, without stalling the GUI
- Functionality covered with unit tests (Try it!)
- Comes with extensive documentation
Currently Furious.js provides three computational backends:
- JavaScript backend that works in all modern JS engines (Typed Array support required).
- Portable Native Client that works in Google Chrome and other Chromium-based browsers.
- WebCL backend that can be used with Node.js (via node-webcl) and WebKit-WebCL.
Normally Furious.js would automatically detect the optimal backend, but it is possible to specify it manually.
- Windows, Linux, or OS X operating systems.
- Python
2.x
(we recommend to use the latest2.7
release). - Ninja build system. Add the directory with
ninja
(orninja.exe
) executable to thePATH
environment variable. Add themisc
directory withninja_syntax.py
to thePYTHONPATH
environment variable. - Protocol Buffers compiler. Add the directory with
protoc
executable to thePATH
environment variable. - Native Client SDK. Use the
naclsdk
/naclsdk.bat
script to install one of the Pepper toolchains. For development, we recommend to usepepper_canary
toolchain. For deployment, the current stable toolchain is recommended. Make an environment variableNACL_SDK_ROOT
point to the toolchain directory (e.g.C:/naclsdk/pepper_canary
if you usepepper_canary
toolchain and the Native Client SDK is unpacked toC:/naclsdk
) - Node.js and Node Package Manager (
npm
).
- OpenCL SDK from Intel, AMD, or nVidia (except on Mac)
- GLEW library (except on Windows)
- GLFW 3 library (except on Windows)
- FreeImage library (except on Windows)
- AntTweakBar library (except on Windows)
If you intend to develop Furious.js, we recommend that you fork the repository. Then clone your fork with
git clone https://github.com/<GITHUB-USERNAME>/furious.js.git
If you do not intend to use Node-WebCL, navigate to Furious.js directory and execute
npm install --no-optional
npm install -g grunt-cli
If you plan to use Node-WebCL, you'll need to install the upstream version of Node-WebCL, and its dependencies.
- Clone and build
node-glfw
repository
git clone https://github.com/Maratyszcza/node-glfw.git
cd node-glfw
npm link
- Clone and build
node-image
repository
git clone https://github.com/Maratyszcza/node-image.git
cd node-image
npm link
- Clone
node-webgl
repository, link itsnode-glfw
dependency, and build
git clone https://github.com/Maratyszcza/node-webgl.git
cd node-webgl
npm link node-glfw
npm link
- Clone the
node-webcl
repository, link itsnode-image
andnode-webgl
dependencies, and build
git clone https://github.com/Maratyszcza/node-webcl.git
cd node-webcl
npm link node-webgl
npm link node-image
npm link
- Navigate to Furious.js directory, link
node-webcl
dependency, and install other dependencies
npm link node-webcl
npm install
npm install -g grunt-cli
Follow the official instructions to get a copy of naclports
repository. Next, navigate to src
directory and install protobuf
library for your PNaCl toolchain:
NACL_ARCH=pnacl make protobuf
grunt
python configure.py
ninja