Metadata-Version: 2.4
Name: spork-lang
Version: 0.6.2
Summary: A Lisp to Python transpiler with persistent data structures
Author-email: Grant Wade <grant@wade.software>
License-Expression: MIT
Project-URL: Homepage, https://spork.sh/
Project-URL: Documentation, https://spork.sh/docs/
Project-URL: Repository, https://github.com/spork-it/spork-lang
Project-URL: Issues, https://github.com/spork-it/spork-lang/issues
Project-URL: Changelog, https://github.com/spork-it/spork-lang/blob/main/CHANGELOG.md
Keywords: lisp,clojure,transpiler,compiler,persistent-data-structures,functional-programming,repl
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Lisp
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Compilers
Classifier: Topic :: Software Development :: Interpreters
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: build>=1
Requires-Dist: packaging>=24
Requires-Dist: platformdirs>=4
Requires-Dist: setuptools>=77
Requires-Dist: spork-runtime<0.2.0,>=0.1.1
Provides-Extra: dev
Requires-Dist: twine; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: mypy>=1.11; extra == "dev"
Dynamic: license-file

# Spork

[![Tests](https://github.com/spork-it/spork-lang/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/spork-it/spork-lang/actions/workflows/test.yml)
[![PyPI version](https://img.shields.io/pypi/v/spork-lang)](https://pypi.org/project/spork-lang/)

Spork is a Lisp hosted on CPython. It compiles to Python AST, interoperates directly with Python libraries, and adds macros, expression-oriented forms, immutable persistent collections, source-mapped errors, and one project-aware CLI.

Spork is pre-1.0 and supports CPython 3.10–3.14.

## Install

On Linux, macOS, or WSL, use the reviewed installer hosted with the documentation:

```bash
curl -fsSL https://spork.sh/install | sh
```

Or install the CLI with `pipx`:

```bash
pipx install spork-lang
```

## Try it

Create `hello.spork`:

```clojure
(defn greet [name]
  (fmt "Hello, {}!" name))

(print (greet "Spork"))
```

Run it directly:

```bash
spork hello.spork
```

Create an isolated project when the program grows:

```bash
spork new hello-spork
cd hello-spork
spork sync
spork check
spork test
spork run
```

A project’s `spork.it` declares dependencies, source paths, an entry point, and a compatible `spork-lang` range. Project commands automatically use the compatible toolchain synchronized into `.venv`.

## Documentation

The canonical documentation is maintained at [spork.sh/docs](https://spork.sh/docs/):

- [Getting started](https://spork.sh/docs/getting-started/)
- [Language reference](https://spork.sh/docs/reference/language/)
- [Standard library reference](https://spork.sh/docs/reference/standard-library/)
- [Project and CLI reference](https://spork.sh/docs/reference/tooling/)
- [Editors](https://spork.sh/docs/editors/) and [examples](https://spork.sh/docs/examples/)

Release changes remain in [CHANGELOG.md](CHANGELOG.md). Repository-owned engineering notes remain under `docs/`; public documentation belongs on `spork.sh`.

## Package boundaries

Compiled Spork distributions depend on [`spork-runtime`](https://spork.sh/docs/packages/spork-runtime/) rather than the compiler. Persistent collections are supplied by the standalone [`spork-pds`](https://spork.sh/docs/packages/spork-pds/) extension.

## Development

```bash
git clone https://github.com/spork-it/spork-lang.git
cd spork-lang
make venv
make test
```

Use `make help` for development, packaging, and cleanup targets.

## License

[MIT](LICENSE)
