August 2008

Sun Mon Tue Wed Thu Fri Sat
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Recently on this blog
Recently on other blogs

Map

Audrey

My Photo

License

« Pugs 6.2.11-pre0 calls for test. | Main | Pugs 6.2.11 released! »

2006.02.02

Changes for Pugs 6.2.11.

Bundled Modules

New Perl 6 modules

Updated modules

  • ext/File-Spec/ - Rewritten to define its own exported wrapper subs
  • ext/Locale-KeyedText/ - Rewrote with a strong resemblence to the original
    • Split up translate_message() for more granular Translator usage
    • Objects now become something useful when coerced into a string
    • Added Locale::KeyedText::L::en , LKT now throws Message exceptions
    • Template Modules now have a different variable interpolation format
    • Created 2 running examples/ from pod that was removed from KeyedText.pm
    • Deleted old test suite (yet to be replaced); now only tests compilation
  • ext/libwww-perl - Rewrote HTTP::Header::Util with gather/take syntax
  • ext/Test - &fail renamed to &flunk to avoid conflict with builtin

Experimental modules (in misc/, not installed)

  • misc/Parser-Mini/ - Experimental thin p6 parser
  • misc/Rosetta-Incubator/ broken up:
    • Locale::KeyedText was merged into the rewritten one in ext/
    • SQL::Routine and Rosetta were merged together, became Rosetta in ext/
    • The license of Rosetta is now GPL (with extra linking provision)
    • Remainder (SQLBuilder, SQLParser, Eng/Generic, Emu/DBI) was deleted
  • misc/sixpan/ - Prototype of new CPAN tools in Perl 5

Test, Examples and Documentations


Feature Changes

  • Adverbial number forms: :16<deadbeef> and :16[14,15]
    • This change obsoletes hex() and oct()
  • Calling private methods with self!method
  • Deep eager sequential evaluation (aka steamroll ) operator &prefix:<**>
  • Multisub declarations in the same scope can now be exported selectively
  • Named arguments are now decided at parse time, not as runtime Pair objects
  • New YAML tree-dump backends: -C Parse-YAML , -C PIR-YAML , -C PIL1-YAML
  • New \x[abcd] and \x[1,2,3,] forms instead of \x{abcd} in qq-strings
  • New backend: -CParse-Pretty , to show a pretty parse tree
  • Parameter syntax changes:
    • +$arg becomes :$arg
    • ++$arg and +$arg is required becomes :$arg!
    • ?$arg becomes $arg?
  • Round-trip data serialization with .yaml and eval(..., :lang<yaml>)
  • Support for multiline inputs in interactive shell
  • The build system now supports Cygwin again
  • Two or more underscores in numbers (eg. 1__0 ) is no longer accepted
  • Unary ^ support: ^10 is a shorthand for 0..^10
  • $+x is now accepted as a shorthand for $CALLER::x
  • $CALLER::x now only sees env $x in outer dynamic scopes, not my $x
  • $obj.clone support
  • %*INC now contains module interface structures, not file system pathnames
  • &die and &fail can take an object argument without stringifying it
  • eqv is now spelled ===
  • pugs file.p6 --options now passes options to the program, not to Pugs
  • self is an alias for $?SELF
  • use Module now imports its symbols lexically at the consumer's use time
  • use Perl-6 parses correctly now

Bug Fixes

  • Bareword foo.bar now always parses as ::foo.bar , never foo(.bar)
  • Binding a block to &infix:<operator> in BEGIN time now affects parsing
  • Fixed embedding of threaded parrot
  • Fixed evaluation order in array and hash access
  • Fixed splice on scalar
  • Improved detection of null patterns; this fixes some endless loops
  • Improved hash parsing. {("a"=>3),}.ref is again ::Hash, not ::Block
  • Infix macros no longer cause parsefail
  • Lazy {...} executes its closure at most once
  • Method calls on simple index lookups now gets dispatched correctly
  • Parse (but no implementation) for scoped packages
  • When m:P5/(...)?/ captures nothing, $0 no longer evaluates to true
  • $.foo.bar() correctly dispatches on the runtime type of $.foo
  • &splice was destroying existing bindings on the array
  • .perl stringification now escapes unprintable characters
  • 1**Inf , 0**0 and Inf**0 are defined to 1 regardless of architecture
  • 3..2 and 'z'..'a' return empty lists
  • (1,2,3,4).elems no longer throws an exception
  • zip(@a; @b; @c) no longer flattens the arrays together

Backends

JavaScript backend

  • Division by zero raises an error, not return NaN like JS does
  • Fix problems with [=>] and related operators
  • New operators implemented: +| +& +^ +< +> ~& ~| ~^ +^ ~^
  • PIL/JS compilation now works with exported multisubs
  • Support for using Perl 5 modules in JavaScript backend via -B JS-Perl5
  • $*PID
  • .assuming
  • FIRST {...} blocks
  • state $variable
  • unlink()

Parrot backend

  • Parrot 0.4.1+ is now required for Parrot targeting and embedding
  • Closure creation no longer triggers segfaults
  • Lexical variables are now truly lexical instead of emulated by temps
  • Upon program exit, embedded Parrot/Perl5 objects are finalized correctly
  • Support for modules with lexical imports
  • When looking for an external parrot, look in %ENV<PARROT_PATH> first

PIL^N backend

  • New VM written in Haskell which uses the domain specific language PIL^N
    • Based on the Perl6-ObjectSpace prototype
    • Optionally built with make pil (and interactively as make pili )
    • See src/PIL/Native/ for the source code
  • Class Meta-Model written and bootstrapped in PIL^N
    • Basic tests for Meta-Model in t/pil/
  • Role Meta-Model partially complete in PIL^N
  • Some basic Container types written in PIL^N
  • Haskell implementation of Perl 6 Rules and precedence parser

Perl6-ObjectSpace

  • Prototype Perl 5 backend, served as the inspiration for the PIL^N backend
  • Core set of native types written in Perl 5
    • Class Meta-Model bootstrapped using only the native types
    • Role Meta-Model and Container types not yet supported
  • Based on work from the perl5/Perl6-MetaModel/

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d83451e8fb69e200d834aa841e69e2

Listed below are links to weblogs that reference Changes for Pugs 6.2.11.:

Comments

audrey - you are an insane coder. i am glad you are on our side. thanks for your hard work and insane output.

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment