Fetching contributors…
Cannot retrieve contributors at this time
91 lines (60 sloc) 3.22 KB
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.