- Timestamp:
- 10/17/06 08:26:45 (2 years ago)
- svk:copy_cache_prev:
- 21206
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r14368 r14373 1 1 = Changes for 6.2.13 (r14380) - October 17, 2006 2 2 3 == New Perl 6 modules 4 5 === [ext/Automata-Cellular/] 6 7 Build and render Cellular Automata on a terminal. 8 9 === [ext/Math-Basic/] 10 11 Basic mathematical functions and constants. 12 13 === [ext/Math-Random-Kiss/] 14 15 Pseudo-random number generator. 16 17 === [ext/re/] 18 19 Pragma to choose among grammar engine backends. 20 21 == Updated modules 3 == Perl 6 Modules 4 5 === New modules 6 7 * [ext/Automata-Cellular/] - Build and render Cellular Automata on a terminal 8 * [ext/Math-Basic/] - Basic mathematical functions and constants 9 * [ext/Math-Random-Kiss/] - Pseudo-random number generator 10 * [ext/re/] - Pragma to choose among grammar engine backends 22 11 23 12 === [ext/CGI/] 24 13 25 * A new `as_yaml` method to dump CGI parameters as YAML .26 * Added basic tests for `escapeHTML` and `unescapeHTML`, which were broken .27 * Added new tests for `PATH_INFO` .28 * Allow Initializing the CGI object with a hash of paramemters .29 * Implemented the `Dump` function adapted from Perl 5's CGI.pm .30 * Only send the Content-Type header if we actually have a content-type .31 * Only send the Status header if it's a redirect, or if it's explicitly added .14 * A new `as_yaml` method to dump CGI parameters as YAML 15 * Added basic tests for `escapeHTML` and `unescapeHTML`, which were broken 16 * Added new tests for `PATH_INFO` 17 * Allow Initializing the CGI object with a hash of paramemters 18 * Implemented the `Dump` function adapted from Perl 5's CGI.pm 19 * Only send the Content-Type header if we actually have a content-type 20 * Only send the Status header if it's a redirect, or if it's explicitly added 32 21 * Refactored into an OO-only module, breaking backwards compatibility. 33 * Renamed the `content_type` method to `type` for Perl 5 compatibility.34 * Renamed the `cookies` attribute to `cookie` for Perl 5 compatibility.35 * Some work on charsets handling, though a `charset` method is still missing .22 * Renamed the `content_type` method to `type` for compatibility 23 * Renamed the `cookies` attribute to `cookie` for compatibility 24 * Some work on charsets handling, though a `charset` method is still missing 36 25 37 26 === [ext/HTTP-Server-Simple/] 38 27 39 * Switched from non-standard `./method` syntax to the standard `self.method` .28 * Switched from non-standard `./method` syntax to the standard `self.method` 40 29 41 30 === [ext/Rosetta/] 42 31 43 * Significant updates to the `lib/Rosetta/SeeAlso.pod` documentation .32 * Significant updates to the `lib/Rosetta/SeeAlso.pod` documentation 44 33 45 34 === [ext/Set-Relation/] 46 35 47 * Renamed from [ext/Relation/] .48 * Beginning of separate `Set::Tuple` and `Set::Relation` classes .36 * Renamed from [ext/Relation/] 37 * Beginning of separate `Set::Tuple` and `Set::Relation` classes 49 38 50 39 === [ext/Test/] 51 40 52 * Converted `Test.pm` documentation from Kwid to POD syntax .53 * Removed the `eval_ok` and `eval_is` functions; use `is eval` instead .41 * Converted `Test.pm` documentation from Kwid to POD syntax 42 * Removed the `eval_ok` and `eval_is` functions; use `is eval` instead 54 43 55 44 == Test Suite … … 57 46 === [util/prove6] 58 47 59 * Original shell script rewritten in Perl 5 for improved portability .60 * Can now run only a portion of the test suite, or even a single file .61 * Support for multiple Pugs backends and multiple Perl 6 implementations .48 * Original shell script rewritten in Perl 5 for improved portability 49 * Can now run only a portion of the test suite, or even a single file 50 * Support for multiple Pugs backends and multiple Perl 6 implementations 62 51 63 52 === [util/smartlinks.pl] 64 53 65 * A new visualizer of smartlinks used in the test suite .66 * Generates much nicer cross-referenced HTML pages .67 * Replaced the old [util/catalog_tests.pl] .68 * See annotated specs in action on [http://spec.pugscode.org/] .54 * A new visualizer of smartlinks used in the test suite 55 * Generates much nicer cross-referenced HTML pages 56 * Replaced the old [util/catalog_tests.pl] 57 * See annotated specs in action on [http://spec.pugscode.org/] 69 58 70 59 === [util/smokeserv/] 71 60 72 * Smoke client now uploads raw `.yml` results as well as `.html` .73 * The smokeserver now annotates the spec with test results .74 * See SYN links on [http://smoke.pugscode.org/] for this in action .61 * Smoke client now uploads raw `.yml` results as well as `.html` 62 * The smokeserver now annotates the spec with test results 63 * See SYN links on [http://smoke.pugscode.org/] for this in action 75 64 76 65 === [t/02-test-pm/] 77 66 78 * A new subdirectory to ensure that `Test.pm` works as advertised .79 * Copied [ext/Test/t/*] and moved [t/01-sanity/08-test.t] into it .67 * A new subdirectory to ensure that `Test.pm` works as advertised 68 * Copied [ext/Test/t/*] and moved [t/01-sanity/08-test.t] into it 80 69 81 70 === [t/blocks/] 82 71 83 * Renamed from [t/subroutines/] .72 * Renamed from [t/subroutines/] 84 73 85 74 === [t/closure_traits/] 86 75 87 * A new test subdirectory dedicated to test closure traits .76 * A new test subdirectory dedicated to test closure traits 88 77 89 78 === [t/] 90 79 91 * Added many, many more smartlinks into the spec .92 * All tests now begins with `use v6-alpha;` instead of `use v6;` .93 * Converted `eval_ok` and `eval_is` to `ok eval` and `is eval` .94 * Merged [t_disabled/] back into the main test suite .95 * Removed `#!/usr/bin/pugs` from all test files .80 * Added many, many more smartlinks into the spec 81 * All tests now begins with `use v6-alpha;` instead of `use v6;` 82 * Converted `eval_ok` and `eval_is` to `ok eval` and `is eval` 83 * Merged [t_disabled/] back into the main test suite 84 * Removed `#!/usr/bin/pugs` from all test files 96 85 97 86 == Examples and Utilities … … 99 88 === [examples/] 100 89 101 * Renamed all Perl scripts from *.p6 to *.pl and from *.p5 to *-p5.pl .102 * All references to them, except in talks, were likewise updated .90 * Renamed all Perl scripts from *.p6 to *.pl and from *.p5 to *-p5.pl 91 * All references to them, except in talks, were likewise updated 103 92 104 93 === [misc/runpugs/] 105 94 106 * A web teminal for running an interactive Pugs shell on the web .107 * WebTerminal: A library for building web terminals for interactive shells .108 * See [http://run.pugscode.org/] for a live demo .95 * A web teminal for running an interactive Pugs shell on the web 96 * WebTerminal: A library for building web terminals for interactive shells 97 * See [http://run.pugscode.org/] for a live demo 109 98 110 99 == Documentation … … 112 101 === [docs/Perl6/Perl5/Differences.pod] 113 102 114 * Significantly updated and linked from [http://spec.pugscode.org/] .103 * Significantly updated and linked from [http://spec.pugscode.org/] 115 104 116 105 === [docs/Perl6/Spec/] 117 106 118 * A new S16 draft for IO/IPC/Signals as [docs/Perl6/Spec/IO.pod] .119 * A new S26 draft for Documentation as [docs/Perl6/Spec/Documentation.pod] .120 * Revamped S29 draft in [docs/Perl6/Spec/Functions.pod] .107 * A new S16 draft for IO/IPC/Signals as [docs/Perl6/Spec/IO.pod] 108 * A new S26 draft for Documentation as [docs/Perl6/Spec/Documentation.pod] 109 * Revamped S29 draft in [docs/Perl6/Spec/Functions.pod] 121 110 122 111 === [docs/Pugs/Doc/] 123 112 124 * New directory for Pugs-specific documentations .125 * Haskell style guide for Pugs hackers in [docs/Pugs/Doc/Hack/Style.pod] .113 * New directory for Pugs-specific documentations 114 * Haskell style guide for Pugs hackers in [docs/Pugs/Doc/Hack/Style.pod] 126 115 127 116 === [docs/talks/extraction.xul] 128 117 129 * Slides from Nathan Gray's "Practical Extraction with Perl 6" talk. 130 131 == New Features 132 133 * Enabled Perl 5 embedding by default. Now Pugs heavily depends on p5 embedding. 134 ** For Windows users, ActivePerl 5.8.x is required. 135 ** Set the PUGS_EMBED environment variable to "noperl5" to disable this. 136 * Replaced PGE with Pugs::Compiler::Rule in Pugs. So now we no longer depend on 137 parrot/PGE to do rules any more. 138 * Integrated the Judy library into the Haskell runtime, resulting in 139 ~10% performace improvement. 118 * Slides from Nathan Gray's "Practical Extraction with Perl 6" talk 119 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 140 === Lexical Syntax 141 142 * Named character escapes: `"\c[LATIN CAPITAL LETTER Y]"` 143 * `"\123"` and `"\03"` are now errors; write `"\d123"` and `"\o03"` instead 144 * New magical variables: `$?COMPILER` and `$?VERSION` 145 * Interpolation of chained calls: `"$foo.meth.meth.meth.meth()"` 146 * Signature literals: `:($foo is copy = 42, $, @)` 147 * Capture literals: `\($bar: 1, 2, 3, named => 4)` 148 149 === Operators 150 151 * New infix comparison operators: `===` and `eqv` 152 * `*` is now always a term, never a prefix operator 153 * Argument interpolation via prefix `|` and `|<<` 154 155 === Blocks and Statements 156 157 * `BEGIN(...)`, `END(...)` etc are parsed as calls, not syntax errors 158 159 === Regex and Grammars 160 161 * Pugs::Compiler::Rule (PCR) replaced Parrot/PGE as the default engine 162 * Implemented `s[...] = ...` and deprecated `s[...][...]` 163 164 === Subroutines 165 166 === Objects 167 168 * Dynamic method calls: `$obj.$meth` 169 * Hyperised method calls: `$obj.>>meth` 170 * Quantified method calls: `$obj.*meth`, `$obj.+meth` and `$obj.?meth` 171 172 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- >8 --- 173 140 174 * Begin integration of new AST into Pugs. This AST is planned to be shared 141 175 with other implementations, so macros are portable even if they don't 142 operate on the source level. 143 * $obj.*$meth() is now implemented, calling zero or more methods named $meth 144 in the inheritence tree, returning an unconcatenated list of return values. 145 The return value of this is not yet spec'ed. Currently only lookups through 146 single inheritence are implemented. See "Calling Sets of Methods" in S12 for 147 more information about related features. 148 * There are now separate `===` and `eqv` operators. 149 * Added full support for the START trait blocks. 150 * Added support for character name escapes: 151 say "\c[LATIN CAPITAL LETTER Y]"; 152 With Perl 5 embedding, the full Unicode range is supported via 153 charnames.pm. Without Perl 5 embedding (e.g. in "make ghci"), 154 only codepoints in the range 0x00-0xFF are supported. 155 * Proper support for \digits according to the latest Synopses. 156 ** e.g., "\123" is a syntax error while '\123' is not. 157 ** e.g., "\08" is allowed while "\03" is not. 176 operate on the source level 177 * Added full support for the START trait blocks 158 178 * The "proto" keyword is now supported 159 179 ** "proto foo {...}" works … … 163 183 * Implemented postfix "given" 164 184 * New Prims: `Pugs::Safe::safe_getc` and `Pugs::Safe::safe_readline`, 165 allowing eval servers to interface an interactive Pugs185 allowing eval servers to interface an interactive Pugs 166 186 * New `Perl6::Internals::emit_yaml` prim to dump AST programmatically 167 187 as YAML 168 188 * Added Math::Basic::pi per S29 169 189 * Added *pi(), for backwards compatibility. (This is non-spec.) 170 * Renamed .as to .fmt according the recent changes of the Synopses. 171 * Implemented staleness checking for .yml/.pm loader. 172 * Added support for $?COMPILER and $?VERSION, which are set to 173 "Pugs" and "6.2.13" 174 * Support for chained method call in qq interpolation. 175 "$foo.meth.meth.meth.meth()" 176 * Allowed "POST(1)" or "BEGIN(2)" to parser as function calls, 177 instead of syntax errors (as in Perl5). 190 * Renamed .as to .fmt according the recent changes of the Synopses 191 * Implemented staleness checking for .yml/.pm loader 178 192 * Postfix dot methods are now working: 179 193 .++; # $_++ … … 181 195 $x.\ ++; # ditto 182 196 $x.+meth; # $x.meth but with quantifier 183 * "*" is now strictly a Term, never a prefix operator184 197 * Added support for the "%b" modifier in `sprintf` and `fmt`, which 185 requires parrot due to use of rules .198 requires parrot due to use of rules 186 199 * The following code is no longer allowed: 187 200 my $x; … … 190 203 my $x = 2; 191 204 } 192 * "role A does A" is not allowed anymore. 193 * Added support for the `quotemeta` builtin. 194 * Initial support for Capture and Signature objects. 195 ** :( $inv : $required, $optional is copy = 42, :lab($rador) is lazy ) 196 *** Partially pretty-printable; introspection API for next release. 205 * "role A does A" is not allowed anymore 206 * Added support for the `quotemeta` builtin 207 *** Partially pretty-printable; introspection API for next release 197 208 ** Support for: 198 209 my T ($x, $y, $z) 199 210 to distribute as: 200 211 (my T $x, my T $y, my T $z) 201 ** Also, "my T $x" now re-assigns T into $x upon closure reentry .212 ** Also, "my T $x" now re-assigns T into $x upon closure reentry 202 213 Note that this is not strictly correct for "state T $x", but 203 let's do it this way for now. 204 * Parse for siglets: 205 :($, $, &) 206 * Allow for rule redefinition via ->reinstall. 214 let's do it this way for now 215 * Allow for rule redefinition via ->reinstall 207 216 * Allow binding to fully-qualified, uninitialized variables: 208 217 &foo::bar ::= sub { ... }; 209 * Argumentless POD introducer can now be followed by =cut correctly .218 * Argumentless POD introducer can now be followed by =cut correctly 210 219 =foo 211 220 =cut 212 221 say "This gets run"; 213 * Allow "last" and "redo" in "repeat { ... }" loops .214 * Implement \($x, $y, |$z, $w) splicing .215 * "my $x; { $x; my $x }" now fails with a sensible error message .222 * Allow "last" and "redo" in "repeat { ... }" loops 223 * Implement \($x, $y, |$z, $w) splicing 224 * "my $x; { $x; my $x }" now fails with a sensible error message 216 225 * "do { ... }" is now made a true block, by desugaring it into 217 "repeat { ... } while False" .218 * "f( :$x :$y :$z )" without commas between them is now legal syntax .219 * Allow $::x to mean exactly the same as $x .220 * The main package is now ::Main, not ::main .221 * "sub ($x = 0 is copy)" is invalid; say "sub ($x is copy = 0)" instead .222 * Pugs.Parser: $() now means $$/, @() means @$/, %() means %$/, etc .226 "repeat { ... } while False" 227 * "f( :$x :$y :$z )" without commas between them is now legal syntax 228 * Allow $::x to mean exactly the same as $x 229 * The main package is now ::Main, not ::main 230 * "sub ($x = 0 is copy)" is invalid; say "sub ($x is copy = 0)" instead 231 * Pugs.Parser: $() now means $$/, @() means @$/, %() means %$/, etc 223 232 * Added identity values for the builtin reduceable operators from S03 224 233 * Implement hyperfold and hyperscan: [>>+<<] and [\>>+<<] 225 234 * Unicode support for the embedded Perl5 bridge. (This takes effect iff 226 235 the embedded Perl supports SvUTF8_on, typically Perl 5.8+.) 227 * Pugs.Parser: Support for attribute call syntax .236 * Pugs.Parser: Support for attribute call syntax 228 237 @.foo(1, 2, 3); # self.foo(1,2,3).'@' 229 238 $.bar: 4, 5, 6; # self.bar(4,5,6).'$' 230 239 231 240 * Remove support for reduce+posthyper form "[+]<<" because as specced the 232 hyper will recurse into arrays, so the reduce never got a chance to run .241 hyper will recurse into arrays, so the reduce never got a chance to run 233 242 * Support for instance default expressions (which are evaluated in 234 243 Class composition time, not in instance creation time): … … 238 247 * Much improve multi dispatch system 239 248 * Implement quantified method calls: $obj.*meth, $obj.+meth, $obj.?meth, 240 as well as quantified dynamic method calls: $obj.[+*?]$meth .249 as well as quantified dynamic method calls: $obj.[+*?]$meth 241 250 * User-defined macros now take effect even in prefix unary 242 and optional unary .251 and optional unary 243 252 * "Odd numbers of elements in hash" is now made fatal 244 253 (it was not even a warning) to help shake out incorrect 245 usages of things like 1<2> .254 usages of things like 1<2> 246 255 * Pugs.Prim.Keyed: Instead of allowing "1.delete();" to return undef, 247 we now simply fail .256 we now simply fail 248 257 * Pugs.Eval: Autovivification is now constrainted by typed variables: 249 258 my Hash $x; 250 $x[0] = 1; # fails, as $x can _only_ vivify to Hash .251 * Implement rudimentary "fail" control via $*FAIL_SHOULD_DIE .259 $x[0] = 1; # fails, as $x can _only_ vivify to Hash 260 * Implement rudimentary "fail" control via $*FAIL_SHOULD_DIE 252 261 * Changed $obj ~~ Pkg::Name to $obj ~~ ::Pkg::Name 253 * Support for PRE/POST design-by-contract assertions .262 * Support for PRE/POST design-by-contract assertions 254 263 * Support for KEEP/UNDO blocks 255 264 * Pugs.Prim: Add "&leave" to leave a block, "&break" to break … … 271 280 @obj\ .>>\ .meth 272 281 * Reject named arguments that cannot find a matching named 273 parameter or slurpy hash .282 parameter or slurpy hash 274 283 sub f () {...} 275 284 f(y => 1); # used to bind silently, but now no more 276 * "for 1..3 { $_++ }" should die, not survive. 277 * Primitive support for =@Array on both contexts. 278 * Implement "s[...]=..." and deprecate "s[...][...]" 279 * Remove Judy from the Pugs build process. 280 * Make system() nonfatal always; instead it merely sets $!. 281 282 283 XXX audreyt and gaal? 285 * "for 1..3 { $_++ }" should die, not survive 286 * Primitive support for =@Array on both contexts 287 * Remove Judy from the Pugs build process 288 * Make system() nonfatal always; instead it merely sets $! 284 289 285 290 == Bug Fixes … … 288 293 its list elements. This fixes the case of: 289 294 for %h.pairs -> $p { ... } 290 which used to make $p contain a seq instead of a pair .295 which used to make $p contain a seq instead of a pair 291 296 * Allowed double-right-parens to end a "parens" structure: 292 297 (@(1)) 293 298 (@::("foo")) 294 now all parses correctly without needing a whitespace .299 now all parses correctly without needing a whitespace 295 300 * Repaired quantified method calls with .*$method by treating 296 .* always as quantifier and never as globalizer .301 .* always as quantifier and never as globalizer 297 302 * "%x<>" now means "%x{}" -- that is, interpolating the entire hash -- 298 rather than "" .303 rather than "" 299 304 * Parse for "class Foo is also {...}" instead of having Foo 300 inherit from ::also .301 * Implement &sub.call(\(...capture...)) correctly .305 inherit from ::also 306 * Implement &sub.call(\(...capture...)) correctly 302 307 * Pugs.Parser: Parse for 303 308 repeat { 304 309 } 305 310 while 1; 306 * Pugs.Eval: Allow "redo" to redo the first repeat loop .311 * Pugs.Eval: Allow "redo" to redo the first repeat loop 307 312 (repeat.t now all passes.) 308 313 * "sub f ($x is lazy) {...}" is now guaranteed to not evaluate 309 its argument more than once .314 its argument more than once 310 315 * Switch chained comparison such as "1 > 2 > die('not reached') 311 to use "is lazy" parameters, so they can short-circuit properly .316 to use "is lazy" parameters, so they can short-circuit properly 312 317 * Fix expected outut of head-neck-tail in examples/: 313 [1,2,3].say should print "1 2 3\n", not "123\n" .318 [1,2,3].say should print "1 2 3\n", not "123\n" 314 319 * Fix take [1,2,3]" shouldn't flatten into "take 1,2,3 315 320 * fix a couple of old s{}{} instances. comb potentially faster using lvalue 316 substr instead of copying string .317 * ".perl" now returns Unicode strings properly .321 substr instead of copying string 322 * ".perl" now returns Unicode strings properly 318 323 319 324 == Perl 6 on Perl 5 (under [misc/pX/Common/]) … … 324 329 * .WHAT method implemented 325 330 326 XXX fglock: please write more here .331 XXX fglock: please write more here 327 332 328 333 == Perl 5 to Perl 6 Translater (under [misc/pX/Common/P5_to_P6_Translation]) 329 334 330 XXX Sage: please write something here .335 XXX Sage: please write something here 331 336 332 337 … … 658 663 * Passes 91% of the main test suite (including TODO failures) 659 664 * Integrated with MetaModel 1.0 660 * Faster code generation, taking advantage of `-CPerl5` output .665 * Faster code generation, taking advantage of `-CPerl5` output 661 666 * Switched to continuation passing style (CPS) to properly support 662 667 `return()`, `&?CALLER_CONTINUATION`, coroutines, and `sleep()` … … 717 722 === New Perl 6 modules 718 723 719 * Perl6-Container-Array, Perl6-Value-List :720 prototype modules for implementing Lazy lists in Perl 6. 724 * Perl6-Container-Array, Perl6-Value-List 725 ** Prototype modules for implementing Lazy lists in Perl 6 721 726 * Log-Selective 722 727 * Cipher - Cipher API suite for cryptographic ciphers … … 755 760 ** Configuration preferences are stored in `config.yml` 756 761 ** Persists across builds, overridable via `%*ENV<PUGS_BUILD_OPTS>` 757 * `$CALLER::_` is now again usable in defaults .762 * `$CALLER::_` is now again usable in defaults 758 763 * JavaScript Backend 759 764 ** Actively progressing in `perl5/PIL2JS`
