Perl 6 summary, 17-23 December, 2006

kudra on 2006-12-25T19:15:00

This week on the Perl 6 mailing lists

"Short answer: absolutely.

"Long answer: emphatically not."

-- Larry Wall, in 'RAII in Perl6/Parrot'

Language

supertyping

Earlier, TSa asked about supertyping, specifically if supertyping will exist in Perl 6. Larry Wall wanted to see some more complicated use cases which would demonstrate that the concept was useful rather than simply an aspect of type theory. Several other people contributed to the thread.

This week, Jonathan Lang addressed TSa's other question of what would happen if an object's type changed while its identity was preserved. Tsa replied to the subthread.

RAII in Perl6/Parrot

Blair Sutton asked if Perl 6 would be able to do RAII. He cited some articles which expressed the view that it was not possible in Python due to the fact that garbage collection does not offer deterministic finalization. This led to the question of whether Perl 6 would suffer from the same problem due to Parrot's style of garbage collection.

Larry Wall replied that deterministic reference counting was only one way to provide transactional security and timely destruction. He assured Blair that Perl 6 has ways to let you not care about some dependencies, while paying attention to others.

Blair appreciated Larry's explanation, and admitted to relying on the deterministic nature of C++, and using RAII to manage locks between threads and tear apart sockets cleanly. He asked for an example of Perl 6 offering the capability to execute code once every reference to an object has been removed. Luke Palmer replied that the LEAVE closure trait was a general method for addressing this.

Parrot Porters

[perl #33962] readline returns one too many lines

Allison Randal reviewed ticket [perl #33962], which was created almost a year ago by Matt Diephouse to report that the readline opcode returns too many lines. She decided to leave the ticket open and link it to the I/O PDD ticket.

Re: [perl #34994] [TODO] make useful parts of Parrot config available at runtime

Leopold Toetsch responded to ticket [perl #34994], which was created in April. He noted that there had been several attempts to solve the issue, and the only working scheme was to link with an object file which had the path inside. He left it as 'todo'.

[perl #39997] [PATCH] PGE P5 Test Cleanup

Patrick R. Michaud and Paul Cochrane looked at ticket [perl #39997], which was written in July. Patrick felt that it was safe to close the ticket, because all 'skip' and 'todo' markers had been factored out of the regex test files. Paul resolved the ticket.

Re: [perl #40361] [PATCH] #40278 [CAGE] perl coding standards coda. (cont.)

Ticket [perl #40361] from September was revived and elicited a great deal of discussion between Paul Cochrane, Chris Dolan, Bob Rogers, Allison Randal, Lee Duhem, Patrick R. Michaud, chromatic, and Nicholas Clark.

It started with Paul suggesting that the ticket could be closed once a decision was made on where formatting information for emacs and vim should be located. Chris mentioned a limitation with the verbose form of the Emacs settings. Bob elaborated, offering a patch as a work-around.

Allison suggested removing all emacs and vim settings from the source code files. She felt that having the tests check for correct formatting addressed the issue without the maintenance costs of editor tips. Patrick and chromatic agreed with her suggestion.

Paul thought that editor hints reduce the amount of cage cleaning work by ensuring that code contributions use the correct style. Nicholas Clark pointed out that the alternative, top-level editor settings, assumes that all a developer's projects use the same coding standard.

After further discussion on options, Allison proposed that for the time being, hints would be left out of Perl files with __END__ or __DATA__ blocks. A future task would be for someone to figure out a way to encourage good habits, without cluttering the source code or assuming that everyone uses emacs or vim. Paul updated the Perl::Critic policy accordingly, and made a note in PDD07.

[perl #40950] [PATCH] Compiling Parrot with the new Borland C++

Steve Peters added a reminder to ticket [perl #40950] that a patch still needs to be applied for compiling Parrot with Borland C++.

[perl #41064] Not-so-new 'make' failures on Darwin

James Keenan was happy to report in ticket [perl #41064] that further suggestions from Will Coleda fixed his problem.

Side effect between exit & .HLL

Last week, François Perrad showed some example code where an error of 'no exception handler' was seen when a .HLL directive was added before a simple subroutine. This week he supplied a patch to address the issue.

[perl #41095] [BUG] Segfault in test.exe during Configuration

In ticket [perl #41095], Nikolay Ananiev reported a segmentation fault on Win32. Jonathan Worthington thanked him for the report, and stated that other solutions were being looked at.

[perl #40802] Investigate Supposed JIT Bug with if/unless Optimization

Jonathan Worthington responded to Matt Diephouse's ticket [perl #40802]. He replied that the bug had been fixed, so he removed the comment from the code.

[perl #40816] open opcode creates file if it doesn't exist

Jonathan Worthington responded to open ticket [perl #40816] to clarify that he did not think that it was a bug for '+<' to be the default mode. Jerry Gay felt that it was a bug, unless it was explicitly documented that 'open' would create a file as default.

[perl #40801] [TODO] Rename enter_nci_method to something better

Matt Diephouse created ticket [perl #40801] to request a new name for enter_nci_method. Kevin Tew suggested register_nci_method.

[perl #41099] [PATCH] root.in Makefile and CREDITS

Eric B. Lubow created ticket [perl #41099] to include a patch to the makefile. Paul Cochrane noted that there were two patches and asked which one should be applied. Eric clarified, and Paul applied the patch as r16183.

[perl #41102] [PATCH] On Win32 with Visual C++, nmake was not automatically selected if mingw was also found on the system

David Woldrich reported a problem with the Parrot configuration script and included a patch, which was applied as r16129. Ticket [perl #41102] tracked the bug.

[perl #41103] [BUG] stdin.'readline'() segfaults on systems w/o readline support

In ticket [perl #41103], Patrick R. Michaud reported a segmentation fault.

[perl #41104] [PATCH] Building on MinGW is disrupted by the presence of /bin/sh.exe on the PATH, docs explain required environment change

David Woldrich's ticket [perl #41104] contained a patch which was applied as r16187.

[perl #41105] [PATCH] Silence a warning on Cygwin

Steve Peters created a patch to eliminate some warnings on Cygwin. It was applied as r16177 and can be viewed as ticket [perl #41105].

Generated .pm files in MANIFEST

Paul Cochrane wanted to know why some files, which are auto-generated, are mentioned in MANIFEST instead of MANIFEST.generated. He planned to move them if there were no objections.

[perl #31652] [TODO] Win32 - Microsoft Visual C++ Toolkit 2003

In ticket [perl #31652], chromatic asked if the toolkit was still required, now that ICU is available. Jonathan Worthington replied that the toolkit was one of the easiest ways to get a C compiler for Windows, and therefore it was still useful to have it documented. Ron Blaschke commented that he thought it was going to be discontinued.

Jonathan Worthington requested a patch for readme.win32.pod, which Ron agreed to write.

[perl #41110] [PATCH] tru64: compile (src/nci.c) and runtime (src/memory.c)

Jarkko Hietaniemi created ticket [perl #41110] to provide patches, which were applied as r16208.

[perl #39802] [PATCH] [CAGE] turning up the warnings levels in gcc as much as we can

Some time ago, Kevin Tew created ticket [perl #39802] to offer a patch to increase warning levels in gcc. Paul Cochrane applied a modified version of the patch but asked what version of gcc some of the flags belonged to, as they did not work with his gcc. Kevin replied.

Re: [perl #39742] [BUG] installed parrot conflicts with dev parrot.

A while ago, Will Coleda reported in ticket [perl #39742] that there was a conflict between an installed version of Parrot and a development version.

Recently, Leopold Toetsch reported that it seemed like a BSD linker issue, because he couldn't verify the problem on Linux. David Landgren was able to verify that the problem is not resolved.

More Undef vs. Null...

Will Coleda wanted to know if Hash and Array keys are meant to have different results when keys are unset. Leopold's opinion was that the .Undefs returned by Arrays are a legacy, and that .Null is correct.

Jonathan Worthington submitted a patch which changes the PMC to use .Null. However, he did not want to apply it until there was a design decision, and until he'd had a chance to fix some of the code which expected to receive .Undef.

Patrick R. Michaud added that there are several places where .Undef was expected. He had no strong feelings about one design over another, but wanted people to be aware of the impact the change would have.

Jerry Gay felt that it would take a coordinated effort and suggested a dedicated day for the change, with community involvement.

Allison Randall gave the decision in favor of consistent use of null. She requested that someone add a note about the change in DEPRECATED.pod.

[perl #40253] [PATCH] [CAGE] always cast printf("%p") to (void *)

Ticket [perl #40253] received an update from Paul Cochrane, who asked if the patch should still be applied. Will Coleda was satisfied with whatever portions of the patch Paul had been able to apply. This was done as r16211.

Assertions and MMD (on Windows XP)

Ron Blaschke had some problems with compiling Parrot on Win XP with Visual C++ when assertions were enabled. He wanted to know if anyone else had this problem, and why the assertion checks if the lowest two bits of a function pointer are zero. chromatic explained that those two bits will be zero if the pointer is raw. Leopold Toetsch added that it was a hack, and the solution was to replace the table with an MMD cache representation.

Janitor Tasks

chromatic reported that he was creating the next Perl.com newsletter and needed a list of Cage Cleaner tasks suitable for someone with Perl and C skills, but very little free time?

Bind to an Unspecified Port

Matt Diephouse is writing a PIR socket library. He found that if he uses '0' as the desired port, the OS will select a port, but that Parrot offers no way to discover what the port was. He included a patch which fixed this for UNIX, and requested help with the Windows version.

Users

Unwanted scalar references

Ovid thanked the mailing list for answering some of his earlier questions. His latest question was how to dereference an unexpected scalar reference.

hello, does anybody who knows the svn respo of synopsis docs?

Fayland Lam asked for the location of the synopsis repository. Audrey Tang replied with the repository URL.

Junctions as arguments (Pugs bug)

Ovid included a code snippet where he was casting a junction as a string and received unexpected results. He wanted to know what the proper response was, in order to write a test.

Jonathan Rockway was not sure what output could be expected from say-ing a junction. He saw two possibilities, and thought that Ovid's expectation was better, but wanted to hear other opinions before tests were added.

Larry Wall answered that what Ovid described was standard autothreading behavior, as described in S09.

Compiler

take: bug or feature?

Ovid posted some code which was failing with the latest Pugs and asked if there was a problem with the code or Pugs. Sean O'Rourke also thought it was a bug. Ovid later confirmed that it was a bug and it was being worked on.

Acknowlegements

This summary was prepared using Mail::Summary::Tools, available on CPAN.

If you appreciate Perl, consider contributing to the Perl Foundation to help support the development of Perl.

Thank you to everyone who has pointed out mistakes and offered suggestions for improving this series. Comments on this summary can be sent to Ann Barcomb, kudra@domaintje.com.

Distribution

This summary can be found in the following places:

See Also