Changeset 14395 for ChangeLog

Show
Ignore:
Timestamp:
10/18/06 01:01:25 (2 years ago)
Author:
audreyt
Message:

* chglog fu!

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r14394 r14395  
    1414 
    1515== Feature Changes 
     16 
     17=== Interactive Shell and Command-Line Flags 
     18 
     19* New `pugs -d` flag to display a trace for debugging 
     20* The `:r` command now resets the environment once, not twice 
     21* The return value of blocks, such as `gather {...}`, is displayed correctly 
     22* `$_` is no longer clobbered with the result of each expression's evaluation 
    1623 
    1724=== Perl 5 Interoperability 
     
    2128* Passing unboxed values across runtimes no longer leaks memory 
    2229* When embedding Perl 5.8+, Unicode flag is now on for Pugs-to-Perl5 strings 
     30* `eval($str, :lang<perl5>)` now accepts non-ASCII characters in `$str` 
    2331 
    2432=== Lexical Syntax 
    2533 
    2634* Capture literals: `\($bar: 1, 2, 3, named => 4)` 
     35* Here-docs now work as specced; also warns against inconsistent indentation 
    2736* Interpolation of chained calls: `"$foo.meth.meth.meth.meth()"` 
    2837* List comprehension: `for 0 < list(@x) < 10 {...}` 
    2938* Named character escapes: `"\c[LATIN CAPITAL LETTER Y]"` 
     39* New grammatical category `term:`, separated from the `prefix:` category 
    3040* New magical variables: `$?COMPILER` and `$?VERSION` 
     41* Parse for `LABEL: STMT`, although it's currently treated the same as `STMT` 
    3142* Pod directives: `=begin`/`=end` and `=for` now terminate without `=cut` 
    32 * Pod variables: `$=FOO` and `@=FOO` give you access to the Pod 
    33   section FOO 
     43* Pod variables: `$=FOO` and `@=FOO` give you access to the Pod section FOO 
     44* Quote adverbs no longer take non-parens brackets: `rx:P5{...}` is valid again 
     45* Shell-like quoting rules implemented for `<< $x "qq" 'q' >>` 
    3446* Signature literals: `:($foo is copy = 42, $, @)` 
     47* Support for UTF-8, UTF-16 and UTF-32 encoded source files 
     48* Support for backquotes and `qx/.../` for capturing external command output 
     49* User-defined infix associativity: `sub infix:<foo> is assoc('right') {...}` 
    3550* `"\123"` and `"\03"` are now errors; write `"\d123"` and `"\o03"` instead 
    3651* `$::x` now means exactly the same a `$x`, instead of `$*x` 
    3752* `%h<>` now means `%h{}` -- the entire hash, not the empty string as key 
    3853* `($::('x'))` with two adjacent closing parens now parses correctly 
     54* `0_123_456` now parses as `0d123456`, not an error 
    3955* `1<2>` is now a fatal error: Odd number of elements in Hash 
     56* `q()` and `qw()` with parentheses are parsed as functions, not quotes 
    4057 
    4158=== Declarators and Operators 
     
    4360* Argument interpolation via prefix `|` and `|<<`  
    4461* Binding to qualified uninitialised symbols: `&fully::qualify := sub {...}` 
     62* Contextual variables are now declared with `my $x is context`, not `env $x` 
    4563* Hyperised reduce operators: `[>>+<<]` and `[\>>+<<]` 
     64* Implicit invocation assignment: `.= uc` is parsed as `$_ = $_.uc` 
    4665* Mid-block redeclaration no longer allowed: `my $x; { $x = 1; my $x = 2 }` 
     66* Negated comparison operators: `!eqv`, `!=:=` etc; `!~~` replaces `!~` 
    4767* New infix comparison operators: `===` and `eqv` 
     68* New infix non-short-circuiting boolean AND operator: `?&` 
    4869* Nullary reduction of builtin operators gives identity values: `[*]() === 1` 
    4970* Postfix operators can be called with a dot: `.++`, `$x.++`, `$x.\ ++` 
    5071* Prefix `=` now iterates on arrays as well: `=@array` 
    5172* Short-circuiting chained comparison: `1 > 2 > die('foo')` no longer fails 
     73* Smart matching against code objects: `$obj ~~ { 1 > $_ > 5 }` 
    5274* Smart matching against implicit invocation: `$obj ~~ .meth`, `$obj ~~ .[0]` 
    5375* Typed constraints on autovivification: `my Hash $x; $x[0] = 1` now fails 
     
    5880 
    5981* Implicit invocation in `when`: `when .true {...}`, `when .<key> {...}` 
     82* Listops in conditions no longer consume the block: `for say {...}` 
    6083* Loop topics are not forced into rw: `for 1..3 { $_++ }` now fails correctly 
    6184* New `&break` and `&continue` primitives for use within `when` blocks 
     
    6487* Support for `FIRST`, `NEXT`, `LAST` loop control blocks 
    6588* Support for `START`, `PRE`, `POST`, `KEEP`, `UNDO`, `ENTER`, `LEAVE` blocks 
    66 * Support for test-after `repeat {...} while EXPR;` blocks 
    67 * Support for the `each` list interleaver: `for each(@a; @b) -> $x, $y {...}` 
     89* Support for repeat blocks: `repeat {...} while 1`, `repeat while 1 {...}` 
     90* Support for the `&each` list interleaver: `for each(@a; @b) -> $x, $y {...}` 
    6891* The `for` loop no longer double-flattens lists: `for %h.pairs -> $p {...}` 
    69 * User-defined topicalisers: `if EXPR -> $x {...}`, `given EXPR -> $x {...}` 
     92* Topicalisers for `if`, `else`, `while`, `given` blocks: `if EXPR -> $x {...}` 
     93* Topicalisers for postfix `for` loop: `-> $x {...} for 1,2,3` 
    7094* `&last` and `&redo` now work in `repeat {...}` and `loop {...}` blocks 
    7195* `&take` no longer flattens array literals: `take [1,2,3];` 
    7296* `&take` now works in functions called from within a `gather {...}` block 
    7397* `BEGIN(...)`, `END(...)`, etc., are now parsed as calls, not syntax errors 
     98* `END {...}` in `.pm` files are no longer ignored when executed directly  
     99* `INIT {...}` now works correctly inside `eval "..."` 
    74100* `do {...}` is now a loop block that takes standard loop controls 
     101* `do {...}` with statement modifiers is explicitly disallowed 
    75102 
    76103=== Regexes and Grammars 
    77104 
    78105* Anonymous tokens and rules anchor on both ends: `123 ~~ token{2}` is false 
    79 * New `s[...] = ...` syntax; `s[...][...]` is deprecated 
     106* New `s[...] = EXPR` and `s[...] = .meth` syntax; `s[...][...]` is deprecated 
     107* New `tr///` syntax for transliteration; `y///` will not be supported 
    80108* Pugs::Compiler::Rule (PCR) replaces Parrot/PGE as the default engine 
    81109* Support for `:c/:continue`, `<prior>`, and much more: see PCR's ChangeLog 
    82110* `$()`, `@()` and `%()` parses correctly as `$$/`, `@$/` and `%$/` 
     111* `/.../` matches `$_` under Int, Num and void context in addition to Bool 
     112* `m:g/(1)|(2)/` now returns only successfully matched subcaptures 
    83113 
    84114=== Modules and Routines 
     
    86116* Allow space-separated adverbial named arguments: `f( :x<foo> :$y :!z )` 
    87117* Multi-dispatching now handles named, slurpy and optional arguments 
     118* Multi-dispatching now handles parenthesized expressions as arguments 
    88119* Named arguments with no matching parameters is now an error 
    89 * New `&sub.call($capture)` syntax to call without a caller frame (similarly 
    90   to Perl 5's `goto &sub`, but it returns) 
     120* New `&c.call($capture)` method to call without a caller frame 
     121  (similar to Perl 5's `goto &sub`, but it returns) 
     122* New `&c.signature` method to get a Signature object from a Code object 
    91123* Parse for the `proto` routine modifier: `proto method foo ($x) {...}` 
    92124* Precompiled `.pm.yml` files with mismatching AST version will no longer load 
    93125* Support for user-defined unary and optional-unary prefix macros 
    94126* The main package is now ::Main, not ::main 
     127* `&?CALLER_CONTINUATION` is now fully reentrant 
     128* `&yield` in coroutines works correctly within loop blocks 
    95129* `sub ($x = 0 is copy)` no longer allowed; say `sub ($x is copy = 0)` instead 
    96130* `sub f ($x is lazy) {...}` no longer evaluates $x more than once 
     131* `sub f (@x?) {...}; f()` now sets `@x` to `[]`, not `[undef]`  
    97132 
    98133=== Classes and Objects 
    99134 
    100135* Attribute-like method call syntax: `@.method(1)`, `$.method: 2, 3, 4` 
     136* Class attributes: `class C { my $.x is rw }` 
     137* Class name literals are now term macros, not prefix functions 
    101138* Compile-time self-mixin no longer allowed: `role A does A` 
    102139* Default initialiser expression for attributes: `class C { has $.x = 123 }` 
     140* Dot attributes are now method calls: `@.x` is the same as `@(self.x)` 
    103141* Dynamic method calls: `$obj.$meth` 
    104142* Hyperised method calls: `$obj.>>meth` 
     
    106144* Reopening classes: `class C is also {...}` 
    107145* Role mixins: `role R {...} class C does R {...}` 
     146* `$?SELF` is gone; write `self` instead 
     147* `BUILDALL`/`DESTROYALL` trigger once per class even with diamond inheritance 
     148* `does R` and `is C` statements in class body now evaluate in compile time 
    108149 
    109150=== Built-in Primitives 
    110151 
     152* New `&HOW`, `&WHAT` and `&WHICH` functions replace `&meta`, `&ref` and `&id` 
     153* New `&VAR` macro to force lvalue evaluation of an expression 
    111154* New `&comb` function, a dual to `&split` but matches the wanted parts 
     155* New `&crypt` function to create one-way digest strings 
     156* New `&fork` function to create a new process 
    112157* New `&printf` function for formatted printing 
    113158* New `&quotemeta` function for escaping strings 
     
    129174 
    130175* A new `as_yaml` method to dump CGI parameters as YAML 
     176* Allow initializing the CGI object with a hash of parameters 
     177* New `Dump` function adapted from Perl 5's CGI.pm 
    131178* New basic tests for `escapeHTML` and `unescapeHTML`, which were broken 
    132179* New tests for `PATH_INFO` 
    133 * Allow initializing the CGI object with a hash of parameters 
    134 * New `Dump` function adapted from Perl 5's CGI.pm 
    135180* Only send the Content-Type: header if we actually have a content-type 
    136181* Only send the Status: header if it's a redirect, or if it's explicitly added 
    137182* Refactored into an OO-only module.  N.B.: this breaks backwards compatibility! 
     183* Some work on charset handling, though a `charset` method is still missing 
    138184* The `content_type` method is renamed to `type` for compatibility 
    139185* The `cookies` attribute is renamed to `cookie` for compatibility 
    140 * Some work on charset handling, though a `charset` method is still missing 
    141186 
    142187=== [ext/HTTP-Server-Simple/] 
    143188 
    144 * The old non-standard `./method` syntax has been replaced with 
    145   standard `self.method` syntax 
     189* The old non-standard `./method` syntax has been replaced with `self.method` 
    146190 
    147191=== [ext/Rosetta/] 
     
    165209=== [util/prove6] 
    166210 
     211* Can now run only a portion of the test suite, or even a single file 
    167212* Original shell script rewritten in Perl 5 for improved portability 
    168 * Can now run only a portion of the test suite, or even a single file 
    169213* Support for multiple Pugs backends and multiple Perl 6 implementations 
    170214 
     
    173217* A new visualiser of smartlinks used in the test suite 
    174218* Generates much nicer cross-referenced HTML pages 
     219* See annotated specs in action on [http://spec.pugscode.org/] 
    175220* Smartlinks replace the old [util/catalog_tests.pl] 
    176 * See annotated specs in action on [http://spec.pugscode.org/] 
    177221 
    178222=== [util/smokeserv/] 
    179223 
     224* See the `SYN` links on [http://smoke.pugscode.org/] for this in action 
    180225* Smoke client now uploads raw `.yml` results as well as `.html` 
    181226* The smokeserver now annotates the spec with test results using smartlinks 
    182 * See the `SYN` links on [http://smoke.pugscode.org/] for this in action 
    183  
    184 === [t/02-test-pm/] 
    185  
    186 * A new subdirectory to ensure that `Test.pm` works as advertised 
    187 * Copied [ext/Test/t/*] and moved [t/01-sanity/08-test.t] into it 
    188  
    189 === [t/blocks/] 
    190  
    191 * Renamed from [t/subroutines/] 
    192  
    193 === [t/closure_traits/] 
    194  
    195 * A new test subdirectory to test closure traits (FIRST, LAST, etc.) 
    196227 
    197228=== [t/] 
    198229 
     230* All tests now begin with `use v6-alpha;` instead of `use v6;` 
    199231* Many, many more smartlinks have been added into the spec 
    200 * All tests now begin with `use v6-alpha;` instead of `use v6;` 
    201 * `eval_ok` and `eval_is` are now `ok eval` and `is eval`, so that 
    202   eval'd strings will be run in the current lexical scope 
     232* Programs and modules in [examples/] are tested for syntactic correctness 
    203233* Tests in [t_disabled/] are merged back into the main test suite 
     234* [t/02-test-pm/] created to ensure that `Test.pm` works as advertised 
     235* [t/blocks/] renamed from [t/subroutines/] 
     236* [t/closure_traits/] created to test closure traits (`FIRST`, `LAST`, etc.) 
    204237* `#!/usr/bin/pugs` is gone from all test files 
     238* `eval_ok` and `eval_is` are now `ok eval` and `is eval`, so that eval'd 
     239  strings will be run in the current lexical scope 
    205240 
    206241== Examples and Utilities 
     
    208243=== [examples/] 
    209244 
    210 * All Perl scripts have been renamed from *.p6 to *.pl and from *.p5 to *-p5.pl 
     245* All Perl 5 programs have been renamed from `*.p5` to `*-p5.pl` 
     246* All Perl 6 programs have been renamed from `*.p6` to `*.pl` 
    211247* All references to them, except in talks, have been likewise updated 
    212248 
     249=== [examples/games/dispatch_quiz.pl] 
     250 
     251* A game to test your knowledge about Perl 6's multi-dispatch system 
     252 
    213253=== [misc/runpugs/] 
    214254 
    215 * New feature: a web teminal for running an interactive Pugs shell on the web 
     255* A web teminal for running an interactive Pugs shell on the web 
    216256* WebTerminal: a library for building web terminals for interactive shells 
    217257* See [http://run.pugscode.org/] for a live demo 
     
    232272 
    233273* New directory for Pugs-specific documentation 
    234 * Haskell style guide for Pugs hackers in [docs/Pugs/Doc/Hack/Style.pod] 
     274* [docs/Pugs/Doc/Hack/Style.pod] - Haskell style guide for Pugs hackers 
    235275 
    236276=== [docs/talks/extraction.xul] 
    237277 
    238 * Slides from Nathan Gray's "Practical Extraction with Perl 6" talk 
    239  
    240 == Perl 6 on Perl 5 (under [misc/pX/Common/]) 
    241  
    242 * Added make_build_perl5, to make it possible to build all the perl5 modules 
    243   without installing ghc first.  
    244 * lrep is no longer used to bootstrap - moved to misc/lrep 
    245 * .WHAT method implemented 
    246  
    247 XXX fglock: please write more here 
    248  
    249 == Perl 5 to Perl 6 Translater (under [misc/pX/Common/P5_to_P6_Translation]) 
    250  
    251 XXX Sage: please write something here 
     278* Slides from Nathan Gray's /Practical Extraction with Perl 6/ talk 
     279 
     280== Perl 6 on Perl 5 
     281 
     282=== [perl5/Pugs-Compiler-Perl6/] 
     283 
     284* The `v6.pm` implementation of Perl 6 now handles `./pugs -CPerl5` commands 
     285* See its own ChangeLog for more information 
     286 
     287=== [v6/] 
     288 
     289* A new subproject to write a Perl 6 compiler in Perl 6 
     290* Bootstrapped from the `v6.pm` compiler on the perl5 runtime 
     291* See its own ChangeLog for more information 
     292 
     293== Experimental projects 
     294 
     295=== [misc/pX/Common/P5_to_P6_Translation/] 
     296 
     297* Converts Perl 5.9.4+'s YAML syntax tree into Perl 6 
     298* Handles regexes, arrays, hashes and many builtin functions 
     299* See its own documentation for more information 
     300 
     301=== [misc/pX/Common/convert_regexp_to_six.pl] 
     302 
     303* Converts Perl 5 regex into Perl 6 
     304* See its own documentation for more information 
     305 
     306=== [misc/pX/Common/redsix/] 
     307 
     308* An Perl 6 implementation on Ruby 1.9+ 
     309* See its own documentation for more information 
    252310 
    253311 
     
    397455* `sub f (@x) {}; f([1,2,3])` now works as it's no longer under slurpy context 
    398456 
     457 
    399458= Changes for 6.2.11 (r8934) - Feb 1, 2006 
    400459 
     
    557616* Based on work from the [perl5/Perl6-MetaModel/] 
    558617 
     618 
    559619= Changes for 6.2.10 (r7520) - Oct 10, 2005 
    560620 
     
    668728* Theory Model proposal at `docs/notes/theory.pod` 
    669729 
     730 
    670731= Changes for 6.2.9 (r6050) - Aug 4, 2005 
    671732 
     
    735796* `.end` and `.elems` no longer work as scalar methods 
    736797* `/a/ ~~ "a"` now works the same way as `"a" ~~ /a/` 
     798 
    737799 
    738800= Changes for 6.2.8 (r5577) - July 13, 2005 
     
    823885* `try` is now capable of catching all type casting errors 
    824886 
     887 
    825888= Changes for 6.2.7 (r4612) - June 13, 2005 
    826889 
     
    874937* `Test::is()` now shows the expected result correctly again 
    875938* `module Foo {...}` now parses 
     939 
    876940 
    877941= Changes for 6.2.6 (r4318) - June 2, 2005 
     
    9531017* `when .isa(Foo)` is no longer parsed as `when $_ ~~ .isa(Foo)` now 
    9541018 
     1019 
    9551020= Changes for 6.2.5 (r3794) - May 24, 2005 
    9561021 
     
    9581023 
    9591024* Fix one broken test from the `Set` module 
     1025 
    9601026 
    9611027= Changes for 6.2.4 (r3790) - May 24, 2005 
     
    10371103* `state $x = 42` now only assigns `$x` once 
    10381104* `system()` returns proper exit codes 
     1105 
    10391106 
    10401107= Changes for 6.2.3 (r3111) - May 12, 2005 
     
    11161183* `{}` in P5 rules is no longer closure interpolation 
    11171184 
     1185 
    11181186= Changes for 6.2.2 (r2604) - May 1, 2005 
    11191187 
     
    11741242* `one(1,1).pick` bug fixed; it should return `undef` 
    11751243* `splice([], 1)` no longer causes division by zero errors 
     1244 
    11761245 
    11771246= Changes for 6.2.1 (r2288) - April 24, 2005 
     
    12611330* `return() if 1` now works correctly 
    12621331 
     1332 
    12631333= Changes for 6.2.0 (r1921) - April 13, 2005 
    12641334 
     
    13361406* Named bindings to `%_` repaired 
    13371407 
     1408 
    13381409= Changes for 6.0.14 - April 4, 2005 
    13391410 
     
    13811452* Readline support is correctly probed on `Makefile.PL` time 
    13821453* Mimick Perl 5's behaviour for function that defaults to `$_` 
     1454 
    13831455 
    13841456= Changes for 6.0.13 - March 27, 2005 
     
    14301502* Hash keys are now strings 
    14311503* Contextual logicals like `+^` and `~^` are parsed correctly 
     1504 
    14321505 
    14331506= Changes for 6.0.12 - March 21, 2005 
     
    14781551* Hanoi.p6 was broken due to premature binding of subroutine parameters 
    14791552* "&sub.foo" no longer attempts to interpolate 
     1553 
    14801554 
    14811555= Changes for 6.0.11 (r690) - March 14, 2005 
     
    15401614  now both evaluated in the caller's scope 
    15411615 
     1616 
    15421617= Changes for 6.0.10 - March 5, 2005 
    15431618 
     
    15741649* Fixed `grep`/`map`/`push`/`unshift` parsing so they are properly binOp now 
    15751650* Fixed prefix function parsing bug that eats more parens than it should 
     1651 
    15761652 
    15771653= Changes for 6.0.9 (r335) - February 28, 2005 
     
    15951671* A first draft of builtins declarations 
    15961672 
     1673 
    15971674= Changes for 6.0.8 - February 21, 2005 
    15981675 
     
    16131690* Deep recursion detection 
    16141691 
     1692 
    16151693= Changes for 6.0.7 - February 18, 2005 
    16161694 
     
    16291707* `loop`, `for` and `if` constructs 
    16301708 
     1709 
    16311710= Changes for 6.0.5 - February 15, 2005 
    16321711 
     
    16431722* Improved pretty-printing code for syntactic constructs 
    16441723 
     1724 
    16451725= Changes for 6.0.4 - February 12, 2005 
    16461726 
     
    16491729* /JuncAny/ and /JuncAll/ now collapses operands of the same type correctly 
    16501730* /JuncOne/ now collapses into an empty set when operands contains duplicates 
     1731 
    16511732 
    16521733= Changes for 6.0.3 - February 12, 2005 
     
    16671748* The `all` junction builder now collapses nested junctions under it 
    16681749 
     1750 
    16691751= Changes for 6.0.2 - February 9, 2005 
    16701752 
     
    16791761* Flattening (slurpy) star 
    16801762 
     1763 
    16811764= Changes for 6.0.1 - February 7, 2005 
    16821765 
     
    16841767* Characters in single quotes should not be escaped 
    16851768* Add one very basic test in `t/` 
     1769 
    16861770 
    16871771= Changes for 6.0.0 - February 7, 2005