Repository navigation
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
1. Overview ----------- Sprite is an implementation of the Curry programming language (https://www.curry-lang.org/). It is based on an evaluation strategy called the Fair Scheme. You can read about it at http://web.cecs.pdx.edu/~antoy/homepage/publications/lopstr13/long.pdf. In addition to command-line tools for compiling and running Curry programs, the Python API provides access to a Curry interpreter, (JIT) compiler, and runtime. Curry code modules can thus be imported directly into Python, enabling hybrid applications that leverage the strengths of both languages. 2. Installation --------------- For common Linux platforms, all you need to do is run ONE of the commands below: - Automated (no confirmation): wget -qO- https://raw.githubusercontent.com/andyjost/Sprite/master/getsprite | sh curl -sSL https://raw.githubusercontent.com/andyjost/Sprite/master/getsprite | sh - Interactive (confirmation at each step): wget -qO- https://raw.githubusercontent.com/andyjost/Sprite/master/getsprite-i | sh curl -sSL https://raw.githubusercontent.com/andyjost/Sprite/master/getsprite-i | sh Sprite will be installed under $HOME/Sprite/install. These commands may ask for root access to install dependencies using your platform's package manager (currently, only apt is supported) and Python's package manger (pip). If you prefer more control, see the installation guide in the documentation. A conda recipe for linux-64 is under development under conda/. It is not published; conda/README.md describes it. A developer who sets up a new machine runs scripts/setup-dev-machine.sh --prefix DIR. The script checks the apt packages and prints the apt command when one is missing; it never runs sudo. It installs PAKCS 3.4.1 and a conda environment (conda/dev-environment.yml) under the prefix, links install/ and object-root/ of the checkout into it, runs configure and make stage in a clean environment, and runs a smoke test. Say --dry-run to print the plan first. The page "Developer Setup" of the documentation (docs/source/DeveloperSetup.rst) describes the steps, the options, and the layout of the prefix. 3. Running a Program -------------------- Programs run with install/bin/sprite-exec. For example, from the repository root: install/bin/sprite-exec examples/Peano.curry The C++ backend runs a module interpreted until the compiled code is ready, so an installation without a C++ compiler runs every program (see the page "Installing and running without a C++ compiler" of the documentation). The examples/ directory holds runnable examples of Curry programs and of Curry called from Python. Each has a run script, a README, and its expected output. See examples/README for the list. 4. Documentation ---------------- The user guide is published at https://andyjost.github.io/Sprite/ from the master branch. To build it yourself, run `make -C docs html` from the repository root after `make stage`. The output is written under object-root/docs/html. The sources are hosted at https://github.com/andyjost/Sprite. 5. Contact and Bug Reporting ---------------------------- Sprite was developed and is maintained by Andy Jost (andy.m.jost@gmail.com). Feel free to contact him with questions, bug reports, feature requests, and other miscellania. Direct general questions about Curry to the Curry mailing list (curry@lists.RWTH-Aachen.DE). If you find a bug, please report it. The easiest way is to create a minimal unit test decorated with ``unittest.expectedFailure``. Further instructions on developing and running tests can be found under tests/README. Once you have written the test, submit a pull request or send the diff by email. 6. Contributing to Sprite ------------------------- Contributions are welcome! For more information, see README.contrib. 5. License ---------- Sprite is distributed under the BSD 3-Clause License; see the LICENSE file. The vendored Curry library under curry/lib carries its own BSD license and notice.