A Perl 6 compiler targetting the CLR with an experimental focus on optimizations.
C# Perl6 C Perl JavaScript Parrot
Permalink
Failed to load latest commit information.
docs rename sub and method `eval` to `EVAL` Jan 1, 2014
examples rename sub and method `eval` to `EVAL` Jan 1, 2014
js First draft of a deser method Aug 16, 2012
lib rename sub and method `eval` to `EVAL` Jan 1, 2014
obj build -> obj, move perl5 compiler parts to src/ Aug 19, 2010
p5test Add missing files. Feb 22, 2012
perf rename sub and method `eval` to `EVAL` Jan 1, 2014
perl5 rename sub and method `eval` to `EVAL` Jan 1, 2014
run Make sure obj/ and run/ are recorded in git GH-31 snarkyboojum++ Jan 14, 2011
simple-tests add missing files to simple-tests Mar 6, 2011
src rename sub and method `eval` to `EVAL` Jan 1, 2014
t rename sub and method `eval` to `EVAL` Jan 1, 2014
tools Top removal: basic smart constructors, symbol table Nov 12, 2012
.gitignore Switch build to using a /serialize bootstrap image Oct 30, 2011
FETCH_URL Update to latest release. May 13, 2013
LICENSE Add license & credits info Jul 4, 2010
License-MS-PL.txt Add new types Int, Rat, FatRat, Complex May 21, 2011
Makefile Add boot-from-installed for bonsaikitten Nov 26, 2012
README.pod Document that build-depended tools need to be in PATH to be found (fi… Apr 15, 2012
TODO Update TODO Nov 3, 2011
main.pl Auto-call MAIN_HELPER when MAIN is defined; MAIN is now a supported f… Jan 24, 2012
test.pl Fix tests to match current (std). Mar 5, 2013
test2.pl rename sub and method `eval` to `EVAL` Jan 1, 2014
test3.pl rename sub and method `eval` to `EVAL` Jan 1, 2014

README.pod

ABOUT

This is 'Niecza', which is a Perl 6 implementation focusing on optimization and efficient implementation research. It targets the Common Language Runtime (ECMA-335; implementations are "Mono" and ".NET").

For a list of supported features, see http://perl6.org/compilers/features.

DEPENDENCIES (RUNTIME)

  • To run on Mono: 2.6.4 and later are well-tested, though success has been reported with 2.4.x as well. ggoebel on #perl6 reports that 2.6.7 fails with a bus error on OS X 10.4 x86, but 2.6.4 works; 2.6.7 is fine on other platforms.

    2.8.2 or later is recommended for best performance; you should use RUN_CLR=mono-sgen in this case. 2.10 (latest stable) is also tested.

    Debian and derivatives have a modular mono packaging; you should install 'mono-complete'. (The other packages exist for the sake of Debian-packaged programs.)

    To run on Windows/Mono (2.8.2 and 2.10) and other systems, download the mono installers from http://go-mono.org/

  • To run on Windows/Microsoft .NET 3.5 (2.0 runtime with 3.5 extensions) or .NET 4.0, install the .NET runtime from http://goo.gl/PMKvB

    NOTE: Niecza does NOT currently support Windows line endings. Source code (including the setting) must be encoded in Unix format, that is, linefeed only.

DEPENDENCIES (BUILD FROM SOURCE)

All of these need to be available in PATH.

  • Standard Unix utilities (touch, mkdir, rm, cp, echo)
  • wget (to fetch a bootstrapping binary).
  • perl (only needed for testing and the Perl 5 interop layer)
  • GNU make
  • unzip
  • git

USING

    $ make # only if using a source copy
    ... snip build spam ...
    $ mono run/Niecza.exe
    niecza> say 2 + 2
    4
    niecza> ^D
    $ mono run/Niecza.exe -e 'say 2 + 2'
    4
    $

Notes: The first time the compiler is run, the setting must be compiled, which adds about a minute on most hardware to the runtime. The second run will be much faster. Also, the recompilation checker is not robust to file format changes; it may be necessary to clean temporary files after updates.

Building on Windows currently requires the Cygwin environment with Mono's gmcs.exe in your Cygwin shell's $PATH, though in principle .NET's csc.exe could be made to work eventually, if it doesn't already.

COPYRIGHT AND LICENSE

Niecza is Copyright 2010-2011 Stefan O'Rear et al. It may be used and distributed under the Artistic License 2.0 (included under LICENSE).

Some files are included from other projects, and have their own copyright notices.

CREDITS AND PRIOR ART

This project was originally a spin-off of experiments done for Matthew "diakopter" Wilson's sprixel project, and was heavily inspired by many of its lower-level details.