develooper Front page | perl.perl6.announce | Postings from December 2010

Announce: Niecza v1

Stefan O'Rear
December 27, 2010 23:58
Announce: Niecza v1
Message ID:

    Announce: Niecza Perl 6 v1

To mark one month since the first announcement of Niecza, to be known
retroactively as v0, this is another announcement, to be known as v1.
Further announcements will occur at intervals on the last Monday of
each month.

You have my assurance that the 'v1' tag, available at [1], passes all
of the current tests and has a bunch of cool features.  What you will
not necessarily have is an easy time installing it; Niecza depends on
several non-pure-Perl modules from CPAN, which you'll need to set up
in order to be able to use Niecza.  I recommend trying cpanminus

Niecza is a Perl 6 compiler project studying questions about the
efficient implementability of Perl 6 features.  It currently targets
the Common Language Runtime in the form of Mono.

    List of changes

* The code generation backend has been rewritten to generate CLR
  bytecode directly, instead of going through the C# compiler.  This is
  quite a bit faster, and also generates slightly better code (due to
  structural restrictions on C# code that spaghetti bytecode lacks).
  Also, it means that Niecza no longer depends on a C# compiler after

* Call graph generation. Set NIECZA_TRACE_CALLS=1 in the environment,
  then pass the output into perf/ to see what your
  most used functions are.

* The included JSYNC interface can now save subclasses of Hash.

* use v6; is now recognized and ignored.

* --gen-app is no longer available; it was deeply tied to the C# use.

* The binder has been redesigned and made data-driven, shrinking DLLs
  and making signature introspection possible.

* Regex matches now set $/.

* New methods: Cool: split, index, rindex, lines, split, comb improved

* New operators: &&=, ||=, //=, andthen=

* New top-level functions: open, print.  say returns True on success
  per spec.

* pmurias added &skip to Test and fixed escaping of debug clauses.

* New keywords supported: INIT, require, submethod

* Exceptions now propagate out of inner loop contexts correctly (e.g.
  if a Str overload dies when an object is stringified)

* Array and hash slices are now supported.

* Relative array indexing (@foo[*-1]) is now supported.

* In stack traces, method names now include the class.

* 'augment' now takes effect at INIT time, not BEGIN.  This allows
  augments to be used in precompiled modules.

* Bootstrap code is now properly distributed between modules, rather
  than having all of it bloat MAIN.exe.

* @*ARGS works properly with compile-and-run mode.

* Attribute default values are implemented.

* Minor optimizations have been done on: storage of boxed values,
  autovivification, postcircumfix operators, contextual conversions,
  zero width assertions, list iteration.

    Getting involved

Contact sorear in #perl6 or via the sender address of
this mailing.  Also see docs/lhf.txt for a list of things that need to
be done in no particular order.

    Future directions

To simplify deployment and make &eval easier to implement, I'd like to
take Perl 5 out of the loop.  Therefore I am engineering a way to allow
the compiler to be moved to Perl 6; this will probably be finished by
v2 or v3.  After that, expect lots of spectest work.

[1] Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About