Getting started

Having installed Nitrile, you can use this short tutorial to learn how to use Nitrile to manage a Clean project.

Nitrile works with projects, which are specified in a nitrile.yml file. Base packages (like the compiler, code generator, and run time system) are not installed globally but locally, in a subdirectory of a project. You do not have a global Clean installation. This enables you to work with different versions of libraries and applications (including the compiler) at the same time.

To get started, create a simple nitrile.yml file (or use nitrile init):

name: my-project
type: Application
description: An example project.
version: 0.1.0
license: AGPL-3.0-only
url: https://gitlab.com/example/my-project
maintainer: My Name
contact_email: name@example.org

Also create the directory src and a main file src/app.icl:

module app

Start = "Hello, world!"

We need to tell Nitrile where to look for the source files. Add the following to your nitrile.yml:

src:
  - src
build:
  app:
    script:
      - clm:
          main: app
          target: bin/app

If we now run nitrile build, we get:

$ nitrile build
/bin/sh: 1: clm: not found

We have forgotten to add base as a dependency! This is needed to have a working compiler and build tools. Add the dependency to nitrile.yml:

dependencies:
  base: ^1.0.0

Now run:

$ nitrile update
$ nitrile fetch

The first gets the latest package information from the registry. The second satisfies the dependencies and downloads them into nitrile-packages.

Now we can run nitrile build again:

$ nitrile build
Generating code for _system
Compiling app
Generating code for app
Linking app

And run our application:

$ ./bin/app
"Hello world!"
Execution: 0.00  Garbage collection: 0.00  Total: 0.00