Camelia, the Perl 6 bug

IRC log for #parrot, 2009-01-17

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 Whiteknight in C, how do you tell if an iterator is empty?
00:02 Tene_ VTABLE_something
00:03 chromatic VTABLE_elements
00:03 chromatic or is it VTABLE_get_bool on the iterator?  That's what you want.
00:03 purl VTABLE_elements is failing likely because mro is null
00:04 Whiteknight VTABLE_elements says it doesnt work correctly with hashes
00:04 Whiteknight although get_bool looks like what we want
00:04 Whiteknight thanks
00:05 tetragon joined #parrot
00:09 AndyA joined #parrot
00:16 cotto irclog
00:16 cotto irclog?
00:16 purl rumour has it irclog is http://irclog.perlgeek.de/parrot/today or see also: infrared clogs
00:17 jonathan VTABLE_get_bool to check if iterator has more elems
00:24 Whiteknight can somebody take a look at src/pmc/namespace.pmc:503 and give me some idea about how to implement that behavior?
00:25 jonathan 503?
00:25 purl well, 503 is Service Unavailable
00:25 Whiteknight it's trying to use a Namespace as a key into another namespace that doesn't exist
00:25 jonathan maybe I need to svn up to get something useful on that line...
00:25 Whiteknight yeah maybe, I added it tonight
00:26 jonathan Whiteknight: see it now
00:26 jonathan er, huh?
00:27 Whiteknight what?
00:27 jonathan Well, you're passing a namespace into a vtable meth...that is meant to return a namespace...
00:27 * jonathan is confused
00:28 Whiteknight src/oo.c:222. We're trying to find a namespace that doesn't exist
00:28 chromatic get_pointer_keyed?
00:28 Whiteknight yeah, that's the one
00:28 chromatic I'm no fan of the name.
00:28 Whiteknight the namespace doesn't exist, and yet we have a namespace PMC that's supposed to point to it
00:29 Whiteknight so I guess we need to create the namespace or something
00:29 jonathan That...shouldn't happen. Hmm.
00:29 Whiteknight The whole thing confuses me
00:29 jonathan You got a bit of PIR that demonstrates this?
00:29 jonathan Are you saying the ->namespace pointer on the PMC points to an NS that is not anchored anywhere? Or?
00:30 tetragon_ joined #parrot
00:31 particle joined #parrot
00:31 * jonathan looks in oo.c
00:32 Whiteknight I don't really know. The namespace's VTABLE_get_class is returning PMCNULL for some reason when we look up on a namespace object
00:32 chromatic There's no class in the namespace.
00:32 jonathan OK.
00:32 jonathan So what is getting passed into Parrot_oo_get_class here?
00:33 Whiteknight A Key, a String, an ResizableStringArray, or a NameSpace PMC
00:34 jonathan I meant, in the case we're seeing a problem?
00:35 jonathan Is there a ticket I should look at for background?
00:35 Whiteknight TT#8 is the one I was trying to fix
00:36 jonathan OK
00:36 Whiteknight When the class object isn't found, it takes the current key, stringifies it, uses that to look up the type id number, and then uses that to create a new PMCProxy of that type number
00:36 jonathan Presumably oe of the problem number 2s? ;-)
00:36 jonathan "Looking up a nonexistent class with a String PMC produces a null PMC (correct), but looking up a nonexistent class with an array produces a "get_string() not implemented in class 'ResizableStringArray?'" exception: "
00:36 jonathan That one?
00:36 Whiteknight yeah
00:37 Whiteknight I changed the lookup to use pmc_type_p for Key, String, and ResizableStringArray, instead of stringifying and finding the type id number from that
00:37 Whiteknight but that approach doesn't work with a NameSpace PMC
00:37 s1n joined #parrot
00:38 Whiteknight if we can get this resolved we can get pmichaud's get_class concerns fixed, which will make him happy
00:39 jonathan Whiteknight: Have you attached a debugger and worked out exactly which line of C does the VTABLE_get_string that fails?
00:40 Whiteknight from the ticket? Yeah, I've already resolved the issue there
00:40 jonathan Just set a breakpoint at the start of Parrot_oo_get_class
00:40 jonathan OK, so that exception is gone?
00:40 Whiteknight that error doesn't pop up anymore because I fixed the handling of ResizableStringArray to use pmc_type_p.
00:40 Whiteknight yes, that exception is gone
00:41 jonathan x.pir now prints 1\n1\n
00:41 jonathan ?
00:41 Whiteknight The problem is the stringification of the NameSpace PMC.
00:41 jonathan ?
00:41 jonathan Are we talking about x.pir or y.pir?
00:41 Whiteknight wait, I think you lost me
00:41 Whiteknight what are x and y?
00:41 purl x and y are arbitrary perpendicular axies.
00:41 jonathan In the ticket
00:42 jonathan One code example starts
00:42 jonathan $ cat x.pir
00:42 Whiteknight no, those examples in that ticket have already been fixed
00:42 jonathan Ah.
00:42 jonathan The one that starts $ cat y.pir
00:42 jonathan Is the one we're looking at?
00:42 Whiteknight no, neither of them
00:43 Whiteknight see how lousy this problem is? I can't even explain what's wrong, much less find a solution to it
00:43 jonathan Both bugs in that ticket are fixed?
00:43 Whiteknight basically, yes
00:43 jonathan Yeah, I'm confused!
00:43 Whiteknight Do you see my note there about TT#182?
00:44 Whiteknight that's the problem I'm trying to fix now. I fixed TT#8 using a bad hack, and I want to resolve the hack
00:44 jonathan What was the svn revision where you checked that in? Seeing the diff may help me...
00:44 Whiteknight let me look for it
00:46 * jonathan loves how the BBC has produced on its news website, complete with illustrations, a step by step guide to landing a plane on water.
00:46 Whiteknight r35654
00:46 jonathan ...just in case I ever have to do this...
00:47 jonathan 503   case enum_class_NameSpace:
00:47 jonathan 504 /* XXX TT#182: Implement this! */
00:47 jonathan 505 return PMCNULL;
00:48 jonathan This case seems non-sensical to me.
00:48 Whiteknight yes, that's what I'm trying to implement, and I haven't got any idea how to go about doing it
00:48 Whiteknight it seems nonsensical to me too!
00:48 jonathan I just don't see how you could sensibly implement it though.
00:48 Whiteknight that's why I asked for help
00:49 jonathan OK
00:49 Whiteknight get_class opcode calls Parrot_oo_get_class. We fall through on line src/oo.c:222, stringify the PMC argument, and call pmc_type to get the type number for it
00:49 jonathan But I suspect (it's almsot 2am here, I haven't got the energy to really dig in, sorry) that if the approach to fixing stuff up has led you to thinking you want to implement this case, something else is wrong further up the chain.
00:50 jonathan OK, but that's possibly _ok_.
00:50 jonathan We manufacture PMCProxy instances on demand.
00:50 jonathan And stick 'em in the namespace after manufacturing them.
00:50 jonathan Rather than creating them all at startup.
00:51 jonathan So it probably should fall through to creating it, if it doesn't exist yet.
00:53 Whiteknight we manufacture them using the PMC type number, is there an easy way to get that from a NameSpace PMC?
00:54 jonathan Not if the PMCProxy doesn't exist yet.
00:54 Whiteknight I don't know enough about the implementations of all these PMCs to find easy solutions
00:54 jonathan Let me try and explain better
00:54 s1n joined #parrot
00:54 * Whiteknight is going stupid
00:54 jonathan A namespace has a slot where we can stick the Class PMC.
00:54 Whiteknight right
00:54 jonathan (you're not, Parrot guts are just an epic headache)
00:54 jonathan When you do something like
00:55 jonathan $P0 = newclass ['Foo']
00:55 jonathan It creates a Class PMC and also puts it in the Foo namespace's slot.
00:55 Whiteknight right
00:55 jonathan Thus when you are in that function inside oo.c we were looking at, it finds the namespace, does get_class vtable call on it, and we're done.
00:56 jonathan OK so far?
00:56 Whiteknight yes
00:56 jonathan OK
00:56 jonathan Here's what's nasty
00:56 jonathan We have this thing called PMCProxy
00:56 jonathan PMCs are written in C, but we need some kind of thingy we can introspect that tells us about a PMC.
00:56 jonathan That's what PMCProxy is for.
00:57 jonathan However, we don't create a PMCProxy for each PMC at startup.
00:57 jonathan Instead, we create them the first time we lookup the PMC by name.
00:57 jonathan So the first time we look in the namespace, get_class hands us back something null.
00:58 jonathan Because we did not yet create a PMCProxy yet.
00:58 jonathan Thus we call through to the code which instead looks in the class registry to get the type number.
00:58 Whiteknight so we need to create a PMCProxy for it at that point
00:58 jonathan It then creates a PMCProxy.
00:58 jonathan I'm pretty sure it's already doing it.
00:59 jonathan Yes
00:59 jonathan See line 242
00:59 Whiteknight right
00:59 jonathan classobj = pmc_new_init(interp, enum_class_PMCProxy, type_num);
00:59 Whiteknight right, and we need to get that type_num value to create the PMCProxy
00:59 jonathan And when that PMCProxy creates itself, it's vtable_init_pmc should also install that in the namespace
00:59 jonathan Exactly.
00:59 Whiteknight so how do we get that type_num from a NameSpace pmc?
01:00 jonathan We don't.
01:00 jonathan We use the class registry instead.
01:00 jonathan That's what pmc_type looks in, I believe.
01:00 Whiteknight right. pmc_type_p takes a Key, a String, or a RSA and does a lookup in the class registry
01:01 jonathan *nod*
01:01 Whiteknight What I need is to use a namespace PMC to do a similar lookup
01:01 jonathan Oh.
01:01 Whiteknight which calls VTABLE_get_pointer_keyed in the Namespace PMC
01:01 jonathan Aha.
01:01 Whiteknight hence our chicken-and-egg dillema
01:01 jonathan OK, now I understand.
01:02 jonathan But get_pointer returns a namespace.
01:02 Whiteknight it's depressing that you're better at explaining my problem to you then I was. and you had no idea what I was talking about!
01:02 jonathan Or are you saying we need to take the name of the namespace, look *that* up in the class registry, create a PMCProxy, which then in turn associates itself with the namespace, which we then return?
01:03 Whiteknight ...I think so?
01:03 Whiteknight take a look at src/pmc.c:pmc_type_p().
01:03 jonathan That may do it but...ouch.
01:03 Whiteknight if VTABLE_get_pointer_keyed is returning a namespace, then we should be able to check for enum_class_NameSpace and use that instead of trying to look it up
01:04 jonathan It's doing
01:04 jonathan (PMC *)VTABLE_get_pointer_keyed(interp, classname_hash, name);
01:04 jonathan what is classname_hash?
01:05 jonathan interp->class_hash = classname_hash = pmc_new(interp, enum_class_NameSpace);
01:05 jonathan huh, it's a namespace PM
01:05 jonathan c
01:05 jonathan *PMC
01:05 jonathan Wow.
01:05 jonathan OH!
01:06 jonathan So is the problem that we are passing into pmc_type_p a NameSpace?
01:06 Whiteknight yes!
01:07 Whiteknight that's the problem exactly
01:07 jonathan Ah, finally, I understand! :-)
01:07 jonathan Erm.
01:09 Whiteknight NameSpace PMCs don't even seem to have a get_integer VTABLE
01:09 jonathan no
01:09 jonathan nopaste?
01:09 purl well, nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others)
01:09 nopaste "jonathan" at 85.216.157.73 pasted "maybe something like this?" (14 lines) at http://nopaste.snit.ch/15335
01:10 jonathan I didn't try compiling that, but basically, you ask the namespace to give you a representation of itself
01:10 jonathan As a REsizableStringArray
01:10 jonathan Which I tink get_pointer can deal with.
01:10 jonathan _but_ it'll include a HLL name so you may actually have to do more like
01:11 Whiteknight oh, okay, I see what you are trying to do.
01:11 Whiteknight get the RSA and pop the top entry off it?
01:11 Whiteknight or shift the bottom entry off it? (it's got to be one of the two)
01:12 nopaste "jonathan" at 85.216.157.73 pasted "or this" (17 lines) at http://nopaste.snit.ch/15336
01:12 jonathan You got it - and shift bottom off.
01:12 jonathan I didn't even try to compile that. :-)
01:12 jonathan But something along those lines may work.
01:12 jonathan It makes more sense to me to handle it here than in get_pointer
01:13 chromatic No kidding.
01:13 jonathan oh phew chromatic agrees...it can't be *too* bad!
01:14 jonathan chromatic: Another pair of eyes over my Parrot core commit earlier today might be good, if you have a spare moment.
01:15 jonathan It should eliminate some potential segvs.
01:17 chromatic Which one was this?  The PMC_sub one?
01:17 chromatic I saw the commit mail, but was shuffling laundry and didn't read through it in detail.
01:17 chromatic YET
01:18 jonathan PMC_sub one yeah
01:18 jonathan I need to sleep now
01:18 jonathan But just reply to list if you've any issues with it.
01:18 * jonathan afk -> bed
01:20 chromatic Will do.
01:20 Whiteknight goodnight jonathan! thanks!
01:24 dalek r35656 | jkeenan++ | trunk/editor:
01:24 dalek : Applying patch submitted by Jimmy Zhuo in https://trac.parrot.org/parrot/ticket/176:  Better indentation in line following a line consisting of a LABEL: and a comment.
01:24 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35656
01:25 Whiteknight chromatic, I had an idea that I wanted to bounce off your
01:25 Whiteknight off you*
01:26 chromatic Go ahead.  I'm cleaning up in the other room, but I'll pop in and out to read.
01:26 Whiteknight during the build, what if we did a transform on the source code to replace calls to Parrot_PCCINVOKE with the actual method function call from the PMCs?
01:27 Whiteknight so instead of calling Parrot_PCCINVOKE, we call Parrot_NameSpace_nci_get_string() directly?
01:28 Whiteknight obviously there are some changes would need to be made to contain all the information we would need, but it would save us from repeatedly crossing the C <--> PIR boundary
01:28 chromatic That'll force static dispatch, but you can cheat that a little bit.
01:29 Whiteknight we could only do that on the methods written in C, but for those cases we could avoid a lot of callsignature overhead
01:29 Whiteknight and yeah, we couldn' do it on a mutli
01:29 Whiteknight multi*
01:29 chromatic Those methods don't vary with readonlyness, do they?
01:30 Whiteknight Their names might, but other then that, no
01:30 Whiteknight I would need to look into it
01:30 chromatic That seems worthwhile to benchmark.
01:31 Whiteknight once we narrow down the subset of places where it's even possible it might turn out to be a huge waste, but it's not like we don't have all sorts of perl programs parsing through the source code anyway
01:32 chromatic Right.
01:32 Whiteknight that will be another project for another day though, just something I was thinking about
01:32 chromatic An hour of experimenting would give you some good ideas.
01:38 Whiteknight okay, I'm glad that you didn't immedately think it was a lousy idea, that gives me hope
01:38 Whiteknight you're a good barometer for ideas like that
01:39 dalek r35657 | jkeenan++ | trunk/editor:
01:39 dalek : Change date of last revision.
01:39 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35657
01:46 cotto Coke_away, ping
01:46 s1n joined #parrot
01:46 Whiteknight urg, I hate segfaults! They don't give you any information about where they happened or why
02:04 gravity joined #parrot
02:19 Coke cotto: pong.
02:22 Whiteknight Coke: asteroids
02:22 purl Why are hemeroids called hemeroids and asteroids called asteroids?  It should be the other way around.
02:26 cotto Coke, if you want to help with the PMC unionval deprecation, there's a list of PMCs that need fixing on the wiki page
02:28 cotto https://trac.parrot.org/parrot/w​iki/PMCUnionDeprecationTasklist
02:35 Coke but you're doing such a great job!
02:35 Whiteknight cotto++
02:50 particle1 joined #parrot
02:54 Whiteknight how do you mark a test TODO in PIR?
02:55 Coke t/library/test_more.t
02:55 kid51 joined #parrot
02:55 Infinoid cotto++ # so _thats_ why you were doing such horrific things to PMC_x_val()
03:04 dalek r35658 | coke++ | trunk:
03:04 dalek : Hearing no objection on these tickets, make the deprecation official.
03:04 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35658
03:06 Infinoid cotto: is PMC_data() included in this deprecation?
03:12 Infinoid the Packfile PMCs I'm working on use that heavily, but I'm not sure the fact that they're listed in your dependency graph means they're affected by this issue.
03:16 LimbicRegion joined #parrot
03:17 LR joined #parrot
03:21 Limbic_Region joined #parrot
03:22 cotto Infinoid, yes.  PMC_data is where the pointer to Parrot_Foo_attributes lives
03:26 dalek r35659 | jkeenan++ | trunk:
03:26 dalek : Punctuation correction only.
03:26 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35659
03:27 cotto (in updated PMCs)
03:31 * Whiteknight is ANGRY at namespaces
03:39 dalek r35660 | jkeenan++ | trunk/languages/pheme:
03:39 dalek : Add missing copyright statement.
03:39 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35660
03:41 dalek r35661 | jkeenan++ | trunk/src (3 files):
03:41 dalek : Eliminate trailing whitespace in 3 files.
03:41 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35661
03:58 idemal joined #parrot
04:01 kid51 msg jonathan Please run t/codingstd/c_arg_assert.t and t/codingstd/c_macro_args.t to catch problems in 2 files committed Jan 16.
04:01 purl Message for jonathan stored.
04:08 TiMBuS a fresh parrot checkout doesnt seem to want to build on x64 ubuntu. =/
04:08 kid51 You may wish to add that to https://trac.parrot.org/parrot/ticket/26
04:10 TiMBuS oh hey these are all the other segfaults i was getting when using --optimized ;/
04:10 Infinoid TiMBuS: where exactly does it fail?
04:10 TiMBuS ./miniparrot config_lib.pasm > runtime/parrot/include/config.fpmc
04:10 TiMBuS Segmentation fault
04:10 purl (Core dumped)
04:11 Infinoid ah.  that's not TT #26, I don't think, that's the issue PerlJam was talking about a day or two ago (I dunno if it has a ticket)
04:12 Infinoid TiMBuS: you willing to get a gdb backtrace so we can find out for sure?
04:12 TiMBuS im no good with gdb but ill try
04:13 kid51 TiMBuS:  By any chance, do you have an installed parrot executable already?
04:13 TiMBuS nope
04:14 TiMBuS i just did a svn up and it no longer built, tried the usual make realclean/fresh checkout but that didnt work
04:14 Infinoid ok.  if you have gdb installed, you can try the following commands:
04:14 Infinoid gdb miniparrot
04:14 Infinoid run config_lib.pasm >/dev/null
04:15 Infinoid (wait for the segfault, shouldn't take long)
04:15 Infinoid bt
04:15 TiMBuS got it
04:15 TiMBuS want it pasted anywhere in particular
04:15 kid51 nopaste?
04:15 purl nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others)
04:16 kid51 Hmm:  there's also this ticket:  https://trac.parrot.org/parrot/ticket/179
04:16 nopaste "TiMBuS" at 123.243.167.27 pasted "segfault backtrace" (7 lines) at http://nopaste.snit.ch/15337
04:16 TiMBuS that was fast
04:16 s1n joined #parrot
04:17 Infinoid Yep, that's the same crash.
04:18 Infinoid Do you have a trac account?
04:18 TiMBuS nope
04:19 Infinoid If you can, please create one, and post a comment on http://trac.parrot.org/parrot/ticket/179 that you're seeing the same issue, and include specific details of your platform, and also your backtrace (you might want to put it in {{{ }}}'s to make sure it gets formatted properly)
04:19 TiMBuS sure thing
04:19 Infinoid we're having a difficult time nailing this one down so far.  it seems it occurs on some x64 ubuntu boxes but not others
04:19 TiMBuS =/
04:19 Infinoid and I can't reproduce it on x64 gentoo, unfortunately
04:19 Infinoid thanks!  TiMBuS++
04:22 chromatic p *scheduler
04:23 Infinoid chromatic: I have results from PerlJam's having poked around with it a few days ago
04:23 Infinoid 08:18 <@Infinoid> print scheduler->vtable
04:23 Infinoid 08:18 <@PerlJam> $1 = (VTABLE *) 0xdeadbeef
04:23 chromatic Straight from pmc_new?
04:23 Infinoid correct.
04:23 chromatic Dodgy cast somewhere that 64-bits hates/
04:23 chromatic ?
04:23 Infinoid I dunno.  it's not affecting all 64-bit platforms, just a few
04:23 Infinoid 08:34 <@PerlJam> according to the bisect, r35568 is the first bad rev for my miniparrot segfault
04:24 Infinoid it made me wonder if interp->vtables[] array was corrupt somehow
04:24 kid51 TiMBuS:  If you create an account on Trac, don't enter anything other than your name and email address, and don't modify any Preferences.  (Therein lies a bug.)
04:24 chromatic In theory, VTABLE_init or VTABLE_instantiate should work just fine.
04:24 chromatic _init
04:24 * kid51 knows that sounds weird but we've all been bitten.
04:24 TiMBuS lol
04:25 TiMBuS ok then, wont go to prefs
04:25 chromatic src/pmc/scheduler.pmc:68 ?
04:26 Infinoid src/scheduler.c:83
04:26 chromatic I mean, is that line dodgy?
04:26 Infinoid oh, I don't know.
04:27 chromatic Maybe we need to throw some debugging lines to make sure init() gets called.  If it does, the vtable is fine there.
04:27 Infinoid TiMBuS: I'm going to try to make an ubuntu chroot to reproduce this in.  Which flavor and rev are you running?
04:29 TiMBuS uhh, 64 bit 8.10, whats the animal name again.. ibex
04:29 Infinoid thanks
04:30 kid51 msg jonathan I believe I fixed one of those codingstd failures; t/codingstd/c_arg_assert.t remains.
04:30 purl Message for jonathan stored.
04:30 Infinoid oh hey, that sounds like something I can fix
04:31 kid51 I'll be making commit on the other correction in a minute.
04:32 Infinoid Ok, I'll stay out of your way.
04:37 dalek r35662 | jkeenan++ | trunk/include/parrot:
04:37 dalek : Make file pass t/codingstd/c_macro_args.t.
04:37 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35662
04:37 kid51 Infinoid:  Can you review that commit?  If it's okay, it may have the clue to fixing the other codingstd fail.
04:39 Infinoid the extra paren seems reasonable for PMC_sub.  the other codingstd fails because the opening curly brace isn't on it's own line, and the test's regex is too strict.  (working on that)
04:39 Infinoid I don't see a codingstd rule related to this, so I'm relaxing the regex rather than moving the brace.
04:41 kid51 Thx.  Will check in on that tomorrow.  In the meantime, like all of us not in the Pacific time zone ...
04:41 * kid51 must sleep
04:41 purl $kid51->sleep(8 * 3600);
04:41 Infinoid sleep well
04:46 Casan joined #parrot
04:47 dalek r35663 | infinoid++ | trunk (2 files):
04:47 dalek : [codingstd] There doesn't seem to be a codingstd test requiring a
04:47 dalek : function's opening curly brace to be on its own line.  Thus, the
04:47 dalek : regex in c_arg_assert is too strict.  Relax it to allow a newline
04:47 dalek : *or* a space before the opening curly.
04:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35663
04:59 japhb joined #parrot
05:10 dalek r35664 | cotto++ | trunk/src/pmc:
05:10 dalek : [pmc] convert BigInt PMC to use ATTRs
05:10 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35664
05:12 particle joined #parrot
05:43 jimmy joined #parrot
06:19 jimmy cotto: ping
06:28 cotto jimmy, pong
06:30 jimmy ... I forget what I want to ask.
06:31 jimmy s/ask/ask for/
06:31 cotto did you have a patch?
06:31 cotto maybe a question about PMC UnionVal conversions?
06:32 jimmy yes,I hava a patch, it is in TT. my question is about PMC UnionVal conversions, but I forget it.
06:33 cotto I'll be here if you remember it.
06:33 cotto and if you don't
06:35 pdcawley joined #parrot
06:35 jimmy thanks.
06:49 pdcawley joined #parrot
06:51 jimmy Here were so many docs mentioned PMC_xxx_val :(
06:51 jdv79 left #parrot
06:52 cotto It's going to be... fun... to replace them all.
06:52 cotto ;)
06:53 chromatic Fun but necessary!
06:55 jimmy It's a bit hard to try to do some conversions.
06:56 jimmy because of inheritance.
07:00 TiMBuS why is D2FPTR() wrapped around a Parrot_dlsym call in dynext.c? it's converting a void* to a ulong, then the ulong gets cast back a function pointer. removing it fixes a warning
07:01 HG` joined #parrot
07:01 jimmy It's codingstd?
07:01 jimmy or my patch gets warnings?
07:02 TiMBuS no it's not from a patch, just a warning thats been bugging me for a while
07:04 cotto jimmy, I updated the wiki page with some PMCs which can be converted without inheritance concerns
07:04 jimmy TiMBus: can you nopaste your patch
07:05 cotto (I'm working on Float atm)
07:05 jimmy cotto: can you take a look at https://trac.parrot.org/parrot/ticket/183?
07:09 cotto jimmy, np.  I'll do that later tonight.
07:10 jimmy thanks.
07:10 TiMBuS jimmy, it's just dynext.c, likes 398 and 407. remove the D2FPTR() macro wrapped around those lines and the warning vanishes. i dont know if i should make a patch for it since it might be needed
07:11 cotto chromatic, do you know what allison meant by inherited and child attributes?
07:12 HG` left #parrot
07:13 cotto afaict, the PMC mangling code doesn't do anything particularly smart wrt attributes and PMCs that extend other PMCs.
07:16 szabgab chromatic: ping
07:17 szabgab chromatic: have you looked at the simple API suggestion I wrote ?
07:17 szabgab for Parrot::Embed ?
07:25 jimmy cotto: I saw you used GETATTR_BigInt_bi and sometimes used GET_ATTR_queue. Is there any difference?
07:27 cotto jimmy, yes.  the GET_ATTR_x form gets turned into GETATTR_Type_x by the pmc2c code.
07:27 cotto GET_ATTR_x only works inside the body of a PMC, which is why I used GETATTR in the BigInt code.
07:28 jimmy oh, I know now.
07:30 jimmy so, if used GETATTR_BigInt_bi inside the body of pmclass, can also use GET_ATTR_bi, am I right?
07:32 cotto yes
07:32 particle1 joined #parrot
07:34 jimmy cotto: thanks
07:37 cotto jimmy, glad to help
07:49 japhb joined #parrot
08:22 iblechbot joined #parrot
08:46 dalek r35665 | cotto++ | trunk/t/op:
08:46 dalek : [t] delete some mysteriously duplicated contents
08:46 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35665
08:59 cotto jimmy, ping
09:02 dalek r35666 | cotto++ | trunk/src (8 files):
09:02 dalek : [pmc] make Float use ATTRs, remove most remaining uses of PMC_num_val
09:02 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35666
09:03 bacek joined #parrot
09:06 dalek r35667 | cotto++ | trunk/languages/perl6/src/pmc:
09:06 dalek : [pod] add a =cut, noticed by jimmy++
09:06 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35667
09:12 dalek r35668 | cotto++ | trunk/src (15 files):
09:12 dalek : [style] a bunch of consting
09:12 dalek : patch courtesy of jimmy++
09:12 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35668
09:30 jimmy joined #parrot
09:30 jimmy cotto: pong. the firewall bloked mibbit.com
09:31 jimmy cotto: pong. the firewall bloked mibbit.com
09:31 jimmy and I didn't know.
09:32 jimmy Is there any reason for PMC Union Deprecation?
09:32 barney joined #parrot
09:40 cotto jimmy, I figured it out
09:41 cotto I'm not entirely sure why it's being deprecated.  I'll need to ask about that.
09:41 jimmy What can I  help you just now?
09:42 cotto I imagine it's because the UnionVal is crufty and doesn't encourage separation of internals
09:42 cotto You can tackle one of the remaining PMCs on the list on the wiki page.
09:42 cotto I'm trying LexPads, but I don't know how far that will go.
09:43 jimmy I had tried it, but some lines always blocked me.
09:44 cotto which ones?  I might be able to help
09:47 jimmy i.e: coroutine.pmc
09:47 jimmy PMC_struct_val(ret) = sub;         PMC_pmc_val(ret)    = PMCNULL
09:49 cotto I don't know why it does that.  Try taking out the lines like that and see if make test still passes.  I'd be quite surprised if it didn't.
09:50 cotto (the lines like PMC_pmc_val(x) = PMCNULL)
09:52 particle joined #parrot
09:52 jimmy yes, that's why it blocked me
09:53 nopaste "cotto" at 96.26.202.243 pasted "bigint patch for mj41" (15 lines) at http://nopaste.snit.ch/15341
09:55 dalek r35669 | cotto++ | trunk/src/pmc:
09:55 dalek : [pmc] convert some LexPad code to use attrs
09:55 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35669
09:55 cotto jimmy, what do you mean?  did it break things when you removed those lines?
09:56 jimmy I don't know how to convert it.
09:57 cotto In that case, it looks like a no-op.  Since it's not assigning anything meaningful to PMC_pmc_val(x), it should be safe to remove.
09:57 cotto (i.e. you don't need to convert it)
10:02 cotto mj41++ #stealth privmsg bug reporting
10:03 dalek r35670 | cotto++ | trunk/src/pmc:
10:03 dalek : [pmc] make BigInt compile without the libgmp headers
10:03 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35670
10:03 jimmy maybe it is used by sub.pmc
10:05 cotto sub.pmc does the same thing with PMC_pmc_val (assign NULL to it)
10:05 cotto it should be safe to remove
10:05 cotto either way, I'm going to sleep
10:05 cotto night
10:06 jimmy night.
10:06 jimmy I see it  PMC_pmc_val    ... unused / bound object in Bound_Meth PMC.
10:10 clunker3 joined #parrot
10:29 alvar joined #parrot
10:31 cotto smolder?
10:31 purl somebody said smolder was http://sourceforge.net/projects/smolder or web-based smoke test aggregator used by developers and testers to upload (automated or manually) and view smoke/regression tests using the Test Anything Protocol (TAP). or http://smolder.plusthree.com/app​/public_projects/smoke_reports/8
10:44 dalek r35671 | bernhard++ | trunk/src (2 files):
10:44 dalek : [codingstd] tabs.t
10:44 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35671
11:13 Fayland_logger joined #parrot
11:31 dalek r35672 | bernhard++ | trunk/languages/pipp/src/pct:
11:31 dalek : [Pipp] Load pipp.pbc, so that dumped PIR executes without complaints
11:31 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35672
11:31 dalek r35673 | bernhard++ | trunk/src/pmc:
11:31 dalek : [codingstd] remove trailing space
11:31 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35673
11:41 nopaste "barney" at 84.154.42.145 pasted "methods on 'Float' broken" (13 lines) at http://nopaste.snit.ch/15342
12:06 dalek r35674 | tewk++ | trunk (2 files):
12:06 dalek : remove Parrot_class_lookup*
12:06 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35674
12:10 riffraff joined #parrot
12:13 particle1 joined #parrot
12:20 dalek r35675 | bernhard++ | trunk/runtime/parrot/include:
12:20 dalek : Add comment about the PASM macros. Nicer formating.
12:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35675
12:20 dalek r35676 | bernhard++ | trunk/t/pmc:
12:20 dalek : Fix PIR-indenting to 4 leading spaces
12:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35676
12:20 dalek r35677 | bernhard++ | trunk/t/pmc:
12:20 dalek : Add failing test case for method 'acos'
12:20 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35677
12:29 dalek r35678 | bernhard++ | trunk/t/pmc:
12:29 dalek : provide ticket number for a TODO test
12:29 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35678
12:42 szabgab rakudobug?
12:42 purl rakudobug is mailto:rakudobug@perl.org
12:51 kid51 joined #parrot
13:01 dalek r35679 | kjs++ | trunk/compilers/pirc/src:
13:01 dalek : [pirc] add a forward declaration of lexer_state struct; gcc emits an error otherwise. msvc handles this fine.
13:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35679
13:13 Zaba joined #parrot
13:15 lathos OK, I'm seeing a very weird bug with array handling - trying to track it down.
13:17 jonathan lathos: In Rakudo or Parrot?
13:18 * barney has added https://trac.parrot.org/parrot/ticket/184
13:19 dalek r35680 | kjs++ | trunk/compilers/pirc/src:
13:19 dalek : [pirc] fix build for Linux. Somehow, there must be some kind of macro expansion that uses the name "interp" for the Interp * struct. Declare that as a local variable, so "interp" is around if needed.
13:19 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35680
13:24 dalek r35681 | kjs++ | trunk/compilers/pirc/src:
13:24 dalek : [pirc] add a #define for debug messages.
13:24 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35681
13:37 dalek r35682 | kjs++ | trunk/compilers/pirc/src (2 files):
13:37 dalek : [pirc] remove unused var warning on windows, and fix a missing prototype warning on linux.
13:37 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35682
13:39 dalek r35683 | kjs++ | trunk/compilers/pirc/src:
13:39 dalek : [pirc] add a missing prototype.
13:39 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35683
13:46 dalek r35684 | kjs++ | trunk/compilers/pirc/src (5 files):
13:46 dalek : [pirc] add a missing prototype.
13:46 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35684
13:51 dalek r35685 | kjs++ | trunk/compilers/pirc/src (2 files):
13:51 dalek : [pirc] fix a comment.
13:51 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35685
14:30 braceta joined #parrot
14:31 Infinoid barney: ping
14:33 particle joined #parrot
14:35 Whiteknight joined #parrot
14:35 braceta_ joined #parrot
14:36 jhorwitz joined #parrot
14:46 barney Infinoid: pong
14:46 dalek r35686 | bernhard++ | trunk/languages/pipp/src/pct (2 files):
14:46 dalek : [Pipp] only simple identifiers are allowed in constant definition
14:46 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35686
14:47 dalek r35687 | bernhard++ | trunk/languages/pipp/src/pct:
14:47 dalek : [Pipp] Make the actions class_constant_definition and
14:47 dalek : namespace_constant_definition look the same
14:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35687
14:47 dalek r35688 | bernhard++ | trunk/languages/pipp/src/pct (2 files):
14:47 dalek : [Pipp] Merge namespace_constant_definition and class_constant_definition
14:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35688
14:47 dalek r35689 | bernhard++ | trunk/languages/pipp/src/pct:
14:47 dalek : [Pipp] Eliminate class_constant_accessor and static_method_accessor
14:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35689
14:47 dalek r35690 | bernhard++ | trunk/languages/pipp/src/pct:
14:47 dalek : [Pipp] hardcode <.namespace_separator>
14:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35690
14:49 Infinoid barney: hi.  I've got a fix for your TT #184, but are you sure the test is correct?  acos(0) returns 1.5707963267949 for me, not 0.0
14:49 Infinoid (I'm not very good with these trig things, so please give me a sanity check)
14:50 Infinoid the same fix will be needed for all the other trig functions too, so I'm adding similar tests for those now
14:52 * barney is checking
14:53 Whiteknight 1.57079 = pi/2
14:53 Infinoid so my fix made acos(0.5) work, but broke the acos(0) part of the test
14:53 Whiteknight I can't remember all my trig, but I think that acos(0) = pi/2
14:54 barney Yes, I'll change the test
14:54 Infinoid barney: I've already got a patch for that, I just wanted to know if I was crazy or not :)
14:54 Infinoid thanks, I'll commit the test fix along with all the additional tests when I've fixed everything else up
14:57 barney too late :=)
14:57 dalek r35691 | bernhard++ | trunk/t/pmc:
14:57 dalek : fix test:  acos 0.0 is pi/2
14:57 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35691
15:00 dalek r35692 | pmichaud++ | trunk/languages/perl6/docs:
15:00 dalek : [rakudo]: spectest-progress.csv update: 286 files, 0 passing, 6288 failing
15:00 dalek : * r35664 broke the Parrot build, so no passing tests :-(
15:00 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35692
15:00 Infinoid heh
15:02 register joined #parrot
15:07 jonathan ...wtf...
15:08 jonathan D'oh. Fix fail.
15:08 * jonathan didn't notice it since he had no bigint library!
15:09 jonathan Either that or MSVC++ doesn't care about whatever the issue is. :-S
15:09 pmichaud it was fixed shortly thereafter... but spectest-progress reports the status as of 00:00 CST
15:10 jonathan Oh!
15:10 jonathan OK
15:10 jonathan That's probably why.
15:10 pmichaud I think it was probably fixed in r35667 (I didn't check)
15:10 pmichaud it's okay in trunk now,  yes.
15:10 jonathan Ah, good.
15:10 jonathan I thought it was reporting a breakage at the moment.
15:12 * jonathan will probably do some hacking later
15:13 jonathan Need to try and make a dent in my massive pile of unanswered personal email first.
15:18 barney bbl
15:22 Infinoid is there a formatted print op in PIR, so I can chop some of the least significant digits off of a float I'm printing?
15:22 pmichaud Infinoid: printf
15:22 Infinoid perfect.
15:22 purl perfect is, like, the enemy of good enough
15:31 Infinoid ok.  the printf op doesn't seem to exist, and the sprintf op doesn't seem to accept NUMVALs.  And when I pass it a %f argument with a Float PMC, I get "get_pmc_keyed() not implemented in class 'Float'"
15:32 pmichaud oh, sorry, sprintf is right
15:32 pmichaud note that the argument to sprintf has to be an array.
15:32 Infinoid oh!
15:32 Infinoid I was wondering how varargs was handled.  That helps, thanks
15:36 Casan joined #parrot
15:37 Casan left #parrot
15:37 Casan joined #parrot
15:47 Limbic_Region joined #parrot
15:49 hudnix joined #parrot
15:56 Andy joined #parrot
16:01 dalek r35693 | infinoid++ | trunk (2 files):
16:01 dalek : [float] Fix the acos() method.  Un-todo the test.  (TT #184)
16:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35693
16:01 dalek r35694 | infinoid++ | trunk (2 files):
16:01 dalek : [float] Fix and test the rest of the Float PMC's trig methods. (TT #184)
16:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35694
16:01 Infinoid (I sure hope those results are portable.)
16:16 jonathan Infinoid: there are tests?
16:16 jonathan oh, yes
16:16 jonathan Infinoid: Will svn up, rebuild and try it here
16:18 tetragon joined #parrot
16:44 barney looks good here
16:47 jonathan Yes, same here.
16:52 Infinoid great, thanks
16:54 particle1 joined #parrot
16:58 davidfetter joined #parrot
17:11 dalek r35695 | bernhard++ | trunk/config/gen/makefiles:
17:11 dalek : [docs] Rephrase comment and help message
17:11 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35695
17:12 dalek r35696 | bernhard++ | trunk/config/gen/makefiles:
17:12 dalek : Add targets co-all, co-eclectus and co-hq9plus
17:12 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35696
17:14 jonathan particle1|coke-z: I'd not mind a commit bit on the sqwauk repo - I think you are the right people to ask. :-)
17:17 rhr joined #parrot
17:23 dalek r35697 | Whiteknight++ | trunk/src (3 files):
17:23 dalek : [get_class] some updates to get_class to try and standardize the way objects are looked up. This fixes some of the hacky stuff I did yesterday to implement some of this behavior (but doesn't fix everything). Jonathan++ for the help
17:23 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35697
17:34 Whiteknight jonathan, I finally got that issue from last night fixed, thanks!
17:34 jonathan Whiteknight++
17:35 Whiteknight I figured out what kind of object is getting passed in that's still gumming up the works: a Role
17:35 Whiteknight so somebody is passing Role PMCs to get_class somewhere, and the routine freaks out because it doesn't know how to deal with them
17:38 dalek r35698 | bernhard++ | trunk/config/gen/makefiles:
17:38 dalek : add target co-tcl
17:38 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35698
17:39 jonathan Whiteknight: The slot can validly hold a Role too.
17:39 jonathan That's OK.
17:39 jonathan But yes, the routine should knwo how to handle that.
17:39 Whiteknight what slot can hold a Role, the class_obj?
17:40 Whiteknight will PObj_is_class_TEST(Role) return true?
17:40 dalek r35699 | bernhard++ | trunk/config/gen/makefiles:
17:40 dalek : Add co-gil
17:40 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35699
17:44 jonathan Whiteknight: The same one that holds a class.
17:45 jonathan Erm. It may do. I don't remember...check in init for Role.
17:47 dalek r35700 | bernhard++ | trunk/config/gen/makefiles:
17:47 dalek : add target co-pjs
17:47 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35700
17:55 dalek r35701 | bernhard++ | trunk/config/gen/makefiles:
17:55 dalek : Add target co-primitvearc
17:55 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35701
18:02 dalek r35702 | bernhard++ | trunk/config/gen/makefiles:
18:02 dalek : Update help message
18:02 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35702
18:06 Whiteknight nope, it doesnt
18:10 * jonathan finally gets around to writing a journal entry
18:10 jonathan http://use.perl.org/~Jonath​anWorthington/journal/38308 # about parametric roles
18:18 On joined #parrot
18:21 coke-z jonathan: give me your googlecode id.
18:25 jonathan Coke: jnthnwrthngtn
18:29 dalek r35703 | bernhard++ | trunk/config/gen/makefiles:
18:29 dalek : Escaple backslashes in languages/Makefile
18:29 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35703
18:29 japhb '        # ...and before some smartass points it out, I know
18:29 japhb # I'm missing some of the masculine animate declension...'
18:29 japhb NICE
18:31 dalek r35704 | Whiteknight++ | trunk/src (3 files):
18:31 dalek : [get_class] a few cleanups with the get_class stuff
18:31 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35704
18:31 Whiteknight yay! I love jonathan's blog posts
18:32 japhb Yep.  Simultaneously telling us about newly working features, and explaining them quite nicely ...
18:32 japhb jonathan++
18:33 barney jonathan++
18:33 Whiteknight jonathan++
18:33 Whiteknight karma jonathan?
18:33 purl jonathan has karma of 1184
18:33 Whiteknight that's quite a bit
18:38 japhb And he's earned it
18:38 Coke jonathan: Changes have been saved
18:39 Ademan joined #parrot
18:40 Coke I  made "make" in tcl build the fake-executable. Anyone mind if I do the same to perl6 ?
18:40 Coke wow. nevermind, it's even slower to build it for p6.
18:44 jonathan Coke: Aye, it's not so fast. For now testing with the PBC is fine for us.
18:46 jonathan Coke: Thanks for squaak bit. :-)
18:47 barney Infinoid: did you look at asinh and acosh ?
18:50 jonathan Coke: Is this a general place for putting languages that don't want their own repo?
18:51 jonathan And are we aiming to move everything other than the odd demo/tutorial langauage out of languages for 1.0?
18:51 dalek r35705 | Whiteknight++ | branches:
18:51 dalek : branch was heading in the wrong direction, deleting to restart it in a better way
18:51 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35705
18:54 barney jonathan: that was my impression
18:55 jonathan OK
18:55 jonathan If so I will probably move dotnet there
18:56 barney question is whether unmaintained languages should be moved or simply be deleted, waiting for resurection
18:58 Hinrik you could keep them in the repo but exclude them from the release tarballs
18:58 jonathan I'm not sure how many of them have owners, yeah.
19:02 barney I'll move m4 to github tomorrow, pipp after Parrot 0.9.0 release
19:09 dalek r35706 | bernhard++ | trunk/languages/pipp/src/pmc:
19:09 dalek : [Pipp] Do not use the UnionStruct in PhpFloat PMC
19:09 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35706
19:09 chromatic joined #parrot
19:14 particle joined #parrot
19:19 chromatic Whiteknight, your use.perl.org post is missing the link to the Perl 6 book at Wikibooks.
19:28 * jonathan is looking at the Java grammar
19:28 jonathan omfg...
19:28 rhr joined #parrot
19:28 jonathan ...so this is what happens when you do operator precedence with recursive descent!
19:29 davidfetter heh
19:29 Whiteknight it's missing the link? It was there when I previewed it
19:29 * Whiteknight will have to go look again.
19:29 jonathan It's like, yeah, I'll just do something easy...write some dummy say method and be able to create a class and call it.
19:30 jonathan Turns out I'd have to implement (or do stubs for by which time I may as well have implemented!) pretty much every other operator in the language!
19:47 Whiteknight joined #parrot
19:50 braceta joined #parrot
20:01 Whiteknight okay, fixed the link. Thanks chromatic++
20:02 Whiteknight I was missing a stupid closing quoute on the href=
20:04 Casan joined #parrot
20:04 davidfetter joined #parrot
20:09 Coke jonathan: (general place) yup. If you don't want to be bothered setting up a repo, but are interested in not having it die.
20:09 jonathan OK, sounds about right.
20:13 Coke (so, only move it if you're the maintainer or have talked to her.)
20:14 jonathan *nod*
20:14 jonathan I'm not aware that anyone else has taken maintainership of dotnet... :-)
20:14 jonathan Much as I may wish it were so.
20:14 jonathan OK, enough time on Perk. :-)
20:15 masak joined #parrot
20:31 * Coke hates him some IE6 JS bugs.
20:33 chromatic Hm, looks like we can remove the Closure and delegate PMCs, as well as possibly Bound_NCI.
20:37 jonathan I saw code that used Bound_NCI just the other day.
20:37 jonathan Closure and Delegate PMC maybe though.
20:38 rindolf joined #parrot
20:38 rindolf Hi all.
20:39 chromatic You may have seen Bound_NCI in default.
20:39 jonathan chromatic: I think actually Object.
20:40 chromatic Hm, you're right.
20:42 chromatic We *could* merge all Fixed and Resizable arrays if we had vtable swap.
20:43 chromatic ... and if we wanted to store a union in the array store instead of raw INTVAL, FLOATVAL, STRING *, or PMC *.
20:43 chromatic Though how you override that sort of thing in PIR is tricky.
20:46 jkva joined #parrot
20:46 * jkva peeks in
20:47 masak hi rindolf
20:47 rindolf masak: what's up?
20:47 purl Your face, rindolf. That's what.
20:48 masak purl: keep quiet while grownups are talking.
20:48 purl OK, masak.
20:48 rindolf How old is purl?
20:48 masak rindolf: very much is up at present.
20:48 masak rindolf: she's a bot, so she's stuck at 2 years old.
20:48 masak on a good day.
20:49 rindolf masak: I know she's a bot.
20:49 masak rindolf: I assumed you did.
20:50 masak rindolf: I'm hacking at Druid right now, but also thinking about November, and a few stray modules I'm writing. I'm very happy to be toying around with so much Perl 6 code these days.
20:51 masak and you, what's up?
20:51 chromatic Did anyone know we have a PMC which represents NULL?
20:51 rindolf masak: today I struggled against subvertpy's broken python distutils setup and came out victorious.
20:52 masak kudos.
20:52 rindolf masak: there's a 20 lines or so patch culminating two hours of effort.
20:52 rindolf But I had no substantial previous experience with distutils.
20:53 rindolf Previously I worked on Config-IniFiles and File-Find-Object
20:53 rindolf I'd like to port File-Find-Object to Rakudo once it has line numbers for errors.
20:53 masak rindolf: you know, I still associate you with that Perl 6 critique. :)
20:54 masak it's funny to see you here, talking about porting things to Rakudo.
20:54 rindolf masak: well, if PONIE worked, I wouldn't need to.
20:54 rindolf But it may be a fun experiment.
20:55 masak rindolf: I know, I miss Ponie too.
20:55 masak rindolf: but I don't believe you _need_ to do anything relating to Rakudo. I'm just glad you do.
20:57 rindolf Oh! And I started trying to recruite Israeli students (and mentors) for GSoC.
20:57 rindolf Now I'm doing too many things at once.
20:57 rindolf :-D
20:57 jonathan chromatic: The Null PMC?
20:57 purl i heard the null pmc was or ought to be like a C NULL ptr, so no
20:58 chromatic That's right.
20:59 masak by the way, people: I'm on the brink of going cold turkey on './perl6' and always doing '../../parrot perl6.pbc' -- AND advising everyone I meet to do the same. this is a consequence of me trying the latter on Druid, and all segfaults and sudden malfunctions just going away. plus (and I don't know if I'm imagining that) it feels faster!
21:01 jonathan chromatic: Yes. I consider its existence - as a singleton which I hope it is - a good thing.
21:01 dalek r35707 | Whiteknight++ | trunk/src (2 files):
21:01 dalek : [get_class] Undoing some of my earlier changes. We can't unify this as easily as I had hoped because there are too many different types of objects coming down the pipeline that I can't keep track of. Will try again later maybe
21:01 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35707
21:02 jonathan masak: Doubt it's a lot faster, and the reson you don't get teh segvs is probably because of extra checks done at shutdown in the exe.
21:02 masak jonathan: I don't care. I don't like the segfaults.
21:02 masak they slow me down when I'm coding.
21:02 jonathan Are they just appearing after an error is thrown?
21:02 masak no.
21:03 chromatic You're imagining it.
21:03 masak they also appear after I hit Ctrl-D a few moves into a game.
21:03 jonathan Ah. :-|
21:03 masak chromatic: which part? the segfaults?
21:03 jonathan fwiw, I always use the PBC.
21:03 masak jonathan: I'm creating a perl6 alias now which does.
21:04 chromatic masak, the speed.
21:04 masak chromatic: ok.
21:04 chromatic jonathan, do you use the Null PMC?  Almost nothing appears to.
21:04 masak jonathan: they also sometimes appear randomly. that was what made me switch.
21:04 chromatic Unless that's the same thing as PMCNULL, which I just realized may be the case.
21:05 chromatic masak, the segfaults don't appear randomly.
21:05 chromatic Unless your computer is haunted.
21:05 masak chromatic: I have a game which randomizes coordinates. so yes.
21:05 chromatic No.  That's bollocks.
21:05 masak ok.
21:05 chromatic I *wrote* the fakecutable code.  That's not possible.
21:06 chromatic There are three differences between ./perl6 and ../../parrot perl6.pbc.
21:06 chromatic First, ./perl6 *contains* perl6.pbc, stored in the constant segment of the binary.
21:06 chromatic Second, ./perl6 *contains* most of src/main.c of Parrot, minus a little bit of argument processing.
21:07 chromatic Finally, ./perl6 enables a single flag which is off in Parrot by default.  This flag forces explicit deallocation of all allocated resources at the end of execution.
21:07 Coke chromatic: I thought that PMCNULL == the only copy of Null pmc.
21:07 Coke but admit I haven't checked.
21:07 masak chromatic: they occur sometimes after the computer made a move, but before the board is about to be printed. I get no error messages, just the segfault. it's not consistent, so sometimes it doesn't happen at all, but sometimes it happens just a few moves into the game.
21:07 chromatic Coke, you may be right.  Null is a singleton.
21:07 masak chromatic: when I've run parrot perl6.pbc, I haven't had this behaviour.
21:08 chromatic Then your computer is broken, because it is behaving non-deterministically.
21:08 jonathan Coke: That ws how I understood the behavior.
21:08 chromatic Or someone modified pbc_to_exe to do something very different than when particle and I originally wrote it.
21:09 jonathan chromatic: Remember that if we have a GC bug, it may show differently depending on the memory allocations etc that would be different. Perhaps.
21:09 jonathan That's all I can think of though. :-|
21:09 jonathan nom ready...eating time!
21:09 chromatic Sure, that's a third possiblity -- but the errors are still there in Parrot or Rakudo and have nothing to do with ./perl6.
21:10 masak I think the issue is important, because many people are going to try Rakudo through ./perl6, and it works much worse than parrot perl6.pbc.
21:10 masak I don't really care that it's not possible. it's what happens.
21:10 masak and it's started happening increasingly often, unfortunately.
21:12 chromatic Telling people "Don't use ./perl6!" is voodoo.  It won't fix the problem.  The problem is not in ./perl6.
21:13 masak I want people to experience fewer crashes when they run my game.
21:13 masak that's why I'm going to advise them to run parrot perl6.pbc, because in my experience, that helps.
21:14 masak I have not had any segfaults since I switched. not one.
21:14 chromatic You're free to give whatever advice you want, but your advice is bad.
21:14 masak chromatic: I hear you.
21:14 masak and I also respect your knowledge about this.
21:15 masak I just don't see how to apply what you're saying to my experience.
21:16 masak the two are in direct contradiction.
21:16 chromatic You could read the code and find out for yourself.
21:16 masak looking for segfaults? I guess.
21:16 chromatic No, about the differences between ../../parrot perl6.pbc and ./perl6
21:17 masak chromatic: nono, I _believe_ you that there's no difference in the code. it's not that.
21:17 chromatic If what I'm saying is true (and, let's face it, the guy who wrote the code should know something about it), then there are two possibilities remaining.
21:17 masak I'm saying there's a difference in the running experience.
21:17 chromatic Either your computer is haunted (which is non-deterministic, and in that case your advice won't apply to anyone else)...
21:17 chromatic ... or what jonathan says is true (and it is).
21:18 chromatic In the latter case, then *any* change to Rakudo will change the memory layout and characteristics of a program, in which case we're back to the voodoo advice.
21:18 masak so it's enough if I find one other person who also has segfaults on his computer?
21:18 chromatic I believe that you have segfaults.
21:18 masak I mean, with perl6 but not with parrot perl6/pbc/
21:18 chromatic Yes, there are double-free errors on shutdown with ./perl6.
21:19 chromatic You can reproduce them with ../../parrot --leak-test perl6.pbc.
21:19 masak I also have other segfaults, as I said.
21:19 chromatic Completely deterministic.
21:19 chromatic Any other segfaults are still present in Rakudo and/or Parrot, and the memory layout and usage of any specific program will or will not trigger them.
21:19 chromatic Some you will run into with ./perl6 and some you will run into with ../../parrot perl6.pbc.
21:20 masak ok.
21:20 chromatic There is NO general rule for avoiding them altogether, unless you know in your head exactly how each invocation method changes the memory layout, in which case you should know exactly how to solve the problem.
21:20 masak now I actually understand the issue better.
21:20 masak thanks.
21:20 chromatic You're welcome.
21:21 chromatic I don't mean to be harsh about this, but ./perl6 keeps getting blamed for things outside of its responsibility.
21:21 masak chromatic: yes, I can imagine.
21:21 chromatic I deliberately enabled the --leak-test flag there *so people would report and fix these problems*.
21:21 masak chromatic: I was just going to ask about that.
21:21 masak it doesn't exactly heighten the user experience.
21:22 chromatic Yep.
21:22 chromatic Someone should fix it.
21:22 masak :P
21:22 masak I'm saying this as someone who uses Rakudo a lot. segfaults suck.
21:22 chromatic You don't have to tell me twice.
21:23 chromatic I've fixed countless segfaults in Parrot over the past several years.
21:23 chromatic pmichaud for one will tell you how much more usable it is now.
21:23 masak I believe that too.
21:23 masak I also understand that they are probably difficult-ish to track down.
21:23 chromatic With 10-20 lines of PIR?  Not really.
21:24 masak oh? that makes me more hopeful about doing it myself! :D
21:24 jhorwitz chromatic: got that " '' is not a valid vtable function name " bug from last week down to a few lines of PIR.  TT #185
21:25 chromatic Thanks!
21:25 jhorwitz hopefully my analysis was correct
21:25 masak chromatic: so far, I've been reporting segfaults-at-error with my rakudobugs, but since no-one has picked them up, I didn't really think anyone saw them. I just wanted to include them when they appeared to show how annying they are.
21:26 chromatic Most of them are probably that really difficult double-free of contexts error.
21:26 masak probably.
21:26 purl Really? Probably? Are you Certain it's not certain? Are you sure it's unsure? I think you need to look harder.
21:26 chromatic At least, the ones you see when the program ends (whether due to an uncaught exception or normal termination).
21:27 masak chromatic: the shortest program I know which reproduces it is this: 'sub a { exit() }; sub b { a }; b'
21:27 masak that's a pretty common use case, btw. exiting from two subs deep.
21:28 chromatic Let me try that and see how it looks.
21:28 masak chromatic++
21:29 masak there's a TT ticket about that program.
21:29 chromatic Narrowing these down to a few lines of PIR really makes debugging much, much easier.
21:29 masak no, RT. of course.
21:29 masak chromatic: I'll keep that in mind.
21:30 masak viklund and I did that a bit during the summer at one point when we really, really needed November to work.
21:30 chromatic masak, that's the double-free error there.
21:30 masak yes.
21:32 jkva w00t, all tests succesful
21:35 particle1 joined #parrot
21:58 Infinoid jonathan: ping
22:02 jonathan Infinoid: pong
22:03 Infinoid jonathan: the current state of pbc annotations has some differences from the stuff in PDD13, and I'm not sure what to do about it.
22:03 jonathan Oh?
22:03 jonathan That's curious...I thought I'd reviewed PDD13 as I was implementing them...
22:04 Infinoid well, I don't understand either of them very well, to be honest.
22:04 Infinoid anyway, PDD13 has an Annotations (segment), an Annotation, and an AnnotationKeys
22:04 jonathan Are we talking about the PMCs or the bytecode format?
22:04 Infinoid PMCs
22:05 Infinoid however, packfile.h has an additional Annotations_Group struct, and I'm not really sure how to wrap it
22:05 jonathan Let me check it...
22:06 Infinoid thanks
22:06 jonathan Ah, hmm.
22:07 jonathan I wonder if the groups were added in at some point...
22:07 Infinoid I need to read the earlier parts of the PDD I guess, knowing what they are would probably help me.
22:07 jonathan And the PMC bit wasn't updated to cover it.
22:07 Infinoid ah. :)
22:07 Infinoid anyway, readonly access through PMCs is pretty much done except for the annotations
22:07 jonathan Oh, great! :-)
22:08 jonathan Infinoid++
22:08 Infinoid for now, I can just wrap all the available structures
22:08 jonathan That is probably most sensible, yes.
22:08 jonathan Well, perhaps.
22:08 jonathan Hmm...let me think a moment...
22:09 Infinoid things have gone pretty nicely according to the API documented in the PDD until now, though.
22:10 jonathan I think as a first cut just wrapping them will be fine.
22:10 jonathan And adding a get_groups method along the lines of the get_keys one.
22:11 jeremiah joined #parrot
22:11 Infinoid ok, thanks.  I can do that.  And we'll change either the spec or reality to match the other, at a later point.  I don't really want to get into changing internals around yet, since I haven't really tried to understand them in detail.
22:11 jeremiah Has anyone installed mod_parrot? There doesn't seem to be any documentation about how.
22:11 jonathan jeremiah: I did manage to once.
22:12 jonathan It was non-trivial then, but things maybe have improved.
22:12 Theory joined #parrot
22:12 jeremiah Hmm. Okay, perhaps I'll give it a go.
22:13 jonathan I tried it on a Linux server I have rather than on Windows, which I don't think is supported yet.
22:14 jonathan jeremiah: see https://svn.perl.org/parrot-mo​dules/mod_parrot/trunk/README
22:14 jeremiah Okay, I am runnung linux here. :)
22:14 jeremiah jonathan: Thanks, I have that open in my browser.
22:15 jonathan Ah, OK. I think that's as far as the documentation on how to install it goes. ;-)
22:15 jeremiah Time to check if Apache::Test is packaged for debian.
22:17 jeremiah Nope - looks like I should do that.
22:35 kid51 joined #parrot
22:43 tewk joined #parrot
22:44 wolverian joined #parrot
22:46 wolverian joined #parrot
22:47 lathos So it looks like array push in rakudo takes a reference, not a copy.
22:48 lathos rakudo: my @out; my $i; while ( ++$i < 4 ) { push @out,  $i; say @out.perl; };say @out.perl;
22:48 polyglotbot OUTPUT[[1]␤[2, 2]␤[3, 3, 3]␤[4, 4, 4]␤]
22:49 masak wow, that's even wronger than my example.
22:50 lathos You can work around it
22:50 jonathan Ouch.
22:50 lathos rakudo: my @out; my $i; while ( ++$i < 4 ) { push @out,  @([ $i ]); say @out.perl; };say @out.perl;
22:50 polyglotbot OUTPUT[[1]␤[1, 2]␤[1, 2, 3]␤[1, 2, 3]␤]
22:50 wolverian joined #parrot
22:50 lathos But man that caused me much confusion earlier.
22:51 masak lathos: you know, I just submitted a rakudobug about that. :)
22:51 lathos I only just got back online. :)
22:51 wolverian left #parrot
22:51 chromatic lathos, want to take a break and look at some funny Unicode code?
22:52 lathos ... what sort of Unicode code?
22:52 chromatic src/string.c:2581
22:52 chromatic processing \xab escapes in PIR.
22:53 dalek r35708 | simon++ | branches/strings/pseudocode (2 files):
22:53 dalek : Half of grapheme_copy, plus variable-width grapheme iteration.
22:53 dalek review: http://www.parrotvm.org/svn​/parrot/revision?rev=35708
22:53 chromatic $S0 = iso-8859-1:"\xab"
22:53 chromatic say $S0
22:53 wolverian joined #parrot
22:53 lathos Feel free to commit tests to strings/pseudocode by the way. I'll steadily make them work.
22:54 chromatic To the best of my knowledge, it always assumes it's consumed one character of input even if it consumes and replaces more.
22:54 lathos Huh, hence the name I guess.
22:55 chromatic Yeah, the name is terrible.
22:55 chromatic At least it warns you that it probably can't possibly do the right thing.
23:00 lathos I have a problem with the 'we did it in place' branch.
23:00 lathos Because string_unescape_one doesn't change anything in the string in-place or otherwise.
23:01 TiMBuS joined #parrot
23:06 tomyan joined #parrot
23:09 lathos This also hurts my encoding sensibilities: r = (Parrot_UInt4)((unsigned char *)result->strstart)[offs];
23:10 chromatic It should hurt all kinds of sensibilities.
23:10 lathos Oh wait, it's guaranteed to be a C string.
23:10 Eevee joined #parrot
23:13 lathos That d==offs branch is really awful though. Because everything after an escape char will fail since the two pointers move at different speeds.
23:13 lathos Or rather, after it sees "\x12" then d=1 and offset=4 and they'll never be equal again.
23:13 chromatic That's at least part of the problem.
23:14 lathos IN fact I have no idae what "d" is doing there.
23:15 lathos Oh, length of destination string.
23:37 mberends joined #parrot
23:38 Eevee joined #parrot
23:46 mberends chromatic: ping
23:56 particle joined #parrot

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

Parrot | source cross referenced