Overview
Flusspferd: Javascript bindings for C++, a Javascript interpreter and shell, and a CommonJS module system supporting native C++ modules. Flusspferd includes a few Javascript classes and modules: binary blobs, cURL, GMP and others. It is designed to support easy embedding of Javascript in C++ - and vice versa. It supports Spidermonkey as its backend, and possibly support for other engines will be added later.
Read the latest News on Flusspferd or follow us on Twitter.
Flusspferd is licensed under the MIT license (open source).
Flusspferd compiles and runs on POSIX OSes such as Mac OS X and Linux, and also on Windows via MinGW — check the releases section for links to MinGW bundles.
In case you wonder, "Flusspferd" is a German word which translates to hippo. The reason we chose this word is that a book on Javascript shows a hippo on its cover, and Javascript has this animal naming tradition: Spidermonkey, Rhino, Squirrelfish and now Flusspferd.
You don't know how to pronounce the name "Flusspferd"? Easy as pie! At least for Germans. The rest of you shall get an explanation. Much like the English language's equivalent word "hippopotamus", the word Flusspferd is composed of the words for river (Fluss) and horse (Pferd). Pronounce "Flusspferd" as if it were two words, "Fluss Pferd", but with only a very short pause between the words. If you want to pronounce it properly, start with "floos ferd". Now, learn how to use the "Pf" sound (with sound examples!). "Fluss" is pronounced with a short "U". Well, that's at least my stab at it. I'm no language teacher, so bear with me.
Table of contents
Get Flusspferd
You can obtain the code for any release by using the link below or by checking out the vRELEASE tag in our git repository. You can find Older Releases below.
Major: 0.9 (2010-02-04)
Download Sources:
- flusspferd.tar.bz2 (2.6Mb)
- flusspferd.tar.gz (3.3Mb)
- flusspferd.zip (8.0Mb)
Binaries:
- OS X via homebrew: brew install flusspferd (until the formula is in master, make sure you are using the linked version.)
- Ubuntu via the CommonJS PPA
- Windows: binaries (9.9Mb) and MinGW development environment (50Mb)
Major features:
- JIT is now enabled by default. use the --no-jit option to disable it.
- API for creating objects/values massively overhauled to be much more expresive. This is an API breaking change. See the wiki for details.
- cURL module re-introduced after being improved to provide more of the functionality of libcurl.
- Improved GMP module to be more JavaScript like.
- Removed support for older spidermonkeys. We now require a recent version of spidermonkey. We define recent as no older than the version from Firefox 3.5! See the Spidermonkey wiki page
- Boost 1.40 or newer required.
- Added subprocess module for communicating with sub-processes. This module doesn't work on Windows in this release.
- Re-introduces XML module using different XML backend.
- Building plugins with cmake got a whole lot easier; See this mailing list post for more info.
As always, other small features and a lot of bug fixes.
Code
The easiest way to get Flusspferd is to get one of our releases from Sourceforge. If you want the most recent sources, you can either fetch the code from our git repository:
$ git clone git://github.com/Flusspferd/flusspferd.git
or download a snapshot from github.
Another very interesting possibility is forking (direct action!) our github repository, which allows you to publish changes easily and optionally send them to us ‒ without sending patches or emails.
Read the build instructions on how to build Flusspferd and its requirements.
Modules
Supported CommonJS Specifications
- Modules
- System/1.0
- Unit Testing/1.0
- Binary/B (proposal)
- Encodings/A (proposal)
- Filesystem/A/0 (proposal)
Core/Bundled with Releases
- gmp - Bignum arithmetic. Bindings for GNU Multiple Precision Arithmetic Library (GMP)
- sqlite3 - single-file, embeddable relational database: SQLite.
- curl - HTTP/network access via cURL.
- xml - XML and HMTL (tag soup) parsing and DOM Level 2 core.
External
- SDL-Flusspferd - bindings for SDL.
- Juice - a webframework based on Flusspferd.
- Zest - Simple HTTP server that speaks JSGI (primarily for use with Juice)
- MongoDB-Flusspferd - bindings for MongoDB.
- http-fetch - User friendly http fetcher module (based on the cURL module).
More Flusspferd
Documentation
Flusspferd comes with online documentation which is generated for the current release (0.9):
We also have online documentation for git master (the next release) and previous releases:
Services
You can find Flusspferd on
- github (source code repository),
- our Redmine (issue tracking and version planning),
- cia (announces commits),
- twitter news (news),
- twitter commits (announces commits),
- freshmeat.net (release announcements),
- ohloh (code statistics and analysis)
Related projects
Many of Flusspferd's core Javascript classes are based on the CommonJS standardisation project (previously: ServerJS).
There are some other projects that have similar (but different) goals than Flusspferd:
- SpiderApe, C++ wrappers for some Spidermonkey classes. Not actively developed anymore.
- jslibs, extensions for Spidermonkey, written in C, license GPL 2.0.
- cproxyv8: "provides an easy way to expose properties and methods from C++ classes to Java Script using V8 engine without the need to specify callbacks for each item."
- v8cgi: "Small set of C++ and JS libraries, allowing coder to use JS as a server-side HTTP processing language." For v8.
- narwhal: a somewhat portable implementation of CommonJS.
- node.js: evented javascript.
- MonkeyScript, LGPL 3.
Contact
General contact
We have a discussion group / mailing list on Google Groups.
Subscribe to Flusspferd's Google Group |
Alternatively, you can find us on IRC in #flusspferd on freenode. Use Freenode's Webchat or Java client to connect to the channel if you don't have an IRC client on your computer.
Reporting Bugs
Please report bugs in Flusspferd on our Redmine tracker or on our Google Group.