Q - Equational Programming Language





Quick Map:  [Ports and Packages]  [Binaries]  [Sources]  [Dependencies]

The central resource for all Q development is the SourceForge project website, which provides CVS access to the latest development sources. You can also find all released packages in the download area at this site. For your convenience, we provide a quick map of the sources for the current versions below, as well as pointers to ready-to-use ports and binary packages. Q is known to work on Linux, OS X and Windows, but should also compile (with the usual amount of tweaking) on most other modern UNIX systems and POSIX-compatible platforms. Linux is the primary development platform, so all packages should compile right out of the box on all recent Linux systems (do the usual "./configure; make; make install", or just "make" for some packages).

License: Unless explicitly noted otherwise, the software on this page is distributed under the GNU General Public License.

Ports and Packages

Thanks to the (much appreciated!) work of Toni Graffy, Gerard Milmeister and Ryan Schmidt, ready-to-use Q packages for Linux (SUSE, Fedora) and Mac OS X are available from the Packman, Fedora and MacPorts projects, see below for details. Additional packages for MS Windows, the ASUS eee PC and the Sharp Zaurus PDA can be found in the Binaries section below.

Fedora: Gerard Milmeister's q package from the Fedora Linux distribution includes the interpreter core and some of the core modules. If you're interested in computer music applications, you should also take a look at Stanford's PlanetCCRMA project maintained by Fernando Lopez-Lezcano, which provides additional software like MidiShare, Pd and SuperCollider required by Q's multimedia library. (The Q multimedia modules themselves have not been packaged for Fedora yet, so you will have to compile these yourself.)

Mac OS X: Ryan Schmidt's port of Q to OS X is available from the MacPorts project. This currently comprises the core package only, but additional modules might become available in the future. Note that MacPorts already provides the necessary third party libraries to compile and run most addon modules, so porting these to OS X should be a piece of cake now.

openSUSE: Toni Graffy's Q packages provide a complete Q system including all core and addon modules for recent openSUSE versions. These are supplied as two sets of packages, see q-core and q-addons on the Packman site. Note that Packman is a full YaST repository, so all required packages can easily be installed from YaST once you added Packman using YaST's "Community Repositories" applet.

Binary Packages

Debian/ASUS eeePC: While Q compiles out of the box on recent Debian systems, there don't seem to be any Debian packages for Q yet, so I've put together a little collection of packages which let eeePC users enjoy Q on this nifty little Linux machine. Reportedly these also work on other i386 Debian systems, but YMMV. You can find the packages here:

Please also check the README file for details.

Zaurus: For Zaurus users who want to run Q on their Linux PDA, we have a little software feed with binary packages for the latest OpenZaurus. You can find the current feed here:

Please check the README file in the feed for instructions on how to install and use these packages. The latest packages are for clamshell (armv5tel-based) Zaurii only, but you can find some (fairly ancient) packages which work on older Zaurus models like the "Collie" here, and some older pdaXrom packages here.

MS Windows: The Qpad package is a complete binary distribution of the Q programming system for Windows 98/2000/ME/XP. Besides the Q programming tools, the standard library and most of the modules it also includes the Qpad application, a simple Windows IDE for the Q interpreter which allows you to edit and run your Q scripts. You can grab the package here:

This package is in MSI format which can be installed simply with a double-click. To make this work on older Windows versions, you may have to install Windows Installer 2.0, which is available here (Windows NT/2000) and here (Windows 9x/ME). (For Windows XP and Vista no additional software should be required.) Please note that at this time the ncurses, Qt/Q and Pd/Q modules have not been ported to Windows yet and thus are not included in the Windows package. Also, I didn't have the opportunity to test the package on Vista yet, any feedback on that is appreciated.

Requirements: The Qpad application requires Microsoft's MFC libraries; if these aren't available on your system then you should install the VC6RedistSetup package which can be obtained here. Most other required libraries are included, except ImageMagick, Tcl/Tk and Gnocl, which are needed for the magick and tk modules and GQBuilder, respectively. These are available under the following URLs: ImageMagick (you need version 6.2.9-x-Q16-windows-dll); Tcl/Tk (you need version 8.4); Gnocl (you need the 0.9.91-win32 build which is available here; please see the README file included in this package for instructions on how to install Gnocl on Windows). In addition, the opengl module needs the OpenGL library, but this will usually be supplied with the drivers of your graphics card. For the openal module you'll also need OpenAL 1.1, available here.

Source Packages

Here you can find the source tarballs that you need if you want to compile Q yourself. (Please note that the source tarballs for the multimedia examples are not listed here, but can be found on the Examples page.) The source packages are divided into the core package (containing the interpreter and the core modules) and separate tarballs for the different add-on modules. When compiling from the sources, you'll always need the Q core package, the other source packages are optional.

  Q  7.11 [Release Notes]
Description: The Q core (interpreter, standard library, core modules and related stuff).
Source: q-7.11.tar.gz
Requires: Only the GMP library is required for a basic installation; for thread and unicode support you'll also need the pthread and GNU iconv libraries (or compatible replacements). Other third-party libraries are required to make the various modules included in the core package work, see Core for details. Most required libraries should be readily available on recent Linux and *BSD systems.
  GQBuilder  1.1 [Release Notes]
Description: An interface module and GUI builder for Peter G. Baum's Gnocl. This lets you create GNOME/GTK-based applications via Tcl. (This used to be included in the core distribution but is now available as a separate source package.)
Source: gqbuilder-1.1.tar.gz
Requires: Tcl/Tk, Gnocl.
  Graph  1.8 [Release Notes]
Description: A combinatorial graph library. Includes a Tcl/Tk-based graph editor.
Source: graph-1.8.tar.gz
Requires: Tcl/Tk >=8.4 (for the graph editor).
  Mod_q  1.1 [Release Notes]
Description: A Q Apache module. This lets you run Q scripts in the Apache web server. (This used to be included in the core distribution but is now available as a separate source package.)
Source: mod_q-1.1.tar.gz
  Pd/Q  0.4 [Release Notes]
Description: A Q external for Miller Puckette's Pd, which lets you program Pd objects in Q.
Source: pd-qext-0.4.tar.gz
Requires: Pd. This should be readily available on most Linux and *BSD systems; SUSE RPMs can be found on the PackMan website.
  QCalc  1.2 [Release Notes]
Description: A Q spreadsheet which can be used as an alternative frontend to the Q interpreter. Please see the QCalc manual for more information and screenshots.
Source: qcalc-1.2.tar.gz
Requires: Qt/Q (see below), Qt (currently requires Qt version 3).
  Q+Q  0.9.6 [Release Notes]
Description: Rob Hubbard's rational number library.
Source: q+q-0.9.6.tar.gz
  Q[i][X]  0.6.1 [Release Notes]
Description: Rob Hubbard's polynomial library.
Source: qix-0.6.1.tar.gz
  QCWrap  1.2 [Release Notes]
Description: Compiles Q bytecodes to C code. (This used to be included in the core distribution but is now available as a separate source package.) Please note that this is not a "real" compiler, it just wraps up Q bytecode files in a C program which can be compiled so that you can distribute Q programs as (more or less) standalone executables.
Source: qcwrap-1.2.tar.gz
  Q Yacc/Lex  1.1 [Release Notes]
Description: Yacc and Lex for the Q programming language.
Source: qyacclex-1.1.tar.gz
  Q-Audio  2.7 [Release Notes]
Description: Audio and soundfile interface. Includes a sample audio player.
Source: q-audio-2.7.tar.gz
Requires: PortAudio, libsndfile, libsamplerate, libfftw3, Tcl/Tk (for the audio player).
  Q-CSV  0.2 [Release Notes]
Description: Eddie Rucker's CSV (comma separated value) module.
Source: q-csv-0.2.tar.gz
  Q-Faust  1.8 [Release Notes]
Description: An interface to Faust, Grame's functional audio processing and synthesis language. With this module you can run Faust DSPs to perform realtime audio processing in your Q scripts.
Source: q-faust-1.8.tar.gz
Requires: Faust. SUSE RPMs for Faust can be found on the PackMan website.
  Q-Midi  2.1 [Release Notes]
Description: MIDI interface, based on Grame's MidiShare. Includes a sample MIDI player.
Source: q-midi-2.1.tar.gz
Requires: MidiShare, Tcl/Tk (for the MIDI player).
  Q-NCurses  1.1 [Release Notes]
Description: An ncurses interface. Lets you create text-based user interfaces in a device-independent way.
Source: q-ncurses-1.1.tar.gz
Requires: ncurses (readily available on most Linux and *BSD systems).
  Q-OpenAL  1.4 [Release Notes]
Description: Q's interface to the 3D audio toolkit.
Source: q-openal-1.4.tar.gz
Requires: OpenAL. This should be readily available on most Linux and *BSD systems. For Windows the necessary OpenAL runtime can be found here. Please note that this version of the module requires OpenAL 1.1. If you are still using OpenAL 1.0, use version 1.3 of the module instead.
  Q-OpenGL  1.3 [Release Notes]
Description: Q's interface to the popular 3D graphics toolkit.
Source: q-opengl-1.3.tar.gz
Requires: OpenGL, FreeGlut (or a suitable replacement). These should be readily available on most Linux and *BSD systems. On Windows the required libraries are usually provided with your graphics driver.
  Q-SQLite3  1.2 [Release Notes]
Description: A simplified SQL database interface, based on SQLite version 3.
Source: q-sqlite3-1.2.tar.gz
Requires: SQLite version 3 (readily available on most Linux and *BSD systems).
  Q-Synth  1.7 [Release Notes]
Description: OSC software synth interface, featuring special support for James McCartney's SuperCollider. Includes a sample Tcl/Tk frontend for SuperCollider.
Source: q-synth-1.7.tar.gz
Requires: SuperCollider (to utilize the SuperCollider interface), Q-Audio and Q-Midi (for the included examples), Tcl/Tk (for the SuperCollider GUI). SUSE RPMs for SuperCollider can be found on the PackMan website, and a Windows port of SuperCollider is available here.
  Q-Xine  1.5 [Release Notes]
Description: Q's interface to the popular xine media player. Provides the necessary operations to play back multimedia content in Q scripts.
Source: q-xine-1.5.tar.gz
Requires: Libxine (readily available on most Linux and *BSD systems).
  Qt/Q  1.4 [Release Notes]
Description: Q's interface to Trolltech's popular GUI toolkit. Based on the SmokeQt library. Provides all necessary operations to program Qt GUIs in Q, and allows you to create widgets from Qt Designer XML code (.ui files). Support for the Qt assistant html help system is also included.
Source: qt-q-1.4.tar.gz
Requires: Qt and SmokeQt (readily available on most Linux and *BSD systems, as well as OSX and Windows). The current version of this module requires Qt3; a Qt4 version is being worked on.
  SWIG  1.3.22-q-20071021 [Release Notes]
Description: A version of SWIG (http://www.swig.org) which has been patched to add support for the Q language. You'll need this if you want to employ SWIG to create Q modules interfacing to C/C++ code. This package is only provided as a source tarball, which can be installed on Un*x systems with the usual ./configure; make; make install. (Windows users don't need this package, since a suitable SWIG version is already included in the binary Qpad package.)
Source: swig-1.3.22-q-20071021.tar.gz


Virtually all 3rd party software required by Q and its modules is readily available on Linux systems nowadays. However, you'll need the following updated gnuplot package (built from CVS sources) if you want to run gnuplot inside the QCalc application.

  Gnuplot  4.3 [Release Notes]
Description: Gnuplot from 2007-12-04 CVS sources. See http://www.gnuplot.info for licensing information. This version can be used with the QCalc program (see above).
SUSE 10.3 RPM: gnuplot-4.3-1su103.i586.rpm
Source RPM: gnuplot-4.3-1.src.rpm
© 2007 by Albert Gräf