Re: Support for ensuring invariants from one loop iteration to the next?
On Dec 3, 2008, at 7:14 AM, Aristotle Pagaltzis wrote: --snip-- Does Perl 6 have some mechanism so I could write it along the following obvious lines? my $i; while ( @stuff ) { $_->do_something( ++$i ) for @stuff; } # plus some way of attaching this fix-up just once { @stuff = grep !$_->valid, @stuff } In Perl 5 or Perl 6, why not move the grep() into the while()? my $i; while ( @stuff = grep !$_->valid, @stuff ) { $_->do_something( ++$i ) for @stuff; } Perl 5 example: $ perl -wle '@z=qw(a bb ccc); while (@z = grep { length($_) < 4 } @z) { print "@z"; $_ .= "." for @z }' a bb ccc a. bb. a.. By the way, your use of '!$_->valid' instead of '$_->valid' sounds backwards when compared with your text "...assume that [EMAIL PROTECTED] will contain only valid elements". -- Hope this helps, Bruce Gray (Util of PerlMonks)
Re: perl6 compiler
On Mar 14, 2010, at 11:09 AM, dell wrote: Is perl6 actually compiled then ran similar to java or is the script ran and then compiled at run time? It supports either, but defaults to single-step compile-run (like Perl 5). I think that a transparent cache is envisioned for the future, so that a compiled version is silently saved during the first compile- run, and future runs check the timestamps of the source and compiled versions, skipping the compile if the source has not been updated. -- Hope this helps, Bruce Gray
Re: Bug?
On Jul 14, 2011, at 4:47 PM, Parrot Raiser wrote: When a subroutine is invoked with an empty parameter list, as follows: run_stuff(); sub run_stuff { my ($parm) = @_; say "Parameter is $parm"; } @_[0] contains "Any()". Should it? Yes, but only because of the way you are inspecting it. When run_stuff is called with no arguments, @_ is empty. It does *not* contain an element with the value Any; it contains no elements at all. When you ask for the value of a specific (and non-existent) element of the array, you only see that the element has no defined value yet. (The `Any` value in Perl 6 is like the `undef` value in Perl 5.) The same will happen if you declared @foo, then asked for the value of @foo[42]. perl -MData::Dumper -e 'sub look { print Dumper scalar(@_), \@_, $_[0]; } look();' $VAR1 = 0; $VAR2 = []; $VAR3 = undef; perl6 -e 'sub look { .say for @_.elems, @_.perl, @_[0].perl; }; look();' 0 [] Any -- Hope this helps, Bruce Gray (Util)
Re: Recursive lazy lists?
On Jul 30, 2011, at 8:30 AM, Mark J. Reed wrote: --snip-- Does Perl6's variety of laziness support this sort of definition? It's not an infinite list; zipWith stops zipping as soon as either list is empty. But the self-reference in the definition means it still has to be computed lazily. Yes, Perl 6 does support laziness in this sort of definition, via "run- time binding". I was delighted to find that it already works in Rakudo! (We also support Haskell's cool pictogram-style declarations.) Here is a quick conversion of the Haskell solution into Perl 6; its output (when run in Rakudo) exactly matches the output of my iterative Perl 6 solution (http://rosettacode.org/mw/index.php/Gray_code#Perl_6): our multi sub infix: ( $x, $y ) { ( $x + $y ) % 2 }; multi bin_to_gray ( [] ) { [] } multi bin_to_gray ( [$head, *@tail] ) { return [ $head, ( @tail Zxor2 ($head, @tail) ) ]; } multi gray_to_bin ( [] ) { [] } multi gray_to_bin ( [$head, *@tail] ) { my @bin := $head, (@tail Zxor2 @bin); # Note the recursive definition via bound array return @bin.flat; } for ^32 -> $n { my @b = $n.fmt('%b').comb; my $g = bin_to_gray( @b ); my $d = gray_to_bin( $g ); printf "%2d: %5b => %5s => %5s: %2d\n", $n, $n, $g.join, $d.join, : 2($d.join); die if :2($d.join) != $n; } -- Hope this helps, Bruce Gray (Util of PerlMonks)
Re: Recursive lazy lists?
On Jul 30, 2011, at 6:40 PM, Mark J. Reed wrote: On Sat, Jul 30, 2011 at 6:02 PM, Bruce Gray wrote: --snip-- our multi sub infix: ( $x, $y ) { ( $x + $y ) % 2 }; Why did you need to define this yourself instead of just using +^ ? Umm, because that is what was done in the Haskell code I was translating? That is my only excuse for my oversight. You are correct; in fact, Solomon Foster already pointed this out to me, and I have already posted the revised version on RC as a second solution: http://rosettacode.org/wiki/Gray_code#Perl_6 -- Hope this helps, Bruce Gray (Util of PerlMonks)
Re: How to make a new operator.
On Mar 21, 2012, at 11:49 PM, Jonathan Lang wrote: What I want to know is whether there's a way to define a step function that's based in part or in whole on the current term's index. For example, how would I use infix:<...> to generate the perfect squares between 0 and 100? Namely, '0,1,4,9,16,25,36,49,64,81,100'. For example, is Perl 6 set up to try to pass the current element's index into the step function by means of a named parameter? I would hope for something like: -> :index { $index * $index } ... 100 or 1, *+:index ... * # 1,3,6,10,15,21,28,36,45,... (Note: I _don't_ expect the above to work as is; they're merely intended to convey a rough idea of what I _do_ want.) If not, how _would_ I generate these lists? In real life, you would just use this: my @squares = map { $_ * $_ }, 0..10; or, for an infinite list, use a binding instead of an assignment: my @squares := map { $_ * $_ }, 0..*; But you were asking about ... specifically :^) I have run into the same need for something like :index, while playing with RosettaCode tasks like "Continued_fraction". Your "squares" example will be clearer than the RC tasks. At first, I tried to trick the compiler, by *binding* the list to an array, then referring to that bound array from within the closure. my @squares := 0, { @squares.elems ** 2 } ... *; This worked, but only as an artifact of the then-current Rakudo implementation. It is not specced to work, and I was told in freenode/#perl6 not to rely on that behavior. On freenode/#perl6, I was pointed to part of the spec that I had overlooked. The "sequence operator" is defined in S03: http://perlcabal.org/syn/S03.html#List_infix_precedence Buried in its definition is this gem: http://perlcabal.org/syn/S03.html#line_1884 The function may also be slurpy (n-ary), in which case all the preceding values are passed in (which means they must all be cached by the operator, so performance may suffer, and you may find yourself with a "space leak"). That means that this will work: sub sq_gen (*@a) { @a.elems ** 2 }; my @squares = 0, &sq_gen ... {$_ >= 100}; say ~@squares; (Note that the asterisk in "*@a" is mandatory) or, infinitely: sub sq_gen (*@a) { @a.elems ** 2 }; my @squares := 0, &sq_gen ... *; say ~@squares[^11]; Great! However, I wanted to do it inline, without a separately-defined sub. If it wasn't for that required asterisk, then I could use a placeholder variable to do this: my @squares = 0, { @^a.elems ** 2 } ... {$_ >= 100}; FAIL! (Niecza) Unhandled exception: Nominal type check failed in binding '@a' in 'ANON'; got Int, needed Positional The last piece of the puzzle is the "arrow sub" syntax, more commonly seen in "for" loops: my @squares = 0, (-> *@a { @a.elems ** 2 }) ... {$_ >= 100}; Or, more concisely: my @squares = 0, -> *@a { +@a ** 2 } ... * >= 100; This works! Well, it works in Niecza. It does not (yet) work in Rakudo: 15:25 perl6: my @squares := 0, (-> *@a { @a.elems ** 2 }) ... *; say ~@squares[^11]; 15:25 ..niecza v15-4-g1f35f89: OUTPUT<<0 1 4 9 16 25 36 49 64 81 100NL>> 15:25 ..rakudo 1a468d: OUTPUT<<0 0 0 0 0 0 0 0 0 0 0NL>> For your second example (1,3,6,10,15,21,28,36,45,...), it would look like this: my @triangle = 1, (-> *@a { @a[*-1] + @a.elems + 1 }) ... {$_ >= 45}; Note that this particular sequence is just the "triangle numbers", which has a shorter form via triangular reduce: my @triangle = [\+] 1..9; After writing all the above, it occurred to me that the use of @_ should implicitly define a closure as slurpy/n-ary. That would remove the need for the arrow, and make the code much less ugly. Also, the first value (0) might be unnecessary. The spec says that it should not be required when the closure is 0-ary, but I think that should also be true for slurpy/n-ary closures. These work in Niecza: my @squares := { @_ ** 2 } ... *; my @triangle := 1, { @_[*-1] + @_ + 1 } ... *; -- Hope this helps, Bruce Gray (Util of PerlMonks)
Parrot 5.1.0 "Zombie Parrot" Released!
Flat on the bunk again, he ran for his life. The Parrot stalked him through the grey hours of morning, smoothing its fractal feathers, shuffling itself slowly into clarity as though at the end of a flashy film-dissolve, until at last his mind's eye had to acknowledge a shape, a shape, a wink -- From BLIT, a short story by David Langford http://www.infinityplus.co.uk/stories/blit.htm On behalf of the Parrot team, I'm proud to announce Parrot 5.1.0, also known as "Zombie Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 5.1.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/supported/5.1.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.1.0 News: - Core + The .sort() method was added to the FixedFloatArray PMC + Improved detection of system memory for machines with >2GB + Improved pbc_to_exe support for spacey paths + Fixed Parrot_io_readall_s allocating too much string space - Build + Fixed generated MANIFEST files to omit $destdir - Documentation - Tests + .readall now checks that prior reads are respected. - Community + Weekly IRC meetings have resumed. #parrotsketch Tuesdays at 1930 UTC The SHA256 message digests for the downloadable tarballs are: af26c2fcc806505ec516ebb013bdd37b218633f5fe63faaa6b843ffe55e0135e parrot-5.1.0.tar.bz2 2483963c1bec665be772cb40a71fd3d9d2621feca547932475017c81a2f7e49b parrot-5.1.0.tar.gz Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 19 Mar 2013. Enjoy! -- Bruce Gray (Util of PerlMonks)
Parrot 5.2.0 "Stuffed Parrot" Released!
I am not dead yet I can dance and I can sing I am not dead yet I can do the Highland Fling I am not dead yet No need to go to bed No need to call the doctor Cause I'm not yet dead -- Spamalot On behalf of the Parrot team, I'm proud to announce Parrot 5.2.0, also known as "Stuffed Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 5.2.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.2.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.2.0 News: - Core + IO now only syncs buffers for the IO types where syncing makes sense. = PIO_VF_SYNC_IO flag added - Build + installable_pdump now has the correct rpath (blib corrected to lib). - Libraries + Tcl/Glob.pir has been removed. (PGE/Glob.pir remains intact) - Ecosystem + All Parrot tarballs are now symlinked to the 'all' directory, regardless of their true homes ('devel' or 'stable'), to better allow for automated downloads. ftp://ftp.parrot.org/pub/parrot/releases/all/ The SHA256 message digests for the downloadable tarballs are: 1245d11f2b2ea44e6465aff6da5a533324d69b6eb3ddf7d84e81385ea95150ad parrot-5.2.0.tar.gz 0c538d780f9c70c510e142a8a663c30474125c9fcf9fe25d2129e68fc7baec8d parrot-5.2.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 16 Apr 2013. Enjoy! -- Bruce Gray (Util of PerlMonks)
Parrot 5.3.0 "W00tstock Parrot" Released!
We are stardust. Billion year old carbon. We are golden. Caught in the devil's bargain And we've got to get ourselves back to the garden. (To some semblance of a garden.) -- "Woodstock", by Joni Mitchell On behalf of the Parrot team, I'm proud to announce Parrot 5.3.0, also known as "W00tstock Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages, and currently focusing on Perl 6. Parrot 5.3.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.3.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.3.0 News: - Build + Files generated by `make cover` are now correctly cleaned by `make` and ignored by `git`. - Tests + Internal testing of the Configure probe for Fink now works correctly with the --verbose flag. + Tests added for .sort method of ResizableFloatArray and ResizableIntegerArray. [GH #926], [GH #927] + Benchmarks added for .sort methods of various Array objects. [GH #175] + Coverage analysis added for pbc_disassemble. The SHA256 message digests for the downloadable tarballs are: 79d6f1fe20645b0afbc496cd0d7850a78b8940230e7637c5356d780f5aa1750b parrot-5.3.0.tar.gz 4cff32521c79d8a783ad57d9a13e205ea3c1b1585085e0da80138b58b77d0ed5 parrot-5.3.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 21 May 2013. Enjoy!
Parrot 5.4.0 "Austin Parrot" Released!
Jimi Hendrix, deceased, drugs. Janis Joplin, deceased, alcohol. Mama Cass, deceased, ham sandwich. -- Austin Powers (making a list of friends from the Summer of Love) On behalf of the Parrot team, I'm proud to announce Parrot 5.4.0, also known as "Austin Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages, and currently focusing on Perl 6. Parrot 5.4.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.4.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.4.0 News: - Core + Implemented the coth() and acot() math functions. + Fixed chomp to only trim a newline when it ends the string. [GH #958] + Added readlink() and Parrot_file_readlink(), with tests. [GH #967] - Build + Parrot now detects the CPU model on Linux systems, as well as detecting more CPU models on BSD, Cygwin, Solaris, Win32, and Darwin. ARM v7 is also now recognized. [GH #962] - Documentation + Threads examples now have proper POD sections and useful descriptions with links to references. + Added main description for Task PMC. + Added descriptions to trig methods in Float PMC. - Tests + Added improved test coverage targets "cover_new" and "fullcover_new". + Improved tests for acot(), coth(), acot() math functions. + Added tests for options passed to debugger. + Updated native PBC test files for string, number, and integer, which resolved 11 TODOs in the test suite. [GH #959] + Fixed test for the auto/arch config step. - Release process + Added message digests to crow.pir. + Added in release.json: "release.type" can be "devel" or "supported". + Refactored common code to sub in auto_release.pl. - Community + Parrot is part of the Hackathon at YAPC::NA::2013, in Austin, TX, USA! http://www.yapcna.org/yn2013/wiki?node=Hackathons + Parrot has been accepted to Google Summer of Code 2013! + Currently there are two high-quality proposals being worked on: https://gist.github.com/sa1/5468408- parrot-libgit2 https://gist.github.com/denisboyun/5472762 - App::Parrot::Create The SHA256 message digests for the downloadable tarballs are: 4e37686911b446f5e5f2c0aa62138988ba0c411d2c5e2ba231d1a3421a85ad10 parrot-5.4.0.tar.gz 91d0e46fe3ef08e692e80756f26ee0e7311fe58e49d6c31f3f5180d4eb475696 parrot-5.4.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 18 Jun 2013. Enjoy!
Parrot 5.5.0 "Salvadori's Fig Parrot" Released!
Obi-Wan: That boy is our last hope. Yoda: No. There is another. -- Star Wars Episode V: The Empire Strikes Back On behalf of the Parrot team, I'm proud to announce Parrot 5.5.0, also known as "Salvadori's Fig Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 5.5.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.5.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.5.0 News: - Build + Configure options are now allowed to be quoted. + Fixed build on Win32. + Updated location of NQP on Win32. + Fixed Parrot::Distribution detection. - Documentation + Noted that RESPONSIBLE_PARTIES is mostly out of date. - Tests + Stopped testing native PBC on 64bit LE, due to lack of access to such machine. - Release + Added tool: make_upload_commands.pl - Community + Parrot has been awarded 3 student slots in Google Summer of Code 2013! This means that 3 lucky students will be on a paid internship from Google to work on these accepted proposals: = Saurabh Kumar - "Update parrot-libgit2 to latest libgit2 release" https://gist.github.com/sa1/5468408 http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/saurabh_kgp/11002 = Paweł Murias - "A Javascript backend for Rakudo" http://www.google-melange.com/gsoc/proposal/review/google/gsoc2013/pmurias/9002 = Denis Boyun - "Improve Web UI of App::Parrot::Create" https://gist.github.com/denisboyun/5472762 https://google-melange.appspot.com/gsoc/proposal/review/google/gsoc2013/chob_rock/9001 + YAPC::NA::2013 hosted 4 days of Hackathon, focusing on the next generation of Perl implementations. = Huge Success! + MoarVM was unveiled: https://github.com/MoarVM + P2 on Potion was debuted: http://perl11.org/p2/ The SHA256 message digests for the downloadable tarballs are: 408a45660483499106a35107a836a80da27269a6d54bb114ba6e2249b2b9e9da parrot-5.5.0.tar.gz eb7b7d461e627673e77f5e875154506054ce9950d63b263875d9272c7814fd30 parrot-5.5.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 16 Jul 2013. Enjoy!
Parrot 5.6.0 "Psittacosaurus" Released!
Psittacosaurus (...from the Greek for "parrot lizard")... notable for being the most species-rich dinosaur genus. Psittacosaurus is not as familiar to the general public as its distant relative Triceratops but it is one of the most completely known dinosaur genera. -- https://en.wikipedia.org/wiki/Psittacosaurus On behalf of the Parrot team, I'm proud to announce Parrot 5.6.0, also known as "Psittacosaurus". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 5.6.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.6.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.6.0 News: - Build + Makefile dependencies are now compatible with VMS make. - Documentation + The main README is now more helpful. The SHA256 message digests for the downloadable tarballs are: 8e2d2ddaff36c2c960236c94f868f0eea28740e306345ee42df84bcd9aa146a6 parrot-5.6.0.tar.gz 5cd1a7d413eee32fa9d1218b8475d810fbc7a80c4112a5590c8b060255f95fd7 parrot-5.6.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 20 Aug 2013. Enjoy!
Parrot 5.7.0 "Azure-rumped Parrot" Released!
Rock Concert Movement #237 - Taking the audience on a Jungian journey into the collective unconscious by using the shadow as a metaphor for the primal self that gets repressed by the modern persona and also by using an underground setting and labyrinth office design to represent both the depths of the psyche and the dungeon-like isolation of our increasingly mechanistic society which prevents people from finding satisfying work or meaningful connections with others. ... It's Time to Start! -- "Rock Concert Instruction Manual" Narrator, Blue Man Group On behalf of the Parrot team, I'm proud to announce Parrot 5.7.0, also known as "Azure-rumped Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 5.7.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.7.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.7.0 News: - Build + Fixed GH#976 - Cannot load PCRE library during install on gentoo x64. - Community + All three of our GSoC students passed their midterms, and are on track to complete their Parrot and Perl 6 projects on time. Congratulations to Saurabh Kumar, Paweł Murias, and Denis Boyun! The SHA256 message digests for the downloadable tarballs are: 0d07c210a8b90d368cde600351173b8c90a28d376379836ba36edf83acf7a21f parrot-5.7.0.tar.gz 73aacaecd81b7ef43689e9d23f641a690aabde524a2e60660d872dad82f7a337 parrot-5.7.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 17 Sep 2013. Enjoy!
Parrot 5.10.0 "Sun Conure" Released!
Great quotations are the wisdom of the tribe. They bridge time and space. They connect the living and the dead. The Talmud says the right quotation at the right moment is like "bread to the Famished." May you be Fed. -- from "Sunbeams: A Book of Quotations" [2nd ed], by Sy Safransky (Inadvertently creating a meta-meta-quote) On behalf of the Parrot team, I'm proud to announce Parrot 5.10.0, also known as "Sun Conure". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 5.10.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/5.10.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 5.10.0 News: - Core + Fixed bareword method names check for " in imcc [GH #1015] + Moved eval from eval.pmc to HLLCompile and use new packfile API. This is a prerequisite for --target=pbc in the HLLCompiler [GH #937] + Merged branch 'new-packfile-api' [GH #937] = Removed Eval PMC = IMCCompiler now returns PackfileView instead of Eval. = Added Parrot_pf_single_sub_by_tag() to packfile API. = Added first_sub_in_const_table() to PackfileView PMC as a stopgap until properly tagged subs are generated. - Build + Removed wrong -Wlogical-op exception for imcparser.c [GH #1015] + Fixed parsing for OpenGL 4.1 on OS X Mavericks. [GH #1016] - Documentation - Tests - Community The SHA256 message digests for the downloadable tarballs are: 417d504ccf557528d179c9f25df4f8430d5ec1e703ea63126d722452bfd38be3 parrot-5.10.0.tar.gz 6030f72adccdb577a8e781e3d81c52dc60d68c6a9e2be626db3cff69e1f36ce5 parrot-5.10.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 17 Dec 2013. Enjoy!
Parrot 6.0.0 "Red-necked Amazon" Released!
May your pleasures be many, your troubles be few. -- Cast of "Hee Haw" On behalf of the Parrot team, I'm proud to announce Parrot 6.0.0, also known as "Red-necked Amazon". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 6.0.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/supported/6.0.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 6.0.0 News: - Core - Build - Documentation + Fixed bad IPv6 examples in pdd22_io, thanks to Zefram++ [GH#1005] - Tests + Fixed failure in t/configure/062-sha1.t. + Updated to Unicode 6.3 (libicu5.2): U+180e Mongolian Vowel Separator is no whitespace anymore [GH #1015] - Community The SHA256 message digests for the downloadable tarballs are: e150d4c5a3f12ae9d300f019bf03cca58d8e8051dd0b934222b4e4c91160cd54 parrot-6.0.0.tar.gz 6cb9223ee389a36588acf76ad8ac85e2224544468617412b1d7902e5eb8bd39b parrot-6.0.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 18 Feb 2014. Enjoy!
Parrot 6.2.0 "Imperial Amazon" Released!
Beside him, Melvin and Lavender and Allen all seemed to feel like marching too. And Neville softly began to sing the Song of Chaos. The tune was what a Muggle would have identified as John Williams's Imperial March, also known as "Darth Vader's Theme"; and the words Harry had added were easy to remember. Doom doom doom Doom doom doom doom doom doom Doom doom doom Doom doom doom doom doom doom DOOM doom _DOOM_ Doom doom doom-doom-doom doom doom Doom doom-doom-doom doom doom Doom doom doom, doom doom doom. By the second line the others had joined in, and soon you could hear the same soft chant coming from nearby parts of the forest. And Neville marched alongside his fellow Chaos Legionnaires, strange feelings stirring in his heart, imagination becoming reality, as from his lips poured a fearful song of doom. -- Harry Potter and the Methods of Rationality http://hpmor.com/chapter/30 On behalf of the Parrot team, I'm proud to announce Parrot 6.2.0, also known as "Imperial Amazon". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 6.2.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/6.2.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 6.2.0 News: - Core + Re-enable old immc flags for parrot and parrot_old, such as -On -a -v -y -E -dxx. [GH #1033] + Fixed imcc -O1 and -O2 -O1 fixes: = Special-case get_global for branch_cond_loop_swap, which broke NCI tests [GH #1037] = set_addr label does mark a basic_block, dead_code_remove() needs the label. Fixes nqp [GH #1061]. -O2 used_once fixes: = Allow used_once elimination only for purely functional ops without side-effects [GH #1036] = Empty ins->next in deletion [GH #1042]. -O2 constant propagation fixes: = Empty ins->op ptrs when deleting or skipping certain instruction [GH #1039], = Wrong logic leading to missed detecting writes from get_results [GH #1041], = Propagate only matching types in setters [GH #1042], = Stop at yield or invokecc for possible push_eh/pop_eh non-local effects [GH #1044] + Fixed TT #1930, a floating point optimizer problem on PPC + Added cache iterators in encoding_find_*cclass [GH #1027] to speedup the utf8 pattern "scan a whole string for newlines". - Build + Set emacs buffer-read-only:t tags in generated files [GH #1034] + Provide coda for generated include/*.pasm files [GH #1032] + Fix parser for bison 3 [GH #1031] + Add support for __builtin_expect LIKELY/UNLIKELY branch optimizations in a new auto::expect step. [GH #1047] - Deprecations + Warn on deprecated usage of append_configure_log() - Documentation + Updated pod for parrot and tools/build/c2str.pl - Tests + Added -O1 and -O2 to fulltest - Community + Parrot has been accepted to Google Summer of Code 2014 + Got a candidate for "Improve performance of method signatures" The SHA256 message digests for the downloadable tarballs are: a4c97e5974cf6e6ee1e34317aafd2d87a3bd63730098a050d4f09802b13da814 parrot-6.2.0.tar.gz f8b9cd2d558a1517038dc3154343f622ab1fd7b1f1d13f41a5c6dd51425bfe8e parrot-6.2.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 15 Apr 2014. Enjoy!
Parrot 6.4.0 "Double-eyed Fig Parrot" released!
(Dateline: 2014-05-21) On behalf of the Parrot team, I'm proud to announce Parrot 6.4.0, also known as "Double-eyed Fig Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 6.4.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/6.4.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 6.4.0 News: - Examples + Enhance shootout/regexdna.pir to test GC write barrier crashes - Community + Our GSOC project did officially start. See https://github.com/ZYROz/parrot The SHA256 message digests for the downloadable tarballs are: 025bfe953211d09af6a4d80b13b4e7fef2bfaa055963b76f1bf674440c0cdbba parrot-6.4.0.tar.gz 419ddbd4c82b08e4ab1670a67c2a222120d34090413e2d4ecef9cb35f9b0bef0 parrot-6.4.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is 17 Jun 2014. Enjoy!
Parrot 6.6.0 "Parrothead" released!
As a dreamer of dreams and a travelin' man, I have chalked up many a mile. Read dozens of books about heroes and crooks, And I've learned much from both of their styles. -- Heard playing in Margaritaville bar, in Orlando after YAPC::NA::2014. On behalf of the Parrot team, I'm proud to announce Parrot 6.6.0, also known as "Parrothead". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 6.6.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/supported/6.6.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 6.6.0 News: - Core + Optimized method call overhead at compile-time in pmc2c directly to avoid run-time overhead. Less temp. PMC's, less branches and avoiding at least 2 costly C functions per method call. + New arity warning: "wrong number of arguments: %d passed, %d expected" [GH #1080] - Build + Workaround libffi-3.1 upstream bug in ffi.h [GH #1081] + Expand pkg-config make macros in auto::libffi [GH #1082] - Tests + Fix t/pmc/filehandle.t on cygwin with newer Cwd >= 3.40 [GH #1077] - Community + Our GSoC student passed the project midterm, having made great progress. Congratulations to Chirag Agrawal! + More parrot-bench numbers at https://github.com/parrot/parrot-bench, now using gnuplot for all releases from 1.8.0 - 6.6.0, amd64 + -m32 The SHA256 message digests for the downloadable tarballs are: 6d21d3b733d980ab7cb8ee699c59e2b782d8a9c8c0e2cb06d929767e61024ace parrot-6.6.0.tar.gz 08e9e02db952828f6ab71755be47f99ebc90894378f04d8e4d7f3bc623f79ff5 parrot-6.6.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is at 19 Aug 2014. Enjoy!
Parrot 6.8.0 "Little Lorikeet" released!
Lories and lorikeets (tribe Lorini) are small to medium-sized arboreal parrots characterized by their specialized brush-tipped tongues for feeding on nectar of various blossoms and soft fruits, preferably berries. -- http://en.wikipedia.org/wiki/Lories_and_lorikeets (Parrots that eat like hummingbirds!) On behalf of the Parrot team, I'm proud to announce Parrot 6.8.0, also known as "Little Lorikeet". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 6.8.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/6.8.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 6.8.0 News: - Build + pbc_to_exe created executables use now the absolute execname on most platforms and not only argv[0] which needs to be looked up in the path. [GH #1088] - Documentation + Fix various new podchecker syntax errors with the new Pod::Simple 3.28 - Tests + Update embedded Pod::Simple to 3.28 to fix the missing whiteline_handler method from non-embedded podchecker [GH #1089] + Skip 3 crashing codingstd tests with 5.8 DEBUGGING [GH #1090] The SHA256 message digests for the downloadable tarballs are: 986a0e543e660e83595a3c477b7b7f065099edb559d74c56f61d88e216042f4e parrot-6.8.0.tar.gz d8db85a305e61babf9f3c23ddd31dffebb8cc7ccd730abcd618eb0fbbad64b6a parrot-6.8.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is at 21 Oct 2014. Enjoy!
Parrot 6.10.0 "New Caledonian lorikeet" released!
Now instead of four in the eights place You've got three, 'Cause you added one, That is to say, eight, to the two, But you can't take seven from three, So you look at the sixty-fours... Sixty-four? "How did sixty-four get into it?" I hear you cry! Well, sixty-four is eight squared, don't you see? -- Tom Lehrer, "New Math" (Which starts in decimal, but ends in octal) On behalf of the Parrot team, I'm proud to announce Parrot 6.10.0, also known as "New Caledonian lorikeet". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 6.10.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/6.10.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 6.10.0 News: - Core + Add imcc -d2 flag for MKCONST tracing. + Fix darwin --m=32 Parrot_sysmem_amount() #1113 + Honor rlimit settings on all non-windows platforms. #935 + Slightly improved mark methods for Coroutine, Continuation, CallContext, NCI, Task. #1109 + Unify code for platform encodings, now supports all. #1120 e.g. unicode filenames or UTF-8 term output on cygwin, solaris, dragonfly + Update pcre for cygwin + Add more -D flags for --ccflags=-DMEMORY_DEBUG #1108. Print initial memory settings on -D1 and more with -D101 and -D200. + Added -t10 trace flag for pmc flags, prettier -t output, less GC stress. + Fixed GC bug in Coroutine.clone #1108, #1109 + Export Parrot_io_get_vtable. #1131 + Added lstat io op for nqp, fixed os.lstat method. #1129 + Throw errors on illegal seek arguments, no assertions. #1130 + Disallow negative count argument for array splice methods. GH #766 + Allow array negative index access for most arrays. #1127 + Shorten and harmonize array exception messages: no context, just: index out of bounds, illegal argument, can't resize, ... #1126 + Add simplier Parrot_ex_throw_from_c_noargs. #1132 + Fix all wrong exception codes left-overs, 0, 1 or -1. #1133 + Unescape double-quoted .lex string constants. #1095, perl6 RT#116643 + Downgrade external ascii strings on multi-byte platform encodings to ascii. #1098 + Fix self heuristic with vtable overridden method calls. $P0($P0) instead of $P0() is now invalid, it is always a method. https://trac.parrot.org/parrot/ticket/103 #1013 - Build + Set -mabi=64 for gcc --m=64 on mips, -m64 on powerpc #1110 + Add --{en,dis}able-static #1104 + Fix Windows build for pbc_to_exe #1114 + Fix default cygwin builds #1116 + Silence failing auto::inline probe #1118 + Revert automatic regeneration of encoding tables, added with 6.9.0. #1119 + Use labs() instead of abs() with 64-bit # + Avoid duplicate src/longopt.o, export Parrot_longopt_get. #1121 + Detect icu version, new icu_version config key. #867 + Skip -Werror=strict-prototypes only on broken icu 4.2 - 4.9. #867 - Documentation + Document .lex "name" limitations. Use .lex 'name' w/ single-quotes #1095 + Fixed 6.9 manpage regressions on BSD make #1125 + Better newclass example code in pirbook #802 - Tests + Fixed make smoke, uploading to smolder with changed YAML::Tiny quoting. #1078 + Add better GC stress tests with reproducible GC bugs. #1108 - Community The SHA256 message digests for the downloadable tarballs are: e90e83b69ec2f6c54bb0c6dc5645159c044bb3a48618e88e858dd18234ed1e84 parrot-6.10.0.tar.gz a2c1a94ae73be57c3f26d97901edfffea5fc65e0df270863477465b9f301eba0 parrot-6.10.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is at 16 Dec 2014. Enjoy!
Parrot 7.0.0 "Crimson Shining Parrot" released!
"We'll show him! We'll show them *all*!" "Okay," said Susan, "that was *definitely* evil -" "No," said Lavender, "that's a Chaos Legion motto, actually. Only she didn't do the insane laughter." "That's right," Tracey said, her voice low and grim. "This time I'm not laughing." The girl went on stalking through the corridor, like she had dramatic music accompanying her that only she could hear. (Hermione was starting to worry about what *exactly* the impressionable youths of the Chaos Legion were learning from Harry Potter.) -- Harry Potter and the Methods of Rationality http://hpmor.com/chapter/70 On behalf of the Parrot team, I'm proud to announce Parrot 7.0.0, also known as "Crimson Shining Parrot". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 7.0.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/supported/7.0.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 7.0.0 News: - Core + Added a experimental INTERPINFO_MAX_GENERATIONS api, made MAX_GENERATIONS --ccflags adjustable, renamed to GC_MAX_GENERATIONS, and use the correct number. Default 3 for generations 0,1,2. + Add the DEPRECATED attribute to all deprecated functions. #1163 + Fix parser crashes detected by the american fuzzy lop (1.06b) #1168 + Replace an end op inside pcc methods by a returncc op, #1168. This used to crash the last years, now it returns. It is now documented as unspecified behavior. + Finish PackFile_ API deprecation and refactoring. No wrong exports anymore. See api.yml. #1170 #1122 + Reenabled the following NCI signatures: t (cstring), 2 (Integer PMC -> short), 3 (-> int), 4 (-> long). SDL and Curses is now usable again. #436, #601, #605 + Added a useful subset of static nci thunks to core-thunks. #1171 Updated the extra thunks to pass most nci examples without libffi, just 2, 3 and 4 require libffi when being used destructively on the Integer PMC. + Fixed a couple of blocking ResizablePMCArray ("rpa") splice regressions from 6.10, which broke perl6. See https://github.com/perl6/nqp/issues/209, GH #1174, #1175. + Added an optional rpa splice warning as in perl5, when an overlarge offset is adjusted. #1176 + Fix a GC regression from 6.11 with ResizablePMCArray #1159 (1.2% slower) + Skip startup warnings "Unknown codeset `', defaulting to ASCII" when nl_langinfo() failed, and silently use ASCII. #1180 - Build + More code cleanup to reduce compiler warnings, code size and unneeded calls. + Add ARGIN_FORMAT declarations, probe for gnu_printf, ms_printf, printf. #1163 + Fix PARROT_CANNOT_RETURN_NULL #1163 + Move HASATTRIBUTE_* definitions from ccflags via cmdline to has_header.h #1163 + Add the _Check_return_ MSVC SAL variant #1163 + Check and fix that PARROT_EXPORT being the first function attribute (C++) #1164 + Allow PARROT_DOES_NOT_RETURN without PARROT_CANNOT_RETURN_NULL #1163 + Move -Wformat to --cage #1165 + Fix and allow --cxx on FreeBSD 10 (clang, not g++) #1166 + Fix git_describe config probe on tag-less repos, e.g. git clone --depth #1167 + Fix solaris asctime_r with _POSIX_C_SOURCE #858 - Documentation - Tests - Community The SHA256 message digests for the downloadable tarballs are: 0c356f0d63cacb8b68375d695fa62fede3881ae86989c9a6b0adda709f1f2f45 parrot-7.0.0.tar.gz cdc5ccbaf4b5fbe64c99c0475a542154f25d7226e2d9823c539ee4f6f723fdf0 parrot-7.0.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is at 17 Feb 2015. Enjoy!
Parrot 7.2.0 "Blue-crowned racquet-tail" released!
This is the bright candlelit room where the life-timers are stored—shelf upon shelf of them, squat hourglasses, one for every living person, pouring their fine sand from the future into the past. The accumulated hiss of the falling grains makes the room roar like the sea. This is the owner of the room, stalking through it with a preoccupied air. His name is Death. But not any Death. This is the Death whose particular sphere of operations is, well, not a sphere at all, but the Discworld, which is flat and rides on the back of four giant elephants who stand on the shell of the enormous star turtle Great A’Tuin, and which is bounded by a waterfall that cascades endlessly into space. Scientists have calculated that the chance of anything so patently absurd actually existing are millions to one. But magicians have calculated that million-to-one chances crop up nine times out of ten. -- "Mort", GNU Terry Pratchett On behalf of the Parrot team, I'm proud to announce Parrot 7.2.0, also known as "Blue-crowned racquet-tail". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. The blue-crowned racket-tail (Prioniturus discurus) is a parrot found on all the larger islands of the Philippines not starting with "P". Parrot 7.2.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/7.2.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 7.2.0 News: - Build + Fix warning on Win32 (with cl.exe) when `link` is not explicitly set. The SHA256 message digests for the downloadable tarballs are: f4792fc1a82040dd855f73890de6fa26759aa62f4b4ad1aa468597592b7bf3bf parrot-7.2.0.tar.gz 74e5821155eaf29d7c1655fd3b5b90a84afe23361318242947c50f59da5918e1 parrot-7.2.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is at 21 Apr 2015. Enjoy!
Parrot 7.4.0 "Festive Amazon" released!
On behalf of the Parrot team, I'm proud to announce Parrot 7.4.0, also known as "Festive Amazon". Parrot (http://parrot.org/) is a virtual machine aimed at running all dynamic languages. Parrot 7.4.0 is available on Parrot's FTP site (ftp://ftp.parrot.org/pub/parrot/releases/devel/7.4.0/), or by following the download instructions at http://parrot.org/download. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Git to retrieve the source code to get the latest and best Parrot code. Parrot 7.4.0 News: - Documentation + Many minor corrections - Community + Coverity scans to resume RSN. The SHA256 message digests for the downloadable tarballs are: b191da72e668c5bd97e1792a1b5d8fe66713819066f6a2f5eef2e9bc21d92968 parrot-7.4.0.tar.gz 724868f94bf7d45ba5cda29b041b18fc7cbcd2fe5196455cc3882c2f99a84f4b parrot-7.4.0.tar.bz2 Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is at 16 Jun 2015. Enjoy!
Re: Language design
On Jun 12, 2015, at 8:54 AM, Parrot Raiser <1parr...@gmail.com> wrote: > Has somebody been following the discussions on types? http://xkcd.org/1537/ > :-)* Yes; see the 4 minute lightning talk: https://www.destroyallsoftware.com/talks/wat :^) — Bruce Gray (Util of PerlMonks)