Camelia, the Perl 6 bug

IRC log for #parrot, 2008-07-03

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 bacek_ joined #parrot
00:02 bacek_ morning everyone
00:07 davidfetter oi
00:07 rurban hi
00:07 purl hi, rurban.
00:07 * Whiteknight finally got his copy of "Perl 6 and Parrot Essentials"
00:07 rurban Something worth to read?
00:08 * davidfetter wonders whether the Whiteknight's talking backwards
00:08 rurban Aren't the docs and srcs better?
00:08 pmichaud P6PE is fairly out of date :-)
00:08 rurban rakudo?
00:08 purl rakudo is probably The Way of The Camel or in languages/perl6 (http://svn.perl.org/parrot/trunk/languages/perl6) or http://use.perl.org/~pmichaud/journal/35400 or http://rakudo.org or Part of this balanced breakfast!
00:09 AndyA joined #parrot
00:12 kid51 joined #parrot
00:24 rurban left #parrot
00:25 Ademan joined #parrot
00:31 Whiteknight yes, the book is fairly out of date, but I got it for 1.90$ on amazon
00:31 Whiteknight so i figured, what the hell
00:35 ruoso joined #parrot
00:36 kid51 Do you know how someone registers at smolder?  http://smolder.plusthree.com/app​/public_projects/smoke_reports/8
00:42 AndyA joined #parrot
00:59 DietCoke I'm tempted to get a copy and make allison sign it.
00:59 dalek r28974 | jkeenan++ | trunk:
00:59 dalek : [configure] Merge autoicu branch into trunk.
00:59 dalek : (http://rt.perl.org/rt3/Tic​ket/Display.html?id=43334).  Extensive refactoring
00:59 DietCoke and then sell it on ebay or something.
00:59 dalek : of auto::icu, but no reduction in functionality.  Add 5 test files.  Drop
00:59 dalek : references to nonexistent '--icudatadir' option in documentation in two
00:59 dalek : locations.
00:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28974
00:59 cotto_work particle, ping
00:59 dalek r28975 | jkeenan++ | autoicu:
00:59 dalek : Branch has been merged into trunk and is no longer needed at HEAD.
00:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28975
01:00 tetragon Hrm, how would one sell the autoicu branch on ebay, anyway...
01:01 dalek r28976 | jkeenan++ | autoicu-28734:
01:01 dalek : Branch to which tag corresponded has been deleted; tag no longer needed.
01:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28976
01:01 davidfetter cotto_work, i'm looking for ways to make postgres more welcoming to windows developers. anybody i can ask about this in detail where you work?
01:02 cotto_work let me look into that
01:02 cotto_work I'll ask around.
01:03 davidfetter cotto_work, thanks :)
01:03 Whiteknight DietCoke, did you read my question from earlier?
01:06 Andy joined #parrot
01:16 DietCoke no.
01:20 DietCoke email works best for that.
01:31 Whiteknight I'll email you the question then
01:31 DietCoke well I'm _here_ now. =-)
01:31 DietCoke (just if you don't see me answer.)
01:43 dalek r28977 | chromatic++ | trunk:
01:43 dalek : [parrot-config] Turned parrot-config into a fakecutable; this allows programs
01:43 dalek : to query Parrot's configuration.  See RT #32365.
01:43 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28977
01:43 stupidbot Error calling said() for rt: Malformed RT response received from http://rt.perl.org/rt3/
01:46 was kicked by DietCoke: stupidbot
01:53 Whiteknight DietCoke, should we create a branch for the "vtable functions have self" stuff?
01:53 Whiteknight it's going to require a number of changes to tests and stuff too
01:53 pmichaud if it needs a lot of changes, it's probably wrong.
01:54 pmichaud what sorts of changes are you thinking will be needed (to tests?)
01:54 Whiteknight yes, tests mostly
01:54 Whiteknight have to monkey around in IMCC too, and I would rather not do that in trunk
01:55 pmichaud the only tests that should be affected would be those using :vtable, right?
01:55 Whiteknight yeah, there were tests in t/pmc/namespace and t/pmc/parrotobject
01:55 pmichaud and any subs that have :vtable and :method shouldn't be affected at all
01:55 DietCoke branches are cheap.
01:56 DietCoke Basically, if you have to ask, yes. =-)
01:59 Whiteknight Okay, I'll make one up later and we can monkey around in it
02:00 * DietCoke apparently picked a bad point to branch off the no_builtin_methods branch, as he got the json testing failures.
02:00 pmichaud when that happens to me I just drop the old branch and start a new one :-)
02:00 pmichaud "branches are cheap"  :-)
02:01 pmichaud afk # rummikub
02:01 Theory joined #parrot
02:08 dalek r28978 | chromatic++ | trunk:
02:08 dalek : [tools] Removed outdated and bitrotted pbc2c.pl; it doesn't run anymore, and no
02:08 dalek : one has touched it in any substantive way since 2005.
02:08 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28978
02:08 magnachef joined #parrot
02:26 Eevee joined #parrot
02:33 dalek r28979 | coke++ | no_builtin_methods:
02:33 dalek :
02:33 dalek : Make the find_builtin function always fail.
02:33 dalek : Remove the tests that actually check the builtins.
02:33 dalek : Only failures are some leftovers from trunk, and some floating point
02:33 dalek : differences that our builtin version of say had from print: now that
02:33 dalek : we're basically using print, they match up, so we can probably just
02:33 dalek : revert those particular failing tests. (and rip out the rest of
02:33 dalek : the builtin checker.)
02:33 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28979
02:49 confound_ joined #parrot
02:59 dalek r28980 | jkeenan++ | autojit:
02:59 dalek : [configure] Refactor some code from within runstep() into
02:59 dalek : _check_jitcapability() and _handle_asm().  Move hard-coded jit path to data
02:59 dalek : point in auto::jit object.
02:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28980
03:12 dalek r28981 | coke++ | trunk:
03:12 dalek : pass the codingstd tests
03:12 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28981
03:18 DietCoke anyone else having connectivity problems to feather/?
03:20 pmichaud not me.
03:20 pmichaud at least, if you're reading this then I'm not :-)
03:22 Tene I am.
03:22 Tene However, I'm having connectivity problems to everywhere.
03:23 DietCoke Hurm. I switched computers on my home network, and it seems fine now. I blame windows, apparently.
03:23 Tene Internet service gets turned on at my house on the 8th.  I'm steeeeeealing.
03:28 dalek r28982 | coke++ | no_builtin_methods:
03:28 dalek : Merge from trunk up to r28981
03:28 dalek : (Mainly to fix all the failing tests that weren't my fault!)
03:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28982
03:32 cotto_home what's the status of make cover?
03:32 dalek r28983 | pmichaud++ | rakvar:
03:32 dalek : Creating branch to fix rakudo variable handling.
03:32 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28983
03:45 dalek r28984 | coke++ | no_builtin_methods:
03:45 dalek : Change the expected output of "say <float>" to match print's precision.
03:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28984
03:57 dalek r28985 | coke++ | no_builtin_methods:
03:57 dalek : use the sqrt method directly instead of relying on auto-dispatch.
03:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28985
04:11 dalek r28986 | coke++ | no_builtin_methods:
04:11 dalek : Use explicit method calls instead of the implicit ones that are going away.
04:11 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28986
04:13 dalek r28987 | coke++ | no_builtin_methods:
04:13 dalek : use explicit method calls instead of relying on auto-dispatch.
04:13 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28987
04:19 dalek r28988 | coke++ | no_builtin_methods:
04:19 dalek : remove trailing space
04:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28988
04:19 dalek r28989 | coke++ | no_builtin_methods:
04:19 dalek : Disable more checks for builtins. All tests still pass.
04:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28989
04:27 dalek r28990 | coke++ | trunk:
04:27 dalek : [build]
04:27 dalek : Fix 'make -j'; If you use $(PARROT) in your build step, you should depend
04:27 dalek : on it.
04:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28990
04:32 masak joined #parrot
04:44 dalek r28991 | pmichaud++ | trunk:
04:44 dalek : [rakudo]:
04:44 dalek : * Clean up placeholder variable actions.
04:44 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28991
05:04 dalek r28992 | pmichaud++ | trunk:
05:04 dalek : [rakudo]:  change 'process_contextualizer' to 'contextualizer_name'
05:04 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28992
05:07 dalek r28993 | chromatic++ | trunk:
05:07 dalek : [PMC] Added splice vtable entry to FixedPMCArray (see RT #34394).
05:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28993
05:22 natacha29 joined #parrot
05:27 dalek r28994 | chromatic++ | trunk:
05:27 dalek : [PMC] Re-added hash and PMC Hash headers mistakenly deleted in r28900, so as to
05:27 dalek : allow C++ builds to compile and prevent C builds from warning (NotFound, RT
05:27 dalek : #56534).
05:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28994
05:27 dalek r28995 | pmichaud++ | trunk:
05:27 dalek : [rakudo]: methods should be .blocktype('method') instead of using pirflags
05:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28995
05:27 dalek r28996 | coke++ | no_builtin_methods:
05:27 dalek : Eliminate all traces of "builtins"
05:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28996
05:30 Psyche^ joined #parrot
06:03 cotto_home would it be appropriate to add an HLL to COVER_DIRS in the code that generates Parrot's Makefile?
06:09 dalek r28997 | chromatic++ | trunk:
06:09 dalek : [PMC] Re-added hash and PMC Hash headers mistakenly deleted in r28900, so as to
06:09 dalek : allow C++ builds to compile and prevent C builds from warning (NotFound, RT
06:09 dalek : #56534).
06:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28997
06:10 particle joined #parrot
06:14 Ademan joined #parrot
06:26 dalek r28998 | chromatic++ | trunk:
06:26 dalek : [src] Tidied some code; no functional changes.
06:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28998
06:51 TimToady joined #parrot
06:51 diakopter joined #parrot
06:51 allison joined #parrot
06:51 cotto-work joined #parrot
07:15 magnachef joined #parrot
07:41 Ademan joined #parrot
08:13 KVirker joined #parrot
08:13 KVirker left #parrot
08:22 stupidbot joined #parrot
08:33 bacek joined #parrot
08:37 dalek r28999 | fperrad++ | trunk:
08:37 dalek : [install] pipp
08:37 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28999
08:42 dalek r29000 | fperrad++ | trunk:
08:42 dalek : [smoke] add pipp
08:42 dalek : - remove plumhead
08:42 dalek : - remove trailing space
08:42 dalek : - add Perl coda
08:42 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29000
09:38 dalek r29001 | fperrad++ | trunk:
09:38 dalek : [Pipp] recursive count is not implemented
09:38 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29001
09:40 dalek r29002 | fperrad++ | trunk:
09:40 dalek : [Pipp] complete ctype
09:40 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29002
09:41 stupidbot joined #parrot
09:46 MeGaMiC joined #parrot
09:52 bacek joined #parrot
09:57 bacek joined #parrot
09:57 bacek evening everyone
09:58 moritz good localtime() bacek ;)
09:59 bacek moritz: :)
10:06 bacek rt #56214
10:06 stupidbot Error calling said() for rt: Malformed RT response received from http://rt.perl.org/rt3/
10:06 bacek stupid bot...
10:06 bacek I've disable this function for now...
10:07 bacek message pmichaud index2.diff from RT#56214 waiting for your opinion
10:07 bacek purl?
10:13 spinclad s/message/msg/ maybe?
10:14 spinclad purl, messages?
10:14 spinclad ENOPURL
10:15 barney joined #parrot
10:18 rurban joined #parrot
10:18 rurban Shouldn't contain the languages/*/Makefile a install target? I'd need it for the examples and docs
10:36 kj joined #parrot
10:36 vhold joined #parrot
10:36 barney They probably should have an 'install' target. But nobody bothered yet.
10:40 dalek r29003 | bernhard++ | trunk:
10:40 dalek : [Pipp]
10:40 dalek : Add a TODO test for contants.
10:40 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29003
10:42 Whiteknight joined #parrot
10:48 davidfetter joined #parrot
11:07 contingencyplan joined #parrot
11:08 kid51 joined #parrot
11:16 contingencyplan joined #parrot
11:19 rdice joined #parrot
11:19 rurban cygwin needs to add an import lib. How does mingw does that?
11:20 rurban in root.in I'd need just to add something like after LIBPARRTO_SHARED LD : #CONDITIONED_LINE(win32):----out-implib libparrot.dll.a \
11:21 rurban The problem is just the ldflags line in pkgconfig and config_lib.pasm. -lparrot
11:21 rurban linking to a dll alone works fine, but this would need to change those two settings. Generating the import lib seems to be easier.
11:22 rurban All assumed from a packaged version via reallyinstall.
11:25 dalek r29004 | bernhard++ | trunk:
11:25 dalek : [Pipp]
11:25 dalek : Implement define() and constant().
11:25 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29004
11:26 rurban BTW: does #CONDITIONED_LINE(win32) contain cygwin also?
11:27 rurban nope.
11:27 kid51 barney:  There was a message posted to list requesting that commit messages contain more than just the subsystem -- that they include some description as well.  (Some problem with a git tool.)
11:28 barney rurban you can ask      ./parrot_config  win32
11:30 barney kdi51: do you mean int the first line of the message  ?
11:30 moritz that's what the git tools expect, yes
11:30 rurban barney: I only got cygchkdll for cygwin. good enough.
11:36 barney I see
11:49 tetragon joined #parrot
11:52 kid51 barney:  Yes.  See a post by G Broadwell in past day.  (Just passing the message along; I have no preference, myself.)
11:54 * kid51 only started to indicate a subsystem in commit messages in the past few days :-)
11:54 tetragon kid51: At some point in the near future, I'll be temporarily unable to do any PPC testing.  (near future is defined as when Apple can ship an LCD panel to Toronto without damaging it)
11:55 kid51 Thanks for the update.  I've been nudging people who participated in buildfest at YAPC to try out all your patches, but am experiencing the herding cats problem.
11:57 dalek r29005 | bernhard++ | trunk:
11:57 dalek : [Pipp PHC] Add support for constants.
11:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29005
11:58 tetragon I'm half-tempted to check the boxes at the Apple store for Xcode and do 10.5 Intel testing there
12:00 moritz bacek: are you around?
12:00 bacek moritz: little bit
12:00 bacek for.t?
12:01 moritz bacek: with your latest index() patch, will the returned failure be a StrPos?
12:01 bacek not yet.
12:02 bacek actually I thinks that StrPos is redundant... (Int|Failure) junction is enough for any use-cases...
12:02 bacek perl6: my Int $a = 0; say defined $a;
12:02 polyglotbot OUTPUT[1␤]
12:02 * barney is going to enjoy the sun at the Isar
12:03 moritz bacek: only as long as we don't implement character levels
12:03 moritz barney: Munich?
12:03 bacek so, for index() we need something like my $p = $b.index(foo); if defined $p ...
12:03 barney Yes
12:08 moritz bacek: I'm going to apply your patch and extend the tests a bit
12:12 dalek r29006 | moritz++ | trunk:
12:12 dalek : [rakudo] implement Str.index, patch curtesy by bacek++ (Vasily Chekalkin)
12:12 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29006
12:18 dalek r29007 | moritz++ | trunk:
12:18 dalek : [rakudo] add S29-str/index.t to spectest_regression.
12:18 dalek : bacek++ for implementing
12:18 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29007
12:30 skv joined #parrot
12:45 dalek r29008 | pmichaud++ | trunk:
12:45 dalek : [rakudo]: coding stds in src/classes/Str.pir .
12:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29008
12:46 rdice joined #parrot
12:48 moritz parrot doesn't seem to implement complex log() function
12:49 pmichaud it's possible.
12:50 moritz I tried to cargo-cult a log(Complex) impelementation in the same way that exp() is done, and it still returns 0 always
12:51 moritz oh wait, it does seem to be implemented
12:53 moritz and it seems to be correct (at least from a glance at the src/pmc/complex.pmc file)
12:53 pmichaud nopaste diff ?
12:54 nopaste "moritz" at 89.13.212.252 pasted "complex log() and log10() for rakudo - not working" (53 lines) at http://nopaste.snit.ch/13453
12:56 pmichaud log10 doesn't appear to be implemented in complex.pmc
12:57 moritz yes, but if parrot is clever enough it just dispatches to log(x)/log(10)
12:57 pmichaud I don't think parrot is that clever
12:57 moritz that would explain whay log10 doesn't work, but what about log()?
12:58 moritz btw I fear the complex log10 tests are a bit wrong ;)
13:02 moritz ... not anymore ;)
13:02 pmichaud what test file?
13:03 moritz spec/S29-num/log.t
13:06 nopaste "pmichaud" at 76.183.97.54 pasted "log on complex seems to work" (14 lines) at http://nopaste.snit.ch/13454
13:07 pmichaud log10 fails
13:07 nopaste "pmichaud" at 76.183.97.54 pasted "log10 fails" (15 lines) at http://nopaste.snit.ch/13455
13:07 pmichaud I'm not sure why your patch doesn't work, unless it's due to Parrot MMD somehow.
13:09 DietCoke is ln an opcode or a method dispatch?
13:09 DietCoke (method dispatch is going away)
13:09 pmichaud it's a pseudo-opcode that does method dispatch
13:09 pmichaud DietCoke: do you plan to replace it with a real opcode, or eliminate it entirely?
13:10 DietCoke nothing in core was using it. in the no_builtin_methods branch, it's just gone. I can add opcodes for anything that was a builtin for which an opcode is needed.
13:10 DietCoke but I didn't want to bother adding opcodes for things that weren't used.
13:10 pmichaud adding an opcode might be tricky
13:11 pmichaud and I'd be initially against that approach
13:11 DietCoke as am I. Good. switch to explicit methods. =-)
13:11 DietCoke (may be why the log10 isn't working, that may not be in the list in src/builtin.c on trunk.
13:11 pmichaud log10 isn't implemented in complex.pmc
13:12 DietCoke ah. (yah, it's in the list, so that'd do it.)
13:12 DietCoke so far, the only opcodes I added were the 4 say variants.
13:12 pmichaud if we write an opcode for 'ln', we also have to do opcodes for
13:12 pmichaud "abs", "neg", "not", "fact", "sqrt", "ceil", "floor"
13:12 pmichaud "acos", "asec", "asin",
13:12 pmichaud "atan", "cos", "cosh", "exp", "ln", "log10", "log2", "sec",
13:12 pmichaud "sech", "sin", "sinh", "tan", "tanh", "fact"
13:12 DietCoke yup. note that I think most of those already have _n_n variants.
13:12 pmichaud and that seems like a horribly lot of opcodes to generate if they're just going to be turned into method calls
13:13 DietCoke I'll all for dropping them, no arguments here.
13:13 pmichaud okay
13:13 DietCoke I was only considering it on the off chance you were going to ask for them.
13:13 pmichaud right now I'm on a "get rid of unneeded opcodes" bias
13:13 DietCoke You can switch over to the method syntax now.
13:14 DietCoke (if you want, you can try out the branch and see what breaks in perl6 there.
13:15 DietCoke (this whole thing, btw, is just to help me kill the getclass opcode. =-)
13:15 pmichaud I'm trying to focus on $_ handling today
13:15 pmichaud I was going to do it yesterday but family events kept me from really getting into it
13:16 pmichaud moritz:  instead of    a = ln a
13:16 pmichaud try
13:16 pmichaud a = a.'ln'()
13:16 pmichaud that switches it from being an opcode to a method call
13:17 Whiteknight joined #parrot
13:18 moritz pmichaud: no luck here
13:18 pmichaud hrm
13:18 pmichaud I suspect mmd issues then
13:18 moritz pmichaud: but focus on $_ first, that's much more important atm ;)
13:18 pmichaud I agree
13:20 * DietCoke has about a dozen checkouts of parrot on feather. Oy.
13:24 dalek r29009 | coke++ | no_builtin_methods:
13:24 dalek : Remove targets related to src/builtin.c
13:24 dalek : Add in some -j protection from trunk.
13:25 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29009
13:29 DietCoke what generates this line in src/gen_builtins.pir for perl6: .sub 'exp' :multi(Complex)
13:29 moritz DietCoke: that's from src/classes/Complex.pir
13:30 moritz gen_builtins.pir seems to be the concatenation of src/classes/* and src/builtins/*
13:32 rurban joined #parrot
13:32 DietCoke ok. with a small change to Complex, all internal tests pass. checking the regression tests...
13:33 nopaste "coke" at 65.91.151.194 pasted "Use explicit method syntax..." (22 lines) at http://nopaste.snit.ch/13456
13:33 dalek r29010 | pmichaud++ | trunk:
13:33 dalek : [rakudo]: spectest-progress update: 83 files, 1365 passing tests
13:33 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29010
13:33 DietCoke (though looking at that, I'm wondering why I passed the argument in one case, and not the other.
13:33 DietCoke presumably I'll find out if something fails in the regression. =-)
13:34 pmichaud should _not_ be passing the argument, I suspect.
13:34 DietCoke eh, these methods are wierd, at least on the base float.
13:34 pmichaud we aren't calling the methods on the base float, though.
13:35 pmichaud rakudo's floating point sqrt currently uses sqrt_n_n
13:35 DietCoke ok. are these getting called on the root Complex object?
13:36 pmichaud probably not
13:36 pmichaud looks like it's a subclass of Complex
13:40 DietCoke ok. with that small patch, no problems with assuming any other builtins.
13:41 pmichaud excellent.  DietCoke++
13:41 pmichaud Coke++
13:41 DietCoke so, just figure out which PMC is actually getting those invoked to figure out if you need to pass it. if it's like Complex in core, you don't need 'em.
13:41 pmichaud (just to get all the karmas in the right slots :-)
13:41 pmichaud Float requires that it be passed?
13:41 pmichaud that's.....odd
13:41 pmichaud and perhaps even wrong.
13:42 DietCoke ah, no. I was confusing it with the string methods.
13:42 pmichaud okay
13:42 DietCoke (some of which require you pass IN a string to work on.)
13:42 DietCoke (even though, clearly, you've already got one.)
13:43 pmichaud okay, I'm going to focus on $_ for a while, so I might not answer unrelated questions :-)
13:43 pmichaud I might not even make any snide remarks :-)
13:44 moritz snide remarks = sneaky side remarks? ;-)
13:44 pmichaud <no remark here>
13:47 rdice joined #parrot
13:49 particle $_
13:51 moritz particle: implicit remark? ;-)
13:51 pmichaud .that_would_be_this
13:51 moritz pmichaud: you lost ;)
13:51 pmichaud I said *might*
13:51 pmichaud besides, $_ is clearly on topic  :-)
13:52 particle i'm just encouraging conversation about the current topic
13:57 dalek r29011 | pmichaud++ | rakvar:
13:57 dalek : drop branch to re-sync it with trunk
13:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29011
13:58 dalek r29012 | pmichaud++ | rakvar:
13:58 dalek : Recreate branch from trunk
13:58 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29012
14:00 rjbs left #parrot
14:16 confound joined #parrot
14:18 gmansi joined #parrot
14:40 Ontolog joined #parrot
14:41 dalek r29013 | fperrad++ | trunk:
14:41 dalek : [Pipp] file_get_contents & readfile
14:41 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29013
14:42 Ontolog oh cool I'm logged publicly?
14:43 pmichaud http://irclog.perlgeek.de/parrot/today
14:45 moritz and http://irclog.perlgeek.de/perl6/today for #perl6
14:53 dalek r29014 | Whiteknight++ | gsoc_pdd09:
14:53 dalek : [gsoc_pdd09] changes to header allocators. Better separation between aggregate and non-aggregate types
14:53 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29014
15:00 dalek r29015 | Whiteknight++ | gsoc_pdd09:
15:00 dalek : [gsoc_pdd09] updating to trunk r29014
15:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29015
15:08 rurban I've prepared now a patch which renames pdb to parrot_pdb - conflicts with existing pdb binaries. (python, ...)
15:12 DietCoke feather going down shortly.
15:12 moritz hard disk failure
15:13 DietCoke save early save oftne.
15:13 moritz commit often. (wait, that doesn't help if the svn repo is on feather... ;-)
15:23 Whiteknight is the repo mirrored anywhere?
15:26 Infinoid I didn't think the svn repo was on feather
15:27 DietCoke ours isn't, no.
15:28 particle pugs repo is on feather
15:28 particle so, no spectest updates for a while
15:28 particle i hope moritz can deal with that :)
15:29 moritz particle: I'm writing the "how to add tests" howto, it'll take some time to finish before I want to commit it ;)
15:30 cotto_home moritz, are you putting something about make cover in there to see what still needs to be tested?
15:31 moritz cotto_home: Perl 6 spectest, not parrot tests :/
15:31 cotto_home gotcha
15:34 particle unless cotto_home has developed a coverage testing engine for perl 6...
15:38 cotto_home no such luck
15:48 cjfields joined #parrot
16:01 james joined #parrot
16:01 rob joined #parrot
16:03 jan joined #parrot
16:06 wolverian joined #parrot
16:08 dalek joined #parrot
16:09 leo joined #parrot
16:09 polyglotbot joined #parrot
16:11 pmichaud joined #parrot
16:11 PerlJam joined #parrot
16:12 rob left #parrot
16:13 Whiteknight joined #parrot
16:13 DietCoke how can I easily do a diff of "stuff I've changed on branch foo as compared to trunk". do a reverse merge then an svn diff of my work dir?
16:14 Ontolog joined #parrot
16:16 particle you wanna diff against head, or base?
16:16 DietCoke welp, I was thinking base originally,but since it would have to be applied against head... I'll just do it this way. =-)
16:16 Juerd joined #parrot
16:16 particle okie, that'll work
16:17 DietCoke hurm. annoying. I want -all the changes on that branch-, but I still have to specify start/end revisions.
16:18 particle svn log --stop-on-copy
16:19 particle that'll get you the rev number for branch creation
16:20 DietCoke I can get it, it's just annoying that svn merge isn't doing that -for- me. =-)
16:20 * DietCoke tells himself "this is still better than CVS." =-)
16:20 moritz DietCoke: that's one of the many reason why SVN sucks
16:20 james left #parrot
16:21 dalek r29018 | Whiteknight++ | vtable_self:
16:21 dalek : Creating branch to work giving vtable functions the self keyword
16:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29018
16:21 DietCoke hurm. now the merge seems to be picking up things it shouldn't.
16:21 DietCoke in a check out of trunk, I was running:
16:21 DietCoke svn merge -r28930:HEAD https://svn.perl.org/parrot/​branches/no_builtin_methods/ .
16:21 DietCoke where 28929 is the revision that created the branch.
16:22 DietCoke moritz: in this case, most of the suck could be handled by a small wrapper script.
16:22 moritz DietCoke: or by native support for branches ;)
16:23 Casan joined #parrot
16:24 sjansen joined #parrot
16:25 particle DietCoke: then why didn't you use 28929 in the merge?
16:26 Ademan joined #parrot
16:26 jonathan joined #parrot
16:26 particle see docs/project/committer_guide.pod
16:27 magnachef joined #parrot
16:27 dalek r29019 | Whiteknight++ | vtable_self:
16:27 dalek : [vtable_has_self] uploading initial patch to IMCC grammar. Modification to one test for desired behavior.
16:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29019
16:34 Theory joined #parrot
16:35 barney joined #parrot
16:38 Theory joined #parrot
16:40 DietCoke particle: doesn't seem to impact the update in the merge of wrong stuff.
16:40 DietCoke U    runtime/parrot/library/CGI/QueryHash.pir
16:40 DietCoke (If that was ever changed on branch, it was only because i merged changes from trunk.)
16:40 japhb Thank you, kid51 and moritz, for speaking up on behalf of git tools in the wee hours today.
16:41 japhb DietCoke: I think you're beginning to see why adherents to other source controls say that SVN merge is insane ....
16:42 rurban I'm ready now with my cygwin perl package and will update the Bug#56544 with the final install_files.pl patch.
16:42 DietCoke left #parrot
16:43 particle rurban++
16:43 rurban we will see how useful the layout will be. I just put all the languages with the exe's and the docs and examples into one big parrot-languages package
16:44 rurban just parrot-perl6 is seperate. I didn't like it to be named as in fedora: "parrot-rakudo"
16:46 dalek r29020 | pmichaud++ | rakvar:
16:46 dalek : [rakudo] implicit part 1
16:46 dalek : * Eliminate incorrect declarations from statement_block
16:47 dalek : * Add declare_implicit_var to allow controlled addition of implicit vars
16:47 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29020
17:01 dalek r29021 | bernhard++ | trunk:
17:01 dalek : [Pipp PHC] Fiddle with the SEA-rule. Pass hello_11.php.
17:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29021
17:09 tco joined #parrot
17:16 dalek r29022 | pmichaud++ | rakvar:
17:16 dalek : [rakudo]: implicit vars #2
17:16 dalek : * Eliminate __MAYBE_NEED_TOPIC_FIXUP
17:16 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29022
17:19 dalek r29023 | pmichaud++ | rakvar:
17:19 dalek : [rakudo]:  implicit vars #3
17:19 dalek : * Anything that parses with a signature goes into $?BLOCK_SIGNATURED,
17:19 dalek :   even if the signature is empty or non-existent
17:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29023
17:19 desertmax joined #parrot
17:21 dalek r29024 | bernhard++ | trunk:
17:21 dalek : [Pipp PCT] Use correct sub for string concatenation.
17:21 dalek : Pass two more test cases in hello.t
17:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29024
17:31 dalek r29025 | pmichaud++ | rakvar:
17:31 dalek : [rakudo]: implicit vars #4
17:31 dalek : * Change routine_def to initialize $_, $/, $! to be scalars
17:31 dalek : * $! and $/ in pblocks default to OUTER::<$!> or OUTER::<$/>
17:31 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29025
17:36 dalek r29026 | bernhard++ | trunk:
17:36 dalek : [Pipp PCT] use correct subs for string comparison.
17:36 dalek : Pass some more TODO tests.
17:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29026
17:50 particle pmichaud: how do you specify unlimited outer? i suggest either 0 or '*'
17:50 particle 0 would allow max to stay an int
18:00 pmichaud it's strictly internal at this point
18:00 pmichaud it will either be MAX_INT or -1, though
18:00 pmichaud because 0 will be used to indicate "search caller's scope"
18:09 particle i thought 1 was caller's scope
18:09 particle hrmm
18:10 pmichaud 1 is caller's outer scope
18:10 particle yeah, took another read to see that
18:10 pmichaud I don't have the params in yet for it (because don't want to add them if I don't need them), but the idea will be that !OUTER can specify the min and max depths
18:10 particle ##  start with caller's outer scope (i.e., outer depth is 2)
18:10 particle .local int depth
18:10 particle depth = 2
18:10 pmichaud with default of both being 1
18:11 particle that's a confusing comment
18:11 peepsalot joined #parrot
18:11 pmichaud the current scope is inside of !OUTER
18:11 pmichaud depth 1 is the caller's scope
18:11 pmichaud depth 2 is the caller's outer scope
18:14 particle yes, i see that.
18:14 particle however, the api comment refers to caller's immediate outer scope as 1
18:14 pmichaud ...api comment?
18:15 pmichaud oh, right
18:15 particle C<max> parameter specifies the maximum outer to search -- the default value of 1 will search the caller's immediate outer scope and no farther.
18:15 particle so you have a magic number of 1 inside the sub
18:15 slightlyoff joined #parrot
18:15 particle you add to depth
18:15 pmichaud when I do    '!OUTER'('$foo', 3)     it means that I want to search up to 3 outer scopes from the current one
18:15 pmichaud which means I search up to 4 outer scopes from within !OUTER
18:15 slightlyoff left #parrot
18:16 pmichaud I can change depth to read    depth = min+1
18:16 particle yes, that's what i'd like :)
18:17 particle also, does it make sense to rename BLOCK_SIGNATURED to ROUTINE? the first isn't a very clear name, but i'm not certain the second is precise
18:17 pmichaud not every signatured block is a Routine
18:17 pmichaud for example,  -> $a { ... }    has a signature but isn't a routine
18:17 particle yeah, that's what i was thinking :(
18:18 cjfields left #parrot
18:18 particle and POINTY_OR_ROUTINE is ugly too
18:18 pmichaud and what I'm really getting at is that a PAST::Block has already been started, because we parsed a signature
18:18 pmichaud as opposed to creating a new PAST::Block at this point (e.g., for a bare curly)
18:19 dalek r29027 | pmichaud++ | rakvar:
18:19 dalek : [rakudo]:  implicit vars #5
18:19 dalek : * Change comment and definition of depth in !OUTER, per particle++
18:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29027
18:21 particle thanks, pmichaud++
18:23 Tene Hmm... I should push this stuff up before I forget about it.
18:26 dalek r29028 | tene++ | trunk:
18:26 dalek : [lolcode]
18:26 dalek : * Store params in $?BLOCK symtable.
18:26 dalek : * Store subs in $?BLOCK symtable.
18:26 dalek : * Start building a parse tree for expressions at compile time.
18:26 dalek : * Minor PCT typo fix.
18:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29028
18:28 Tene pmichaud: I was looking into examining the lexical environment to find vars and subs that the compiler doesn't know about for lolcode, and I realized that in normal cases, the compiler is already running in the same environment that the compiled code will run in, so I can just do normal lookups instead of passing something in, afaict.  Can you confirm or deny that this is a sane plan?
18:30 rurban I cannot see jesse. I cannot mail to parrotbug@parrotcode.org from seamonkey my latest cygwin realinstall fixes. Not with attachments and not without.
18:31 rurban Should I just send them to the -porters list instead?
18:32 NotFound Tene: looks not sane to me, that way the code will no work same way when running a generated pbc.
18:32 moritz rurban: yes
18:32 pmichaud Tene:  it depends on the structure of the compiler
18:32 cotto-work particle, ping
18:33 pmichaud However, in some cases it is reasonable for the compiler to look at the existing environment for hints
18:33 pmichaud for example, things like eval() can do that
18:34 cotto-work the meeting is cancelled
18:34 cotto-work I'm really sorry to do that, but one Anandeep is sick and needs to be there
18:36 particle cotto-work: ack! oh, well
18:36 particle then i can start my vacation earlier
18:36 Tene >
18:36 Tene > Thanks.
18:36 Tene >
18:36 Tene > -Daniel
18:36 Tene >
18:36 Tene > ________________________________
18:36 Tene >
18:36 Tene > From: Stephen Weeks [mailto:sweeks@gurulabs.com]
18:36 Tene > Sent: Wed 7/2/2008 11:14 PM
18:36 Tene > To: Daniel Lyman
18:36 Tene > Subject: Re: RE : [Fwd: RE: fooru kernel module problem in GL250]
18:36 Tene >
18:36 Tene >
18:36 Tene >
18:36 Tene left #parrot
18:37 Whiteknight ...?
18:37 NotFound Wrong paste target?
18:37 moritz seems like ;)
18:38 Tene joined #parrot
18:38 dalek r29029 | Whiteknight++ | vtable_self:
18:38 dalek : [vtable_has_self] added some comments around to help me find my way through this IMCC mess.
18:38 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29029
18:39 * Tene fail.
18:41 moritz Whiteknight++ # gsoc_pdd09 branch builds cleanly
18:41 Tene moritz: does it run, though?  I thought he said it didn't run yet.
18:42 Whiteknight it builds!?!
18:42 Whiteknight I mean, it didn't last time I checked
18:42 moritz Tene: it doesn't, "make test" segfaults on PGE.pbc
18:42 Whiteknight okay, that's more like it. That's it's been doing for me
18:42 moritz Whiteknight: I just updated, 'make realclean; perl Configure.pl && make -j 2', and it compiled ;)
18:42 Whiteknight what platform are you guys one?
18:43 Whiteknight s/one/on/
18:43 moritz Debian (32 bit i386)
18:43 Whiteknight holy crap, same as me
18:43 * Whiteknight has to go try it again now
18:44 moritz from a cross-platform development POV it's a boring platform
18:44 moritz because all the platform dependent failures happen on other OSses ;)
18:46 NotFound moritz: or at least, we do don't know if the problems we have are platform dependant, we fix anyway.
18:49 Whiteknight moritz, you're saying that it compiled all the way through? did it build PGE.pbc?
18:49 dalek r29030 | pmichaud++ | rakvar:
18:49 dalek : [rakudo]: implicit vars #6
18:49 dalek : Make subroutines to handle implicit vars in immediate blocks (e.g., 'if')
18:49 dalek : and in function blocks (e.g., 'for').
18:49 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29030
18:49 moritz Whiteknight: I think that the last output from 'make' was not an error
18:50 moritz Whiteknight: then I did a "make test", and it complained about PGE.pbc
18:50 Whiteknight I'm double-checking now. but if it works then it's a miracle
18:50 moritz trying again to confirm
18:51 moritz no error message in the last few lines, but 'make' had an exit status of 2
18:51 Whiteknight yeah, the -j hides the failure on PGE.pb
18:52 Whiteknight scroll up a bit and you can see the segfault
18:52 * moritz tries again without -j2 and without ccache
18:58 particle pmichaud: this refactor and enhancement is looking really good so far
18:58 moritz pmichaud: when you're done with your branch the autounfudge tool will really help ;-)
18:59 particle moritz: svn diff exists on windows, can you use that instead of diff?
18:59 moritz particle: don't think so, the files are not under version control
18:59 Auzon You can get GNU diff for Win32.
18:59 moritz particle: (unless you find a way to hijack svn diff for arbitrary files)
19:01 dalek r29031 | bernhard++ | trunk:
19:01 dalek : [Pipp PCT] Start to use optok parsing.
19:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29031
19:03 particle i have diff on win32, but it's hard to make that a requirement
19:05 moritz particle: is it worse than requiring Algorithm::Diff and a custom workaround?
19:06 particle yes, it's worse
19:06 particle cpan requirements are better than non-cpan
19:06 particle from my pov. don't know how patrick feels
19:07 moritz ok, I'll see if I can find some tuits to work around it
19:07 particle write a diff util in rakudo
19:07 particle :)
19:08 DietCoke joined #parrot
19:08 NotFound Or in lolcode.
19:08 * DietCoke tries to summon dietcoke
19:09 Tene lolcode doesn't have IO yet.
19:09 NotFound Even better ;)
19:11 * DietCoke tries to summon dietcoke, one more time.
19:12 PerlJam What's Pipp?  Is that the new name for plumhead?
19:12 Tene Yes.
19:12 PerlJam cool
19:13 rurban moritz: I got now enough tuits to send email to parrotbug :)
19:13 cotto-work pipp is <reply>Pipp is Parrot's PHP
19:13 rurban moritz: problem was the missing -- bla --- bla markers
19:13 cotto-work purl, pipp is <reply>Pipp is Parrot's PHP
19:14 cotto-work purl--
19:16 rurban I have to package the new clisp-2.46 now, and come then back to parrot. I believe some there are still some dynlib problems with wrong dll names for cygwin.
19:18 * particle heads for the rain forest. happy fourth! &
19:19 cotto-work take pictures!
19:19 dalek r29032 | fperrad++ | trunk:
19:19 dalek : [Pipp] add PMC PhpResource
19:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29032
19:19 dalek r29033 | bernhard++ | trunk:
19:19 dalek : [Pipp PCT] Add bitwise ops to optok parsing.
19:19 dalek : However readded tests are still TODO.
19:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29033
19:25 cotto-work barney, does fperrad know that I've got an out-of-tree phparray implementation?
19:26 cotto-work I'd hate for there to be duplication on something like that
19:27 barney cotto: I don't know. Maybe we should do a #pippsketch
19:28 cotto-work getting him to hang out on #parrot would be sufficient
19:29 barney That's right.
19:29 cotto-work do you know why he doesn't?  His English seemed fine over email.
19:31 barney Probably simply personal taste
19:32 PerlJam cotto-work: why out-of-tree?  :)
19:32 cotto-work there's no accounting for taste
19:32 cotto-work I wrote some of it during working hours and need to get the legal dep't to clear it before I can commit
19:32 PerlJam oh.
19:33 cotto-work yeah
19:33 * barney is calling it a day
19:48 iblechbot joined #parrot
19:51 Whiteknight Is there a way to determine whether a given PMC has an overridden Invoke vtable method?
19:51 Whiteknight or, whether it's invoke vtable is defined in PIR?
19:53 Tene Hmm... I wonder if I committed something I shouldn't have committed.
19:54 pmichaud ...now to see how much of spectest_regression is broken with my changes.
19:59 dalek r29034 | tene++ | trunk:
19:59 dalek : [lolcode]
19:59 dalek : * Oops, left some debug statements in.  Remove them.
19:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29034
20:04 Whiteknight will the find_method vtable function find a vtable method if it exists, or will it only find methods?
20:05 pmichaud it only finds methods
20:05 Whiteknight is there something I can do to look up a vtable method then, given it's name?
20:06 pmichaud vtable methods aren't callable directly from pir, unless they're indicated via :method or are otherwise treated as a sub
20:06 Tene What is the consequence of running load_bytecode on the same pbc multiple times?
20:06 pmichaud tene:  if it's the same pathname each time, only the first load occurs.  Later ones are short-circuited.
20:06 Tene Fantastic.
20:06 Whiteknight okay, I think i'm thinking about the wrong problem
20:07 pmichaud parrot doesn't distinguish between  'foo.pir' and 'foo.pbc'  (those would each be loaded)
20:07 pmichaud and likely   'path/to/foo.pbc' and 'foo.pbc' would cause a double-load also
20:07 pmichaud we had some discussion years ago about embedding a uuid into the .pbc files to detect it based on the file..... but that didn't happen
20:08 pmichaud Whiteknight: if I define a vtable method in PIR as      .sub 'foo' :method :vtable('get_boolean')
20:08 pmichaud then I can only get to it as a method by using   $P0.'foo'
20:08 pmichaud er
20:08 pmichaud then I can only get to it as a method by using   $P0.'foo'()   --- i.e., find_method will only find the 'foo' entry
20:08 nopaste "tene" at 67.137.148.11 pasted "handle :lang in eval()" (47 lines) at http://nopaste.snit.ch/13457
20:08 Whiteknight pmichaud, I'm trying to fix invokations of the type $P0(), which calls the invoke vtable method
20:09 pmichaud Whiteknight: yes, I remember those being somewhat broken.  :-|
20:09 Tene That's a bit hackish, but it works until we actually have a registry solution of some sort.
20:09 pmichaud ...but I thought they were fixed now.  at least when I tested it a couple of months ago it seemed to do what I wanted
20:09 Whiteknight I think IMCC generates a callmethod opcode for that, and I think I can implement the solution directly in the opcode itself if I can figure out what I need
20:10 Whiteknight it probably works now, I'm trying to implement a patch where :vtable functions have the "self" keyword
20:10 pmichaud ....why would $P0() generate a callmethod opcode?  that seems....wrong
20:10 Whiteknight maybe it generates an invoke opcode, I'm having trouble reading this IMCC source
20:10 pmichaud invoke opcode would be correct, yes.
20:10 Whiteknight either way, I'll figure it out
20:11 pmichaud Whiteknight++
20:11 * pmichaud gets a stunned look
20:12 pmichaud <stunned look>....spectest_regression passed with my changes on the first attempt.</stunned>
20:12 Tene Nice.
20:12 Whiteknight pmichaud++
20:12 pmichaud that's.... scary.
20:12 Tene pmichaud: does it pass *more* tests, though?
20:12 pmichaud good scary, but still scary.
20:12 rurban_ joined #parrot
20:12 pmichaud Tene: if I remove a few 'skip' markers it might :-)
20:12 PerlJam pm: clearly your changes weren't broad and sweeping enough  :)
20:13 pmichaud I guess not.
20:13 pmichaud I guess I need broader and sweepier changes.
20:15 Tene pmichaud: will you have tuits to look at that eval patch for me?
20:15 allison joined #parrot
20:16 Tene Seems to work fine with lolcode, but cardinal gives me some weird errors I need to look at.
20:16 pmichaud what if the name of the compiler doesn't match the name of the pbc?
20:17 pmichaud perhaps rakudo should have a registry of :lang values, at least short-term.
20:18 Tene That's too architectural for me to propose.
20:19 Whiteknight philosophical question: Instead of treating the "self" of a method as just the first in a list of arguments, could we create an interp->arg_self field and pass it in there separately?
20:19 Tene tcl gives me 'Null PMC access in find_method' and cardinal gives me "push_pmc() not implemented in class 'Sub'"
20:20 * Tene tries lua
20:20 pmichaud I really like the fact that self is the first argument
20:20 pmichaud it fits well for Rakudo and PGE
20:20 dalek r29035 | moritz++ | trunk:
20:20 dalek : [rakudo] added S03-operators/arith.t to spectest_regression. Auzon++
20:20 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29035
20:20 dalek r29036 | fperrad++ | trunk:
20:20 dalek : [Pipp] fopen, fclose & fpassthru
20:20 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29036
20:20 Whiteknight okay
20:22 Tene lua gives me "Unknown PMC type to thaw 0"
20:23 Whiteknight okay, let me ask from a different angle. If I overwrite the invoke vtable of the Sub pmc, what does that look like internally? How does parrot know whether to call the PIR method or the C method?
20:23 Tene APL works, except for encoding issues.
20:23 pmichaud I don't think you can overwrite 'invoke' of the Sub pmc, except via a subclass of Sub
20:24 pmichaud that's like saying  "how can I overwrite the get_integer vtable of the Integer pmc"
20:24 Whiteknight oh, I see what you are saying, so you cant have both a PIR and a C version of the same vtable method in the same class? That makes a little bit more sense
20:25 pmichaud I'm not even sure it's possible to overwrite a vtable method of a PMC class
20:25 pmichaud (from PIR)
20:26 pmichaud ...but if you can, then it would seem to replace any existing vtable method for that PMC class
20:26 Whiteknight okay, so that's only possible for PIR-defined classes and subclasses?
20:26 pmichaud I think so.  I'm not the architect, but that's my expectation.
20:27 AndyA joined #parrot
20:27 Whiteknight okay, so would you know if, at the C level, that there is a way to determine whether a particular vtable method is defined in C or PIR?
20:27 Tene Ooo... I get "continuation jumping runloops" trying to eval php from rakudo.
20:28 pmichaud Tene: I suspect that :lang on eval may need to wait on pdd25cx, then
20:28 pmichaud if not for rakudo (and others) to start using .HLL
20:28 pmichaud Whiteknight: I'm sure there's a way to find out if a vtable method is defined in C or PIR, but it seems like one shouldn't need to check that
20:29 Whiteknight pmichaud, you would think so. PIR-defined vtable methods need to be passed the "self" argument, whereas C-defined versions already have it
20:30 Whiteknight "invoke methods"
20:30 pmichaud ...but wouldn't this be the same code that is already handling :method flags?
20:31 Whiteknight no. $P0() calls the invoke opcode, not the callmethod one
20:31 pmichaud let me put it another way
20:31 pmichaud currently if I do
20:31 pmichaud .sub 'foo' :method :vtable('get_boolean')
20:31 pmichaud and then later do
20:31 pmichaud $I0 = istrue $P0
20:32 pmichaud then my 'foo' method gets invoked, and self is properly set to $P0
20:32 pmichaud note that there's no "callmethod" opcode here.
20:32 pmichaud so _something_ is already handling this.
20:32 Whiteknight okay, I think I'm explaining it wrong
20:32 Whiteknight I'm talking about the "invoke" vtable method only, not get_boolean or any others
20:33 Whiteknight if I have ".sub invoke :vtable", without the :method, the invoke function should have a "self" argument
20:33 pmichaud ...but if you wrote   ".sub invoke :vtable :method"  it would work, right?
20:33 Whiteknight probably, yes
20:33 pmichaud that's what I mean "it's the same code that is already handling :method flags"
20:33 pmichaud we just want it to happen for :vtable even when :method isn't present.
20:34 pmichaud i.e., ":method" is in some sense redundant here --- every :vtable effectively implies :method
20:34 Whiteknight exactly. But IMCC can't determine whether "$P0()" calls a custom vtable override, however
20:34 pmichaud I don't think IMCC is what should be determining that.
20:34 pmichaud that seems like it's part of the vm itself
20:35 Whiteknight But IMCC sets up the code to pass the arguments, including the "self" argument
20:35 pmichaud ohhhhhhhh
20:35 Whiteknight so, based on syntax, if I call "foo.bar()" IMCC passes "foo" as the first argument to "bar"
20:35 pmichaud this gets back to my point earlier
20:35 pmichaud $I0 = istrue $P0
20:35 Whiteknight but If I call "$P0()" It won't pass $P0 as the first argument to it's invoke vtable
20:35 pmichaud IMCC doesn't have to know that $P0 is to be the first argument to 'foo' -- something else is doing that.
20:36 pmichaud same goes for $P0()
20:36 pmichaud IMCC shouldn't be responsible for passing the additional argument
20:36 Whiteknight Right, which is why I'm trying to find a more appropriate place to do it
20:36 pmichaud instead, the invoke opcode needs to be smart enough to say "oh, I'm going to a PIR vtable method, so pass the thing being invoked as its first argument."
20:37 Whiteknight Exactly, and if the invoke vtable method is a PIR function, we need to pass the invoked object as the "self" parameter first
20:37 Whiteknight currently, this is not happening, unless we do :method too
20:37 pmichaud and if    .sub 'invoke' :vtable :method    already works, then the 'invoke' opcode already has the logic for doing that
20:38 pmichaud (otherwise it wouldn't work.)
20:38 Whiteknight let me test quickly that it actually does work as I am expecting...
20:38 pmichaud yes, it's entirely possible that it doesn't work.
20:38 Whiteknight no, it doesnt work
20:39 Whiteknight nopaste?
20:39 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
20:39 pmichaud okay, so it's the invoke opcode that likely needs work
20:39 pmichaud but IMCC should always generate the same code for $P0()    (since IMCC can't know what $P0 is)
20:39 Whiteknight right, that's the conclusion I'm slowly arriving at
20:39 Whiteknight Yeah, I spent a lot of time reading through IMCC before I realized that
20:41 pmichaud ....actually, it's not even the opcode that needs to do it
20:41 pmichaud it's the invoke vtable method that needs to do it
20:42 pmichaud just a sec
20:42 Whiteknight http://rafb.net/p/nCAxGE45.html
20:44 Whiteknight this shows you what I'm trying to do, basically
20:44 Whiteknight i have the basics up and running in branches/vtable_has_self
20:45 pmichaud I get "invoke() not implemented in class 'Foo'"
20:45 pmichaud ah, missing a namespace
20:45 nopaste "tene" at 67.137.148.11 pasted "parrot dies on loading perl6.pbc and cardinal.pbc" (8 lines) at http://nopaste.snit.ch/13459
20:45 pmichaud okay, now I get "too few arguments"
20:46 pmichaud so :method doesn't help here
20:46 Whiteknight right, it's attempting to slurp up "self" as the first argument, but a self was never passed
20:47 Whiteknight in C, it's always called self->vtable->invoke(interp, self, next_addr), so it has the self.
20:47 pmichaud I think the culprit is  src/pmc/object.pmc:528-529
20:48 pmichaud it could also be the invoke vtable method in Sub
20:48 Whiteknight is "object.pmc" a top-level class?
20:48 pmichaud yes.
20:48 pmichaud it's the base class for all PIR-class objects
20:49 Whiteknight I've been hunting for this kind of thing all day
20:49 Whiteknight and you find it in like 30 seconds
20:49 pmichaud I have a few years advantage in parrot
20:49 pmichaud also, I was recently in the invoke code when trying to figure out the lexical issues a couple of weeks ago :-)
20:50 Whiteknight so if I push on another argument in that place you pointed out, you think that will solve (or approximately solve) my problem?
20:50 AndyA joined #parrot
20:50 pmichaud I'm not sure.  I'm thinking maybe not.
20:50 Whiteknight well, I'm going to try it anyway
20:50 pmichaud there's got to be another step involved here somewhere
20:50 Whiteknight why do you say that?
20:51 pmichaud I'm trying to figure out how the 'istrue' opcode manages to set 'self'
20:51 pmichaud istrue just becomes a call to the get_bool vtable method
20:51 pmichaud and somehow that vtable method manages to set self when calling a PIR-based method
20:52 Whiteknight does is_true have self in trunk?
20:52 pmichaud lost me there.
20:52 Whiteknight IMCC currently doesnt parse the keyword "self" unless the :method tag is on a sub
20:53 pmichaud right, I mean when :method is present it works somehow
20:53 pmichaud and I don't mean from the IMCC perspective
20:53 Whiteknight okay
20:53 pmichaud I mean from the vtable activation perspective
20:54 pmichaud somehow when the get_boolean vtable method is activated, it manages to pass the PMC as the first argument to the corresponding PIR sub
20:54 pmichaud (which IMCC then picks up as :self because of the :method flag)
20:54 pmichaud er, s/:self/self/
20:54 Whiteknight so the question is, how does istrue pass that first argument?
20:54 pmichaud more precisely, how does get_boolean do it.
20:55 pmichaud (or get_integer, or get_pmc_indexed_keyed, or any of the other vtable methods besides 'invoke')
20:55 pmichaud the 'invoke' vtable method seems to be the only one that isn't passing a first argument as 'self'
20:57 Whiteknight I think it's because of the way IMCC parses it
20:57 pmichaud nononononono
20:57 pmichaud you're too fixated on IMCC, I think :-)
20:57 Whiteknight That has to be a component of if
20:57 pmichaud (easy to do :-)
20:57 Whiteknight or, problems in IMCC lead to workarounds elsewhere
20:58 pmichaud all that IMCC needs to do is recognize that when :vtable is present that it needs to recognize self
20:58 pmichaud in the same way that it does for :method
20:58 pmichaud but that doesn't change at all the way the vtable methods are *invoked*
20:58 Whiteknight well, it does that now in my branch
20:58 pmichaud because IMCC doesn't invoke vtable methods
20:58 pmichaud in particular, IMCC has no control over what arguments are sent to vtable methods -- all it does is say what to do with them when they're received
20:59 Whiteknight I think I see your point
20:59 Whiteknight so then it does come down to a problem with the invoke vtable method not passing it's "self" correctly
20:59 pmichaud correct
21:00 pmichaud do we have an example of an 'invoke' vtable method written in PIR that works?
21:00 pmichaud (either with or without :method?)
21:00 Whiteknight well, no.
21:00 pmichaud well, there ya go.  :-)
21:00 Whiteknight all current tests are written using the "vtable doesnt have self" rule, so all the tests for it break when we add it because there aren't enough arguments floating around
21:00 pmichaud getting IMCC to recognize :self with :vtable is probably a separate issue from getting the invoke vtable method to properly pass self.
21:01 pmichaud ...they are?
21:01 pmichaud whoa
21:01 * pmichaud checks
21:01 Whiteknight Yeah, t/pmc/parrotobject.t has about 3 or 4 tests that die when we enable "self" parsing
21:01 Whiteknight t/pmc/namespace.t has one also
21:02 pmichaud oh, but that's not "all current tests"
21:02 pmichaud most of the tests in t/   for :vtable have :method also, which means that they recognize 'self'
21:02 pmichaud ack ':vtable' t
21:03 Tene pmichaud: is it that .HLL works fine but isn't used by most HLLs, or is .HLL not fully implemented?
21:03 Whiteknight Most are testing the "init" vtable, all the ones testing the invoke vtable without :method fail
21:03 pmichaud Tene: it's that PCT isn't HLL aware yet, and we have to work out the symbol export/import issues
21:04 Tene Hmm.  Okay.
21:04 pmichaud Whiteknight: I think the first goal should be to get :vtable to be able to pass the present set of tests (that are currently passing) without requiring :method
21:04 Tene So now I need to learn about .HLL
21:05 pmichaud Tene:  in particular, when a language adds .HLL, then all of its symbols appear in a namespace separate from other HLLs
21:05 Whiteknight pmichaud, that's what I'm working on now. But without proper "self" passing, all the tests don't get enough arguments.
21:05 pmichaud Whiteknight: right, so it's just a matter of getting imcc to recognize that :vtable should cause self
21:05 pmichaud but those tests that aren't currently passing (such as invoke :vtable) probably won't start passing because of that
21:05 Whiteknight I have that done already. IMCC recognizes self in :vtables in my branch
21:06 Whiteknight but allowing the keyword isn't the same as making sure a value gets passed for it
21:06 Tene pmichaud: would making PCT be .HLL-aware be a pretty significant redesign of PCT, or just a modification?
21:06 AndyA joined #parrot
21:06 pmichaud Tene: significant -- I'll explain in a second
21:06 * Tene can wait. :)
21:06 pmichaud Whiteknight: I think we're in pretty close agreement (more)
21:07 pmichaud I'm saying that having :vtable work without :method for the existing tests that pass is worth committing.
21:07 pmichaud I'm also saying that getting self to work on those vtable methods where it's not presently working is probably a separate bug/issue
21:07 pmichaud in other words
21:07 pmichaud if I can write
21:08 pmichaud .sub 'foo' :vtable('get_boolean')    # note, no :method
21:08 pmichaud and have the istrue opcode dtrt and that 'foo' has a self symbol locally defined, then that's really what the original ticket was trying to address
21:08 Whiteknight ok
21:08 Whiteknight I don't like committing things that break tests though!
21:09 pmichaud which tests break?
21:09 pmichaud I guess that's the part I don't quite understand.
21:09 moritz pmichaud: how's your rakvar branch going?
21:09 dalek r29037 | moritz++ | trunk:
21:09 dalek : [rakudo] add S04-statements/repeat.t to spectest_regression
21:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=29037
21:09 Whiteknight t/pmc/parrotobject.t and t/pmc/namespace.t
21:09 pmichaud moritz: very well.  All of the spectest_regression tests still pass.
21:09 pmichaud Whiteknight: ohhhhhhhhhhhh
21:09 pmichaud i get it, i get it
21:09 pmichaud I can help there I think, just s ec
21:09 moritz pmichaud: Woot!
21:10 pmichaud moritz: yes, I'm a little taken aback and surprised.  I've had to double-check to make sure I'm not accidentally running spectest_regression from trunk :-)
21:10 pmichaud moritz: once I get .implicit_invocant  working I'll merge back to trunk.
21:11 moritz pmichaud++
21:11 pmichaud Whiteknight: for   the :vtable test in t/pmc/namespace.t, I will argue that the test itself is incorrect.  It should require a string parameter.
21:11 Whiteknight yes, I've modified that one in my branch already. It's the ones in t/pmc/parrotobject.t that are eluding me
21:12 pmichaud okay, let me look at those.
21:13 pmichaud ...what ticket started this whole mess again?  ;_)
21:13 clunker3__ joined #parrot
21:14 Whiteknight #47674
21:15 pmichaud okay
21:16 pmichaud I think allison sent you down a false trail in trying to look at expand_pcc_sub_call
21:17 pmichaud I could be wrong about that, but that's my guess
21:18 Whiteknight yes, it was a bit of a false trail. It looked enticing, but it just wasn't correct
21:23 teknomunk joined #parrot
21:36 pmichaud sorry, got interrupted here
21:37 Whiteknight I think I have it mostly figured out, I can't determine how to push a new argument onto the argument list, however
21:37 pmichaud vtable arguments are fixed
21:38 Whiteknight no, I mean the arguments passed to the PIR vtable method
21:38 pmichaud oh, that.  yeah, I don't know how that happens either.
21:38 pmichaud anyway, I think we're well beyond the edge of my knowledge now -- hope I didn't throw you onto any more false trails
21:38 Whiteknight looking at the seg_args and get_params opcodes, I still can't figure out how
21:38 Whiteknight it's okay, I think I'm going to have to send Allison an email about it
21:39 pmichaud Tene:  (HLL)   Parrot has a number of HLL namespaces
21:39 pmichaud right now PCT and PGE both live in the 'parrot' HLL namespace
21:39 pmichaud (and that's where they're likely to remain)
21:39 * Tene listens.
21:39 pmichaud but things like rakudo and tcl and lolcode and the like should really live in their own namespaces
21:39 Tene Right.
21:40 pmichaud which means that when we got to look up  a symbol like  PAST::Op, we have to either (1) know to go look for it in the 'parrot' HLL namespace, because that's where PCT lives, or (2)  import the PCT symbols into the current HLL namespace
21:40 pmichaud s/got/go/
21:40 pmichaud same for PGE and P6object
21:41 pmichaud in fact, with P6object, when we go to create a new class, we want the protoobjects for that new class to be created in the caller's HLL namespace, not in P6object's
21:41 pmichaud as well as any methods that get created or imported
21:42 pmichaud for the choice between (1) and (2) above, currently I'm thinking the best option will be to import the PCT symbols into the current HLL namespace
21:43 pmichaud but I'd like to have a way of doing that which doesn't require each HLL to specify all of the symbols that ought to be imported
21:44 bacek morning everyone
21:44 * Tene nods.
21:45 pmichaud I'm planning to create a branch to get rakudo into its own HLL -- that might actually be a good task for as soon as I get the lexicals worked out
21:45 pmichaud at the same time we could play with getting other languages into their own HLL as well (and do it in the same branch)
21:45 Tene pmichaud: is there currently a way to get the caller's HLL namespace?
21:48 pmichaud I suspect via getinterp there may be.  It's one of those things I need to look at.
21:48 pmichaud if you wanted to figure that out it'd be a big help :-)
21:48 pmichaud although it wouldn't surprise me if Tcl already does it :-P
21:48 pmichaud (Tcl being the best example of using .HLL that we have to date)
21:49 Tene $P0 = getinterp
21:49 Tene ns  = $P0['namespace'; 1]
21:49 Tene in tcl
21:49 Tene Let's see what's in there.
21:49 pmichaud does that get namespace or hll namespace?
21:49 pmichaud we really want/need the hll namespace
21:50 pmichaud _alternatively_
21:50 pmichaud we could pass the hllnamespace to p6object
21:50 pmichaud and it would just store it there.
21:50 Tene Oh, true.
21:50 Tene That might be nice as an option anyway.
21:50 pmichaud yes.
21:50 pmichaud but somehow I still think it's useful if p6object is hll aware
21:55 Tene Looks like no.
21:57 NotFound Someone has at hand some pir that fails because of gc problem?
22:03 Tene pmichaud: getinterp['namespace'].get_name()[0] ha sit
22:04 Tene s/ha sit/has it/
22:10 pmichaud Tene++
22:10 pmichaud afk for a while # going out for dinner
22:11 Tene However, that's the *current* namespace, not of the caller.
22:11 * Tene finds of caller
22:13 Tene getinterp['namespace';1].get_name()[0] has caller's
22:14 bacek nopaste?
22:14 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
22:16 nopaste "bacek" at 202.7.166.165 pasted "infix:xx= implementation for moritz/pmichaud (S03-operators/repeat.t is #pure after this patch)" (22 lines) at http://nopaste.snit.ch/13461
22:17 bacek afk # $dayjob->accept($self)
22:21 Ademan joined #parrot
22:21 moritz that patch leads us to the question: should we implement all those combined infix + asignment operators manually, or should we wait for another big refactor and generated them automatically?
22:49 silug joined #parrot
22:49 * moritz temporarily retires to his bed
22:51 * Tene go home now.
23:03 slightlyoff joined #parrot
23:04 slightlyoff left #parrot
23:10 rdice joined #parrot
23:24 tetragon joined #parrot
23:27 AndyA joined #parrot
23:36 pmichaud (implement combined ops):  I think for ops that we have specific (and likely used) tests for, we can go ahead and generate the manually.  But I wouldn't make any special effort to generate them all, as eventually they'll be done automagically.
23:52 bacek_ joined #parrot
23:57 japhb pmichaud: Will the automatic generation for op/assign just create "A = A op B"?  If so, that's an efficiency problem.  Nice as a fallback, but not what I'd want for the standard set ....

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced