@require(changelog) ## Download Specifications & Changelog gender\*render follows a strict set of easily implementable specifications. The implementations explain in-depth which design decision was taken why and how gender\*render works exactly, but also define guidelines for re-implementing gender\*render for different programming- and well as natural languages, and contain various findings and ideas/ concepts on how to deal with various aspects of grammatical gender and automated gendering in a technical context, some of whom might help you in writing related or similar tools. There is one main specification ("spec"), as well as several extensions specifications ("ext-..."). To get started, you can download the [main specification](https://phseiff.com/gender-render/docs/specs/spec/latest.pdf), which dives further into the versioning scheme of gender\*render specifications, their vision and development model, or download any specification in any version from the following list. Clicking a version number downloads the specification as a pdf file, whilst the [html↗]-link next to every specification version leads to a hosted html version of the specification. @for spec_name in sorted(open("docs/specs/specs.txt", "r").read().split("\n")): * @{spec_name}: * [download latest](https://phseiff.com/gender-render/docs/specs/@{spec_name}/latest.pdf) @for version in sorted(open("docs/specs/" + spec_name + "/versions.txt", "r").read().split("\n"), key=lambda v: tuple(v[1:].split(".")), reverse=True): * [@{version}](https://phseiff.com/gender-render/docs/specs/@{spec_name}/@{spec_name}-@{version}.pdf) [[html↗]](https://phseiff.com/gender-render/docs/specs/@{spec_name}/@{spec_name}-@{version}.html)@{(" - " + changelog[spec_name][version[1:]]) if spec_name in changelog and version[1:] in changelog[spec_name] else ""} @end @end