[RELEASE] Pugs 6.2.9 released!

4 views
Skip to first unread message

Autrijus Tang

unread,
Aug 3, 2005, 3:37:55 PM8/3/05
to perl6-c...@perl.org, perl6-a...@perl.org
I am glad to announce Pugs 6.2.9, released during Ingy's OSCON talk:

http://pugscode.org/dist/Perl6-Pugs-6.2.9.tar.gz
SIZE = 1439642
SHA1 = efd32419dcddba596044a42564936888a28b3c69

Following last month's plan, this release features a Perl6/PIL to javascript
code generator, written in Perl 5, currently passing 64% of the test suite.

We also see the beginning of a code generator from PIL to perl5, and a
self-representing Perl 6 object model prototype. The new PIL design and
runcore is also progressing nicely, which should give a more robust
specification to Perl 6's compile time and runtime semantics.

A live CD is available as usual, courtesy of Ingo Blechschmidt:

http://linide.sf.net/pugs-livecd-6.2.9.iso

Ingy's slides are under the Pugs tree as docs/talks/oscon-apocalypse.spork and
online at http://www.kwiki.org/apocalypse/start.html in HTML.

All in all, it's a lot of fun. Check out the two movies we made for the
OSCON talk as well:

http://no.perlcabal.org/~autrijus/oscon05-autrijus.mp4
http://no.perlcabal.org/~autrijus/oscon05-stevan.mp4

Change the ".mp4" to ".swf" or ".wmv" for alternate video formats.

Enjoy!
/Autrijus/

== Changes for 6.2.9 (r6049) - Aug 4, 2005

=== Pugs Internals

* New build system in `inc/PugsBuild`
** Configuration preferences are stored in `config.yml`
** Presists across builds, overridable via `%*ENV<PUGS_BUILD_OPTS>`
* `$CALLER::_` is now again usable in defaults.
* JavaScript Backend
** Actively progressing in `perl5/PIL2JS`
** Passes 64.00% of the Pugs test suite
* Perl5 Backend
** Begun in `perl5/PIL-Run`
** Primitive interactive shell as `crude_repl.pl`
* Object MetaModel
** Perl 5 prototype is mostly self-hosting
** New C3-based method dispatch algorithm
** JavaScript version partially completed
** Java version begun (in very early stages)
* Pugs Intermediate Language
** New runcore design begun in `src/PIL`
** QuickCheck-based specification tests added
* Precompilation for arbitrary modules (not enabled by default)

=== Bundled Modules

* New Perl 6 modules:
** `MIME::Base64`
** `Recurrence`
** `Span`
* Additions to `libwww-perl`:
** `HTTP::Cookies`
** `HTTP::Query`
** `HTTP::Request::CGI`
** `HTTP::Status`
** `URI::Escape`
* Additions to `DateTime`:
** `DateTime::Set`

=== Test, Examples and Documentations

* Many new tests and test refactoring, we now have 8100+ tests
* A number of additions to `examples/cookbook`
* Beginning of Rule-based grammars for Perl6 in `modules/Grammars`
* SVG generation examples in `examples/graphics`
* `STATUS` document added to the top level to keep track of current progress
* `docs/notes/plan` expanded and added macro-related issues
* `examples/algorithms/Newton.pm` implements the newton method with currying
* `examples/network/evalbot.p6` gets safe &print primitive
* `examples/network/seenbot.p6` gets pretty duration printing
* `examples/network/svnbot.p6` supports branch information
* `examples/ppt/cat.p6` added to Perl Power Tools
* iblech's LUGA talk as `Anatomie_eines_Compilers_am_Beispiel_von_Pugs.latex`
* ingy's OSCON talk as `oscon-apocalypse.spork`

=== Bug Fixes

* Fix pair binding for functions expecting pairs as arguments
* Global destruction is now guaranteed upon program exit
* Parameter's defaults are now evaluated in its original lexical scope
* Parser for hash subscripting was globbing whitespaces after it
* Primitive listops now handles Pairs as regular arguments
* Various `+$foos` in sub signatures changed to `?$foo` in `Test.pm`
* `%h<x>>` was misparsed as `%h{'x>'}`
* `-Inf` now stringifies as `-Inf`, not `-Infinity`
* `.end` and `.elems` no longer work as scalar methods
* `/a/ ~~ "a"` now works the same way as `"a" ~~ /a/`

Carl Franks

unread,
Aug 4, 2005, 3:37:11 AM8/4/05
to Andrew Shitov, perl6-compiler
> why do we have to give up a space when calling functions under Pugs?
>
> A need to type open('file.txt') instead of open ('file.txt') makes
> me perplexing (not perl-flexing ;-) Our recent discussions in 'zip with()'
> gave no answer.

Not sure whether it's enough of an answer, but see:
http://dev.perl.org/perl6/doc/design/syn/S04.html#Statement_parsing

Cheers,
Carl

Andrew Shitov

unread,
Aug 4, 2005, 2:55:12 AM8/4/05
to perl6-c...@perl.org
> I am glad to announce Pugs 6.2.9, released during Ingy's OSCON talk:

> http://pugscode.org/dist/Perl6-Pugs-6.2.9.tar.gz
> SIZE = 1439642
> SHA1 = efd32419dcddba596044a42564936888a28b3c69

> Following last month's plan, this release features a Perl6/PIL to javascript
> code generator, written in Perl 5, currently passing 64% of the test suite.

> We also see the beginning of a code generator from PIL to perl5, and a
> self-representing Perl 6 object model prototype. The new PIL design and
> runcore is also progressing nicely, which should give a more robust
> specification to Perl 6's compile time and runtime semantics.

> A live CD is available as usual, courtesy of Ingo Blechschmidt:

> http://linide.sf.net/pugs-livecd-6.2.9.iso

> Ingy's slides are under the Pugs tree as
> docs/talks/oscon-apocalypse.spork and
> online at http://www.kwiki.org/apocalypse/start.html in HTML.

> All in all, it's a lot of fun. Check out the two movies we made for the
> OSCON talk as well:

> http://no.perlcabal.org/~autrijus/oscon05-autrijus.mp4
> http://no.perlcabal.org/~autrijus/oscon05-stevan.mp4

> Change the ".mp4" to ".swf" or ".wmv" for alternate video formats.

Very simple question:

why do we have to give up a space when calling functions under Pugs?

A need to type open('file.txt') instead of open ('file.txt') makes
me perplexing (not perl-flexing ;-) Our recent discussions in 'zip with()'
gave no answer.

--
___________________________________________________________________________
Andrew, an...@shitov.ru
___________________________________________________________________________

Andrew Shitov

unread,
Aug 4, 2005, 5:55:40 AM8/4/05
to perl6-c...@perl.org
> why do we have to give up a space when calling functions under Pugs?

>> Not sure whether it's enough of an answer, but see:
>> http://dev.perl.org/perl6/doc/design/syn/S04.html#Statement_parsing

it says:

if $term ($x) # syntax error (two terms in a row)


if this cause an error, why not treat '$term ($x)' as a function call.
At least when $term is not some abstract variable but valid name of simple
function.

Carl Franks

unread,
Aug 4, 2005, 6:24:08 AM8/4/05
to perl6-compiler
> > why do we have to give up a space when calling functions under Pugs?
>
> >> Not sure whether it's enough of an answer, but see:
> >> http://dev.perl.org/perl6/doc/design/syn/S04.html#Statement_parsing
>
> it says:
>
> if $term ($x) # syntax error (two terms in a row)
>
> if this cause an error, why not treat '$term ($x)' as a function call.
> At least when $term is not some abstract variable but valid name of simple
> function.

(I have nothing to do with the design process, so this is just my take on it)...

I get the impression that driving these sort of decisions, is the
historical problem we've had with only `perl` being able to parse
Perl.
Syntax is getting tightened up a little, with the result that perl6
programs are much more easily read, with the intention of allowing
different compiler implementations.

Also, we can only know if $term contains a valid subroutine name at
runtime, and perl6 aims to allow very separate compilation and runtime
phases (and syntax errors need to be figured out at compilation time).

Carl

Autrijus Tang

unread,
Aug 4, 2005, 8:21:18 AM8/4/05
to Andrew Shitov, perl6-c...@perl.org
On Thu, Aug 04, 2005 at 10:55:12AM +0400, Andrew Shitov wrote:
> why do we have to give up a space when calling functions under Pugs?
>
> A need to type open('file.txt') instead of open ('file.txt') makes
> me perplexing (not perl-flexing ;-) Our recent discussions in 'zip with()'
> gave no answer.

This is so:

print (1+2)*3;

can print 9, instead of 3.

However, all three forms below should still work:

open('file.txt');
open ('file.txt');
open 'file.txt';

Thanks,
/Autrijus/

Brano Tichý

unread,
Aug 4, 2005, 9:10:05 AM8/4/05
to perl6-c...@perl.org
Thus spake Autrijus:

>
> This is so:
>
> print (1+2)*3;
>
> can print 9, instead of 3.

>

Just a newbie question: what would

print (1+2)x3;

print (or do)? And is

print .(1+2)*3

allowed?

brano tichý

Carl Franks

unread,
Aug 4, 2005, 9:45:49 AM8/4/05
to perl6-compiler
I've just realised I quoted the wrong doc earlier, I meant to link to:
http://dev.perl.org/perl6/doc/design/syn/S12.html#Methods

.doit () # ILLEGAL (two terms in a row)
.doit .() # okay, no arguments, same as .doit()

I had wrongly thought this also applied to subroutine calls, and that
the OP's open ('file.txt'); was illegal. I stand corrected!

Cheers,
Carl

Andrew Shitov

unread,
Aug 4, 2005, 1:29:21 PM8/4/05
to perl6-c...@perl.org
>>
>> print (1+2)*3;
>>
>> can print 9, instead of 3.

I'd prefer always have '3' (as a result of sum 1 + 2) here.
A C-programmer would tread this like

(print (1 + 2) * 3); # prints int, then returns void

> print (or do)? And is
>
> print .(1+2)*3
>
> allowed?

in fact, that is exactly

(print.getArgument(3) * 3); the same as above.

so why not 'print($x)' == 'print ($x)' ;-)

--
Andrew.

Larry Wall

unread,
Aug 6, 2005, 1:08:26 AM8/6/05
to perl6-c...@perl.org
On Thu, Aug 04, 2005 at 09:29:21PM +0400, Andrew Shitov wrote:
: in fact, that is exactly

:
: (print.getArgument(3) * 3); the same as above.
:
: so why not 'print($x)' == 'print ($x)' ;-)

Because most people's expectations diverge from yours, actually, and
we got tired of answering the FAQ. On top of which, we think it's
probably easier to retrain you than the typical newbie. :-)

Plus we got rid of Perl-5's no-op unary +, so instead we're using
whitespace to force it to be a list operator. But the overriding
reason is that we're trying to be consistent about using whitespace
to distinguish postfix operators from binary operators or terms when
it's ambiguous. We also consisently allow dot to force it the other
way even in the presence of whitespace. If you were to add a ++ binary
operator, it would be distinguished from postfix ++ by whitespace.
But .++ would be the postfix anyway.

Larry

Andrew Shitov

unread,
Aug 6, 2005, 3:17:23 AM8/6/05
to perl6-c...@perl.org
>> : so why not 'print($x)' == 'print ($x)' ;-)

> Plus we got rid of Perl-5's no-op unary +, so instead we're using


> whitespace to force it to be a list operator.

Thanks! I've got the idea.

I'd better refuse parenthesis than a space here. I think I'll never
drop space in a function call if it can be overcome :-)

Reply all
Reply to author
Forward
0 new messages