Skip to content

Hacking

Alex Zimin edited this page Sep 14, 2011 · 4 revisions

Table of Contents

The repository

All the project files are stored in the git repository, at https://github.com/rsdn/nemerle.

Commit logs

You should use entire sentences when writing commit logs. A sentence starts with a capital letter and ends with a full stop. Keep this in mind, as ChangeLog files in releases are automatically generated from commit logs, and should look consistent. Don't use past forms in commit logs. For example write "Add foobar to function baz." instead of "Added foobar to function baz." (which is a common practice).

Nemerle code style

Decision about the style is up to the maintainer of given module.

Compiler

Don't use space before an opening paren in a function call and a type application. Use indentation style shown in the following example:

class Foo
{
  Blah : Bar;

  public Foo() : void
  {
    def x()
    {
      match (x)
      {
        | A => ()
        | B =>
          qux.some.long.expression (some, lengthy, args);
      }
    }

    if(cond)
      x()
    else
      2 * x()

    // or
    if (cond) x()
    else      2 * x()
  }
}

Set expand tabs option in your editor. ASCII 0x09 are not welcome in sources. Use 2 spaces per tab.

Tools

There are some tools you will probably find useful while helping us write all the software and documentation related to the project. We try to keep this list complete and up to date, but there still may be some pieces of software, that we forgot, as it seems natural for us to have it installed.

Required to build Nemerle Compiler

Please check the requirements page.

Building Nemerle Compiler

Sources included in SVN repository or in tarball release have all necessary files to build the compiler. Most current bootstrap of compiler and library is placed in boot/ directory.

When you change something in the compiler, the crucial thing to check that everything works fine is running:

  make boot

command in the ncc/ directory. If compiler bootstrap itself you should also run make test which checks our regression tests.

Note that you should avoid installing compiler, when changing sources annotated with the same version number. It is because in some cases .Net runtime loads libraries from the GAC / system directories rather from application directory. Assemblies with different version numbers do not influence bootstrap process, so you can play with SVN version having release version installed.

Required to generate complete documentation

  • LaTeX
  • perl

Required to create a tarball with Nemerle distribution

  • python 2.3 (or newer)
  • PyXML
  • perl

Other tools

These are not prerequisites to do any task, but may be very helpful, and we ask you to use them, as they minimize the amount of mistakes.

  • We suggest to scan documents with
 ispell -d american -h file

or use your favorite development environment to do it for you.

Clone this wiki locally