Skip to content
This repository has been archived by the owner on Jun 1, 2022. It is now read-only.
/ prelude Public archive

Standard library of the Tony programming language

License

Notifications You must be signed in to change notification settings

tony-lang/prelude

Repository files navigation

Tony Prelude

This repository is home to the standard library of the Tony programming language.

Tony is a functional, strongly typed, high level, general purpose programming language. Tony employs refinement types, allowing its type checker to catch domain-specific bugs at compile time.

Other core components of Tony can be found through the following links:

Installation

The tony-prelude package is published on NPM.

You may install it

  • using Yarn (preferred)

    $ yarn global add tony-prelude
    
  • or using NPM

    $ npm install -g tony-prelude
    

Usage

The prelude is imported automatically in all Tony programs. If you wish to override the default import add the following import:

import { + } from 'prelude'

In the above example only + is imported from the prelude.

Development

To start development you first have to fork this repository and locally clone your fork.

Use yarn start to listen to changes and rebuild dynamically.

Testing

To run the tests:

$ yarn test

To let TypeScript check types:

$ yarn tsc

The linter can be run as follows:

$ yarn lint

We use Prettier for automated code formatting:

$ yarn prettier

You can find all commands run by the CI workflow in .github/workflows/ci.yml.

Contributing

We warmly welcome everyone who is intersted in contributing. Please reference our contributing guidelines and our Code of Conduct.

Releases

Here you can find details on all past releases. Unreleased breaking changes that are on the current master can be found here.

Tony follows Semantic Versioning 2.0 as defined at http://semver.org. Reference our security policy.

Publishing

  1. Review breaking changes and deprecations in CHANGELOG.md.
  2. Change the version in package.json.
  3. Reset CHANGELOG.md.
  4. Create a pull request to merge the changes into master.
  5. After the pull request was merged, create a new release listing the breaking changes, deprecations and commits on master since the last release.
  6. The release workflow will publish the package to NPM.