| 5 | | * The src/ tree and the `pugs` executable are now released under the |
| 6 | | permissive MIT license, in addition to Artistic and GPL. |
| 7 | | * A new third-party/ tree to hold bundled prerequisites originated |
| 8 | | from non-Pugs projects. |
| 9 | | |
| 10 | | == Bundled Modules |
| 11 | | |
| 12 | | === New Perl 5 modules |
| 13 | | |
| 14 | | * `v6.pm`: `use v6-pugs; say "Perl 6"; use v5; print "Perl 5"` |
| 15 | | * Module::Compile - precompile Perl 5 modules transparently |
| 16 | | * Pugs::Compiler::Rule - Compiler for Perl 6 Rules |
| 17 | | * Pugs::Compiler::Perl6 - Compiler for Perl 6 (implements 'v6') |
| 18 | | ** Still fails many of the sanity tests, as well as nearly all of the other tests |
| 19 | | * Data::Bind - Implement Perl 6's calling/binding convention on Perl 5 |
| 20 | | |
| 21 | | === New Perl 6 modules |
| 22 | | |
| 23 | | * [ext/Relation/]: Relation type for Perl 6 (incomplete). |
| 24 | | * Getopt::Std - simple command-line parsing |
| 25 | | |
| 26 | | === New Haskell modules |
| 27 | | |
| 28 | | * `HsSyck` - Haskell bindings to `syck` 0.61, a fast YAML library in c. |
| 29 | | * `HsJudy` - Haskell bindings to `Judy` 1/0/3, a fast collections library in c |
| 30 | | |
| 31 | | === Updated modules |
| 32 | | |
| 33 | | * [ext/Locale-KeyedText/] - Added export_as_hash() methods. |
| 34 | | * [ext/Rosetta/]: Multiple additions and rewrites. |
| 35 | | ** Merged ext/Rosetta-Engine-Native/ in, renamed to ::Example. |
| 36 | | ** Now officially incorporates "The Third Manifesto". |
| 37 | | ** Rewrote half of Language.pod. |
| 38 | | ** Updated the DESCRIPTION and class list of Rosetta.pm. |
| 39 | | ** Added new core module Rosetta::Shell and example shell.pl. |
| 40 | | ** Added new documentation file Rosetta::SeeAlso. |
| 41 | | ** Various other documentation additions and edits. |
| 42 | | * [ext/Test/]: Avoid the use of junctions to make Parrot/Perl6's life easier. |
| 43 | | |
| 44 | | === Experimental modules (in misc/, not installed) |
| 45 | | |
| 46 | | == pX effort (Perl 6 on Perl 5) |
| 47 | | |
| 48 | | * misc/pX/Common is a place where people can collaboratively hack |
| | 5 | * The [src/] tree and the `pugs` executable are now released under the |
| | 6 | permissive MIT license, in addition to Artistic and GPL |
| | 7 | * A new [third-party/] tree to hold bundled prerequisites originated |
| | 8 | from non-Pugs projects |
| | 9 | |
| | 10 | == New Perl 6 modules |
| | 11 | |
| | 12 | * [ext/Relation/] - Relation type for Perl 6 (incomplete) |
| | 13 | * [ext/Getopt-Std/] - Simple command-line parsing |
| | 14 | |
| | 15 | == Updated modules |
| | 16 | |
| | 17 | * [ext/Locale-KeyedText/] - Added export_as_hash() methods |
| | 18 | * [ext/Rosetta/]: Multiple additions and rewrites |
| | 19 | ** Merged ext/Rosetta-Engine-Native/ in, renamed to ::Example |
| | 20 | ** Now officially incorporates "The Third Manifesto" |
| | 21 | ** Rewrote half of Language.pod |
| | 22 | ** Updated the DESCRIPTION and class list of Rosetta.pm |
| | 23 | ** Added new core module Rosetta::Shell and example shell.pl |
| | 24 | ** Added new documentation file Rosetta::SeeAlso |
| | 25 | ** Various other documentation additions and edits |
| | 26 | * [ext/Test/]: Avoid the use of junctions to make Parrot/Perl6's life easier |
| | 27 | |
| | 28 | == Perl 6 on Perl 5 (under [misc/pX/Common/]) |
| | 29 | |
| | 30 | * Data-Bind - Implement Perl 6's calling/binding convention on Perl 5 |
| | 31 | * Inline-Parrot - a C version of Inline-Parrot - uses NCI for data exchange |
| | 32 | * Module-Compile - precompile Perl 5 modules transparently |
| | 33 | * P5_to_P6_Translation - beginning of a Perl 5.9 MAD tree parser and translater to Perl 6 |
| | 34 | * Pugs-Compiler-Perl6 - Compiler for Perl 6 (implements 'use v6-pugs'): |
| | 35 | use v6-pugs; say "Perl 6"; use v5; print "Perl 5" |
| | 36 | * Pugs-Compiler-Precedence - an operator precedence parser, built around Parse::Yapp |
| | 37 | * Pugs-Compiler-Rule - Compiler for Perl 6 Rules |
| | 38 | * Pugs-Grammar-MiniPerl6 - translate Perl 6 rules into haskell Parsec |
| | 39 | * Pugs-Grammar-Perl6 - a Perl 6 parser - parses Test.pm! |
| 50 | | ** compiles itself to Perl 5 code - does not depend on pugs or parrot. |
| 51 | | ** still depends on Perl 5 for unimplemented parts. |
| 52 | | ** supports simple macros. |
| 53 | | ** 'lrep-compiler' is the development version. |
| 54 | | * Pugs-Compiler-Rule - a compiler for Perl 6 Rules - published in CPAN |
| 55 | | ** uses Module::Install 'pmc' magic for executing Perl 6 from plain Perl 5. |
| 56 | | ** the "Rule" grammar is written in Perl 6, and it is compiled to Perl 5 using 'lrep'. |
| 57 | | * Pugs::Compiler::Perl6 - Compiler for Perl 6 (implements 'use v6-pugs') |
| 58 | | * Pugs-Compiler-Precedence - an operator precedence parser, built around Parse::Yapp |
| 59 | | * Inline-Parrot - a C version of Inline-Parrot - uses NCI for data exchange. |
| 60 | | * Pugs-Grammar-Perl6 - a Perl 6 parser - parses Test.pm! |
| 61 | | * re-override - moved to /perl5/re-override - swaps in an alternate regexp engine: |
| 62 | | `./perl -we 'use Regexp::Perl6; print "a" =~ /<word>**{1}/;'` |
| 63 | | * Pugs-Grammar-MiniPerl6 - translate Perl 6 rules into haskell Parsec, such that |
| 64 | | Parser.hs can be generated from the Perl 6 grammar. |
| 65 | | * P5_to_P6_Translation - beginning of a Perl 5.9 MAD tree parser and translater to Perl 6 |
| | 41 | * re-override - Swaps in an alternate regexp engine: |
| | 42 | ./perl -we 'use re::override-perl6; print "a" =~ /<word>**{1}/;' |
| 70 | | truncated in r8916, apparently from gnome's copy-paste buffer limit. |
| 71 | | * [docs/Perl6/Doc] hierarchy, installable `Perl6::Doc`. |
| 72 | | * Gaal's OSDC talk "A Peek into Pugs Internals" in `docs/talks/peek.spork`. |
| 73 | | * Juerd's talk "Perl 6 Myths" in `/docs/talks/p6myths2.html`. |
| 74 | | * [examples/qotw/]: Added the QOTW 8 Expert solution. |
| 75 | | * [examples/rules/]: Added a sample BASIC parser. |
| 76 | | * [examples/concurrency/]: Added sample usage on Software Transactional Memory. |
| 77 | | * [docs/Perl6/FAQ/Capture.pod] - FAQ on the new Signature/Capture calling convention. |
| 78 | | * [docs/Perl6/FAQ/FUD.pod] - Fears, Uncertainties and Doubts about Perl 6. |
| | 47 | truncated in r8916, apparently from gnome's copy-paste buffer limit |
| | 48 | * [docs/Perl6/Doc] hierarchy, installable `Perl6::Doc` |
| | 49 | * [docs/Perl6/FAQ/Capture.pod] - FAQ on the new Signature/Capture convention |
| | 50 | * [docs/Perl6/FAQ/FUD.pod] - Fears, Uncertainties and Doubts about Perl 6 |
| | 51 | * [docs/talks/p6myths2.html]: Juerd's talk "Perl 6 Myths" |
| | 52 | * [docs/talks/peek.spork]: Gaal's OSDC talk "A Peek into Pugs Internals" |
| | 53 | * [examples/concurrency/]: Added sample usage on Software Transactional Memory |
| | 54 | * [examples/qotw/]: Added the QOTW 8 Expert solution |
| | 55 | * [examples/rules/]: Added a sample BASIC parser |
| 84 | | * Pugs now builds in a single pass. |
| 85 | | * Removed support for GHC 6.4.0 and added support for GHC 6.5. |
| 86 | | * Removed support for Parrot 0.4.4 or below and added support for GHC 0.4.5. |
| 87 | | * Use `Data.ByteString` instead of `Data.FastPackedString` for fast |
| 88 | | string representation. |
| 89 | | * Compile `Prelude.pm`, and possibly additional modules, to YAML bytecode for faster loading |
| | 61 | * Pugs now builds in a single pass |
| | 62 | * Removed support for GHC 6.4.0 and added support for GHC 6.5 |
| | 63 | * Removed support for Parrot 0.4.4 or below and added support for GHC 0.4.5 |
| | 64 | * &?SUB is replaced with &?ROUTINE; $?SUBNAME is replaced with &?ROUTINE.name |
| | 65 | * Arguments beginning in parens, such as `f ('x')=>1`, is now always positional |
| | 66 | * Array and hash sigilled match variables, such as `@0`, `@<foo>` and `%<bar>` |
| | 67 | * Assignment with non-obviously-scalar left-hand side is now in list context: |
| | 68 | ** `@a = 1,2,3` now parses as `@a = (1,2,3)` |
| | 69 | * Broke down Parser and AST.Internals to smaller files so rebuilds are faster |
| | 70 | * Builtin functions no longer defaults to `$_`; write `.ord` instead of `ord` |
| | 71 | * Compile `Prelude.pm` and `Test.pm`, to YAML bytecode for faster loading |
| | 72 | * Declarators are now lexical: `{ $x++ unless my $x }` increments `$OUTER::x` |
| | 73 | * Declarators can now occur at expression position: `my $x + my $y` works |
| | 74 | * Declarators no longer take qualified names: `our $Foo::x` is invalid |
| | 75 | * Experimental support for Software Transactional Memory and atomic blocks |
| | 76 | * Hash initializers now revert to bias-to-left behavior as in Perl 5 |
| | 77 | ** In `{X => 1, X => 2}`, the value of X is 2, not 1 |
| | 78 | * If a block ends on a line by itself, an implicit `;` is assumed if possible |
| | 79 | * In the interactive shell, :d and :D (dump parse tree) now continues the parse |
| | 80 | from the current environment; use :reset to reset the environment |
| | 81 | * More helpful diagnostics when calling unsafe builtins under safe mode |
| | 82 | * Multiline support in the interactive shell reports unrecoverable parsefails |
| | 83 | * Names of named arguments must always be a bareword now, such as: |
| | 84 | f(name=>1); f(:name(1)); |
| | 85 | * New AST-dumping backends: `Parse-Pretty`, `Parse-YAML`, `Parse-HsYAML` |
| | 86 | * Parse-time binding `::=` is now fully supported |
| | 87 | * Proper desugaring of `.=` expressions, such as `@a .= map(&sqrt)` |
| | 88 | * Prototype objects: `my Dog $fifo` now assigns `::Foo` into `$fido` |
| | 89 | * Removed support for `require ::Class::Literal` |
| | 90 | * Removed support for `rx_` macros in Prelude for user-defined rule handlers |
| | 91 | * Quotelike constructs such as `rx` and `qq` no longer takes `#` as delimiter |
| | 92 | * Support for Unicode bracket characters for quotelike operators |
| | 93 | * Support for bracketed comments: #(...), #<<< ... >>>, etc |
| | 94 | * Support for controlled backtracking and whitespace sensitivity via distinct |
| | 95 | `token`/`regex`/`rule` delecarators |
| | 96 | * Support for environmental variables such as `$ENV::PWD` and `$+PATH` |
| | 97 | * Support for implicit-topic dereferences such as `.[0]` and `.<foo>` |
| | 98 | * Support for long dot syntax: $foo\ .blah |
| | 99 | * Support for scan metaoperators: `[\+] 1,2,3` evaluates to `(1, 3, 6)` |
| | 100 | * The `-M` command line switch can take import arguments: `pugs -Mlib=foo` |
| | 101 | * The parser is now much faster by being mostly predictive (non-backtracking) |
| | 102 | * The postfix infiniterange is no more; write `1..*` instead of `1...` |
| | 103 | * Two `my $x` declarations in the same scope is now no-op instead of an error |
| | 104 | * Use `Data.ByteString` for fast string representation |
| | 105 | * Using libraries from embedded Perl 5 can import functions now |
| | 106 | * Whitespace disambiguation implemented on `if`, `unless` and `for`: |
| | 107 | if %ENV{ 3 } { 4 } # hash lookup on %ENV |
| | 108 | if %ENV { 3 } { 4 } # %ENV by itself |
| 91 | | * New AST-dumping backends: `Parse-Pretty`, `Parse-YAML`, `Parse-HsYAML` |
| 92 | | * Broke down Parser.hs and AST.Internals.hs to smaller files, making rebuilds faster. |
| 93 | | * q:code {...} gives ASTs in macros |
| 94 | | * readline and =$fh autochomp: they are now complements to &say, not &print. |
| 95 | | * `make upload-smoke` now uploads smoke test automatically. |
| 96 | | * Support for bracketed comments: #(...), #<<< ... >>>, etc. |
| 97 | | * Support for long dot syntax: $foo\ .blah |
| 98 | | * More helpful diagnostics when calling unsafe builtins such as `system` under safe mode. |
| 99 | | * &?SUB is replaced with &?ROUTINE; $?SUBNAME is replaced with &?ROUTINE.name. |
| 100 | | * `:!foo` is now a shorthand for `foo => False`. |
| 101 | | * The parser is now much faster by being mostly predictive (non-backtracking) |
| 102 | | * Whitespace disambiguation implemented on `if`, `unless` and `for`: |
| 103 | | if %ENV{ 3 } { 4 } # hash lookup on %ENV |
| 104 | | if %ENV { 3 } { 4 } # %ENV by itself |
| 105 | | * Support for Unicode bracket characters for quotelike operators |
| 106 | | * The rx_ macros in Prelude for user-defined rule handlers has been discontinued |
| 107 | | * Proper desugaring of `.=` expressions, such as `@a .= map(&sqrt)` |
| 108 | | * If a block ends on a line by itself, an implicit semicolon is assumed if possible |
| 109 | | * Support for implicit-topic dereferences such as `.[0]` and `.<foo>` |
| 110 | | * Multiline support in the interactive shell now recognizes unrecoverable parsefails |
| 111 | | * Array and hash sigilled match variables, such as `@0`, `@<foo>` and `%<bar>` |
| 112 | | * Two `my $x` declarations in the same scope is now no-op instead of an error |
| 113 | | * Quotelike constructs such as `rx` and `qq` no longer takes `#` as delimiter |
| 114 | | * Support for controlled backtracking and whitespace sensitivity via distinct `token`/`regex`/`rule` delecarators |
| 115 | | * In the interactive shell, :d and :D (dump parse tree) now continues the parse from the current environment; use :reset to reset the environment. |
| 116 | | * Support for environmental variables such as `$ENV::PWD` and `$+PATH` |
| | 110 | * `¬` is now unary instead of a list operator |
| | 111 | * `:!foo` is now a shorthand for `foo => False` |
| 118 | | * Arguments beginning in parens, such as `f ('x')=>1`, is now always positional |
| 119 | | * Names of named arguments must always be a bareword now, such as `f(name=>1)` or `f(:name(1))` |
| 120 | | * Support for scan metaoperators: `[\+] 1,2,3` evaluates to `(1, 3, 6)` |
| 121 | | * Builtin functions no longer defaults to `$_`; write `.ord` instead of `ord` |
| 122 | | * `¬` is now unary instead of a list operator |
| 123 | | * `require ::Class::Literal` is no longer supported |
| 124 | | * The postfix infinite-range operator is no more; write `1..*` instead of `1...` |
| 125 | | * Experimental support for Software Transactional Memory and atomic blocks; the syntax is subject to change |
| 126 | | * Hash initializers now revert to bias-to-left behavior as in Perl 5: In `{X => 1, X => 2}`, the value of X is 2, not 1 |
| 127 | | * The `-M` command line switch can take import arguments: `pugs -Mlib=foo` |
| 128 | | * Using libraries from embedded Perl 5 can import functions now |
| 129 | | * Declarators no longer take qualified names: `our $Foo::x` is invalid |
| 130 | | * Assignment with non-obviously-scalar left-hand side is now in list context: `@a = 1,2,3` now parses as `@a = (1,2,3)` |
| 131 | | * Parse-time binding `::=` is now fully supported |
| 132 | | * Declarators can now occur at expression position: `my $x + my $y` works |
| | 113 | * `make upload-smoke` now uploads smoke test automatically |
| 134 | | * Prototype objects: `my Dog $fifo` now assigns `::Foo` into `$fido` |
| 135 | | * Declarators are now strictly lexical: `{ $x++ unless my $x }` increments `$OUTER::x` |
| 136 | | |
| 137 | | == Bug Fixes |
| 138 | | |
| 139 | | * @foo.perl works correctly when @foo is recursive |
| 140 | | * slurp utf8 files correctly |
| 141 | | * openFile now turns the autoflushing bit on with a file, as |
| 142 | | otherwise it doesn't get closed upon program exit. |
| 143 | | * short-circuit operators didn't. Fixed. |
| 144 | | * (1.3 % 1) was evaluating to 0 like Perl 5 does. Now it evaluates |
| 145 | | to 0.3 like everybody else. |
| | 115 | * `q:code {...}` gives ASTs in macros |
| | 116 | * `readline` and `=$fh` now autochomps |
| | 117 | |
| | 118 | == Bug Fixes |
| | 119 | |
| | 120 | * (1.3 % 1) was evaluating to 0; now it evaluates to 0.3 like everybody else |
| | 121 | * An uninitialized Code is no longer nullary: `my &f; f 1` is not a parsefail |
| | 122 | * Chained assignments now return lvalues properly: `$x = %y = (1,2,3,4);` |
| | 123 | * Implicit variables ($^x) is no longer allowed in statemeent-level bare blocks |
| | 124 | * Implicit variables following a declarator was broken: `{my $x; $^y}.(42)` |
| | 125 | * In `(@x, @y) = (1,2,3)`, the `@y` is now cleared into an empty list |
| | 126 | * Invalid rules in embedded Parrot no longer triggers an uncatchable `exit` |
| | 127 | * Lexical imports are no longer discarded upon block reentry |
| | 128 | * Method invocant is `self` and `$?SELF` but no longer `$_` |
| | 129 | * Named-only subs such as `sub f (:$x!) {}` no longer parse as unary positional |
| | 130 | * Opening a file for writing now turns autoflushing on by default |
| | 131 | * Short-circuit operators now works again |
| | 132 | * Statement-level `return` and `yield` now propagates contexts correctly |
| | 133 | * Statement-level bare blocks now counts as one scope for `OUTER`, not two |
| 152 | | * In `(@x, @y) = (1,2,3)`, the `@y` is now cleared into an empty list |
| 153 | | * Strings outside ASCII range no longer raises exceptions at the PGE/Parrot bridge |
| 154 | | * Statement-level bare blocks now counts as one scope for `OUTER`, not two |
| 155 | | * Named-only subs such as `sub f (:$x!) {}` is no longer parsed as unary positional |
| 156 | | * Statement-level `return` and `yield` now propagates contexts instead of resetting it to void |
| 157 | | * An uninitialized Code is no longer considered nullary: `my &f; f 1` is not a parsefail |
| 158 | | * `&slurp` and `&readline` now evaluates eagerly an no longer races breaks with e.g. an `&unlink` afterward |
| 159 | | * Lexical imports use the `state` instead of `my` storage class now, so they are are no longer discarded upon block reentry |
| 160 | | * Chained assignments now return lvalues properly: `$x = %y = (1,2,3,4);` |
| 161 | | * `sub f (@x) {}` no longer confer slurpy context to its argument, so `f([1,2,3])` works now |
| | 137 | * `%.foo` and `@.foo` now always flattens in argument lists |
| | 138 | * `&slurp` and `&readline` evaluates eagerly and no longer races with `&unlink` |
| | 139 | * `1.` was parsed as a valid integer, causing ambiguities; it's now invalid |
| | 140 | * `@foo.perl` works correctly when `@foo` is recursive |