Changeset 14383 for ChangeLog

Show
Ignore:
Timestamp:
10/17/06 08:27:10 (2 years ago)
Author:
audreyt
svk:copy_cache_prev:
21206
Message:

* ChangeLog?: Finished the "Feature Changes" section.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r14379 r14383  
    1 = Changes for 6.2.13 (r14380) - October 17, 2006 
    2  
    3 == Perl 6 Modules 
     1= Changes for 6.2.13 (r14400) - October 17, 2006 
     2 
     3== Build System 
     4 
     5* Enabled Perl 5 embedding by default 
     6** For Windows users, Perl 5.8.x is required 
     7** Set the `PUGS_EMBED` environment variable to `noperl5` to disable this 
     8 
     9* Disabled prompting for Parrot embedding by default 
     10** Set the `PUGS_EMBED` environment variable to `parrot` to enable this 
     11 
     12* Support for compiling with GHC 6.6 
     13** GHC 6.4.1+ is still supported, but will discontinue in te next release 
     14 
     15== Feature Changes 
     16 
     17=== Perl 5 Interoperability 
     18 
     19* Array and Hashes now round-trips from Pugs to Perl 5 land and back 
     20* Importing functions from Perl 5: `use perl5:CGI <header param>` 
     21* Passing unboxed values across runtimes no longer leaks memory 
     22* When embedding Perl 5.8+, Unicode flag is now on for Pugs-to-Perl5 strings 
     23 
     24=== Lexical Syntax 
     25 
     26* Capture literals: `\($bar: 1, 2, 3, named => 4)` 
     27* Interpolation of chained calls: `"$foo.meth.meth.meth.meth()"` 
     28* List comprehension: `for 0 < list(@x) < 10 {...}` 
     29* Named character escapes: `"\c[LATIN CAPITAL LETTER Y]"` 
     30* New magical variables: `$?COMPILER` and `$?VERSION` 
     31* POD directives: `=begin`/`=end` and `=for` now terminate without `=cut` 
     32* POD variables: `$=DATA` and `@=DATA` 
     33* Signature literals: `:($foo is copy = 42, $, @)` 
     34* `"\123"` and `"\03"` are now errors; write `"\d123"` and `"\o03"` instead 
     35* `$::x` now means exactly the same a `$x`, instead of `$*x` 
     36* `%h<>` now means `%h{}` -- the entire hash, not the empty string as key 
     37* `($::('x'))` with two adjacent closing parens now parses correctly 
     38* `1<2>` is now a fatal error: Odd numbers of elements in Hash 
     39 
     40=== Declarators and Operators 
     41 
     42* Argument interpolation via prefix `|` and `|<<`  
     43* Binding to qualified uninitialized symbols: `&fully::qualify := sub {...}` 
     44* Hyperised reduce operators: `[>>+<<]` and `[\>>+<<]` 
     45* Mid-block redeclaration no longer allowed: `my $x; { $x = 1; my $x = 2 }` 
     46* New infix comparison operators: `===` and `eqv` 
     47* Nullary reduction of builtin operators gives identity values: `[*]() === 1` 
     48* Postfix operators can be called with a dot: `.++`, `$x.++`, `$x.\ ++` 
     49* Prefix `=` now iterates on arrays as well: `=@array` 
     50* Short-circuiting chained comparison: `1 > 2 > die('foo')` no longer fails 
     51* Smart matching against implicit invocation: `$obj ~~ .meth`, `$obj ~~ .[0]` 
     52* Typed constraints on autovivification: `my Hash $x; $x[0] = 1` now fails 
     53* Typed declarations: `my Dog $fido`, `my T ($x, $y)` 
     54* `*` is now always a term, never a prefix operator 
     55 
     56=== Blocks and Statements 
     57 
     58* Implicit invocation in `when`: `when .true {...}`, `when .<key> {...}` 
     59* Loop topic is not forced into rw: `for 1..3 { $_++ }` now fails correctly 
     60* New `&break` and `&continue` primitives to use inside `when` blocks 
     61* New `&leave` primitive to exit from the innermost block 
     62* New postfix `given` statement modifier: `.say given foo()` 
     63* Support for `FIRST`, `NEXT`, `LAST` loop control blocks 
     64* Support for `START`, `PRE`, `POST`, `KEEP`, `UNDO`, `ENTER`, `LEAVE` blocks 
     65* Support for test-after `repeat {...} while EXPR;` blocks 
     66* Support for the `each` list interleaver: `for each(@a; @b) -> $x, $y {...}` 
     67* The `for` loop no longer double-flattens lists: `for %h.pairs -> $p {...}` 
     68* User-defined topicalizers: `if EXPR -> $x {...}`, `given EXPR -> $x {...}` 
     69* `&last` and `&redo` now work in `repeat {...}` and `loop {...}` blocks 
     70* `&take` no longer flattens array literals: `take [1,2,3];` 
     71* `&take` now works in functions called from within a `gather {...}` block 
     72* `BEGIN(...)`, `END(...)` etc are parsed as calls, not syntax errors 
     73* `do {...}` is now a loop block that takes standard loop controls 
     74 
     75=== Regexes and Grammars 
     76 
     77* Anonymous tokens and rules anchor on both ends: `123 ~~ token{2}` is false 
     78* New `s[...] = ...` syntax; `s[...][...]` is deprecated 
     79* Pugs::Compiler::Rule (PCR) replaced Parrot/PGE as the default engine 
     80* Support for `:c/:continue`, `<prior>`, and much more: see PCR's ChangeLog 
     81* `$()`, `@()` and `%()` parsed correctly as `$$/`, `@$/` and `%$/` 
     82 
     83=== Modules and Routines 
     84 
     85* Allow space-separated adverbial named arguments: `f( :x<foo> :$y :!z )` 
     86* Multi-dispatching now handles named, slurpy and optional arguments 
     87* Named arguments with no matching parameters is now an error 
     88* New `&sub.call($capture)` syntax to call without a caller frame 
     89* Parse for the `proto` routine modifier: `proto method foo ($x) {...}` 
     90* Precompiled `.pm.yml` files with mismatching AST version no longer loads 
     91* Support for user-defined unary and optional-unary prefix macros 
     92* The main package is now ::Main, not ::main 
     93* `sub ($x = 0 is copy)` no longer allowed; say `sub ($x is copy = 0)` instead 
     94* `sub f ($x is lazy) {...}` no longer evaluates $x more than once 
     95 
     96=== Classes and Objects 
     97 
     98* Attribute-like method call syntax: `@.method(1)`, `$.method: 2, 3, 4` 
     99* Circular mixin is no longer allowed: `role A does A` 
     100* Default expression for attributes: `class C { has $.x = 123 }` 
     101* Dynamic method calls: `$obj.$meth` 
     102* Hyperised method calls: `$obj.>>meth` 
     103* Quantified method calls: `$obj.*meth`, `$obj.+meth` and `$obj.?meth` 
     104* Reopening classes: `class C is also {...}` 
     105* Role mixins: `role R {...} class C does R {...}` 
     106 
     107=== Built-in Primitives 
     108 
     109* New `&comb` function, a dual to `&split` but matches the wanted parts 
     110* New `&printf` function for formatted printing 
     111* New `&quotemeta` function for escaping strings 
     112* Support for `%b` in formatted printing 
     113* The `&system` function no longer dies when the command does not exist  
     114* The `.as` method is renamed to `.fmt` for formatted printing  
     115* The `.perl` method now returns Unicode strings 
     116 
     117== Bundled Modules 
    4118 
    5119=== New modules 
     
    118232* Slides from Nathan Gray's "Practical Extraction with Perl 6" talk 
    119233 
    120 == Build System 
    121  
    122 * Enabled Perl 5 embedding by default 
    123 ** For Windows users, Perl 5.8.x is required 
    124 ** Set the `PUGS_EMBED` environment variable to `noperl5` to disable this 
    125  
    126 * Disabled prompting for Parrot embedding by default 
    127 ** Set the `PUGS_EMBED` environment variable to `parrot` to enable this 
    128  
    129 * Support for compiling with GHC 6.6 
    130 ** GHC 6.4.1+ is still supported, but will discontinue in te next release 
    131  
    132 == Feature Changes 
    133  
    134 === Perl 5 Interoperability 
    135  
    136 * Importing functions from Perl 5: `use perl5:CGI <header param>` 
    137 * Array and Hashes now round-trips from Pugs to Perl 5 land and back 
    138 * Passing unboxed values across runtimes no longer leaks memory 
    139 * When embedding Perl 5.8+, Unicode flag is now on for Pugs-to-Perl5 strings 
    140  
    141 === Lexical Syntax 
    142  
    143 * Named character escapes: `"\c[LATIN CAPITAL LETTER Y]"` 
    144 * `"\123"` and `"\03"` are now errors; write `"\d123"` and `"\o03"` instead 
    145 * New magical variables: `$?COMPILER` and `$?VERSION` 
    146 * Interpolation of chained calls: `"$foo.meth.meth.meth.meth()"` 
    147 * Signature literals: `:($foo is copy = 42, $, @)` 
    148 * Capture literals: `\($bar: 1, 2, 3, named => 4)` 
    149 * POD variables: `$=DATA` and `@=DATA` 
    150 * POD directives: `=begin`/`=end` and `=for` now terminate without `=cut` 
    151 * `%h<>` now means `%h{}` -- the entire hash, not the empty string as key 
    152 * `1<2>` is now a fatal error: Odd numbers of elements in Hash 
    153 * List comprehension: `for 0 < list(@x) < 10 {...}` 
    154 * `$::x` now means exactly the same a `$x`, instead of `$*x` 
    155  
    156 === Declarators and Operators 
    157  
    158 * New infix comparison operators: `===` and `eqv` 
    159 * `*` is now always a term, never a prefix operator 
    160 * Argument interpolation via prefix `|` and `|<<`  
    161 * Typed declarations: `my Dog $fido`, `my T ($x, $y)` 
    162 * Binding to qualified uninitialized symbols: `&fully::qualify := sub {...}` 
    163 * Postfix operators can be called with a dot: `.++`, `$x.++`, `$x.\ ++` 
    164 * Mid-block redeclaration no longer allowed: `my $x; { $x = 1; my $x = 2 }` 
    165 * Smart matching against implicit invocation: `$obj ~~ .meth`, `$obj ~~ .[0]` 
    166 * Short-circuiting chained comparison: `1 > 2 > die('foo')` no longer dies 
    167  
    168 === Blocks and Statements 
    169  
    170 * `BEGIN(...)`, `END(...)` etc are parsed as calls, not syntax errors 
    171 * Support for `START`, `PRE`, `POST`, `KEEP`, `UNDO`, `ENTER`, `LEAVE` blocks 
    172 * Support for `FIRST`, `NEXT`, `LAST` loop control blocks 
    173 * New `&leave` primitive to exit from the innermost block 
    174 * New `&break` and `&continue` primitives to use inside `when` blocks 
    175 * `&last` and `&redo` now work in `repeat { ... }` and `loop {...}` blocks 
    176 * `do {...}` is now a loop block that takes standard loop controls 
    177 * New postfix `given` statement modifier: `.say given foo()` 
    178 * `&take` now works in functions called from within a `gather {...}` block 
    179 * `&take` no longer flattens array literals: `take [1,2,3];` 
    180 * Implicit invocation in `when`: `when .true {...}`, `when .<key> {...}` 
    181 * Loop topic is not forced into rw: `for 1..3 { $_++ }` now fails correctly 
    182  
    183 === Regexes and Grammars 
    184  
    185 * Pugs::Compiler::Rule (PCR) replaced Parrot/PGE as the default engine 
    186 * Implemented `s[...] = ...` and deprecated `s[...][...]` 
    187  
    188 === Modules and Routines 
    189  
    190 * The main package is now ::Main, not ::main 
    191 * Allow space-separated adverbial named arguments: `f( :x<foo> :$y :!z )` 
    192 * Parse for the `proto` routine modifier: `proto method foo ($x) {...}` 
    193 * Multi-dispatching now handles named, slurpy and optional arguments 
    194 * Support for user-defined unary and optional-unary prefix macros 
    195 * `sub f ($x is lazy) {...}` no longer evaluates $x more than once 
    196 * `sub ($x = 0 is copy)` no longer allowed; say `sub ($x is copy = 0)` instead 
    197 * Named arguments with no matching parameters is now an error 
    198 * New `&sub.call($capture)` syntax to call without a caller frame 
    199  
    200 === Classes and Objects 
    201  
    202 * Dynamic method calls: `$obj.$meth` 
    203 * Hyperised method calls: `$obj.>>meth` 
    204 * Quantified method calls: `$obj.*meth`, `$obj.+meth` and `$obj.?meth` 
    205 * Default expression for attributes: `class C { has $.x = 123 }` 
    206 * Attribute-like method call syntax: `@.method(1)`, `$.method: 2, 3, 4` 
    207 * Role mixins: `role R {...} class C does R {...}` 
    208 * Circular mixin is no longer allowed: `role A does A` 
    209 * Reopening classes: `class C is also {...}` 
    210  
    211 === Built-in Primitives 
    212  
    213 * New `&quotemeta` function for escaping strings 
    214 * New `&printf` function for formatted printing 
    215 * New `&comb` function, a dual to `&split` but matches the wanted parts 
    216 * The `.as` method is renamed to `.fmt` for formatted printing  
    217 * Support for `%b` in formatted printing 
    218 * The `.perl` method now returns Unicode strings 
    219 * The `&system` function no longer dies when the command does not exist  
    220  
    221 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- 
    222  
    223 * Begin integration of new AST into Pugs. This AST is planned to be shared 
    224   with other implementations, so macros are portable even if they don't 
    225   operate on the source level 
    226 * Added support for the `each` builtin, so now you can write 
    227     for each(@a; @b) -> $x, $y { ... } 
    228 * New Prims: `Pugs::Safe::safe_getc` and `Pugs::Safe::safe_readline`, 
    229   allowing eval servers to interface an interactive Pugs 
    230 * New `Perl6::Internals::emit_yaml` prim to dump AST programmatically 
    231   as YAML 
    232 * Implemented staleness checking for .yml/.pm loader 
    233 * Pugs.Parser: $() now means $$/, @() means @$/, %() means %$/, etc 
    234 * Added identity values for the builtin reduceable operators from S03 
    235 * Implement hyperfold and hyperscan: [>>+<<] and [\>>+<<] 
    236 * Pugs.Eval: Autovivification is now constrainted by typed variables: 
    237     my Hash $x; 
    238     $x[0] = 1; # fails, as $x can _only_ vivify to Hash 
    239 * Implement rudimentary "fail" control via $*FAIL_SHOULD_DIE 
    240 * Reduce standalone blocks even if nested: 
    241     { { { say 3 } } } 
    242 * Reject named arguments that cannot find a matching named 
    243   parameter or slurpy hash 
    244     sub f () {...} 
    245     f(y => 1); # used to bind silently, but now no more 
    246 * Primitive support for =@Array on both contexts 
    247  
    248 == Bug Fixes 
    249  
    250 * in a "for" loop with rvalue lists, don't double-listify 
    251   its list elements.  This fixes the case of: 
    252     for %h.pairs -> $p { ... } 
    253   which used to make $p contain a seq instead of a pair 
    254 * Allowed double-right-parens to end a "parens" structure: 
    255     (@(1)) 
    256     (@::("foo")) 
    257   now all parses correctly without needing a whitespace 
    258 * Pugs.Parser: Parse for 
    259     repeat { 
    260     } 
    261     while 1; 
    262234== Perl 6 on Perl 5 (under [misc/pX/Common/]) 
    263235 
     
    272244 
    273245XXX Sage: please write something here 
    274  
    275246 
    276247