# libipuz.org

libipuz is a library for loading and saving the ipuz data format for
pencil-and-paper puzzles. It is written in C and Rust, and has
dependencies on glib and json-glib. It is licensed under terms of the
LGPLv2.1-or-later and the MIT licenses.

libipuz intends to have complete compatibility with the [ipuz
spec](http://ipuz.org) ([local
mirror](https://libipuz.org/ipuz-spec.html)), and areas where we don't
support something correctly are considered a bug. The areas where we
have extensions or clarifications are documented here:
* [Extensions to the ipuz spec that we support](ipuz-extensions.md)

This library was primarily written for use by [GNOME
Crosswords](https://gitlab.gnome.org/jrb/crosswords). As a result, it
only loads crossword-style ipuz puzzles. Other types are planned for
the future.

## Source code

The current version of libipuz is 0.4.6.2

* [Main libipuz repository](https://gitlab.gnome.org/jrb/libipuz)
* [Issue tracker](https://gitlab.gnome.org/jrb/libipuz/-/issues)
* [Release NEWS](https://gitlab.gnome.org/jrb/libipuz/-/blob/master/NEWS.md)
* [Release tarballs](https://gitlab.gnome.org/jrb/libipuz/-/releases)

## Design documents

* [Coordinate clarification](coords.md)
* [Filippine puzzles](filippine.md)
* [Parsing strategy](parsing-strategy.md)
* [Full Puzzle Kind](full-tree.md)

## Rustification (ongoing)

* [Rust in libipuz](rust.md)
* [Porting IPuzCharset to Rust](charset-rust.md)

## Coding style

* [Some style conventions](naming-conventions.md)

See http://ipuz.org/ for more information about the file format.
*ipuz is a trademark of Puzzazz, Inc., used with permission*
