[svn:parrot-pdd] r30616 - trunk/docs/pdds/draft

2008-08-28 Thread allison
Author: allison
Date: Thu Aug 28 02:02:51 2008
New Revision: 30616

Added:
   trunk/docs/pdds/draft/pdd30_install.pod

Log:
[pdd] Adding a draft installation PDD, thanks to Reini Urban.


Added: trunk/docs/pdds/draft/pdd30_install.pod
==
--- (empty file)
+++ trunk/docs/pdds/draft/pdd30_install.pod Thu Aug 28 02:02:51 2008
@@ -0,0 +1,213 @@
+# Copyright (C) 2008, The Perl Foundation.
+# $Id: pdd30_install.pod 30255 2008-08-23 12:15:46Z rurban $
+
+=head1 NAME
+
+docs/pdds/draft/pdd30_install.pod - Parrot Installation
+
+=head1 ABSTRACT
+
+This PDD defines Parrot's installation details. The goal is to provide binary
+packages, a working Cmake install for parrot, the installables, FHS compliant
+search paths for the installables and solving the problem of not accessing
+installed source-only files and the optimization of config bootstrapping
+if a frozen config_hash is already linked.
+
+=head1 VERSION
+
+$Revision: 30459 $
+
+=head1 SYNOPSIS
+
+ make install
+ make test-installable -C language/lang
+ make installable -C language/lang
+ make install -C language/lang DESTDIR=inst
+
+=head1 DESCRIPTION
+
+Parrot installation mechanisms are more powerful than perl5's.
+MANIFEST contains also the end location, tools/dev/install_files.pl is driven
+by this definition.
+The three runtime paths for include, library for load_bytecode and dynext
+for loadlib should end up in the $prefix/lib/parrot paths.
+See #56996-fhs-runtime.patch
+
+Contrary to perl5, parrot and its language implementions on top of parrot may
+be installed as self-hosting single-file executables, with the help of merged
+pbc's and pbc2exe --install.
+
+Bootstrapping the config hash should not read a config file when the hash is
+already contained in the pmc or executable. See #57418 [TODO] optimize
+_config to omit .include library/config.pir on installables.
+
+The same problem is for every .include, .loadlib and .load_bytecode statement
+in installed files where the target is not installed. This could be solved with
+a module system or with pbc_merge removing not needed .load_bytecode 
statements.
+
+Test executables are binary different to installable executables because of
+this embedded config hash. Test executables contain config hash with
+the prefix to the build_dir, installables to the given prefix from 
Configure.pl.
+
+There are's also a long-standing conflict in building parrot with an already
+installed shared libparrot.so. See #39742-installed-conflict.patch which adds
+the blib/lib path to PATH resp. LD_RUN_PATH.
+
+=head1 DEFINITIONS
+
+An Binstallable is a pbc or exe which must not access the build_dir
+paths. The build_dir is not available in a binary package. This is solved by
+generating and linking a special Finstall_config.fpmc. Custom python modules
+have a similar packaging problem, which they haven't solved yet.
+
+Bbuild_dir is the full path where parrot was built. It is defined in the
+config hash. When building from source build_dir is also the PARROT_RUNTIME 
prefix.
+
+BDESTDIR is the end location of the parrot tree in front of the prefix
+(/usr or /usr/local). This allows packaging by installing into a seperate
+install tree and do a tar cf there.
+
+The Bconfig hash is the return value of the global function C_config(),
+generated in Fconfig_lib.pasm, and either defined in Flibrary/config.pir, 
or
+as frozen pmc embedded in the test executable (Fconfig.fpmc), the installable
+executable (Finstall_config.fpmc) or empty for miniparrot 
(Fnull_config.fpmc).
+
+=head1 IMPLEMENTATION
+
+=head2 make install
+
+The parrot build system is optimized for building and testing in the
+build_dir, but not for building with an already installed parrot due to simple
+build system bugs, and not optimized to build and test installables, which 
should
+not access the libraries in the build_dir, but in the DESTDIR.
+
+The goal is to make install work for parrot, the utils, and all the languages.
+For parrot and its utils the install actions are defined in the main Makefile,
+for the languages the install actions should be defined in its Makefiles and
+is implemented in #56554-make-install-lang.patch.
+
+Cmake install currently does not work with an already installed shared
+libparrot.so on most platforms. There's a patch at #39742.
+
+make install actions for a language lang:
+
+ copy installables to DESTDIR/bin_dir as parrot-lang
+ optionally copy lang.pbc to DESTDIR/script_dir (/usr/lib/parrot/bin/ ?)
+ copy libraries to DESTDIR/lib_dir/parrot/dynext/
+ optionally copy pbc's to DESTDIR/lib_dir/parrot/library/ (only php_ext)
+ optionally copy include pasm and pirs to DESTDIR/lib_dir/parrot/include/ (not 
yet)
+ copy docs to DESTDIR/doc_dir/
+ generate a man(1) page and copy to DESTDIR/man_dir/
+ optionally generate html and copy to DESTDIR/html_dir/lang/
+
+=head2 make installable -C languages/lang
+
+This creates a pbc or exe linked to 

pdd30_install.pod (was Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod)

2008-08-28 Thread Allison Randal

Reini Urban wrote:


I have one more draft.
chromatic told me write up such a thing, but it's not finished yet.
It could go to the cygwin070patches branch which is really a
parrot_install branch, but also to HEAD.

This needs some technical review because but I'm still a beginner
in what is possible and what not.


Thanks, applied to trunk in r30616. I gave it a quick read-through, but 
haven't edited it yet. (Have added it to my Hiveminder todo list.)


All input from other parroteers welcome.

Allison


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Moritz Lenz
Reini Urban wrote:

 +=head1 DESCRIPTION
 +
 +Parrot installation mechanisms are more powerful than perl5's.
 +MANIFEST contains also the end location, tools/dev/install_files.pl is driven
 +by this definition.

To me it's not clear what the end location is - care to elaborate?

Moritz

-- 
Moritz Lenz
http://moritz.faui2k3.org/ |  http://perl-6.de/


Re: struct and pointer to pointer in ATTR

2008-08-28 Thread Allison Randal

NotFound wrote:

Hello.

The current grammar for ATTR in pmc2c allows declarations of the form:
type * varname

In the perl6multisub pmc we have the attribute candidates_sorted whose
intended type is candidate_info **, having two problems:

The current grammar allows a single pointer, not a pointer to a
pointer. This can be easily solved.

candidate_info is a struct declared in the pmc file (as typedef struct
candidate_info { ... } candidate_info), then his declaration is not
viewable at the point of inclusion of the generated h file. This can
be solved by declaring the ATTR with type struct candidate_info
instead of candidate_info, but the grammar for ATTR does not allow it.

I think that allowing struct in ATTR is the simpler solution to the
second problem, because the intended usage is for struct used
internally in the pmc, not for his documented interface.

The attached patch changes the ATTR grammar and uses the changes to
clean the workarounds currently used in perl6multsub pmc. It passes
all coretest on my system, both building with C or with C++.


Approved for application. But, keep in mind that ATTRs other than 
INTVAL, FLOATVAL, STRING *, and PMC * cannot have automatic 
GET_ATTR/SET_ATTR accessor macros generated for them, and any C PMCs 
with these low-level ATTRs cannot be subclassed from PIR/HLLs.


Allison


[svn:parrot-pdd] r30604 - in trunk: docs/pdds/draft src

2008-08-28 Thread Whiteknight
Author: Whiteknight
Date: Wed Aug 27 16:25:00 2008
New Revision: 30604

Modified:
   trunk/docs/pdds/draft/pdd11_extending.pod

Changes in other areas also in this revision:
Modified:
   trunk/src/extend.c
   trunk/src/inter_run.c

Log:
[DOCS] Document Parrot_call_method as per RT#36243. Also, document a function 
that is a dependency of this one.

Modified: trunk/docs/pdds/draft/pdd11_extending.pod
==
--- trunk/docs/pdds/draft/pdd11_extending.pod   (original)
+++ trunk/docs/pdds/draft/pdd11_extending.pod   Wed Aug 27 16:25:00 2008
@@ -283,11 +283,13 @@
 up Parrot's registers in line with the Parrot calling conventions; see
 Lpdd03_calling_conventions.pod for more details.
 
-=item CParrot_call_method(interp,
-Parrot_PMC sub, Parrot_String method, Parrot_Int argcount, ...)
+=item CParrot_call_method(PARROT_INTERP, Parrot_PMC sub, Parrot_PMC obj,
+Parrot_String method, ARGIN(const char *signature), ...)
 
-Calls a Parrot method named Cmethod with Cargcount PMC parameters. NB.
-This is not yet implemented and may change.
+Call the parrot subroutine Csub as a method on PMC object Cobj. The method
+should have the name Cmethod as a Parrot_string, and should have a function
+signature Csignature. Any arguments to the method can be passed at the end
+as a variadic argument list.
 
 =back
 


[perl #46823] [TODO] [Pir] Rewrite Resizeable*Array tests properly when exceptions are implemented

2008-08-28 Thread Christoph Otto via RT
On Thu Oct 25 00:49:38 2007, pcoch wrote:
 
 To be totally honest I wish I knew.  I'm just going through converting
 the todo items in code into RT tickets and sometimes the todo comments
 aren't necessarily all that clear as to what needs to be done.  I'm
 also (unfortunately) not familiar enough with pir to see in the code
 of the tests what needs fixing otherwise I might have been able to
 expand a little in the ticket.  I'm really sorry I can't be of more
 help here!
 
 Paul
 

Most of these test wouldn't throw an exception anyway, since assigning
to a positive out-of-bounds element simply resizes the array.  (This
excludes nonsensically large positive indicies, which should probably
tested for.)  I added exception handling for oob indicies to the one
fixed array test in r30610, which still passes.  I deleted the other
references to this ticket.
It's possible that out-of-bounds refers to negative indicies.  I added
some tests with exception handlers for those cases in r30611.

If there are no objections, I'll mark this resolved after the weekend.

Christoph




[perl #58414] [TODO] review calling conventions

2008-08-28 Thread via RT
# New Ticket Created by  Allison Randal 
# Please include the string:  [perl #58414]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58414 


Briefly discussed in a phone call with Patrick, Jerry, and chromatic: 
Our calling conventions have grown in an organic fashion over the past 
few years, and they're showing some signs of cruft. The current design 
and implementation could use a consistency review. Among the topics for 
review:

- VTABLE_invoke is inconsistent between different sub-like PMCs. For 
most subs it simply sets up the environment for invocation, and selects 
the first opcode instruction of the sub as the next 'opcode_t *' for 
'runops'. For NCI subs it actually invokes the function pointer. The 
disjoint means that NCI subs can't be invoked from C argument lists the 
same way as all the other subs (because the regular C argument list 
passing can only happen *after* VTABLE_invoke has been called to set up 
the environment, but NCI requires the arguments to be passed *before* 
the call to VTABLE_invoke).

- Also, VTABLE_invoke can't really be overridden from PIR, because it 
requires direct access to low-level interpreter data structures.

- Standardize on PCC-style signature description strings throughout the 
system (instead of different signature description strings for NCI, PCC, 
and regular subs).

- Refactor to remove code duplication between the various dispatch systems.

- Optimize PCC dispatch (refactor to slim down the code).

- Enable dispatching by CallSignature PMC everywhere.


Some of these elements may be post-1.0 features. Consider this ticket a 
collection point for calling convention issues, and link in related tickets.

Allison


[perl #58410] [TODO] Deprecate n_* variants of the math opcodes

2008-08-28 Thread via RT
# New Ticket Created by  Allison Randal 
# Please include the string:  [perl #58410]
# in the subject line of all future correspondence about this issue. 
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58410 


Briefly discussed on the phone with Patrick, Jerry, and chromatic: The 
versions of the math opcodes that modify an existing destination PMC 
instead of creating a new destination PMC are not useful to HLLs, 
because they make assumptions about assignment semantics that don't hold 
true for all (or possibly even any) HLLs. Code generated from PCT takes 
the result of the math op as a temporary result value, and then performs 
a separate assignment operation to the HLL result variable, following 
the HLLs semantics for assignment.

The plan is to make the regular variants (like 'add') create a new 
destination PMC, and then deprecate the old n_* variants (like 'n_add').

Allison


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Reini Urban
2008/8/28 Moritz Lenz [EMAIL PROTECTED]:
 +=head1 DESCRIPTION
 +
 +Parrot installation mechanisms are more powerful than perl5's.
 +MANIFEST contains also the end location, tools/dev/install_files.pl is 
 driven
 +by this definition.

 To me it's not clear what the end location is - care to elaborate?

The end location by make install is a string concatation of

* the $(DESTDIR) as defined per Makefile argument,
* plus the respective Configure defined directoy (prefix,bin_dir, lib_dir,
  include_dir, mandir, doc_dir, ...)
  where the directores are defined by default to follow the FHS convention
  and optional Configure.pl arguments,
  and the files as defined in one of the three MANIFEST files in the format
filename \t [package]lib,doc,include,bin
  - files from the [library] package go to prefix/lib_dir and either
dynext, library or include,
* plus the filename as defined by the three MANIFEST files.
There's additional logic in the tools/dev/install_files.pl script.

prefix defaults to /usr/local and packages define them as /usr
lib_dir defaults to prefix + /lib
  and libraries go to parrot/dynext for shared libs (flat)
 parrot/library for pbc files (structured
according to the namespace)
 parrot/include for pir and pasm files (flat)
bin_dir to prefix + /bin
doc_dir to  prefix + /share/doc/parrot
mandir to prefix + /man, but it should be prefix + /share/man
according to the FHS
include_dir to prefix + /include/parrot
pkgconfig_dir to prefix + /lib/pkgconfig

What is missing is the end location of language pbc's and installable exe's.
The convention by fedora and cygwin for parrot-language installables is
  $(DESTDIR)@bin_dir@/parrot-$(LANG)@exe@

Open problem:
For language pbc's a new dir like script_dir or lib_dir/parrot/bin
would be required.
They could also pollute $(DESTDIR)@lib_dir@/parrot/library where the other
pbc's are.
The language group and op shared libs go to $(DESTDIR)@lib_dir@/parrot/dynext
for sure.
e.g. tclsh.pbc, APL.pbc, ...
-- 
Reini Urban
http://phpwiki.org/ http://murbreak.at/


Re: struct and pointer to pointer in ATTR

2008-08-28 Thread NotFound
On Thu, Aug 28, 2008 at 11:33 AM, Allison Randal [EMAIL PROTECTED] wrote:

 Approved for application. But, keep in mind that ATTRs other than INTVAL,
 FLOATVAL, STRING *, and PMC * cannot have automatic GET_ATTR/SET_ATTR
 accessor macros generated for them, and any C PMCs with these low-level
 ATTRs cannot be subclassed from PIR/HLLs.

Applied in r30617 the pmc2c part and in r30618 the perl6multisub part.

-- 
Salu2


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Moritz Lenz
Reini Urban wrote:
 2008/8/28 Moritz Lenz [EMAIL PROTECTED]:
 +=head1 DESCRIPTION
 +
 +Parrot installation mechanisms are more powerful than perl5's.
 +MANIFEST contains also the end location, tools/dev/install_files.pl is 
 driven
 +by this definition.

 To me it's not clear what the end location is - care to elaborate?
 
 The end location by make install is a string concatation of

[...]

so it's basically the individual, final destination path for that file?

Thanks for the explanation. My point is (and I admit that I wasn't
very clear about it) that IMHO the term end location is ambigous
(unless it's some kind of technical term with which I'm not familiar),
and thus should be changed in the pdd.

Cheers,
Moritz

-- 
Moritz Lenz
http://moritz.faui2k3.org/ |  http://perl-6.de/


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Reini Urban
2008/8/28 Moritz Lenz [EMAIL PROTECTED]:
 Reini Urban wrote:
 2008/8/28 Moritz Lenz [EMAIL PROTECTED]:
 +=head1 DESCRIPTION
 +
 +Parrot installation mechanisms are more powerful than perl5's.
 +MANIFEST contains also the end location, tools/dev/install_files.pl is 
 driven
 +by this definition.

 To me it's not clear what the end location is - care to elaborate?

 The end location by make install is a string concatation of

 [...]

 so it's basically the individual, final destination path for that file?

final destination path is of course much better.
Someone might be tempted to look for the PC game or the movie.

 Thanks for the explanation. My point is (and I admit that I wasn't
 very clear about it) that IMHO the term end location is ambigous
 (unless it's some kind of technical term with which I'm not familiar),
 and thus should be changed in the pdd.

My draft is very rough, and needs some more days.

I've also put into the parrot wiki, so that you can easily can change
things. I'll pick it up then.
http://www.perlfoundation.org/parrot/index.cgi?parrot_installation
-- 
Reini Urban
http://phpwiki.org/ http://murbreak.at/


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Patrick R. Michaud
On Thu, Aug 28, 2008 at 02:10:27PM +0200, Reini Urban wrote:
 Open problem:
 For language pbc's a new dir like script_dir or lib_dir/parrot/bin
 would be required.
 They could also pollute $(DESTDIR)@lib_dir@/parrot/library where the other
 pbc's are.
 The language group and op shared libs go to $(DESTDIR)@lib_dir@/parrot/dynext
 for sure.
 e.g. tclsh.pbc, APL.pbc, ...

I'd be a bit surprised if the .pbc files went into dynext/ -- that doesn't
seem to match what currently exists there (which is all .so files on
my system).

At the moment I'm planning for language pbcs to go into 
.../parrot/library/ so they can be easily accessed via
load_bytecode.  I've found that in a dynamic environment like
Parrot there's very little difference between a language and
a library [1].  :-)

Also, I wonder if any of this relates to RT #47992 ('parrot foo'
automatically finds and invokes foo.pbc)?

Pm

[1] CPAN is my programming language of choice; the rest is just syntax.
  --Audrey Tang




Re: [perl #58076] Configure tests fail with Can't store CODE items

2008-08-28 Thread Andy Dougherty
On Tue, 26 Aug 2008, James Keenan via RT wrote:

 Patched two subs in Parrot::Configure and adjusted test files in r30583.
  Tested with triggers in hints files on Linux and Darwin.

Thanks.  That closes this ticket and just leaves us with the old familiar:

t/steps/auto_warnings-01.Compilation failed with 'cc'
# Looks like you planned 56 tests but only ran 15.
dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 16-56
Failed 41/56 tests, 26.79% okay

where I've told Configure.pl to use gcc, but the test still falls back on 
using the incorrect value of 'cc' that perl5 was built with.

-- 
Andy Dougherty  [EMAIL PROTECTED]


Re: [perl #58414] [TODO] review calling conventions

2008-08-28 Thread Patrick R. Michaud
Two other items that ought to be taken into consideration:

-  We need an implementation of the :lookahead flag for Rakudo.
   (See discussion thread at [1].)

-  Per a conversation with Allison and Jonathan at YAPC::EU, it might
   be useful to have a :capture flag on parameters and return
   values to capture all arguments into a single (Capture) PMC.

[1]  
http://groups.google.com/group/perl.perl6.internals/browse_thread/thread/fce44e38aa856be9/96417ed37799cd37

Pm


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Reini Urban
2008/8/28 Patrick R. Michaud [EMAIL PROTECTED]:
 On Thu, Aug 28, 2008 at 02:10:27PM +0200, Reini Urban wrote:
 Open problem:
 For language pbc's a new dir like script_dir or lib_dir/parrot/bin
 would be required.
 They could also pollute $(DESTDIR)@lib_dir@/parrot/library where the other
 pbc's are.
 The language group and op shared libs go to $(DESTDIR)@lib_dir@/parrot/dynext
 for sure.
 e.g. tclsh.pbc, APL.pbc, ...

 I'd be a bit surprised if the .pbc files went into dynext/ -- that doesn't
 seem to match what currently exists there (which is all .so files on
 my system).

Sure.

My comment about the tclsh.pbc, APL.pbc, ... was referring to the
language pbc's, not to the group and op shared libs.

 At the moment I'm planning for language pbcs to go into
 .../parrot/library/ so they can be easily accessed via
 load_bytecode.  I've found that in a dynamic environment like
 Parrot there's very little difference between a language and
 a library [1].  :-)

That's probably the best, but we can also think of not installing that at all,
and only install executables. But then the new pddxx_language_interop.pod
at http://nopaste.snit.ch/13890 will have problems. exe cannot loaded
from other languages, only pbc's.
So each language will need its root namespace reserved for it's lang.pbc.

We could thing of symlinking it to runtime/parrot/library
at make languages, so language_interop can be tested.

 Also, I wonder if any of this relates to RT #47992 ('parrot foo'
 automatically finds and invokes foo.pbc)?

If foo.pbc is in parrot/library/foo.pbc then it will be found.

The pbc library searchpath is only . and @lib_dir@/parrot/library.

Also PARROT_RUNTIME can be defined in ENV to override
the runtime prefix and therefore the library search path..

-- 
Reini Urban
http://phpwiki.org/ http://murbreak.at/


[svn:parrot-pdd] r30620 - trunk/docs/pdds/draft

2008-08-28 Thread allison
Author: allison
Date: Thu Aug 28 09:09:48 2008
New Revision: 30620

Added:
   trunk/docs/pdds/draft/pdd31_hll_interop.pod

Log:
[pdd] Adding an early draft PDD for HLL interoperability, from Bob Rogers.


Added: trunk/docs/pdds/draft/pdd31_hll_interop.pod
==
--- (empty file)
+++ trunk/docs/pdds/draft/pdd31_hll_interop.pod Thu Aug 28 09:09:48 2008
@@ -0,0 +1,466 @@
+# Copyright (C) 2008, The Perl Foundation.
+# $Id: $
+
+=head1 NAME
+
+docs/pdds/pddxx_language_interop.pod - Inter-language calling
+
+=head1 VERSION
+
+$Revision: 28231 $
+
+=head1 ABSTRACT
+
+This PDD describes Parrot's conventions and support for communication between
+high-level languages (HLLs).  It is focused mostly on what implementors should
+do in order to provide this capability to their users.
+
+=head1 DESCRIPTION
+
+The ability to mix different high-level languages at runtime has always been
+an important design goal of Parrot.  Another important goal, that of
+supporting all dynamic languages, makes language interoperability especially
+interesting -- where interesting means the same as it does in the Chinese
+curse, May you live in interesting times.  It is expected that language
+implementers, package authors, and package users will have to be aware of
+language boundaries when writing their code.  It is hoped that this will not
+become too burdensome.
+
+None of what follows is binding on language implementors, who may do whatever
+they please.  Nevertheless, we hope they will at least follow the spirit of
+this document so that the code they produce can be used by the rest of the
+Parrot community, and save the fancy footwork for intra-language calling.
+However, this PDD Bis binding on Parrot implementors, who must provide a
+stable platform for language interoperability to the language implementors.
+
+=head2 Ground rules
+
+In order to avoid N**2 complexity and the resulting coordination headaches,
+each language compiler provides an interface as a target for other languages
+that should be designed to require a minimum of translation.  In the general
+case, some translation may be required by both the calling language and the
+called language:
+
+|
+   |
+|Calling sub
+| |
+|   Language X|
+| V
+|Calling stub
++ |
+  |
+  plain Parrot  |
+  |
++ |
+|V
+|  Called wrapper
+| |
+| |
+|   Language YV
+| Called sub
+   |
+
+Where necessary, a language may need to provide a wrapper sub to interface
+external calls to the language's internal calling and data representation
+requirements.  Such wrappers are free to do whatever translation is required.
+
+Similarly, the caller may need to emit a stub that converts an internal call
+into something more generic.
+
+{{ Of course, stub is really too close to sub, so we should find a better
+word.  Doesn't the C community call these bounce routines?  Or something?
+-- rgr, 31-Jul-08. }}
+
+{{ I am discovering that there are five different viewpoints here,
+corresponding to the five layers (including plain Parrot) of the diagram
+above.  I need to make these viewpoints clearer, and describe the
+responsibilities of each of these parties to each other.  -- rgr,
+31-Jul-08. }}
+
+Languages are free to implement the stub and wrapper layers (collectively
+called glue) as they see fit.  In particular, they may be inlined in the
+caller, or integral to the callee.
+
+Ideally, of course, the plain Parrot layer will be close enough to the
+semantics of both languages that glue code is unnecesary, and the call can be
+made directly.  Language implementors are encouraged to dispense with glue
+whenever possible, even if glue is sometimes required for the general case.
+
+In summary:
+
+=over 4
+
+=item *
+
+Each HLL gets its own namespace subtree, within which Cget_hll_global and
+Cset_hll_global operate.  In order to make external calls, the HLL must
+provide a means of identifying the language, the function, and enough
+information about the arguments and return values for the calling language to
+generate the call correctly.  This is necessarily language-dependent, and is
+beyond the scope of this document.
+
+=item *
+
+When calling across languages, both the caller and the callee should try to
+use plain Parrot semantics to the extent possible.  This is explained in
+more detail below, but essentially means to use the simplest calling
+conventions and PMC classes possible.  

Re: [svn:parrot-pdd] r30620 - trunk/docs/pdds/draft

2008-08-28 Thread Moritz Lenz
[EMAIL PROTECTED] wrote:
 +{{ Is the term unimethod acceptable here?  -- rgr, 29-Jul-08. }}

I think for dispatch the term is single dispatch, and unimethod
could thus be single method.

Moritz

-- 
Moritz Lenz
http://moritz.faui2k3.org/ |  http://perl-6.de/


Re: [perl #58410] [TODO] Deprecate n_* variants of the math opcodes

2008-08-28 Thread Geoffrey Broadwell
On Thu, 2008-08-28 at 00:03 -0700, Allison Randal wrote:
 Briefly discussed on the phone with Patrick, Jerry, and chromatic: The 
 versions of the math opcodes that modify an existing destination PMC 
 instead of creating a new destination PMC are not useful to HLLs, 
 because they make assumptions about assignment semantics that don't hold 
 true for all (or possibly even any) HLLs. Code generated from PCT takes 
 the result of the math op as a temporary result value, and then performs 
 a separate assignment operation to the HLL result variable, following 
 the HLLs semantics for assignment.
 
 The plan is to make the regular variants (like 'add') create a new 
 destination PMC, and then deprecate the old n_* variants (like 'n_add').

What is the replacement for the old regular variants that use a
pre-existing destination?

A few years ago when I was doing copious Perl 5 PDL work, I found that
in certain loops I would get bottlenecked entirely by creation and
destruction of temporaries.  I might be doing several dozen math
operations per iteration, but I as the programmer knew that I only
needed a handful of temporaries, and these could be created outside the
loop.  The vast majority of the object cycling was quite obviously
wasted.  In some cases, I could work around this by considerably
uglifying the code and/or reaching through several layers of
abstraction, but sometimes there was no recourse except to drop to
PDL::PP (specially preprocessed C) or even C itself.

I'd like to be able to write decently-performing math libraries in PIR,
instead of having to drop down all the way to C.  Being forced to create
and destroy loads of temporaries I don't need will make this nigh
impossible, let alone putting a major strain on the GC subsystem.

Will there be some way to stay in PIR and still optimize away temporary
cycling?


-'f




Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Will Coleda
On Thu, Aug 28, 2008 at 11:09 AM, Reini Urban [EMAIL PROTECTED] wrote:
 2008/8/28 Patrick R. Michaud [EMAIL PROTECTED]:
 On Thu, Aug 28, 2008 at 02:10:27PM +0200, Reini Urban wrote:
 Open problem:
 For language pbc's a new dir like script_dir or lib_dir/parrot/bin
 would be required.
 They could also pollute $(DESTDIR)@lib_dir@/parrot/library where the other
 pbc's are.
 The language group and op shared libs go to 
 $(DESTDIR)@lib_dir@/parrot/dynext
 for sure.
 e.g. tclsh.pbc, APL.pbc, ...

 I'd be a bit surprised if the .pbc files went into dynext/ -- that doesn't
 seem to match what currently exists there (which is all .so files on
 my system).

 Sure.

 My comment about the tclsh.pbc, APL.pbc, ... was referring to the
 language pbc's, not to the group and op shared libs.

 At the moment I'm planning for language pbcs to go into
 .../parrot/library/ so they can be easily accessed via
 load_bytecode.  I've found that in a dynamic environment like
 Parrot there's very little difference between a language and
 a library [1].  :-)

 That's probably the best, but we can also think of not installing that at all,
 and only install executables. But then the new pddxx_language_interop.pod
 at http://nopaste.snit.ch/13890 will have problems. exe cannot loaded
 from other languages, only pbc's.

Right. We have to (eventually) install the pbcs, no matter if we also
install the exes for convenience.

 So each language will need its root namespace reserved for it's lang.pbc.

While it would help, there's no guarantee that namespace in PBC
matches path on filesystem.

 We could thing of symlinking it to runtime/parrot/library
 at make languages, so language_interop can be tested.

Are symlinks usable wherever we might install?

 Also, I wonder if any of this relates to RT #47992 ('parrot foo'
 automatically finds and invokes foo.pbc)?

 If foo.pbc is in parrot/library/foo.pbc then it will be found.

 The pbc library searchpath is only . and @lib_dir@/parrot/library.

 Also PARROT_RUNTIME can be defined in ENV to override
 the runtime prefix and therefore the library search path..

I had always thought that the compiler/compreg opcode would eventually
be extended to load the library we needed for language interop; If
not, I'm not sure there's much point in keeping the ability to
register compilers, is there? If someone wants to use the tcl
compiler, they need to know to load the bytecode first anyway.

 --
 Reini Urban
 http://phpwiki.org/ http://murbreak.at/




-- 
Will Coke Coleda


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Reini Urban

Will Coleda schrieb:

On Thu, Aug 28, 2008 at 11:09 AM, Reini Urban [EMAIL PROTECTED] wrote:

We could thing of symlinking it to runtime/parrot/library
at make languages, so language_interop can be tested.


Are symlinks usable wherever we might install?


True, there's no perl -MExtUtils::Command -e ln_s
But we have LN_S  = @lns@


Also, I wonder if any of this relates to RT #47992 ('parrot foo'
automatically finds and invokes foo.pbc)?

If foo.pbc is in parrot/library/foo.pbc then it will be found.

The pbc library searchpath is only . and @lib_dir@/parrot/library.

Also PARROT_RUNTIME can be defined in ENV to override
the runtime prefix and therefore the library search path..


I had always thought that the compiler/compreg opcode would eventually
be extended to load the library we needed for language interop; If
not, I'm not sure there's much point in keeping the ability to
register compilers, is there? If someone wants to use the tcl
compiler, they need to know to load the bytecode first anyway.


--
Reini Urban
http://phpwiki.org/  http://murbreak.at/


Re: gsoc_nci merge

2008-08-28 Thread Reini Urban

François Perrad schrieb:

The following patch adds NCIGEN in the documentation (HTML generated).
Note : needs a better title than 'Native Call Interface Generator'.


Why?
I find it perfect.
It makes sense and it even matches the abbrevation.

Java:
Java native interface code generator
  www.freepatentsonline.com/6066181.html
Native Call Stub Generator



Re: [perl #57190] HLL Interoperation

2008-08-28 Thread Allison Randal

Bob Rogers wrote:

   OK, here's my straw-man proposal for a language interoperability
framework; my apologies for sitting on it so long.  It's still pretty
messy, but I'm sure it will benefit more from other viewpoints at this
stage than from polishing.


Thanks, added to trunk as pdd31_hll_interop.pod in r30620. I gave it a 
quick review, but haven't edited it yet.


Allison


[PATCH] more packages

2008-08-28 Thread Reini Urban

Will Coleda schrieb:

On Sun, Aug 24, 2008 at 12:26 PM, Moritz Lenz
[EMAIL PROTECTED] wrote:

Reini Urban wrote:

2008/8/23 François Perrad [EMAIL PROTECTED]:

2008/8/23 Allison Randal [EMAIL PROTECTED]:

Moritz Lenz wrote:

On #perl6 somebody just asked if there were up-to-date windows builds of
parrot somewhere, he had googled for 'parrot windows'. The parrotwin32
project didn't show up in his search (but it's first for 'parrot win32').

I think we should improve that situation. Suggestions:

1) A link on http://www.parrotcode.org/source.html

Sure.

Already done since 2-3 months, see
http://www.parrotcode.org/source.html#Packages,
but with the word Win32, not Windows.

Cygwin is missing there:

a href=http://cygwin.com/;Cygwin/a

Attached patch adds that.


I don't see the source for the webpage, so I can only do
the next ones like this:

  lia href=http://alioth.debian.org/projects/pkg-parrot/;Debian 
Packages/a/li
+ lia 
href=http://www.gentoo-portage.com/dev-lang/parrot;Gentoo/a/li
+ lia 
href=http://www.freebsd.org/cgi/ports.cgi?query=parrot;Freebsd/a/li
  lia 
href=http://sourceforge.net/project/showfiles.php?group_id=211372;Windows 
(Win32)/a/li

  lia href=http://cygwin.com/;Cygwin/a/li



--
Reini Urban
http://phpwiki.org/  http://murbreak.at/


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Andy Dougherty
On Thu, 28 Aug 2008, Reini Urban wrote:

 Will Coleda schrieb:
  On Thu, Aug 28, 2008 at 11:09 AM, Reini Urban [EMAIL PROTECTED] wrote:
   We could thing of symlinking it to runtime/parrot/library
   at make languages, so language_interop can be tested.
  
  Are symlinks usable wherever we might install?
 
 True, there's no perl -MExtUtils::Command -e ln_s
 But we have LN_S  = @lns@

But that's not necessarily a symbolic link.  It was originally intended 
only for use with files, not directories.  If symlinks aren't available on 
Unix, it falls back to a plain 'ln'.  On Win32 versions of perl, lns is 
usually defined as 'copy'.

So the short answer is that, at the moment, without additional 
Configure.pl work, you can't assume $Config{lns} can be used to make 
symbolic links for directories.

-- 
Andy Dougherty  [EMAIL PROTECTED]



Re: [PATCH] more packages

2008-08-28 Thread Will Coleda
On Thu, Aug 28, 2008 at 2:37 PM, Reini Urban [EMAIL PROTECTED] wrote:
 Will Coleda schrieb:

 On Sun, Aug 24, 2008 at 12:26 PM, Moritz Lenz
 [EMAIL PROTECTED] wrote:

 Reini Urban wrote:

 2008/8/23 François Perrad [EMAIL PROTECTED]:

 2008/8/23 Allison Randal [EMAIL PROTECTED]:

 Moritz Lenz wrote:

 On #perl6 somebody just asked if there were up-to-date windows builds
 of
 parrot somewhere, he had googled for 'parrot windows'. The
 parrotwin32
 project didn't show up in his search (but it's first for 'parrot
 win32').

 I think we should improve that situation. Suggestions:

 1) A link on http://www.parrotcode.org/source.html

 Sure.

 Already done since 2-3 months, see
 http://www.parrotcode.org/source.html#Packages,
 but with the word Win32, not Windows.

 Cygwin is missing there:

 a href=http://cygwin.com/;Cygwin/a

 Attached patch adds that.

 I don't see the source for the webpage, so I can only do
 the next ones like this:

  lia href=http://alioth.debian.org/projects/pkg-parrot/;Debian
 Packages/a/li
 + lia
 href=http://www.gentoo-portage.com/dev-lang/parrot;Gentoo/a/li
 + lia
 href=http://www.freebsd.org/cgi/ports.cgi?query=parrot;Freebsd/a/li
  lia
 href=http://sourceforge.net/project/showfiles.php?group_id=211372;Windows
 (Win32)/a/li
  lia href=http://cygwin.com/;Cygwin/a/li



 --
 Reini Urban
 http://phpwiki.org/  http://murbreak.at/


https://svn.perl.org/perl.org/docs/live/parrotcode

Applied, thanks!


-- 
Will Coke Coleda


Re: [perl #57190] HLL Interoperation

2008-08-28 Thread Allison Randal

Allison Randal wrote:

Bob Rogers wrote:

   OK, here's my straw-man proposal for a language interoperability
framework; my apologies for sitting on it so long.  It's still pretty
messy, but I'm sure it will benefit more from other viewpoints at this
stage than from polishing.


Thanks, added to trunk as pdd31_hll_interop.pod in r30620. I gave it a 
quick review, but haven't edited it yet.


I've added a series of inline comments to help guide further discussion. 
Thanks for raising key points to get the discussion started.


Allison


[svn:parrot-pdd] r30622 - trunk/docs/pdds/draft

2008-08-28 Thread allison
Author: allison
Date: Thu Aug 28 12:43:19 2008
New Revision: 30622

Modified:
   trunk/docs/pdds/draft/pdd31_hll_interop.pod

Log:
[pdd] Adding a series of architectural comments to the HLL Interop PDD.


Modified: trunk/docs/pdds/draft/pdd31_hll_interop.pod
==
--- trunk/docs/pdds/draft/pdd31_hll_interop.pod (original)
+++ trunk/docs/pdds/draft/pdd31_hll_interop.pod Thu Aug 28 12:43:19 2008
@@ -41,6 +41,13 @@
 case, some translation may be required by both the calling language and the
 called language:
 
+{{ There seems to be an implied basic assumption here that language
+interoperability is the responsibility of the language implementor. It is not.
+We cannot require that language implementors design and implement their
+languages according to some global specification. Any interoperability
+infrastructure must be provide by Parrot, and must work for all languages.
+--allison }}
+
 |
|
 |Calling sub
@@ -70,7 +77,13 @@
 
 {{ Of course, stub is really too close to sub, so we should find a better
 word.  Doesn't the C community call these bounce routines?  Or something?
--- rgr, 31-Jul-08. }}
+-- rgr, 31-Jul-08. 
+
+The language will never provide a wrapper for its subs. For the most part,
+wrappers will be unnecessary. Where a wrapper is desired to make a library from
+some other language act more like a native library, the person who desires
+the native behavior can implement the wrapper and make it publically available.
+--allison }}
 
 {{ I am discovering that there are five different viewpoints here,
 corresponding to the five layers (including plain Parrot) of the diagram
@@ -109,6 +122,8 @@
 are provided by a bare Parrot (i.e. one without any HLL runtime code), then
 it should be possible to use this API from any other language.
 
+{{ This is unnecessarily restrictive --allison }}
+
 =item *
 
 It is acceptable for languages to define subs for internal calling that are
@@ -117,6 +132,8 @@
 call intra-language subs, they should be very sure they understand that
 language's calling conventions.
 
+{{ It's not possible to define a sub that can't be called externally --allison 
}}
+
 =back
 
 =head1 HALF-BAKED IDEAS
@@ -139,13 +156,22 @@
 access the module API (though it may need additional hints).  Of course, that
 also requires a PIR API for accessing this metainformation . . .
 
+{{ Exporting is very much a Perl idea, not much applicability for exporting
+outside of Perl. --allison}}
+
 Crazy idea:  This is more or less the same information (typing) required for
 multimethods.  If we encourage the export of multisubs, then the exporting
 language could provide multiple interfaces, and the calling compiler could
 query the set of methods for the one most suitable.
 
+{{ Proposal rejected, because we aren't going with external and internal
+subroutine variants, so it's not needed. --allison }}
+
 =head2 More namespace complexity?
 
+{{ Proposal rejected, because we aren't going with external and internal
+subroutine variants, so it's not needed. --allison }}
+
 It might be good to have some way for HLLs to define a separate external
 definition for a given sub (i.e. one that provides the wrapper) that can be
 done without too much namespace hair.  I.e.
@@ -175,6 +201,10 @@
 functions, i.e. a method defined for CVECTOR must be considered when passed
 a string as a parameter.
 
+{{ Common Lisp (for example) will have its own set of type relationships,
+because it will have its own set of types. There will be no remapping of core
+types --allison }}
+
 The language that owns the multisub gets to define the type hierarchy and
 dispatch rules used when it gets called.  In order to handle objects from
 foreign languages, the owning language must decide where to graft the
@@ -184,10 +214,16 @@
 only have to include CObject in order to incorporate objects from all other
 conforming languages.  -- rgr, 26-Aug-08. }}
 
+{{ The language that owns the multisub does get to define the dispatch rules
+for the multisub. But, it doesn't get to alter the type hierarchy of objects
+from other languages. --allison }}
+
 Note that common Parrot classes will in general appear in different places in
 different languages' dispatch hierarchies, so it is important to bear in mind
 which language owns the dispatch.
 
+{{ Absolutely not true. --allison }}
+
 =head1 DEFINITIONS
 
 {{ Collect definitions of new jargon words here, once we figure out what they
@@ -220,6 +256,10 @@
 the particular case of integer division, which differs significantly between
 languages.
 
+{{ No, this is completely backwards. Languages are heartily encouraged to
+create their own PMCs for any and all common variable types found in the
+language. --allison }}
+
 In Tcl, the integer three divided by the integer five produces the integer
 value 0.
 
@@ -235,6 +275,12 @@
 floating-point result from Common Lisp code that happens to 

Re: [svn:parrot-pdd] r30569 - trunk/docs/pdds

2008-08-28 Thread Allison Randal

[EMAIL PROTECTED] wrote:

 Opcode names are not reserved words in PIR, and may be used as variable names.
 For example, you can define a local variable named Cprint.  [See RT #24251]
+Note that by using an opcode name as a local variable name, the variable will
+Ihide the opcode name, effectively making the opcode unusable. Opcode names
+used as subroutine identifiers, on the other hand, will Ihide that opcode.
 
-PIR keywords, on the other hand, Iare reserved, and cannot be used as

+In contrast to opcode names, PIR keywords Iare reserved, and cannot be used 
as
 identifiers. Some opcode names (Cif, Cunless) are, in fact, PIR keywords,
 which therefore cannot be used as identifiers.


This is another one of those muddy cases in PIR where words conflict 
when they shouldn't. I can't think of any way that it's actually useful 
to have a variable named 'add' prevent you from using the opcode 'add'. 
Call it a bug, or at least a misfeature caused by limited parsing.


Allison


Re: [svn:parrot-pdd] r30620 - trunk/docs/pdds/draft

2008-08-28 Thread Allison Randal

Moritz Lenz wrote:

[EMAIL PROTECTED] wrote:

+{{ Is the term unimethod acceptable here?  -- rgr, 29-Jul-08. }}


I think for dispatch the term is single dispatch, and unimethod
could thus be single method.


Just single dispatch. A method that's single dispatched, is... a method.

Allison


[PATCH] cygwin070patches_6.patch

2008-08-28 Thread Reini Urban

Reini Urban schrieb:

Moritz Lenz schrieb:

Reini Urban wrote:

My latest patch against the cygwin070patches branch r30596.


And one more.

pdd30_install.pod, silence Parrot/Configure/Compiler.pm, more testcases,
parrot_config, $(SHRPENV) $(MINIPARROT) for the last missing build problem.
Add cardinal arrays and Nil from trunk.
--
Reini Urban
http://phpwiki.org/  http://murbreak.at/


cygwin070patches_6.patch.gz
Description: GNU Zip compressed data


Re: [svn:parrot-pdd] r30568 - trunk/docs/pdds

2008-08-28 Thread Allison Randal

[EMAIL PROTECTED] wrote:
 
+PIR keywords, on the other hand, Iare reserved, and cannot be used as

+identifiers. Some opcode names (Cif, Cunless) are, in fact, PIR keywords,
+which therefore cannot be used as identifiers.


If the PDD says the keywords are reserved, it also needs to say what the 
keywords are.


Allison


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Reini Urban

Andy Dougherty schrieb:

On Thu, 28 Aug 2008, Reini Urban wrote:


Will Coleda schrieb:

On Thu, Aug 28, 2008 at 11:09 AM, Reini Urban [EMAIL PROTECTED] wrote:

We could thing of symlinking it to runtime/parrot/library
at make languages, so language_interop can be tested.

Are symlinks usable wherever we might install?

True, there's no perl -MExtUtils::Command -e ln_s
But we have LN_S  = @lns@


But that's not necessarily a symbolic link.  It was originally intended 
only for use with files, not directories.  If symlinks aren't available on 
Unix, it falls back to a plain 'ln'.  On Win32 versions of perl, lns is 
usually defined as 'copy'.


So the short answer is that, at the moment, without additional 
Configure.pl work, you can't assume $Config{lns} can be used to make 
symbolic links for directories.


I only wanted to link the language pbc files from
languages/lang/lang.pbc to runtime/parrot/library/lang.pbc

And only if someone needs it for hll interop testing.
--
Reini Urban
http://phpwiki.org/  http://murbreak.at/



Re: [PATCH] cygwin070patches_4.patch

2008-08-28 Thread Allison Randal

Reini Urban wrote:

A new idea:
===
#IF(darwin):
#ALSO:# MACOSX_DEPLOYMENT_TARGET must be defined for OS X
#ALSO:export MACOSX_DEPLOYMENT_TARGET := @osx_version@


Just a little too much complexity, for not enough benefit.


The POD for this change:


Looks good.


For legacy the old syntax #CONDITIONED_LINE(var): and
#INVERSE_CONDITIONED_LINE(var): is also supported.


Mention that this syntax will be deprecated.


For lispers the well-known reader-macro syntax #+(and key1 (not key2)):
is also supported, #+ #- with and, or and not, or being the default
for multiple keys without operator. But note the ending C:.


This syntax is not supported. The primary reason for rejecting the 
syntax is because it's too much of a burden on maintainers. If we keep 
the feature someone will certainly use it, and some poor P-language 
programmer is going to get stuck trying to decipher it.



  * or a key=value expression, which checks for the config key,
Note that values may contain no spaces here. Quotes in values
are not supported.


Seems like a sensible addition, though very limited. Make it '==' 
instead of '='.



A key must only consist of word characters, and is checked
case-sensitively against the config key or the platform name.


Explicitly say what you mean by word characters, because different 
languages treat different characters as word forming. If you mean A-Z, 
a-z, and 0-9, say so.


Allison


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Allison Randal

Will Coleda wrote:



At the moment I'm planning for language pbcs to go into
.../parrot/library/ so they can be easily accessed via
load_bytecode.  I've found that in a dynamic environment like
Parrot there's very little difference between a language and
a library [1].  :-)

That's probably the best, but we can also think of not installing that at all,
and only install executables. But then the new pddxx_language_interop.pod
at http://nopaste.snit.ch/13890 will have problems. exe cannot loaded
from other languages, only pbc's.


Right. We have to (eventually) install the pbcs, no matter if we also
install the exes for convenience.


Yes. And the exes (or aliases to the parrot exe) should go in the same 
bin directory as parrot.



So each language will need its root namespace reserved for it's lang.pbc.


While it would help, there's no guarantee that namespace in PBC
matches path on filesystem.


The fundamental principle is that language implementations are like CPAN 
modules. You can install them as a separate package, and they add 
functionality. Just like a CPAN module, there's a default search path 
where the module name matches the filesystem path, possibly with some 
prefix path, and with the HLL namespace treated as part of the full name 
of the module (/usr/lib/parrot/lang/python/my/module.pbc or whatever). 
There also need be ways to change the default path when compiling 
Parrot, and to change the searched paths at runtime.



We could thing of symlinking it to runtime/parrot/library
at make languages, so language_interop can be tested.


Are symlinks usable wherever we might install?


No. And not necessary as long as search paths are configurable, which 
they have to be anyway.



I had always thought that the compiler/compreg opcode would eventually
be extended to load the library we needed for language interop; If
not, I'm not sure there's much point in keeping the ability to
register compilers, is there? If someone wants to use the tcl
compiler, they need to know to load the bytecode first anyway.


That's backwards. Loading the language module is what registers the 
compiler. The user never needs to access the compiler object for a 
particular language directly unless they're compiling code from a string.


Allison


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Patrick R. Michaud
On Thu, Aug 28, 2008 at 11:10:47PM +0200, Allison Randal wrote:
 That's backwards. Loading the language module is what registers the  
 compiler. The user never needs to access the compiler object for a  
 particular language directly unless they're compiling code from a string.

...or if they want to parse a namespace string according to another
HLL's rules, obtain a namespace from another HLL, or load a library
associated with a different HLL.  (See pdd21 - namespaces.)

Pm


Re: pdd19_pir.pod: See Cdocs/imcc/macros.pod

2008-08-28 Thread Allison Randal

Patrick R. Michaud wrote:

On Thu, Aug 28, 2008 at 11:10:47PM +0200, Allison Randal wrote:
That's backwards. Loading the language module is what registers the  
compiler. The user never needs to access the compiler object for a  
particular language directly unless they're compiling code from a string.


..or if they want to parse a namespace string according to another
HLL's rules, obtain a namespace from another HLL, or load a library
associated with a different HLL.  (See pdd21 - namespaces.)


I've always assumed that those behaviors would be hidden behind methods 
on the namespace PMC, which would delegate them to the appropriate 
compiler PMC.


Allison


Re: [svn:parrot-pdd] r30620 - trunk/docs/pdds/draft

2008-08-28 Thread Bob Rogers
   From: Allison Randal [EMAIL PROTECTED]
   Date: Thu, 28 Aug 2008 22:14:08 +0200

   Moritz Lenz wrote:
[EMAIL PROTECTED] wrote:
+{{ Is the term unimethod acceptable here?  -- rgr, 29-Jul-08. }}

I think for dispatch the term is single dispatch, and unimethod
could thus be single method.

   Just single dispatch. A method that's single dispatched, is... a method.

   Allison

True.  Nevertheless, the two kinds of method are treated quite
differently by Parrot, both when being defined and when being called.
That is why it is awkward not to have concise names for both kinds.

-- Bob


[perl #47503] [RFC] Remove config::init::defaults From configure tests

2008-08-28 Thread James Keenan via RT
This dependence has been eliminated from 20 of the 76 current
configuration step tests.  More to come.

kid51


[perl #58076] Configure tests fail with Can't store CODE items

2008-08-28 Thread James Keenan via RT
Marking ticket resolved.


[perl #57884] [PATCH] file_type option for Parrot::Configure::Compiler-genfile

2008-08-28 Thread James Keenan via RT
No complaints in five days.  No smolder test failures.  Marking ticket
resolved.


[perl #44315] [TODO] Enable scripting of an entire configuration session

2008-08-28 Thread James Keenan via RT
No objections so far.  If I hear none, I will apply this patch this weekend.