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