The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
== Changes for 6.2.0 - 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 which uses the `AUTHORS` file 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 { ... }` no 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()` is now strict in list context
* `$list.join('|')` now works
* `xor` and `^^` now short-circuits
* 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 - 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 - 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