== Changes for 6.2.7 (r4612) - June 13, 2005
=== Pugs Internals
* Add `::?CLASS`, `::?ROLE`, and `::?PACKAGE` magicals
* Allow bypassing the Standard Prelude by setting `$ENV<PUGS_BYPASS_PRELUDE>`
* Experimental heredoc support via `qq:to/END/ ... END`
* Implement `is required` for subroutine parameters
* New builtins: `caller`, `Carp::longmess`, `Scalar::as`
* Obsolete the old `open` builtin in favor of Prelude's `File::open()`
* Rudimentary, source-filter-like macro support added
* Speed up parsing for 2x by caching dynamic grammar rules
* Support for lvalue `substr()`
* `:coerce` and other A12 catgories are parsed in sub names
* `is unsafe` trait to mark subs unavailable in safe mode
* `method foo ($.x) {}` now sets `$.x`
* `undef($x)` is now spelled `undefine($x)`
=== Bundled Modules
* New modules added:
** `FindBin`
** `File::Find`
** `HTTP::Message`
** `POE` (experimental)
** `URI::Escape`
* Extended tests for `Tree`
=== Tests, Examples and Documentations
* APW talk: "Apocalypse Now" in `docs/talks/Apocalypse_Now.spork`
* APW talk: "Eine Einfuehrung in Perl 6" in `docs/talks/perl6-apw2005/`
* Documentation of how to execute Pugs in `lib/pugs/run.pod`
* Examples of writing nested loops in `examples/nested_loops`
* Haskell Workshop paper on Pugs in `docs/talks/hw2005.tex`
* Overview of Pugs source tree in `lib/pugs/hack.pod`
* Overview of Rules bootstrapping plan in `/docs/other/rules_bootstrap`
* Some new test and several tests refactored, we now have 7600+ tests
* Unit manipulation and converstions examples in `units.p6`
* `examples/algorithms` subdir now unifies algorithmics examples
=== Bug Fixes
* '\' protects delimiters in rules
* Chained comparisons now work again (were broken in 6.2.6)
* Critical evals (`use`, `require`, `prelude`) now raise parsefail exceptions
* Fix `[].method` and `{}.method` to call `Array::method` and `Hash::method`
* Fixed `~{1=>2}` to stringify to `"1\t2\n"` correctly
* Parse errors inside blocks are now reported on the occuring position
* Parse for array and hash captures in rules
* `Test::is()` now shows the expected result correctly again
* `module Foo {...}` now parses correctly
== Changes for 6.2.6 (r4318) - June 2, 2005
=== Pugs Internals
* Pugs can now embed Perl 5 and use CPAN modules
** Perl 5 objects, classes and functions are understood by Pugs
** Pugs objects, classes and functions are understood by Perl 5
** These types can also be used in round-trip callbacks
* All user-defined classes now inherit from "Object"
* Bare blocks now belongs to the `Bare` type; pointy subs are still `Block`
* Class methods: `My::Class.foo()`
* Class objects are initialised from the default class tree
* Exclusive-range operators: `^..`, `..^` and `^..^`
* Experimental compiler backend `Pugs.Compile.Pugs2` (not yet working)
* Experimental `&code.body` support for reified ASTs
* Experimental embed API in `src/perl5/pugsembed.h`
* Fully qualified subroutine names are now parsed
* More core modules refactored for improved compilation speed and readability
* Multi-invocant calls like `foo($x, $y: $z)` are no longer legal
* New builtins: `evalfile`, `nothing`, `getc`
* Parameterless bare blocks now get an implicit $_ by default
* Parameterless pointy blocks no longer get a default parameter list
* Parrot compilation backend now handles qualified subroutine names
* Pugs now has a /Safe/ mode, enable by the PUGS_SAFEMODE environment variable
* Stub implementation for `.does` as an alias of `.isa` (no Roles yet)
* Unix only builtins: `opendir`, `readdir`, `rewinddir`, `closedir`
* `$str.split(/rule/)` and `$str.split($delim)`
* `&infix<=>` can now be used as the assignment operator
* `Prelude.pm` added to `src/perl6` to implement S29 builtins in Perl 6
* `SUPER::`, `BUILDALL` and `DESTROYALL`
* `is export` now works as specified
* `loop {...} while`, `loop {...} until`
* `map` and `reduce` can now take n-ary functions.
* `when .does(Foo)`, `when $_.does(Foo)` and `when Foo`
=== Bundled Modules
* Many more code sketches and documentation added to `Perl-MetaModel`
* New `Benchmark` module added
* `CGI` has been improved:
** Now has: `escapeHTML`, `unescapeHTML`, `redirect`
** Supports more HTTP headers in `header`
** New module `CGI::Util` added
* New `Date` module added
* New `Text::Glob` module added
* New `libwww-perl` distribution added
** `LWP-Simple` now moved here
** `HTTP::Headers`, `HTTP::Message` modules added
* `Test::Builder` is now dangerously close to completely working
* `fp` now exports `&identity` instead of `&id` to avoid clash with `$obj.id`
* `use lib 'path';` now works
=== Tests, Examples and Documentations
* Some new test and several tests refactored, we now have 7200+ tests
* Pugs Apocryphon 2 improved and edited in `docs/02Internals.pod`
* Many improvements to `util/perl6.vim` to handle new features
* More Haddock documentation added to the Haskell source
* New IRC bot `evalbot` added to `examples/network`
* New JAPH for Italian Perl Workshop added in `examples/japh`
* Perl 6 port of Perl Power Tools begun in `examples/ppt`
* Some new additions and cleanup of the cookbook
* `examples/network/screen-nodestatus.p6` added to monitor hosts in GNU screen
=== Bug Fixes
* Hyper-reduction prefix operators such as `[+]«` are now parsed
* Single-character class names were not parsed correctly
* Stringifying a Rule no longer throws an uncatchable exception
* Use of undeclared types in signatures no longer breaks MMD
* `(1 => 2 ?? 3 :: 4)` now always constructs a pair
* `Foo.bar()` now dispatch to `&Foo::bar` instead of to `&Class::bar`
* `Foo.isa(Foo)` no longer means `Class.isa(foo)`
* `pugs -MFoo` now means `use Foo` not `require Foo`
* `readline()` now reads utf-8
* `times` now really works on Win32
* `when .isa(Foo)` is no longer parsed as `when $_ ~~ .isa(Foo)` now
== Changes for 6.2.5 (r3794) - May 24, 2005
=== Bundled Modules
* Fix one broken test from the `Set` module
== Changes for 6.2.4 (r3790) - May 24, 2005
=== Pugs Internals
* All infix operators now receive reduction forms, such as `[+]`
* All operators now receive hyperised forms, such as `>>+<<` and `~<<`
* Dereferencers: `@{...}` and `@$var`
* Experimental support for `coro { ... }`, `coro name { ... }` and `yield()`
* Experimental support for `lazy {...}`
* External Parrot for Rules is now kept in a single process
* Inheritance: `class Foo is Bar` and `class Foo does Bar`
* Interactive shell commands normalised to always begin with `:`
* MMD handling is now more sophisticated, and `$.chained.attr.methods` works
* Much better error messages, with cascading stack trace
* New `./method` syntax implemented
* Objects numify to a unique value accessible with `$obj.id()`
* Parrot compiler backend now handles namespaces and method calls
* Parsing of hierarchical return types: `sub foo returns Hash of Str`
* Private attributes: `has $:foo` now generates private accessors
* Private methods: `method :foo ()` and `$obj.:foo`
* Switch to sum-of-inheritance-level distance for MMD dispatch on invocants
* Symbolic references: `$::(...)` and `$::some::("var")::($bar)`
* User-defined symbolic infix, postfix and prefix unary functions
* `$?CLASS` and `$?PACKAGE` works; `$?ROLE` currently works as `$?CLASS`
* `&code.name` and `&code.arity` added
* `FIRST {...}` and `my $x = FIRST {...}` support
* `INIT {...}` and `CHECK {...}` blocks in void context and as rvalues
* `OUTER::` scope implemented
* `do {...}` literal added
* `gather { ... }` and `take()` implemented
* `submethod BUILD` is called for each parent class and class itself
* `time()` now returns a fractional number
* `try {...}` literal allowed at expression level
* `warn()`, `uniq()`, `fail()`, `times()` implemented
=== Bundled Modules
* `Inline::Pugs` and `pugs` module to inline Perl 6 into Perl 5 programs
* `Locale::KeyedText` re-added (this was our first contributed module)
* `Net::IRC`, OO version added
* `Perl::MetaModel`, prototype of Perl 6 OO meta-model in Perl 6 OO
* `Set::Junction` and `Set::Hash` added as implementation backends to `Set`
* `Set` now has many overloaded operators
* `Test::Builder`, with Perl 6 objects (parses, and mostly works -- see tests)
* `Tree::Simple`, renamed to `Tree` and converted to OO
* `Test` now gives better diagnostics to `cmp_ok()`
* `fp` module added for functional programming
=== Tests, Examples and Documentations
* Many new test and several tests refactored, we now have 5600+ tests
* Hangman IRC bot created from `hangman.p6`
* IRC logfile to HTML converter added
* Initial sketch of Pugs Apocryphon 2 as `docs/02Internals.pod`
* Much work on internal Haddock Haskell documentation
* OO Wizard RPG game added in `examples/games/`
* Parrot is now included in the Pugs Live CD
* Perl 6 quick reference documents added to `docs/quickref`
* Perl6::Rules test suite incorporated into `t/rules/`
* Removed usage of `force_todo()` in favor of `:todo`
=== Bug Fixes
* Bare blocks containing `$_` is now executed correctly
* Correct parsing for user-defined nullary functions
* Hash and array sub parameters are read-only by default, same as scalars
* Post-term invocation in interpolation no longer eat trailing whitespace
* Slurpy hash parameters no longer count as nonslurpy during arity matching
* Type-to-type smartmatch, e.g. `Int ~~ Num`, now works
* `$obj.method($arg1, $arg2)` can now MMD dispatch over all arguments
* `foo 3 and foo 4` is now parsed as two separate function calls
* `loop (;0;) {...}` will no longer execute the loop body
* `map({...} @list)` is no longer valid syntax
* `next` now re-evaluates condition in `loop` constructs
* `returns Foo::Bar` from subs/methods now works
* `split//` now attaches the submatches to the resulting list
* `state $x = 42` now only assigns `$x` once
* `system()` returns proper exit codes
== Changes for 6.2.3 (r3111) - May 12, 2005
=== Pugs Internals
* Pugs can now embed Parrot or use an external `parrot` executable
** Under embedded mode, Pugs is a registered Parrot compiler
** `eval_parrot` and `require_parrot` builtins for running PIR code
** `pugs -BParrot` can compile Perl 6 program to PIR and run it in-memory
* Perl 6 Rules support via Parrot/PGE:
** Named rules and subrule support
** The former `$0` (entire match) is now `$<>`
** `$0` is now the same as `~$/[0]`, i.e. the same as Perl 5's `$1`
** `.from`, `.to`, `.matches`
** `//`, `rx//`, `m//`, `rule{}`
** `s///` and `//` in statement level operates on `$_`
* Basic Object support:
** Accessors generated for public attributes
** Identity operator: `=:=`
** Method chaining: `$foo.bar().baz()`
** Method invocant: `method foo ($self: $x)` and topicalized as `$_`
** Public and private attributes, as well as `has $.attr is rw`
** `$obj ~~ Class` support
** `$obj.clone()` support
** `class Foo {}` works (no inheritance yet)
* Experimental `eval_yaml()` support to parse YAML streams
* Experimental support for prefix reduce metaoperator `[+]`
* Hyper operators now works on arrays too
* Improved `.perl()` format for array, hash and pair objects
* Much faster random access to arrays; it's now O(1) instead of O(n)
* Much improved MMD support
* New `is lazy` trait for parameters
* Refactoring of large Haskell modules to improve compilation speed
* Support for building a profiled Pugs
* Undef in grouped lhs: `my ($x, undef, $y) = 1..3;` is now legal
* `$thread.kill`, `$thread.detach`, `$thread.join`
* `%hash.pick`, `@array.pick` and `(list).pick`
* `reduce` primitive
* `state $var` implemented
* `system(Str: List)` and `exec(Str: List)` on Unix platforms
=== Bundled Modules
* All modules have their own `ChangeLog` now
* `Algorithm::TokenBucket`, with closure objects
* `Config::Tiny`, with closure objects
* `Kwid::Event::Parser`, with procedures
* `Net::IRC`, with closure objects
* `Perl::MetaModel`, prototype of Perl 6 OO meta-model in Perl 6
* `Pod::Stream::Parser` renamed to `Pod::Event::Parser` and added more functionality
* `Set`, with Perl 6 objects
* `Test::Builder`, with Perl 6 objects (parses, but does not work yet)
* `Tree::Simple`, with closure objects
=== Tests, Examples and Documentations
* Many new test and several tests refactored, we now have 4921 tests
* Documentation for `hangman.p6` added in `examples/games/hangman.pod`
* New "Monads in Perl 6" example in `examples/functional/monads.p6`
* Script to generate a Pugs Live CD in `util/livecd`
* Several IRC bots added to `examples/network` including svnbot and logbot
* TODO tests now use `:todo<reason>` for better reporting
* The first Perl 6 poem in `examples/poetry/`
=== Bug Fixes
* Logical short-circuiting operators no longer flattens references
* Prohibit Array and Hash dereference on plain values
* Slurpy context no longer flattens
* Stringifying IO handles is no longer fatal
* `$*PID` now works on Win32
* `%*ENV` now completely works on Win32
* `(a => 3+4)` is now parsed as `(a => (3+4))`, not `(a => 3)+4`
* `any().pick` no longer dies
* `my @x = [1]; @x[0][0] = 2` should now work
* `next` in nested `for {}` blocks no longer escapes the outer loop
* `to => 123` parses again; arrow pairs now always trumps unary functions
* `{}` in P5 rules is no longer closure interpolation
== Changes for 6.2.2 (r2604) - May 1, 2005
=== Pugs Internals
* Many performance speed-ups, including:
** New, much much faster implementation type for Pad
** Replace Data.HashTable with STM Map
** Restructured the Eval monad to be reusable on compilers and interpreters
** Position handling and statement reduction logic re-written
** Add strictness to core Monad and object structures
* Functions declared as unary are now parsed as such
* Global subroutine declaration is now visible in the whole file
* Improved Parrot compiler backend support for mod_pugs
* Much better error messages, tracking source file range for expressions
* New loop control routines: `next` and `redo`
* On Win32, `-s` and `-z` now work correctly
* Optimized build is now default; use `make unoptimized` to turn it off
* Pugs can now build on Cygwin
* `#line 123` and `#line 123 "filename"` both work
* `&infix:<%>` raises trappable exception when modulus is zero
* `(undef, $x) = (1, 2)` is now supported
* `@array.end` implemented
* `BEGIN {...}` blocks now work on both statement-level and term level
* `for @a { say }` is now parsed as `for @a -> $_ is rw { say }`
* `for @a -> () { ... }` now consumes one element at a time
* `my $var ::= expr` works
* `print (4)+4` now prints 8, because the whitespace is no longer skipped
* `use Module;` supported and happens at `BEGIN` time
* `|=` `^=` `&=` for junctions
=== Tests, Examples and Documentations
* Many new tests and cleanup of older tests, we are now at 4600+ tests
* API documentation available in `docs/haddock/`
* Added an example of IRC bot into `examples/network`
* Added simple POD parser into `ext/Pod-Stream-Parser`
* Added support for generating Haskell documentation with `make haddock`
* Added the tic-tac-toe game from perlmonks into `examples/games/`
* Parallel `make smoke` when `%ENV<PUGS_TESTS_CONCURRENT>` is greater than 1
* Patched local `Test::Harness` to display number of TODO tests
* Progressive powerset generator from perlmonks added to `examples/`
* Smoke testing tool now includes timing data in YAML harness data
* German talk /Perl 6, genau jetzt!/ finished
=== Bug Fixes
* Constant references now automatically dereference when used in rvalue context
* Junctive `^` should join junctions instead of autothread them
* Lone block does not count as /simple expression/ anymore
* Repair single statements in shell to preserve lexical context
* Repair the `list` context hinter
* The dot in `123.ref` is now parsed correctly as `(123).ref`
* `$_` in subroutine signatures is no longer slurpy by default
* `$x = \$x` no longer causes an infinite loop
* `NaN` calculations no longer causes infinite loop
* `last if foo` now means `last() if foo()` instead of `last(if(foo()))`
* `one(1,1).pick` bug fixed; it should return `undef`
* `splice([], 1)` no longer causes division by zero errors
== Changes for 6.2.1 (r2288) - April 24, 2005
=== Pugs Internals
* Unification of the quoting code, most quoting constructs now work
** <<>> now works
** Regular expressions are parsed as `qq//`, but without backslash protection
** Hash subscripts using `<>` or `<<>>` are parsed as general quotations
** This means interpolation, etc. is done just like `q:w` or `qq:ww`
** `$<delim>` not interpolate in quoting constructs
** `$)`, `$]`, `$#` and `$<ws>` do not interpolate in `rx:P5//` constructs
* Assigning a `List` into a `Scalar` now vivifies it into an `Array`
* Assigning to pairs now works as expected
* Autoextracted `$_` is now `rw` by default
* Better handling for size extensions and `exists()` for negative indices
* Bindings implemented for multiple variables
* Experimental support for `eval_haskell()` builtin
* First stab at a lexical `$*CWD` variable
* Index in slices now defaults to List: `@a[func_returns_array()]` now works
* Initialize readline properly in interactive shell
* Junctive types in subroutine signatures `sub foo (Str|Array)`
* New builtins: `>>~<<`, `kill()`, `splice`, `readdir()` (list context only)
* Pairs are now always objects and never values
* Passing too many slurpy arguments is now an exception
* Regexps now support `:P5` and `:Perl5` as well as `:perl5`
* Storing into negative array elements now works
* The `Any` parameter type no longer inhibits juctive autothreading
* Variables in rvalue context no longer returns its references
* `%h<>` now acts just like `%h{}` in both lhs and rhs
* `%h<x>` now means `%h{'x'}` instead of `%h{'x',}`
* `'key' => val` now works as named param just like `key => val` did
* `(sub {3} | sub {2})()` implemented
* `:P5` flags now work as `:P5<imsgx>` and `:i` `:g` works too
* `:l filename` no longer needs double quotes in the Shell
* `<>` (list quoting) is now always in list context
* `is rw` and `is copy` implemented in full
* `list()` now actually imposes list context
* `want()` has been implemented, returning a simple string
=== Tests, Examples and Documentations
* Many new tests and cleanup of older tests, we are now at 4500+ tests
** removed all usages of todo_* functions since the are now deprecated
* Added `isnt()`, `unlike()`, `skip_rest`, `throws_ok` functions to `Test.pm`
* Added some Perl 6 related talks in `docs/talks`
* Added the `make smoke` target to `Makefile`
* Additions and improvements to the `util/catalog_tests.pl` scripts
* Improvements to `examples/network` and added README file
* Improvments to the `util/p5_to_p6.pl` script
* Major refactoring of the Test.pm module (see `ext/Test/ChangeLog` for details)
* Memory game, first web application written in Perl 6
* New Perl 6 tutorial generator ported to Pugs in `examples/tutorial_gen/`
* New naive baysian text classifier add in `examples/naive_bayesian`
* New quote generator script in `examples/motd`
* Params are now loaded on-demand in `CGI.pm` to take advantage of encoding
* Several new additions to the Perl 6 Cookbook
* Svn graphing script added to `util/`
* Test smoke scripts converted to use `Test::Tap::Model`
* The `fp.p6` file has been broken into seperate files in `examples/fp/`
* UTF-8 URL decoding added to `CGI.pm`
=== Bug Fixes
* Accessing `@array[1000]` (without setting it) no longer extends `@array`
* Code blocks as subroutine arguments now results in correct arity
* Code objects now returns the correct subtypes
* Comma is no longer flattened as arguments for infix and postfix functions
* Corrected `chmod` prototype
* Fixed infinite bug when evaluating `+((1|2).values)`
* Fixed passing references into bound variables in subroutines
* Fixed segfault with `:r` in interactive shell
* Hyper operators now extends to the longer, not shorter, lists
* Inf/NaN handling for `**` now works
* Manpage for `Perl6::Pugs` now generated correctly
* RValues at the right hand of array assignment are flattened to prevent loops
* Restore `%h<str> = want()` to impose string context on rhs
* Setting `$*CWD` to invalid directory is no longer fatal
* Slurpy params now applies *-flattening to its arguments
* `$x = 1|2; $x = 3` no longer treats `1|2` as a constant
* `%h<a>` or `%h{'a'}` no longer eats trailing spaces interpolated strings
* `(1,(2,3))` in scalar context is now `[1,[2,3]]`
* `**` no longer truncates the exponent to integer
* `=` now assigns correct slurpy context to rhs
* `=cut` without a newline at EOF is now parsed correctly
* `return() if 1` now works correctly
== Changes for 6.2.0 (r1921) - April 13, 2005
=== Pugs Internals
* Major refactor of ITypes subsystem, we now have:
** Nested structures: `$a{1}[2]{3}`
** Autovivification: `$a{1}[2]{3} = <b>`
** Tied magic: `%ENV<USER>`
** Proxy scalars: `%ENV<PATH> ~= '/tmp'`
** Slice assignment: `@x[1,2] = <a b>`
** Anonymous arrays: `[1..10][0] = 0`
** Lazy IArray structures: "Infinite lists, constant time"
** Infinite slices: `@x[1...]`
** and much much more ...
* Experimental support for link external Haskell libraries
** One such module is SHA1.pm: http://tpe.freepan.org/repos/ingy/SHA1/
* New builtins:
** `sum`, `log`, `log10`, `sign`, `pi`, `tan`, `cos`, `atan`
** `zip`, `hash`, `pair`, `isa`, `bytes`, `chars`, `codes`, `graphs`
* New type specific builtins;
** `.kv`, `.pairs`, `.delete`, `.exists`
** `.pick`, `.keys`, `.values`
* Several file test operators
** `-r`, `-w`, `-x`, `-e`, `-z`, `-s`, `-f`, `-d`
* Support for `$*UID`, `$*EUID`, `$*GID`, and `$*EGID` on *nix
* Stacked file test operators now (mostly) work
* Added `is rw` trait for subroutine parameters
* `$*PID` now works on *nix systems
* Several command line switches implemented: `-I` `-p` `-n` and more
* `s:perl5/.../{ <code> }/` works correctly
* Type casting errors are now more descriptive
* `require ""` now works on UTF-8 files
* Regex substitution is now UTF-8 safe
* `sort {}` now works
* Some support for the /splat/ star `*`
=== Tests, Examples and Documentations
* Many new tests and cleaning up of older tests, we now have 4200+
* `examples/games/hangman.p6` added, with `AUTHORS` as the dictionary file
* `READTHEM` added; recommended reading for aspiring Pugs hackers
* The Perl 6 Cookbook is well underway at `examples/cookbook/`
* Working perl6 modules added to `ext/`
** CGI.pm
** lib.pm
** HTML::Entities
* Several Working Drafts added to `docs/`
** Apocalypse 20 - Debugging
** Synopsis 26 - Perl Documentation
** Synopsis 28 - Special Variables
** Synopsis 27 - Perl Culture (with CPAN drinking game rules)
** Synopsis 29 - Builtin Functions
* Early work on Perl 6 Object System in `docs/class/`
=== Bug Fixes
* Parens no longer required for; `last()` and `return()`
* Fixed issue with binding invocant parameters
* Fixed parsing issue with `lc $, $y`
* `$_` now behaves correctly in most cases
* `exit()` now triggers `END {}` correctly
* `undef $x` now works correctly ($x is rw)
* Fixed parsing of default parameters: `sub foo (+$x = 3, +$y = 4)`
* `say` and `print` now default to `$_`
* `map { ... } @list` now parses correctly
* `loop { ... }` now works correctly
* `int(3) + 4` now parses correctly
* Fix parsefail bug on false unaries
* `for (@list)` no longer flattens `@list`
* `$var.method $param` is now illegal: use `$var.method($param)`
* `readline()` in list context is no longer evaluated lazily
* `$list.join('|')` now works
* `xor` and `^^` now returns the true operand instead of `bool::true`
* Named bindings to `%_` repaired
== Changes for 6.0.14 - April 4, 2005
=== Pugs Internals
* We now require GHC 6.4 on all platforms
* Added socket primitives: `listen()`, `connect()`, `accept()`
* Added thread primitives: `async()`, `yield()`
* Added string primitives: `chr()`, `ord()`, `hex()`, `split()`
* Adverb pairs: `:key(123)`, `:key<abc>`, `:key[1,2,3]` and `:key`
* `pugscc` may now be invoked outside the pugs source tree
* `slurp()` now works on IO handles
* Non-interpolated `q//` literals
* Tentative `%?CONFIG` hash
* `pugs -V:configvar` now displays that config variable
* Command line improvements (`-I`, `-l`, `-e`, etc.)
* Minimal IMC compiler as `src/IMC.hs`
* Began work on GADTs; the Pad now holds `Symbol Val` types only
* Support definition and invocation of subs with namespaces
=== Tests, Examples and Documentations
* Many new tests: we have around 3850 now
* `modules/` have been relocated to FreePAN. See `modules/README`
* `t/Synopsis/` have been relocated to `Perl6::Bible` on CPAN
* HTML generated by testgraph now responds to mouseover
* New autosmoker script added
* Many cross-referencer improvements
* Normalize all `t/` to begin with `#!/usr/bin/pugs`
* `VICTUALS` file added on April Fools
* Debian package scripts in `debian/`
* Updates on the Vim syntax file as `util/perl6.vim`
* `Pugs::MakeMaker` is renamed to `Perl6::MakeMaker`
* First Pugs obfuscation in `examples/obfu/`
* HTTP server and client examples in `examples/network/`
=== Bug Fixes
* `~~` now takes variables on the right hand side
* Correct installation locations for `ext/` modules
* `{ block }` in `qq` and `rx` no longer skips trailing whitespaces
* `pugs -e` may now use `@*ARGS` in the one-liner
* `rx:perl:g` no longer ignores the `:g`
* `$:x` and `$.x` now parsed as variable names
* Readline support is correctly probed on `Makefile.PL` time
* Mimick Perl 5's behaviour for function that defaults to `$_`
== Changes for 6.0.13 - March 27, 2005
=== Pugs Internals
* Support for `given`, `when` and `elsif` statements
* Support for Perl5 style `-I` on the command line
* Command line equivalents of shell commands `:i` and `!`
* Regex now supports `s:perl5///` and `s:perl5:g///`
* `$1`, `$2` etc can be used in `s:perl5:g///` substitutions
* Experimental *pugscc* backends generating limited Parrot and Haskell code
* Refactored the /VSub/ type to support currying
* Support for currying: `&foo.assuming(param => 'bar')`
* New file test primitives: `-d` and `-f`
* New logical primitive: `?|`
* Experimental support for `eval_perl5` (not built by default)
* Experimental Inline support; see `ext/SHA1` for example
* New magicals: `$*EXECUTABLE_NAME` and `$*PROGRAM_NAME`
* Several numeric builtins: `atan2`, `cos`, `sin`, `sqrt`, `exp`
* Beginings of a Pugs class meta-model
=== Test, Examples and Documentations
* New test for junctions, regexp and more; about 3200 tests now
* Added 200+ new TODO tests for objects in `t/oo/`
* Added 20 new Perl 5 modules ported to Perl 6
* Added `t/README`, `modules/README` and `modules/PORTING_HOWTO`
* Much work on the test-cataloger and Synopsis cross-referencer
* Work on plan for smoke testing framework using *YAML* and *Test::Harness*
* Work on HTML output gathered from *Test::Harness* YAML output
* Actual working port of most of *File::Spec* complete with tests and docs
* Added support for outputing test logs with *Test.pm*
* Added documentation to *pugscc*
* Several TODO tests for command line options
* `fix_authors.pl` now handles UTF8 input
* New golf-based tests in `t/examples/golf.t`
* Added `examples/mandel.p5` for benchmarking against `mandel.p6`
* The first JAPH for Pugs in `examples/japh/`
=== Bug Fixes
* Numification now uses the same lexer as numeric literals
* Passing pairs to named parameters works
* Fixed 2-element lists to be proper pairs
* Fixed some error reporting issues in *Test.pm*
* `$!` now has the correct value after `eval`
* `END {...}` now runs after `die`
* Hash keys are now strings
* Contextual logicals like `+^` and `~^` are parsed correctly
== Changes for 6.0.12 - March 21, 2005
=== Pugs Internals
* We now require GHC 6.4 on Win32
* Perl5-compatible regular expressions as rx:perl5/.../
* Unicode identifiers now work across all platforms
* Smartmatch ~~ for regex
* Capturing variables as $/.[], $0, $1, $2
* Nested outward CALLER::CALLER::CALLER:: scopes
* x=, xx= and Y=
* => now autoquotes left hand barewords
* ?? :: now parses correctly
* New primitives: index(), rindex(), substr(), sort(), true()
* New primitives: lcfirst(), ucfirst(), lc(), uc(), split()
* New primitives: pick(), values(), nor
* The interactive shell now preserves lexical variable declarations
* String numification now uses the same lexing rule as numeric literals
* Kludgy hack for &sub.goto() now works
* :l in interactive shell for loading modules
* More experimental shell commands like :i and !
* Symbol table now contains Vals instead of Exps
=== Tests, Examples and Documentations
* Massive reorganization for t/ hierarchy; we have 2450 subtests now
* Test coverage catalog utility in util/catalog_tests.pl
* New p6ified CPAN modules: Algorithm::Dependency, File::Spec
* Core documentations moved into ext/Pugs-Documentation/
* Locale::KeyedText is made more perl6ish with subtypes
* Test.pm has been massively refactored, and now has its own test suite
* isa_ok(), eval_ok() and eval_is() in Test.pm
* perlpodspec.kwid, describing POD document model and dialects.
* perlkwidspec.kwid, specification for the Kwid dialect of POD
* PA01.kwid, Kwid version of Pugs Apocryphon 1
* Perl5-Kwid, Perl 5 implementation of the Kwid language
=== Bug Fixes
* Infix junction constructors no longer falltens its operands
* Mutable variables are now properly pretty-printed
* "pugscc" was broken on case-sensitive filesystems
* last() no longer work as return() outside loops
* Pugs could not install when perl5's sitelib path did not contain "perl"
* := binding did not preserve the lexical scope at the binding site
* Hanoi.p6 was broken due to premature binding of subroutine parameters
* "&sub.foo" no longer attempts to interpolate
== Changes for 6.0.11 (r690) - March 14, 2005
=== Pugs Internals
* Ported to GHC 6.4 final
* Source code is now always treated as UTF-8
* Unicode variable names and subroutines now works, if GHC
is compiled with unicode support
* We no longer look for Perl6::lib::* namespace in Perl 5;
Pugs now has its own library path independent from Perl 5
* New primitives: scalar(), list(), reverse().
* Infix Y (and its UTF8 form)
* $! is now set after an eval call
* Stub implementation for ~~ and !~ operators
* "make optimized" and "make profiled" targets
* Assignment to array slices
* Assignment now copies variables in RHS, instead of aliasing them
* Declaration of multiple variables with my()
* try {...} works
* Hash stringification
* Lone block without trailing semicolon is parsed correctly
* time() now counts seconds from 2000-01-01 00:00:00
* Assignment operators like .=, //= and ||= etc
* Postfix conditionals now works inside expressions
* --help and -c command line options
* Experimental support for "pugscc", which compiles Perl 6 code
into stand-alone executables
=== Tests, Examples and Documentations
* Much more extensive TODO tests; we have 1477 now
* Sample Perl 6 modules under modules/, including Sample-Module and
Locale-KeyedText (ported from Perl 5 on CPAN)
* Kwid version of PA01; updated Chinese translations
* One can now build Pugs with Perl 5.6
* examples/sendmoremoney.p6 now really works
* A new, much prettier banner ASCII art
* New junction examples in examples/junctions/
* New golf-based examples in examples/golf/
* Include IRC nicks and UTF8 names in AUTHORS
* Some releng and utility scripts under util/
=== Bug Fixes
* In pointy subs, -> () {...} and -> {...} are now distinguished
* require() now reports errors correctly
* Magical $a++ when $a is a string should not return a numified form
* int() now properly truncates, instead of rounds, the operand
* Array and hash variables inside qq strings now won't interpolate without
explicit brackets, as specced in S02
* my $a == $b no longer parses are my $a = =$b
* Nested ?? :: now parses correctly, even inside brackets
* Postfix ... works again
* [...] is now evaluated in list context
* Duplicate occurence of implicit params like $_ and $^x now works correctly
* =<> now reads the first file in @*ARGS if there is a @*ARGS; it is a TODO
to make it read all files in @*ARGS
* List associativity now works again
* $?CALLER:: variables in subroutine parameters and defaults are
now both evaluated in the caller's scope
== Changes for 6.0.10 - March 5, 2005
=== Pugs Internals
* Massive `-Wall` cleanup
* Some work on Pugs extension mechanisms (XS for Pugs)
* Complete reworking of the build system
* Support for basic read, write, append I/O
* Added `system()`, `chmod()`, `chop()` and `chomp()`
* Pretty printing now works
* Added the beginings of a Config module
* Ported to GHC 6.4 pre-release
* More works on junctions
=== Tests, Examples and Documentations
* Test, tests and more tests, we now have over 1050
* Added several tests for unimplemented features
* Added tail recursive nested worker multisubs into `fp.p6`
* New example: `hanoi.p6`
* Several new junctions examples
* Switched most documentations to the Kwid format
* zh-cn and zh-tw translations of the Apocryphon
* Haskell source documentation begun
* Kwid documentation for `Test.pm`
=== Bug Fixes
* Fixed double-evaluation bug in `say($a++)`
* Fixed `@a` interpolation bug
* Postfix `--` now returns the value instead of numified value
* Lone bare blocks in statement level are now always executed
* Fixed `grep`/`map`/`push`/`unshift` parsing so they are properly binOp now
* Fixed prefix function parsing bug that eats more parens than it should
== Changes for 6.0.9 (r335) - February 28, 2005
* First Perl 6 module: `Test.pm`
* First Pugs Apocryphon: `docs/01Overview.html`
* More than 600 unit tests, with a comprehensive coverage
* Relicensed under GPLv2 and Artistic2.0b5
* New flags: `--version`, `-v`, `-c`
* New examples: `examples/fp.p6`, `examples/shuffle.p6`
* New syntaxes: `?? ::`, `our()`, chained `=>`, `END{}`, `=begin END`, `unless`
* New primitives: `defined()`, `unlink()`, `ref()`, `join()`, `require()`, `int()`
* New magicals: `$?SUBNAME`, `%*ENV`, `&?BLOCK`, `&?CALLER_CONTINUATION`, `@*INC`
* New literals: `\d1234`, `0d1234`, `qq[]`, `qw[]`
* Interpolation in double-quoted strings
* Hashes and subscripting
* Bare blocks now assumes outer scope's lexical pad
* Bare blocks in statement level is now always executed
* Closures closes properly; errors are propagated upwards
* A first draft of /Kwid/ documentation format
* A first draft of builtins declarations
== Changes for 6.0.8 - February 21, 2005
* New example code snippet: `examples/quicksort.p6`
* Unit tests ported from th Perl5 tree
* Hashes, Pairs and their access methods
* Much more robust casting between arrays, lists and hashes
* Fixed harness output problem on older perls
* Many Posix-based IO primitives
* Precedence for builtin unary/list functions are parsed correctly
* `unless` construct
* New primitives: `join`, `split`, prefix `++` and `--`
* `+>>` etc changed to `+>` etc
* Stacking multiple prefix and postfix operators now works
* `@*INC`, `&?SUB`, `CALLER::`
* Tests for the /perlego/ dialect
* User-defined function applications now takes arbitary expressions
* Deep recursion detection
== Changes for 6.0.7 - February 18, 2005
* Beginning of synopses-based unit tests
* Two code snippets that runs: `examples/life.p6` and `examples/mandel.p6`
* Code literals -- /sub/, /pointy/ and /bare/ variants all works
* Lexical subroutine declarations via `my sub`
* The `say`, `exit`, `die`, `time`, `open`, `close` primitives
* `Bool.perl` now prints correct literals
* Blocks under void contexts now evaluates automatically
* The `...` (dotdotdot) literal
* Errors are propagated upward using shiftT
* Postfix `++` and `--`
* Ternary `?? ::`
* Assignment to mutable variables and to array slices
* `loop`, `for` and `if` constructs
== Changes for 6.0.5 - February 15, 2005
* The `rand` primitive
* Taking references of junctions no longer create a junction of references
* Illegal divisions are caught
* Chained comparison for four or more terms now works
* Collapsing for /JuncOne/ into two sets: the `none` set and the `one` set
* The evaluator now prints some helpful debugging messages
* New parser logic merged from Michaud and Palmer's `Perl6.grammar`
* Extra semicolon and whitespace in blocks are dealt with
* Space around punctiation operators is now optional
* The /Eval/ monad now supports `shift`/`reset`/`callcc`, lexical and dynamic scopes
* Improved pretty-printing code for syntactic constructs
== Changes for 6.0.4 - February 12, 2005
* The `eval` primitive
* Refactor junctive logic into `Junc.hs`
* /JuncAny/ and /JuncAll/ now collapses operands of the same type correctly
* /JuncOne/ now collapses into an empty set when operands contains duplicates
== Changes for 6.0.3 - February 12, 2005
* Formal parameters declaration and binding
* Invocant-based multimethod dispatch
* Optional(`?`), named(`+` and `++`), slurpy(`*`) parameters with defaulting
* Extraction of higher-order placeholder variables
* Proper semantics and extraction of `@_`, `%_` and `$_`
* Global variables and subroutines: `&*foo`, `$*bar`
* Context propagation from types of formal parameters
* The `returns` / `is returns` trait
* Trailing comma and semicolons are now allowed
* Better handling of exponential primitives
* &prefix: is now consistently added for user-defined subroutines
* Junctions are now proper sets, instead of lists masqueraded as sets
* New operators: `!!` and `nor`
* The `all` junction builder now collapses nested junctions under it
== Changes for 6.0.2 - February 9, 2005
* User-defined subroutine with `$_` and `@_` as parameters
* Variable binding
* Context propagation
* Multimethod dispatch
* Subtype distancing and casting
* Autothreading over chained comparison and multiarg functions
* List associativity
* Array references as literals
* Flattening (slurpy) star
== Changes for 6.0.1 - February 7, 2005
* Fix building on Mac OS X
* Characters in single quotes should not be escaped
* Add one very basic test in `t/`
== Changes for 6.0.0 - February 7, 2005
* Initial CPAN release
* Evaluation of most simple expressions
* Junctions and chained comparisons
* Interactive shell and `#!/usr/bin/pugs` support