News
0.9 Released
Installing¶
Proudly announcing v0.9 of flusspferd, with lots of under the hood changes, a new subprocess and re-introduced curl and xml modules, and easy installation methods.
- OSX via homebrew:
brew install flusspferd
Until the formula is in master, make sure you are using the fork linked above.
- Ubuntu via the CommonJS PPA:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 74EE6429 sudo /bin/sh -c 'echo deb http://ppa.launchpad.net/ashb/ppa/ubuntu karmic main | cat >> /etc/apt/sources.list' sudo aptitude install flusspferd-all
- Windows:
Grab the binaries zip and uncompress it where ever you like. If you also want to compile modules for flusspferd, grab the dev zip and extract it over the top. It gives you a working make/gcc and related tools to compile on windows. \o/
- binaries (9.9Mb); and
- MinGW development environment (50Mb)
Building modules¶
Building native plugins/modules for Flusspferd using cmake is now a doddle. Create a CMakeLists.txt like this one:
cmake_minimum_required(VERSION 2.6.4)
execute_process( COMMAND flusspferd --cmake OUTPUT_VARIABLE hippo_cmake)
include("${hippo_cmake}")
FILE(GLOB_RECURSE sources
"${CMAKE_SOURCE_DIR}/src/*.cpp"
"${CMAKE_SOURCE_DIR}/src/*.hpp")
add_definitions("-Wall")
flusspferd_plugin("myplugin" SOURCES ${sources})
Then so long as flusspferd is in your path you can build and install it with a simple cmake . && make install. Wonderful!
Getting the source¶
Changes¶
This version has changed the C++ API in a backwards incompatbile fashion - sorry about that, but it's worth it. Check out the wiki page for details.
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 mailing list post for more info.
0.8 Released
Download Flusspferd from Sourceforge.
This version is hot on the heels of 0.7 (relatively speaking) due to a lot of work Ash Berlin put in place to get features for the first release of Juice and Zest – the first implementation of a JSGI 0.3 webapp server and an app framework to go on top of it – which is due for its initial release any day now.
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.
0.7 released
Download Flusspferd from Sourceforge.
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.
Flusspferd on Mac OS X with Macports
Flusspferd was finally accepted into Macports. It will be part of the next Macports release and can be already installed if the Macports SVN version is used. Flusspferd can then be installed on Mac OS X with a simple
sudo port install flusspferd
Windows Support
From the mailing list:
So, Aristid and myself have both been poking at this problem every so
often, trying to use MSVC. We didn't actually manage to get anything
running successfully.
So today I decided to try MinGW.
And after a lot of trial and error, I got it to run!
C:\>c:\flusspferd\bin\flusspferd.exe
> sys = require('system')
[object Object]
> sys.stdout
[object NativeObject]
> sys.env
[object sys.Environment]
> sys.env.PATH
C:\spidermonkey\lib;C:\MinGW\bin;C:\Program Files\CMake 2.6\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
> require('os').system('dir')
Volume in drive C has no label.
Volume Serial Number is 5469-9BA6
Directory of C:\
01/05/2009 15:15 6,148 .DS_Store
22/02/2009 02:28 0 AUTOEXEC.BAT
22/02/2009 02:28 0 CONFIG.SYS
22/02/2009 02:33 <DIR> Documents and Settings
01/08/2009 19:50 <DIR> flusspferd
01/08/2009 17:09 <DIR> MinGW
22/07/2009 21:04 <DIR> mozilla-build
01/08/2009 17:01 <DIR> Program Files
30/04/2009 23:20 <DIR> Python26
22/02/2009 03:08 573 RHDSetup.log
01/08/2009 14:42 <DIR> spidermonkey
01/05/2009 04:44 <DIR> strawberry
27/07/2009 22:25 <DIR> WINDOWS
4 File(s) 6,721 bytes
9 Dir(s) 20,993,699,840 bytes free
0
> ^Z
C:\>
The steps are a little bit convoluted to build manually, but if anyone wants to duplicate my efforts, I've documented them on the wiki.
And of course, a zipfile so you can play yourselves! http://flusspferd.org/downloads/flusspferd-win32-0.6.1.129.g2699d.zip
Currently it needs to live in C:\flusspferd (so unpack the zip into c:\ root, it contains the flusspferd folder.) Hopefully I've put all the needed dlls in there, if I've missed it'll have to wait until next week some time - I'm traveling to a conference tomorrow morning and not sure when I'll be online.
0.6.1 released
Apart from some very minor tweaks, this release mainly brings the ability to manually enable and disable plugins in the build system.
0.6 released
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.
New server
Our new server has more RAM (thanks a lot for hosting this, Ash!) has more RAM and so we hope that Redmine will be a little more responsive now.
A reachable bug tracker is vitally important for our development process, and we hope that this change will help us create the new 0.6 release, scheduled a few days before Ash's talk at BCS.
Talking At BCS's 'An evening of dynamic languages'
Ash Berlin will be giving a lighting talk about Flusspferd and the ServerJS working group, its aims, why its needed, and of course why Flusspferd is the best ServerJS implementation to use :)
For more details check out the BCS event page.
Where: BCS, Southampton Street, London
When: Wednesday 10th June 2009
Cost: Free for everyone but it is still essential to book your place.
0.5.1 released
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
Also available in: Atom