Metadata-Version: 2.4
Name: koskari
Version: 0.2.0.dev20261102
Summary: Koskari: A LISP dialect for Python
Home-page: https://koskari.org
Author: Christopher O'Brien
Author-email: obriencj@gmail.com
License: GNU General Public License v3 (GPLv3)
Project-URL: Source, https://github.com/koskari-lang/koskari
Project-URL: Documentation, https://docs.koskari.org/
Project-URL: Changelog, https://docs.koskari.org/changelog.html
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
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 :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development :: Interpreters
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: repl
Requires-Dist: prompt_toolkit>=3.0; extra == "repl"
Provides-Extra: lsp
Requires-Dist: pygls>=2.0; extra == "lsp"
Requires-Dist: lsprotocol; extra == "lsp"
Provides-Extra: pygments
Requires-Dist: pygments>=2.0; extra == "pygments"
Provides-Extra: sphinx
Requires-Dist: sphinx>=7.0; extra == "sphinx"
Requires-Dist: pygments>=2.0; extra == "sphinx"
Dynamic: license-file

# <img src="https://koskari.org/_static/koskari-icon.svg" height="42" align="top" alt=""> Koskari

Koskari is a Lisp that lives inside Python: its modules import and are
imported like any other, its values are Python objects, and its programs run
on a bytecode evaluator written to run alongside CPython's own.

```koskari
def greet [name]:
  print f"Hello, {name}!"

@entry-point
def main []:
  greet "world"
```

```bash
koskari hello.ki
# Hello, world!
```

- **Layout or parentheses.** Indented blocks read as forms, so a program looks
  like Python; full s-expressions are there whenever you want them.
- **Python interop in both directions.** A `.ki` file sits beside `.py` files
  and imports through the ordinary import system; Python code imports it
  back and calls into it.
- **Hygienic macros**, `syntax-rules` style, with quasiquote and reader
  fences for foreign literals.
- **Async without the keywords.** The evaluator awaits awaitable values in
  place, so code that uses asyncio reads as straight-line code.
- **Control flow from Scheme.** Tail calls, delimited continuations, `call/cc`,
  dynamic wind and parameterize, alongside Python's exceptions and `with`.
- **Pattern matching** over Python objects and Koskari data.
- **A REPL, a disassembler, and cached compiled modules.**


## Install

```bash
pip install koskari
pip install "koskari[repl]"   # syntax-highlighted REPL input via prompt_toolkit
```

Every release so far is a weekly development snapshot, a pre-release, so
`pip install koskari` resolves to the newest one; once a final release
exists, `--pre` keeps selecting snapshots. Koskari supports CPython 3.9
through 3.14 and ships wheels for Linux and macOS.


## Links

- Documentation: <https://docs.koskari.org/>
- Quickstart: <https://docs.koskari.org/quickstart.html>
- Changelog: <https://docs.koskari.org/changelog.html>
- Source: <https://github.com/koskari-lang/koskari>
- License: GNU General Public License v3 or later
