Shen-Language / shen-sources

Shen language kernel sources for porters
Other
355 stars 41 forks source link
functional-programming lisp logic-programming programming-language prolog shen static-typing

Important User Notice

This repository contains a partial Shen language implementation, aimed at developers working on Shen itself, not a full version ready for general programming use.

For beginners, it is highly recommended that they start first with the main website and to join the mailing list.

To write and run Shen programs, please use one of these user-friendly options:

These resources provide complete Shen environments for programming.


Current Release

Shen Sources

This repository hosts a slightly modified version of the sources for the kernel of Mark Tarver's Shen programming language.

Note that this repository does not contain a runnable implementation of Shen, just the language kernel code that can be used by porters to create a full implementation of the language.

NOTE To obtain a runnable version, consider the reference implementation from the main website or Shen/Scheme.

Documentation for the Shen Language is the shendoc hosted on the main website.

Generating Kλ

IMPORTANT This is not required when downloading the releases (recommended).

Shen is a self-hosted language, so its kernel implementation is written in Shen. Building Kλ from the Shen sources requires an executable built from the previous release of Shen.

Using Pre-Built Shen/Scheme (Recommended)

A prebuilt copy of a reference implementation can be pulled down by running make fetch. The executable shen-scheme will be dropped under the shen-scheme/bin folder. Render the Kλ by running make klambda or just make.

Using Another Executable

Using your own executable is the same as above, except you override the Shen variable like this: make klambda Shen="/path/to/shen".

Releases

Release packages containing the pre-built Kλ and the test suite are created using make release. Archives appear under the release/ folder in both zip and tar.gz format.

Packages can be created for any version, but when uploading to the releases page, make sure to have built the specific tagged revision.

make pure
git checkout shen-39.0
make fetch
make klambda
make release

Building release packages on Windows currently requires the 7-zip command 7z to be accessible from the command line.

Porting Shen

Refer to doc/ and the wiki for instructions on building a certifiable port of Shen. If you get your port to run the standard test suite successfully, let us know on the mailing list and your port will be certified.

Happy Programming!