
Pure Language and Library Documentation
=======================================

.. Pandoc header block:
.. % Pure Language and Library Documentation
.. % Albert Gräf (ed.)
.. % Last updated: |today| (Pure version @version@)

.. only:: html

   Last updated: |today| (v\ |version|)

.. |GPL| replace:: GNU General Public License
.. |LGPL| replace:: GNU Lesser General Public License
.. |BSDL| replace:: BSD License
.. |FDL| replace:: GNU Free Documentation License

.. _FDL: http://www.gnu.org/copyleft/fdl.html
.. _GPL: http://www.gnu.org/copyleft/gpl.html
.. _LGPL: http://www.gnu.org/copyleft/lgpl.html
.. _BSDL: http://www.opensource.org/licenses/bsd-license.php

.. _Pure website: https://agraef.github.io/pure-lang/
.. _Pure mailing list: http://groups.google.com/group/pure-lang

.. raw:: latex

   \markboth{}{}

This manual collects all of Pure's online documentation: :doc:`pure` which
covers the Pure language and the operation of the Pure interpreter; the
:doc:`purelib` which describes the standard library modules included in the
distribution of the Pure interpreter; all available documentation for the
various `addon modules`_ which can be downloaded as separate packages from the
Pure website; and an appendix with :doc:`installation instructions<install>`.

Most of the Pure documentation is distributed under the |FDL|_. The authors of
the current edition are listed below. (This just lists the primary section
authors in alphabetical order; please check the different parts of this manual
for additional authorship and licensing information.)

* Albert Gräf (:doc:`pure`; :doc:`purelib`; various addon manuals)

* Rob Hubbard (:doc:`pure-rational`)

* Kay-Uwe Kirstein (:doc:`pure-gplot`)

* Eddie Rucker (:doc:`pure-csv`; :doc:`pure-gsl`)

* Jiri Spitz (:doc:`pure-glpk`)

* Peter Summerland (:doc:`pure-sql3`, :doc:`pure-stlmap`, :doc:`pure-stlvec`)

The Pure programming system is free and open source software. The interpreter
runtime, the standard library and most of the addon modules are distributed
under the |LGPL|_ or the 3-clause |BSDL|_ which allow for commercial
applications. Some parts of the system also use the |GPL|_ (typically because
they interface to other GPL'ed software such as Gnumeric, GSL and
Octave). Details about authorship and license conditions can be found in the
sources or in the various manual sections.

For more information, discussions, feedback, questions, suggestions
etc. please see:

* Pure website: https://agraef.github.io/pure-lang/
* Pure mailing list: http://groups.google.com/group/pure-lang

.. only:: html

   From the Pure website you can also download a recent version of this manual
   in `pdf format`_.

   .. _pdf format: https://agraef.github.io/pure-docs/puredoc.pdf

.. only:: winhelp

   Pure on Windows
   ---------------

   If you're reading this then you're looking at the html help for Pure. The
   following Windows-specific information is available:

   * :doc:`windows`
   * :doc:`purepad`

   Please note that, although the documentation listed below includes *all*
   addon modules which are available for Pure, only a subset of the addon
   modules actually come bundled with the Windows Pure package. Most basic
   extensions are included in the package; at the time of this writing, these
   are: :doc:`pure-csv <pure-csv>`, :doc:`pure-doc <pure-doc>`,
   :doc:`pure-fastcgi <pure-fastcgi>`, :doc:`pure-faust <pure-faust>`,
   :doc:`pure-ffi <pure-ffi>`, :doc:`pure-gen <pure-gen>`, :doc:`pure-glpk
   <pure-glpk>`, :doc:`pure-gsl <pure-gsl>`, :doc:`pure-mpfr <pure-mpfr>`,
   :doc:`pure-octave <pure-octave>`, :doc:`pure-odbc <pure-odbc>`,
   :doc:`pure-readline <pure-readline>`, :doc:`pure-reduce <pure-reduce>`,
   :doc:`pure-sockets <pure-sockets>`, :doc:`pure-sql3 <pure-sql3>`,
   :doc:`pure-stldict <pure-stldict>`, :doc:`pure-stlmap <pure-stlmap>`,
   :doc:`pure-stlvec <pure-stlvec>` and :doc:`pure-xml <pure-xml>`. Other
   modules are available as separate packages, please check the Addons_ page
   on the wiki for details.

   .. _Addons: https://github.com/agraef/pure-lang/wiki/Addons

   If one of the modules is not currently available, this doesn't mean that it
   can't be ported to Windows; it just means that noone has yet bothered to do
   so. Very few of the distributed Pure modules are truly Unix- or
   Mac-specific (the :pure:mod:`posix` module is one notable example). Feel
   free to ask on the Pure mailing list about modules that you'd like to see
   ported and/or included in the Windows package.

.. only:: html

   Language and Standard Library
   -----------------------------

   This part of the manual documents the Pure language and interpreter, as well
   as the standard library distributed with the interpreter.

.. toctree::
   :titlesonly:

   pure
   purelib

.. _addon modules:

.. only:: html

   Basic Support Utilities and Libraries
   -------------------------------------

   This part covers general programming tools and libraries which are useful
   in many Pure programs but don't come bundled with the interpreter.

.. toctree::
   :titlesonly:

   pure-avahi
   pure-bonjour
   pure-doc
   pure-ffi
   pure-gen
   pure-readline
   pure-sockets
   pure-stldict
   pure-stllib
   pure-stlmap
   pure-stlvec

.. only:: html

   Scientific Computing
   --------------------

   Interfaces to various 3rd party mathematical software.

.. toctree::
   :titlesonly:

   gnumeric-pure
   pure-glpk
   pure-gplot
   pure-gsl
   pure-mpfr
   pure-octave
   pure-rational
   pure-reduce

.. only:: html

   Database and Web Programming
   ----------------------------

   Modules for dealing with data in CSV and XML format, interfacing to SQL
   databases, and running Pure scripts in a web server using the FastCGI
   protocol.

.. toctree::
   :titlesonly:

   pure-csv
   pure-fastcgi
   pure-odbc
   pure-sql3
   pure-xml

.. only:: html

   GUI and Graphics
   ----------------

   Various interfaces to 3rd party GUI and graphics libraries.

.. toctree::
   :titlesonly:

   pure-g2
   pure-gl
   pure-gtk
   pure-tk

.. only:: html

   Multimedia
   ----------

   A collection of scripts and modules useful for programming media
   applications. Currently, this covers digital audio, MIDI and
   OSC. Interfaces to Yann Orlarey's functional DSP programming language Faust
   and Miller Puckette's graphical computer music software PureData are also
   available.

.. toctree::
   :titlesonly:

   faust2pd
   pd-faust
   pd-pure
   pure-audio
   pure-faust
   pure-liblo
   pure-lilv
   pure-lv2
   pure-midi

.. only:: html

   Appendix: Installation and Usage
   --------------------------------

   General information about installing and using Pure.

.. toctree::
   :titlesonly:

   install
   bugs

.. only:: html

   Index
   -----

   .. We'd like to use the standard :ref:`modindex` target below, but this is
      apparently hardwirded to 'py-modindex'. :(

   .. |Module Index| replace:: *Module Index*
   .. _Module Index: pure-modindex.html

   * |Module Index|_
   * :ref:`genindex`
