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

The table of contents can only be displayed when Javascript is enabled.

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:

Binaries:

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

See also the list of implementations on the CommonJS Wiki.

Core/Bundled with Releases

External

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

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.

Google Groups
Subscribe to Flusspferd's Google Group

Email:

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.

Old Releases

Major: 0.8 (2009-10-20)

Major features:

  • Build trees are now relocatable – you can move the built tree to a different place on the filesystem and module loading will do the right thing.
  • Refactor of require() handling – this means modules are now JITable.
  • Implement most of the CommonJS `fs-base' (Filesystem/A/0) module (no permissions functions yet).
  • Treat source files as UTF-8 – this means you can have unicode literals in .js source files now.
  • REPL now prints debug/uneval representation, rather than .toString().
  • Enable Spidermonkey strict warnings for all modules.
  • SQLite3 plugin got an overhaul.
  • Immature plugins are no longer part of the main tree. This means no cURL, or XML plugins for now. If you want them back sooner, help us finish (designing) their APIs.
  • JSON top-level-object is now always available.

As always, other small features and a lot of bug fixes.

Download from Sourceforge.

Major: 0.7 (2009-09-11)

Major features:

  • Changed Flusspferd module system C++ API.
  • Dropped old proprietary 'blob' module in favor of 'binary' (conforming with CommonJS Binary/B).
  • Add CommonJS 'system' module, moving some functionality from other modules to it.
  • Replace option parsing with new 'getopt' module, which can also be used from Javascript.
  • Add support for permanent history to the shell.
  • Add optional support for GNU readline.

And other features and a lot of bug fixes.

Download from Sourceforge.

Minor: 0.6.1 (2009-06-18)

Apart from some very minor tweaks, this release mainly brings the ability to manually enable and disable plugins in the build system.

Download from Sourceforge.

Major: 0.6 (2009-06-08)

Major features:

  • FLUSSPFERD_CLASS_DESCRIPTION - an easy way of defining Javascript classes.
  • Improved value and type conversions.
  • More ServerJS compatible modules: 'binary' and 'encodings'.
  • Changed build system to cmake (this should make it easier to get Windows support).
  • Other new modules, like (rudimentary) GMP support.

This list is not necessarily a complete list of features.

Also, there are many more bugfixes and some API breaking changes.

Download from Sourceforge.

Bugfix: 0.5.1 (2009-04-28)

Changes since 0.5:

  • Fix bug that made flusspferd not compile when spidermonkey was not compiled with JS_THREADSAFE.
  • Change set of distributed files (include Makefile, don't include .configure).
  • Documentation improvements.

Download from Sourceforge.

Major: 0.5 (2009-04-27)

0.5 was released on April 27, 2009. It is our first release.

Download from Sourceforge.

Bookmark and Share Get Flusspferd at SourceForge.net. Fast, secure and Free Open Source software downloads Valid XHTML 1.0 Strict Valid CSS!