audreyt's Journal audreyt's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:15:56+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 audreyt's Journal Pugs.hs is back. <em>(The excellent news from fglock++ that <a href=""> is back</a> prompted me to write something about Pugs, too, so here it is.)</em> <p> During the past month, I've been quietly releasing Pugs and its dependencies on <a href="">Hackage</a>. </p><p> Installation for Pugs is now much simpler than before; see <a href=""></a> for details. </p><p> There has been no action in terms of features, but the internal has been refactored to reduce compilation time, and the individual components has been released as <a href="">separate packages</a> to reduce maintenance overhead. </p><p> Startup time is also greatly improved. As a consequence, running the <a href="">full smoke test suite</a> is no longer a multi-hour-long ordeal; it now takes less than 15 minutes on modern machines. </p><p> As of the release, the smoke numbers say it passes 17215 tests out of 19260, which is not significantly different from the 6.2.13 release. </p><p> Going forward, I think GHC 6.10's <a href="">Quasiquoting</a> and <a href="">View patterns</a> are going to be vital for the sanity of Pugs internals, so please expect no Pugs 6.28.* releases before GHC 6.10.1. </p><p> And finally, a shameless plug: I'm still looking for ways to make ends meet, so any <a href="">offers</a> of telecommuting, project-based/part-time jobs would be very much appreciated.<nobr> <wbr></nobr>:-)</p> audreyt 2008-07-31T08:01:32+00:00 perl6 Intermission over. <p> Initially, I thought it was typical burn-out. Between the intense Brazil hackathon (with fglock++, <a href="">incrementally-built bootstrapping compilers</a>; with cmarcelo++, <a href="">metaobjects in Haskell</a> for 6.28.0) and moving to a new residence, a few weeks of rest seemed natural. </p><p> As the sudden drowsiness and strange non-motivation worsened, I thought it's some kind of mental block, and focused on <a href="">Jifty</a> instead. </p><p> But when external emergencies demanded my attention, all focus was suddenly lost, replaced by massive panic and self-doubt, leading to e.g., the cancellation of my <a href="">POPL</a> trip just before boarding. </p><p> At last, nine days ago, I was hospitalized at the brink of liver failure. Months of intellectualization and analysis was proved immaterial, as there is one very simple explanation: Acute <a href="">Hepatitis B</a>. The symptoms quickly ceased, thanks to <a href="">lamivudine</a>, and I expect to be discharged tomorrow, with 95%+ chance of full (immune, non-carrier) recovery. </p><p> With the nearest $job/conference safely booked at one month away, I've put various unpleasantries behind me, started populating the new <a href=""></a> workspace, and resumed Pugs hacking (aiming for a March release of the much-delayed 6.28.0). </p><p> So... Stay tuned for backblogs on the <a href="">progress</a> happened during my absence. <em>Viva la vie!</em> &#9786; </p> audreyt 2007-02-20T05:08:20+00:00 journal Pugs 6.2.13 released! <p>After nearly four months of development and 3400+ commits, I'm very glad to announce that Pugs 6.2.13 is now available:</p><blockquote><div><p> <a href=""></a> <br>SIZE: 6839270<br>SHA1: b06b8434c64e9bb5e3ab482282fbae0a6ba69218</p></div> </blockquote><p>Motivated by increasing use of Pugs in production, this is an extra release in the 6.2.x series, offering another 200%+ improvement in performance, comprehensive support for interoperability with Perl 5 modules, a built-in grammar engine via native perl5 embedding, and much better support for roles, classes and objects.</p><p>The web-based presence of Pugs and Perl 6 has improved as well:</p><ul> <li> <a href=""></a> puts the Pugs shell in your browser.</li><li> <a href=""></a> annotates&nbsp; the Synopses with &quot;smart-linked&quot; tests.</li><li> <a href=""></a> annotates that further with fail/pass/todo records.</li><li> <a href=""></a> is a Wiki dedicated to collect Perl 6 related information.</li><li> <a href=""></a> offers a comprehensive FAQ on Perl 6. </li></ul><p>Thanks again to all lambdacamels on #perl6 for building this new ship together; it is truly an exhilarating voyage.<nobr> <wbr></nobr>:-)</p><p>Have -Ofun!<br>Audrey</p><p> <b>Changes for 6.2.13 (r14402) - October 17, 2006</b> </p><p> <b>Build System</b> </p><ul> <li>Perl 5 embedding is now enabled by default <ul> <li>For Windows users, Perl 5.8.x is required</li><li>Set the <tt>PUGS_EMBED</tt> environment variable to <tt>noperl5</tt> to disable this</li></ul></li></ul><ul> <li>Prompting for Parrot embedding is now disabled by default <ul> <li>Set the <tt>PUGS_EMBED</tt> environment variable to <tt>parrot</tt> to enable this</li></ul></li></ul><ul> <li>Support for compiling using GHC 6.6 <ul> <li>GHC 6.4.1+ is still supported, but 6.6 will be required in the next release</li></ul></li></ul><p> <b>Feature Changes</b> </p><p> <em>Interactive Shell and Command-Line Flags</em> </p><ul> <li>New <tt>pugs -d</tt> flag to display a trace for debugging</li><li>The<nobr> <wbr></nobr><tt>:r</tt> command now resets the environment once, not twice</li><li>The return value of blocks, such as <tt>gather {...}</tt>, is displayed correctly</li><li> <tt>$_</tt> is no longer clobbered with the result of each expression's evaluation</li></ul><p> <em>Perl 5 Interoperability</em> </p><ul> <li>Arrays and Hashes now round-trip from Pugs to Perl 5 land and back</li><li>Importing functions from Perl 5: <tt>use perl5:CGI &lt;header param&gt;</tt> </li><li>Passing unboxed values across runtimes no longer leaks memory</li><li>When embedding Perl 5.8+, Unicode flag is now on for Pugs-to-Perl5 strings</li><li> <tt>eval($str,<nobr> <wbr></nobr>:lang&lt;perl5&gt;)</tt> now accepts non-ASCII characters in <tt>$str</tt> </li></ul><p> <em>Lexical Syntax</em> </p><ul> <li>Capture literals: <tt>\($bar: 1, 2, 3, named =&gt; 4)</tt> </li><li>Here-docs now work as specced; also warns against inconsistent indentation</li><li>Interpolation of chained calls: <tt>&quot;$foo.meth.meth.meth.meth()&quot;</tt> </li><li>List comprehension: <tt>for 0 &lt; list(@x) &lt; 10 {...}</tt> </li><li>Named character escapes: <tt>&quot;\c[LATIN CAPITAL LETTER Y]&quot;</tt> </li><li>New grammatical category <tt>term:</tt>, separated from the <tt>prefix:</tt> category</li><li>New magical variables: <tt>$?COMPILER</tt> and <tt>$?VERSION</tt> </li><li>Parse for <tt>LABEL: STMT</tt>, although it's currently treated the same as <tt>STMT</tt> </li><li>Pod directives: <tt>=begin</tt>/<tt>=end</tt> and <tt>=for</tt> now terminate without <tt>=cut</tt> </li><li>Pod variables: <tt>$=FOO</tt> and <tt>@=FOO</tt> give you access to the Pod section FOO</li><li>Quote adverbs no longer take non-parens brackets: <tt>rx:P5{...}</tt> is valid again</li><li>Shell-like quoting rules implemented for <tt>&lt;&lt; $x &quot;qq&quot; 'q' &gt;&gt;</tt> </li><li>Signature literals:<nobr> <wbr></nobr><tt>:($foo is copy = 42, $, @)</tt> </li><li>Support for UTF-8, UTF-16 and UTF-32 encoded source files</li><li>Support for backquotes and <tt>qx/.../</tt> for capturing external command output</li><li>User-defined infix associativity: <tt>sub infix:&lt;foo&gt; is assoc('right') {...}</tt> </li><li> <tt>&quot;\123&quot;</tt> and <tt>&quot;\03&quot;</tt> are now errors; write <tt>&quot;\d123&quot;</tt> and <tt>&quot;\o03&quot;</tt> instead</li><li> <tt>$::x</tt> now means exactly the same a <tt>$x</tt>, instead of <tt>$*x</tt> </li><li> <tt>%h&lt;&gt;</tt> now means <tt>%h{}</tt> -- the entire hash, not the empty string as key</li><li> <tt>($::('x'))</tt> with two adjacent closing parens now parses correctly</li><li> <tt>0_123_456</tt> now parses as <tt>0d123456</tt>, not an error</li><li> <tt>1&lt;2&gt;</tt> is now a fatal error: Odd number of elements in Hash</li><li> <tt>q()</tt> and <tt>qw()</tt> with parentheses are parsed as functions, not quotes</li></ul><p> <em>Declarators and Operators</em> </p><ul> <li>Argument interpolation via prefix <tt>|</tt> and <tt>|&lt;&lt;</tt> </li><li>Binding to qualified uninitialised symbols: <tt>&amp;fully::qualify<nobr> <wbr></nobr>:= sub {...}</tt> </li><li>Contextual variables are now declared with <tt>my $x is context</tt>, not <tt>env $x</tt> </li><li>Hyperised reduce operators: <tt>[&gt;&gt;+&lt;&lt;]</tt> and <tt>[\&gt;&gt;+&lt;&lt;]</tt> </li><li>Implicit invocation assignment:<nobr> <wbr></nobr><tt>.= uc</tt> is parsed as <tt>$_ = $_.uc</tt> </li><li>Mid-block redeclaration no longer allowed: <tt>my $x; { $x = 1; my $x = 2 }</tt> </li><li>Negated comparison operators: <tt>!eqv</tt>, <tt>!=:=</tt> etc; <tt>!~~</tt> replaces <tt>!~</tt> </li><li>New infix comparison operators: <tt>===</tt> and <tt>eqv</tt> </li><li>New infix non-short-circuiting boolean AND operator: <tt>?&amp;</tt> </li><li>Nullary reduction of builtin operators gives identity values: <tt>[*]() === 1</tt> </li><li>Postfix operators can be called with a dot:<nobr> <wbr></nobr><tt>.++</tt>, <tt>$x.++</tt>, <tt>$x.\ ++</tt> </li><li>Prefix <tt>=</tt> now iterates on arrays as well: <tt>=@array</tt> </li><li>Short-circuiting chained comparison: <tt>1 &gt; 2 &gt; die('foo')</tt> no longer fails</li><li>Smart matching against code objects: <tt>$obj ~~ { 1 &gt; $_ &gt; 5 }</tt> </li><li>Smart matching against implicit invocation: <tt>$obj ~~<nobr> <wbr></nobr>.meth</tt>, <tt>$obj ~~<nobr> <wbr></nobr>.[0]</tt> </li><li>Typed constraints on autovivification: <tt>my Hash $x; $x[0] = 1</tt> now fails</li><li>Typed declarations: <tt>my Dog $fido</tt>, <tt>my T ($x, $y)</tt> </li><li> <tt>*</tt> is now always a term, never a prefix operator</li></ul><p> <em>Blocks and Statements</em> </p><ul> <li>Implicit invocation in <tt>when</tt>: <tt>when<nobr> <wbr></nobr>.true {...}</tt> , <tt>when<nobr> <wbr></nobr>.&lt;key&gt; {...}</tt> </li><li>Listops in conditions no longer consume the block: <tt>for say {...}</tt> </li><li>Loop topics are not forced into rw: <tt>for 1..3 { $_++ }</tt> now fails correctly</li><li>New <tt>&amp;break</tt> and <tt>&amp;continue</tt> primitives for use within <tt>when</tt> blocks</li><li>New <tt>&amp;leave</tt> primitive for exiting from the innermost block</li><li>New postfix <tt>given</tt> statement modifier:<nobr> <wbr></nobr><tt>.say given foo()</tt> </li><li>Support for <tt>FIRST</tt>, <tt>NEXT</tt>, <tt>LAST</tt> loop control blocks</li><li>Support for <tt>START</tt>, <tt>PRE</tt>, <tt>POST</tt>, <tt>KEEP</tt>, <tt>UNDO</tt>, <tt>ENTER</tt>, <tt>LEAVE</tt> blocks</li><li>Support for repeat blocks: <tt>repeat {...} while 1</tt>, <tt>repeat while 1 {...}</tt> </li><li>Support for the <tt>&amp;each</tt> list interleaver: <tt>for each(@a; @b) -&gt; $x, $y {...}</tt> </li><li>The <tt>for</tt> loop no longer double-flattens lists: <tt>for %h.pairs -&gt; $p {...}</tt> </li><li>Topicalisers for <tt>if</tt>, <tt>else</tt>, <tt>while</tt>, <tt>given</tt> blocks: <tt>if EXPR -&gt; $x {...}</tt> </li><li>Topicalisers for postfix <tt>for</tt> loop: <tt>-&gt; $x {...} for 1,2,3</tt> </li><li> <tt>&amp;last</tt> and <tt>&amp;redo</tt> now work in <tt>repeat {...}</tt> and <tt>loop {...}</tt> blocks</li><li> <tt>&amp;take</tt> no longer flattens array literals: <tt>take [1,2,3];</tt> </li><li> <tt>&amp;take</tt> now works in functions called from within a <tt>gather {...}</tt> block</li><li> <tt>BEGIN(...)</tt>, <tt>END(...)</tt>, etc., are now parsed as calls, not syntax errors</li><li> <tt>END {...}</tt> in<nobr> <wbr></nobr><tt>.pm</tt> files are no longer ignored when executed directly</li><li> <tt>INIT {...}</tt> now works correctly inside <tt>eval &quot;...&quot;</tt> </li><li> <tt>do {...}</tt> is now a loop block that takes standard loop controls</li><li> <tt>do {...}</tt> with statement modifiers is explicitly disallowed</li></ul><p> <em>Regexes and Grammars</em> </p><ul> <li>Anonymous tokens and rules anchor on both ends: <tt>123 ~~ token{2}</tt> is false</li><li>New <tt>s[...] = EXPR</tt> and <tt>s[...] =<nobr> <wbr></nobr>.meth</tt> syntax; <tt>s[...][...]</tt> is deprecated</li><li>New <tt>tr///</tt> syntax for transliteration; <tt>y///</tt> will not be supported</li><li>Pugs::Compiler::Rule (PCR) replaces Parrot/PGE as the default engine</li><li>Support for<nobr> <wbr></nobr><tt>:c/:continue</tt>, <tt>&lt;prior&gt;</tt>, and much more: see PCR's ChangeLog</li><li> <tt>$()</tt>, <tt>@()</tt> and <tt>%()</tt> parse correctly as <tt>$$/</tt>, <tt>@$/</tt> and <tt>%$/</tt> </li><li><nobr> <wbr></nobr><tt>/.../</tt> matches <tt>$_</tt> under Int, Num and void context in addition to Bool</li><li> <tt>m:g/(1)|(2)/</tt> now returns only successfully matched subcaptures</li></ul><p> <em>Modules and Routines</em> </p><ul> <li>Allow space-separated adverbial named arguments: <tt>f(<nobr> <wbr></nobr>:x&lt;foo&gt;<nobr> <wbr></nobr>:$y<nobr> <wbr></nobr>:!z )</tt> </li><li>Multi-dispatching now handles named, slurpy and optional arguments</li><li>Multi-dispatching now handles parenthesized expressions as arguments</li><li>Named arguments with no matching parameters is now an error</li><li>New <tt>&amp;$capture)</tt> method to call without a caller frame (similar to Perl 5's <tt>goto &amp;sub</tt>, but it returns)</li><li>New <tt>&amp;c.signature</tt> method to get a Signature object from a Code object</li><li>Parse for the <tt>proto</tt> routine modifier: <tt>proto method foo ($x) {...}</tt> </li><li>Precompiled<nobr> <wbr></nobr><tt>.pm.yml</tt> files with mismatching AST version will no longer load</li><li>Support for user-defined unary and optional-unary prefix macros</li><li>The main package is now<nobr> <wbr></nobr>::Main, not<nobr> <wbr></nobr>::main</li><li> <tt>&amp;?CALLER_CONTINUATION</tt> is now fully reentrant</li><li> <tt>&amp;yield</tt> in coroutines works correctly within loop blocks</li><li> <tt>sub ($x = 0 is copy)</tt> no longer allowed; say <tt>sub ($x is copy = 0)</tt> instead</li><li> <tt>sub f ($x is lazy) {...}</tt> no longer evaluates $x more than once</li><li> <tt>sub f (@x?) {...}; f()</tt> now sets <tt>@x</tt> to <tt>[]</tt>, not <tt>[undef]</tt> </li></ul><p> <em>Classes and Objects</em> </p><ul> <li>Attribute-like method call syntax: <tt>@.method(1)</tt>, <tt>$.method: 2, 3, 4</tt> </li><li>Class attributes: <tt>class C { my $.x is rw }</tt> </li><li>Class name literals are now term macros, not prefix functions</li><li>Compile-time self-mixin no longer allowed: <tt>role A does A</tt> </li><li>Default initialiser expression for attributes: <tt>class C { has $.x = 123 }</tt> </li><li>Dot attributes are now method calls: <tt>@.x</tt> is the same as <tt>@(self.x)</tt> </li><li>Dynamic method calls: <tt>$obj.$meth</tt> </li><li>Hyperised method calls: <tt>$obj.&gt;&gt;meth</tt> </li><li>Quantified method calls: <tt>$obj.*meth</tt>, <tt>$obj.+meth</tt> and <tt>$obj.?meth</tt> </li><li>Reopening classes: <tt>class C is also {...}</tt> </li><li>Role mixins: <tt>role R {...} class C does R {...}</tt> </li><li> <tt>$?SELF</tt> is gone; write <tt>self</tt> instead</li><li> <tt>BUILDALL</tt>/<tt>DESTROYALL</tt> trigger once per class even with diamond inheritance</li><li> <tt>does R</tt> and <tt>is C</tt> statements in class body now evaluate in compile time</li></ul><p> <em>Built-in Primitives</em> </p><ul> <li>New <tt>&amp;HOW</tt>, <tt>&amp;WHAT</tt> and <tt>&amp;WHICH</tt> functions replace <tt>&amp;meta</tt>, <tt>&amp;ref</tt> and <tt>&amp;id</tt> </li><li>New <tt>&amp;VAR</tt> macro to force lvalue evaluation of an expression</li><li>New <tt>&amp;comb</tt> function, a dual to <tt>&amp;split</tt> but matches the wanted parts</li><li>New <tt>&amp;crypt</tt> function to create one-way digest strings</li><li>New <tt>&amp;fork</tt> function to create a new process</li><li>New <tt>&amp;printf</tt> function for formatted printing</li><li>New <tt>&amp;quotemeta</tt> function for escaping strings</li><li>Support for <tt>%b</tt> in formatted printing</li><li>The <tt>&amp;system</tt> function no longer dies when the command does not exist</li><li>The<nobr> <wbr></nobr><tt>.as</tt> method is renamed to<nobr> <wbr></nobr><tt>.fmt</tt> for formatted printing</li><li>The<nobr> <wbr></nobr><tt>.perl</tt> method now returns Unicode strings</li></ul><p> <b>Bundled Modules</b> </p><p> <em>New modules</em> </p><ul> <li> <a href="">ext/Automata-Cellular/</a> - Build and render cellular automata in a terminal</li><li> <a href="">ext/Math-Basic/</a> - Basic mathematical functions and constants</li><li> <a href="">ext/Math-Random-Kiss/</a> - Pseudo-random number generator</li><li> <a href="">ext/re/</a> - Pragma to choose among grammar engine backends</li></ul><p> <em> <a href="">ext/CGI/</a> </em> </p><ul> <li>A new <tt>as_yaml</tt> method to dump CGI parameters as YAML</li><li>Allow initializing the CGI object with a hash of parameters</li><li>New <tt>Dump</tt> function adapted from Perl 5's</li><li>New basic tests for <tt>escapeHTML</tt> and <tt>unescapeHTML</tt>, which were broken</li><li>New tests for <tt>PATH_INFO</tt> </li><li>Only send the Content-Type: header if we actually have a content-type</li><li>Only send the Status: header if it's a redirect, or if it's explicitly added</li><li>Refactored into an OO-only module. N.B.: this breaks backwards compatibility!</li><li>Some work on charset handling, though a <tt>charset</tt> method is still missing</li><li>The <tt>content_type</tt> method is renamed to <tt>type</tt> for compatibility</li><li>The <tt>cookies</tt> attribute is renamed to <tt>cookie</tt> for compatibility</li></ul><p> <em> <a href="">ext/HTTP-Server-Simple/</a> </em> </p><ul> <li>The old non-standard<nobr> <wbr></nobr><tt>./method</tt> syntax has been replaced with <tt>self.method</tt> </li></ul><p> <em> <a href="">ext/Rosetta/</a> </em> </p><ul> <li>Significant updates to the <tt>lib/Rosetta/SeeAlso.pod</tt> documentation</li></ul><p> <em> <a href="">ext/Set-Relation/</a> </em> </p><ul> <li>Renamed from ext/Relation/</li><li>Beginning of separate <tt>Set::Tuple</tt> and <tt>Set::Relation</tt> classes</li></ul><p> <em> <a href="">ext/Test/</a> </em> </p><ul> <li>Converted <tt></tt> documentation from Kwid to Pod syntax</li><li>The <tt>eval_ok</tt> and <tt>eval_is</tt> functions are gone; use <tt>is eval</tt> instead, which runs its string in the current lexical scope rather than in Test's (which is usually what you want)</li></ul><p> <b>Test Suite</b> </p><p> <em> <a href="">util/prove6</a> </em> </p><ul> <li>Can now run only a portion of the test suite, or even a single file</li><li>Original shell script rewritten in Perl 5 for improved portability</li><li>Support for multiple Pugs backends and multiple Perl 6 implementations</li></ul><p> <em> <a href="">util/</a> </em> </p><ul> <li>A new visualiser of smartlinks used in the test suite</li><li>Generates much nicer cross-referenced HTML pages</li><li>See annotated specs in action on <a href=""></a> </li><li>Smartlinks replace the old <a href="">util/</a> </li></ul><p> <em> <a href="">util/smokeserv/</a> </em> </p><ul> <li>See the <tt>SYN</tt> links on <a href=""></a> for this in action</li><li>Smoke client now uploads raw<nobr> <wbr></nobr><tt>.yml</tt> results as well as<nobr> <wbr></nobr><tt>.html</tt> </li><li>The smokeserver now annotates the spec with test results using smartlinks</li></ul><p> <em> <a href="">t/</a> </em> </p><ul> <li>All tests now begin with <tt>use v6-alpha;</tt> instead of <tt>use v6;</tt> </li><li>Many, many more smartlinks have been added into the spec</li><li>Programs and modules in <a href="">examples/</a> are tested for syntactic correctness</li><li>Tests in t_disabled/ are merged back into the main test suite</li><li> <a href="">t/02-test-pm/</a> created to ensure that <tt></tt> works as advertised</li><li> <a href="">t/blocks/</a> renamed from t/subroutines/</li><li> <a href="">t/closure_traits/</a> created to test closure traits (<tt>FIRST</tt>, <tt>LAST</tt>, etc.)</li><li> <tt>#!/usr/bin/pugs</tt> is gone from all test files</li><li> <tt>eval_ok</tt> and <tt>eval_is</tt> are now <tt>ok eval</tt> and <tt>is eval</tt>, so that eval'd strings will be run in the current lexical scope</li></ul><p> <b>Examples and Utilities</b> </p><p> <em> <a href="">examples/</a> </em> </p><ul> <li>&nbsp; &nbsp;</li> <li>All Perl 5 programs have been renamed from <tt>*.p5</tt> to <tt>*</tt> </li><li><p> &nbsp; &nbsp; </p></li><li>All Perl 6 programs have been renamed from <tt>*.p6</tt> to <tt>*.pl</tt> </li><li>All references to them, except in talks, have been likewise updated</li></ul><p> <em> <a href="">examples/games/</a> </em> </p><ul> <li>A game to test your knowledge about Perl 6's multi-dispatch system</li></ul><p> <em> <a href="">misc/runpugs/</a> </em> </p><ul> <li>A web teminal for running an interactive Pugs shell on the web</li><li>WebTerminal: a library for building web terminals for interactive shells</li><li>See <a href=""></a> for a live demo</li></ul><p> <b>Documentation</b> </p><p> <em> <a href="">docs/Perl6/Perl5/Differences.pod</a> </em> </p><ul> <li>Significantly updated and linked from <a href=""></a> </li></ul><p> <em> <a href="">docs/Perl6/Spec/</a> </em> </p><ul> <li>A new S16 draft for IO/IPC/signals as <a href="">docs/Perl6/Spec/IO.pod</a> </li><li>A new S26 draft for documentation as <a href=""> docs/Perl6/Spec/Documentation.pod</a> </li><li>Revamped S29 draft in <a href="">docs/Perl6/Spec/Functions.pod</a> </li></ul><p> <em> <a href="">docs/Pugs/Doc/</a> </em> </p><ul> <li>New directory for Pugs-specific documentation</li><li> <a href="">docs/Pugs/Doc/Hack/Style.pod</a> - Haskell style guide for Pugs hackers</li></ul><p> <em> <a href="">docs/talks/extraction.xul</a> </em> </p><ul> <li>Slides from Nathan Gray's <em>Practical Extraction with Perl 6</em> talk</li></ul><p> <b>Perl 6 on Perl 5</b> </p><p> <em> <a href="">perl5/Pugs-Compiler-Perl6/</a> </em> </p><ul> <li>The <tt></tt> implementation of Perl 6 now handles<nobr> <wbr></nobr><tt>./pugs -CPerl5</tt> commands</li><li>See its own ChangeLog for more information</li></ul><p> <em> <a href="">v6/</a> </em> </p><ul> <li>A new subproject to write a Perl 6 compiler in Perl 6</li><li>Bootstrapped from the <tt></tt> compiler on the perl5 runtime</li><li>See its own ChangeLog for more information</li></ul><p> <b>Experimental projects</b> </p><p> <a href=""> misc/pX/Common/P5_to_P6_Translation/</a> </p><ul> <li>Converts Perl 5.9.4+'s YAML syntax tree into Perl 6</li><li>Handles regexes, arrays, hashes and many builtin functions</li><li>See its own documentation for more information</li></ul><p> <a href=""> misc/pX/Common/</a> </p><ul> <li>Converts Perl 5 regex into Perl 6</li><li>See its own documentation for more information</li></ul><p> <em> <a href="">misc/pX/Common/redsix/</a> </em> </p><ul> <li>An Perl 6 implementation on Ruby 1.9+</li><li>See its own documentation for more information</li></ul> audreyt 2006-10-17T13:32:34+00:00 perl6 Parrot Summary (corrected): 2006-02-13 through 2006-02-28 <p> This is the Perl 6 Internals correction summary, for the weeks of 2006-02-13 through 2006-02-28, by Ann Barcomb. </p><p> <strong>Summary updates</strong> </p><p>Thank you to everyone who took the time to point out that I had accidently used February 2003 rather than 2006 for the internals section. This is the actual summary for February 2006.</p><p>Due to the comments received on short URLs, I have decided to use the originals, as I also prefer them.</p><p> <strong>Internals (Parrot-Porters) </strong> </p><p>This mailing list has been previously called perl6-internals. It is now known as parrot-porters, but the perl6-internals name will remain as an alias for now.</p><p> <em> <a href="">Delayed release</a> </em> </p><p>Leopold Toetsch announced the delay of the next release. The German Perl workshop and a hackathon with Audrey Tang were responsible.</p><p> <em> <a href="">Bug: PGE - truncating PIR code generated by p6rule</a> </em> </p><p>Allison pushed some code and a test which isolates a failing test in punie so that others could aid in debugging. Joshua Isom reported success on two platforms, but noted other problems he encountered, which Allison recognized as known Parrot::Test bugs. Some debugging took place.</p><p> <em> <a href="">Addressing unowned bugs</a> </em> </p><p>Joshua Hoblitt requested that people with RT privileges spend a few minutes on the queue attempting to resolve a few bugs and wondered if RT could be configured to leave bugs marked as &#39;new&#39; until they are owned.</p><p> <em> <a href="">Request for a clean bailout mechanism</a> </em> </p><p>In December, Joshua Hoblitt created a ticket <a href="">[perl #37930]</a> requesting a clean way for a step to signal a failure. As of February&#39;s r11568, all configuration steps were modified.</p><p> <em> <a href="">Param count mismatch errors enabled</a> </em> </p><p>Leopold Toetsch posted that param count mismatches now throw exceptions, but result/return count mismatches are still not checked. He included a list of failing tests from r11570 which were affected by this change.</p><p> <em> <a href="">Better gdb support</a> </em> </p><p>Leopold Toetsch changed the syntax for registers in r11581.</p><p> <em> <a href="">Punie test failures in set_node method on Solaris/SPARC</a> </em> </p><p>Allison Randal passed on a reported failure on Solaris/SPARC <a href="">[perl #38584]</a>.</p><p>In <a href="">another thread</a>, Andy Dougherty looked into the problem and gave his test results.</p><p> <em> <a href="">Trace improvements</a> </em> </p><p>Leopold Toetsch gave a summary of some recent trace improvements. They were as follows: trace output runs through a dedicated debug interpreter, the output has been beautified, and tracing in to a file is faster.</p><p> <em> <a href="">Test failures with &#39;long long&#39; on i386/linux</a> </em> </p><p>Andy Dougherty reported that this failure persists if one uses 64-bit opcodes on a 32-bit system. He was not especially concerned about the failure as he had explicitly created the situation in order to test the bug in its original context.</p><p> <em> <a href="">Deprecated PMCs</a> </em> </p><p>In January, Leopold Toetsch indicated that FloatvalArray and StringArray would be removed soon. As of r11602, they were removed.</p><p> <em> <a href="">Future JIT compiler improvements</a> </em> </p><p>Leopold Toetsch related a short list of desired JIT compiler improvements from <a href="">[perl #38593]</a>.</p><p> <em> <a href="">Release</a> </em> </p><p>Leopold Toetsch announced an upcoming release and put a code freeze on feature changes.</p><p>Later he <a href="">started releasing 0.4.2</a> and blocked all checkins.</p><p>And finally, the release was <a href="">complete</a>.</p><p> <em> <a href="">WRT *BooleanArray</a> </em> </p><p>Leopold Toetsch commented that the resizeable variant is broken, and had some comments on what *BooleanArray should support. Matt Fowles agreed with most of the *BooleanArray reductions, while Bob Rogers had some questions. Bernhard Schmalhofer also spoke up. After seeing the support for the methods, Leopold Toetsch decided they should remain.</p><p> <em> <a href="">Configure dependencies fix bug closed</a> </em> </p><p>Joshua Hoblitt closed a ticket <a href="">[perl #31138]</a> which was not addressed and was no longer applicable.</p><p> <em> <a href="">Question on t/pmc/array.t with a negative length to an array</a> </em> </p><p>Karl Forner asked a question about list_set_length, which puzzled him by accepting negative sizes. He requested a pointer to documentation describing the behavior of the routine.</p><p> <em> <a href="">Deprecated --expnetwork in </a> </em> </p><p>In October, Will Coleda noted that <code>--expnetwork</code> from was an unused option which should probably be removed <a href="">[perl #37388]</a>. More recently, Joshua Hoblitt requested clarification and Leopold Toetsch agreed with the removal.</p><p> <em> <a href="">Performance-adding profiling build options</a> </em> </p><p>Joshua Hoblitt inquired as to whether <a href="">[perl #31156]</a> was worth implementing. Leopold Toetsch asked how to add CFLAGS from a perl command, and Joshua replied.</p><p> <em> <a href="">Truncating results of factorial test on Parrot examples page</a> </em> </p><p>Back in September 2005, James Ghofulpo asked in <a href="">[perl #31980]</a> if the factorial example was meant to truncate results. Bernhard Schmalhofer confirmed that he got incorrect results running the example. Leopold Toetsch noted that most of the examples are outdated. There was a call to fix the factorials, and in February Joshua Hoblitt asked what had become of the example. Leopold Toetsch replied that it had been removed because it was broken.</p><p> <em> <a href="">undef != undef</a> </em> </p><p>As long ago as December 2004, Simon Glover created a ticket <a href="">[perl #33603]</a> noting that undef != undef. Leopold Toetsch tried to explain why undefs have to be distinct currently. A patch was proposed, but rejected, and in February Joshua Hoblitt asked for some resolution on the issue.</p><p> <em> <a href="">Ways to help</a> </em> </p><p>Karl Forner, a mailing list subscriber, expressed interest in helping to develop Perl6 and Parrot and asked what he could do. He was welcomed by Bernhard Schmalhofer, who proposed a starting place. Allison Randal responded to the suggestion of a FAQ for contributors by asking if Karl could start by making one.</p><p> <em> <a href="">Questions with building parrot-0.4.1 on Win32</a> </em> </p><p>Sisyphus asked if there was an appropriate place for asking questions relating to building Parrot, and then asked some questions relating to a Win32 build. Jonathan Worthington confirmed that this was the right list and offered suggestions. Nick Glencross also offered advice.</p><p> <em> <a href=""> versus causes problems on case-insensitive filesystems</a> </em> </p><p>Chris Dolan reported <a href="">[perl #38604]</a> that Mac OS X had a problem with these two files. Bernhard Schmalhofer indicated that this was due to an svn move, which caused problems with svn update on case-insensitive filesystems.</p><p> <em> <a href="">Big steps for Lua</a> </em> </p><p>Francois Perrad reported that Lua on Parrot took some large steps forward.</p><p> <em> <a href="">Linking in docs</a> </em> </p><p>Karl Forner believed that the documentation created by &#39;make html&#39; were more useful than the documents on the parrotcode website. He asked a bit about the linking process, and Will Coleda answered.</p><p> <em> <a href="">Input/Output encoding filters</a> </em> </p><p>Steve Gunnell recapped that back in December he had a question about UTF-8 I/O. This led to some thoughts and a proposal on encoding filters. Leopold Toetsch and others offered comments.</p><p> <em> <a href="">Subversion server upgrades</a> </em> </p><p>Robert Spier announced some downtime for the subversion server.</p><p> <em> <a href="">Question on namespaces and classes</a> </em> </p><p>Leopold Toetsch asked for some thoughts on his proposals dealing with namespaces and classes. Jonathan Worthington and Chip Salzenberg replied.</p><p> <em> <a href="">Namespaces </a> </em> </p><p>Matt Diephouse posted a much-awaited namespace specification draft and requested comments. He received plenty.</p><p> <em> <a href="">Announcement: Amber for parrot 0.4.2 (Argument)</a> </em> </p><p>Roger Browne announced this release.</p><p> <em>Applied patches</em> </p><ul> <li> <a href="">Tabs removed in</a> <p>Brad Bowman submitted a patch <a href="">[perl #38476]</a> to normalize indentation in</p></li><li> <a href="">Reduce memory consumption of <em>t/pmc/resizeablebooleanarray_17.pasm</em> </a> <p>Andy Dougherty suggested cutting cutting the memory use in half <a href="">[perl #38577]</a> because his system PANICs from the RAM allocation request. The patch was applied, but it was noted that there was a suspected bug in the ResizeableBooleanArray PMC.</p></li><li> <a href="">DETAIL_MEMORY_DEBUG changes</a> <p>Andy Dougherty was not satisfied with DETAIL_MEMORY_DEBUG in src/memory.c <a href="">[perl #38576]</a> when he tried to use it to debug an out of memory PANIC. He modified it to use STDERR instead of STDOUT and put in a guard against calling free(0). Leopold Toetsch complimented the quality of Andy&#39;s patches and told him to just apply them in the future.</p></li><li> <a href="">Accept return values via a continuation</a> <p>In January, Bob Rogers proposed that Exception_Handler inherit from Continuations <a href="">[perl #38348]</a>. Leopold Toetsch applied the patch in r11379. Discussion continued until mid-February, and there were addition commits: r11616, and r11612.</p></li><li> <a href="">Param count mismatch errors and tail-calling a continuation</a> <p>Bob Rogers proposed a patch. Leopold Toetsch clarified how multiple get_params work with tailcalls and said the patch was okay, but there is no record of it being applied.</p></li><li> <a href="">PIR examples, libraries and tests migrated to new subroutine attributes</a> <p>In <a href="">[perl #38598]</a>, chromatic noted that some modifications were needed to bring documentation and tests up-to-date. He applied some patches (11755, 11756 and 11758).</p></li></ul><p> <strong>Acknowledgments</strong> </p><p>chromatic recruited me at YAPC::NA 2006, and Jesse Vincent proposed this task. Audrey Tang helped me to get started. She also deserves a belated thank-you for her effort in finishing the previous edition, as does Yuval Kogman.</p><p>If you appreciate Perl, consider <a href="">contributing to the Perl Foundation</a> to help support the development of Perl.</p><p>Send complaints and comments about this summary to Ann Barcomb,</p><p> <strong>See also</strong> </p><ul> <li> <a href="">Perl Foundation activities</a> </li><li> <a href="">Perl 6 Development</a> </li><li> <a href="">Planet Perl Six</a> </li></ul> audreyt 2006-07-11T17:31:01+00:00 summaries Perl 6 Summary: 2006-02-13 through 2006-02-28 <p> <strong>Summary updates</strong> </p><p>Starting with this update, Ann Barcomb will be writing the Perl 6 summaries. Her plan is to release new issues on Sundays, initially dealing with the backlog at a rate of one month per week, and eventually returning to posting a summary of the previous week on a weekly basis.</p><p>The proposed schedule is:</p><ul> <li>July 9th: February (from 13th)</li><li>July 16th: March</li><li>July 23th: April</li><li>July 30th: May</li><li>August 6th: June</li><li>August 13th: July</li><li>August 20th: August (till 19th)</li><li>August 27th: Resume normal schedule</li></ul><p> <strong>Compiler (perl6-compiler)</strong> </p><p> <em>Making Pugs aware of Parrot</em> </p><p>Peter Schwenn requested a concrete example settings to make Pugs aware of Parrot. Beau Cox replied with step-by-step instructions.</p><p> <a href=""></a> </p><p> <em>Difficulty installing Pugs on Cygwin</em> </p><p>Syed Uzair Aqeel reported a Cygwin problem with finding package plugins when creating a makefile. Audrey made a suggestion.</p><p> <a href=""></a> </p><p> <em>Installation failure of Pugs revisions 9188 and 9204</em> </p><p>Beau Cox reported that the 9188 revision of Pugs failed to pass smoke tests and install, and that the problem persisted with Pugs 9204 even after a reinstall of ghc and Haskell. Beau wrote a makefile patch, which also worked for chromatic, who had experienced the same problem.</p><p> <a href=""></a> </p><p> <strong>Internals (parrot-porters)</strong> </p><p> <em>Ed.: It turns out that the summaries in this section were mistakenly from 2003. This space will be filled with corrected summaries as they become available. Sorrie!</em> </p><p> <strong>Language (perl6-language)</strong> </p><p> <em>Typo Alert: Synopsis 5</em> </p><p>Amos Robinson found a typo and Luke Palmer promptly corrected it.</p><p> <a href=""></a> </p><p> <em>Implementation of<nobr> <wbr></nobr>:w in regexes and other regex questions</em> </p><p>David Romano asked some questions on extending the Rules domain specific language, the semantics of whitespace skipping, and negated matching semantics. Luke Palmer replied and explained that the extensions were not yet specified, and recommend possible solutions to the other two questions. Discussion ensued.</p><p> <a href=""></a> </p><p> <em>Overloading the variable declaration process</em> </p><p>Darren Duncan wondered if he could get default values in variables instead of undef, in order to avoid calling the constructor, by simply annotating the type of the variable. Audrey Tang explained that a similar construct is available. This was followed by a discussion on the subject of class prototypes as default values for typed variables, as well as philosophical issues.</p><p> <a href=""></a> </p><p> <em>Instance attributes collision</em> </p><p>Yiyi Hu asked what happens when different sigil attributes with the same name are declared in a single class. Various participants debated the merits of errors versus warnings.</p><p> <a href=""></a> </p><p> <em> <code>CODE {...}</code> mentioning variables without interpolation</em> </p><p>Brad Bowman asked about the semantics of quasiquoting and variable interpolation for Perl 6&#39;s Macro language. Larry Wall explained the semantics of AST binding, the caller&#39;s scope, interpolating ASTs into the macro, and the <code>COMPILING::</code> variable prefix. This was followed by a comment on Brad&#39;s signature about intelligence and good sense.</p><p> <a href=""></a> </p><p> <em>Selective String Interpolation</em> </p><p>Brad Bowman wanted to know if string interpolation and escaping could be optimized for creating strings of Perl code that selectively interpolate. Ideally he would be able to declare which variables are interpolated. He also mentioned closure interpolation and how it does not work well when quoting strings of code. Many people provided ideas, covering Lisp and Ruby, backslashes, and custom quote operators.</p><p> <a href=""></a> </p><p> <em>Some newbie questions about Synopsis 5</em> </p><p>H. Stelling asked about Rule capture numbering, aliasing semantics, and nested subpattern details. Patrick R. Michaud clarified and the capture numbering scheme was discussed.</p><p> <a href=""></a> </p><p> <em>Named Subroutine return values</em> </p><p>Joe Gottman wanted to know if subroutine declarations without an explicit declaration type (<code>my</code>, <code>our</code>) can be annotated with a return value type. Damian Conway replied that the <code>returns</code> trait can used regardless of the declaration syntax. Luke Palmer and Larry Wall discussed the exact semantics of <code>our Type sub foo</code>, <code>--&#62;</code> and <code>returns</code> style return type declarations.</p><p> <a href=""></a> </p><p> <em>S02: Reserved namespace ops</em> </p><p>TSa asked what reservations the design team had about the various uses of the reserved syntax for type subscripting. Larry Wall reserved his right to silence, adding that he thought that <code>is reserved</code> means &#34;we don&#39;t have the foggiest idea what we&#39;ll do with this, but we have a suspicion that if we let people use this particular thing right now, we&#39;ll regret it someday.&#34; The official status of the various items in the <em>notes/</em> directory was clarified -- they are considered to be unofficial.</p><p> <a href=""></a> </p><p> <em>Synopsis 29 patch</em> </p><p>Larry Wall posted a patch for Synopsis 29, recognizing it as official. Ruud H.G. van Tol followed up with questions about a round function, and pi/atan/atan2.</p><p> <a href=""></a> </p><p> <em>Synopsis 29 and Complex numbers</em> </p><p>Jonathan Lang noted that Synopsis 29 deals with complex numbers when describing the sqrt function, but omitted others. He proceeded to list the functions which require special handling of complex numbers. Several people commented.</p><p> <a href=""></a> </p><p> <strong>Acknowledgments</strong> </p><p>chromatic recruited me at YAPC::NA 2006, and Jesse Vincent proposed this task. Audrey Tang helped me to get started and reviewed this summary, and Yuval Kogman assisted with the Language section.</p><p>If you appreciate Perl, consider contributing to the Perl Foundation to help support the development of Perl.</p><p> <a href=""></a> </p><p>Comments on the summary can be sent to <code></code>.</p><p> <strong>See also</strong> </p><ul> <li>Perl Foundation activities</li><li><p> <a href=""></a> </p></li><li>Perl 6 Development</li><li><p> <a href=""></a> </p></li> </ul> audreyt 2006-07-09T21:43:16+00:00 perl6 Pugs: Licensing Clarification. (Two-sentence summary: I intend to relicense the Pugs internals code (i.e. the bin/pugs binary) to the MIT license, and only if fellow contributors are happy with that. Everything else under the Pugs tree is unaffected, and the the "compilation-right disclaimer" in README does not affect any code committed in Pugs in any way.) <p>I apologize that I've not conveyed the scope of licensing to our contributors properly, causing a lot of confusion.&nbsp; While I have been saying &quot;only the <em>src/</em> tree will be affected&quot; from the start, I did not clarify that the <em>src/</em> here explicitly means the <a href="">src/</a> directory in the Pugs repository, containing Haskell/C/Perl6 code that builds the main <em>pugs</em> executable -- i.e. it's Pugs's internals code.</p><p>I'm really, really sorry to cause people misparsing it as the &quot;Pugs source tree&quot;.&nbsp; All other subdirectories, such as t/, examples/, perl5/ ext/, doc/ and util/, remains exactly in the same licensing situation (Artistic 2.0b5/GPL) as they were.&nbsp; Please see the <a href="">README</a> file for the full details, as well as my <a href=";cid=47399">public apology</a> to chromatic.</p><p>So, to reiterate again:</p><ul> <li>For Pugs contributors working on non-src/ directories, such as modules, tests, examples or documentations, <em>nothing</em> has changed in the licensing situation, and there is no plan at all to change them.</li><li>For Pugs contributors who have checked in src/, I would like to survey if you are okay with releasing your previous and future work under the <a href="">MIT license</a>.&nbsp; If you are explicitly not okay, I'd like to know why.</li><li>Chromatic has requested that his work be pulled out from the src/ directory because he was unwilling to release it under SQLite's terms.&nbsp; However, he later amended that he would be comfortable with the MIT license.</li><li>As my intention with src/ was merely allowing maximum reuse, I'm certainly happy to change to the MIT license's terms; I have reflected this change in the Pugs README.</li><li> The README does not change src/'s licensing currently; nothing will take effect until the next Pugs release, which will happen only after sufficient discussion time for src/ contributors to voice their opinions. </li></ul><p>Aside from the src/ directory, I am uncomfortable with using Artistic license as whole-distribution <em>compilation copyright license</em>, because according to TPF, that may make it illegal to distribute Darren Duncan's <a href=""></a> module (GPL2+) along with Pugs, and I <em>may</em> have already been guilty for doing that for the past Pugs releases, just like Ruby people <em>may</em> be criminal for that with their <a href="">regex.c</a> (LGPL2+).</p><p>Because of this, I still wish to disclaim my compilation copyright, which basically means there is no <em>global</em> license that covers all of Pugs's subdirectory contents. This does not affect any contributed code in any way, and new commits in non-src/ trees are still under the Artistic2.0b5/GPL license by default, unless explicitly marked otherwise in that subdirectory or file.</p><p>Again, sorry for the confusion raised around this matter. I wish my English was more clear and succint...</p><p> <em>(This is a repost from; please leave a comment there instead of on use.perl.)</em> </p> audreyt 2006-04-24T15:43:43+00:00 perl6