Parrot 0.8.2 "Feliz Loro" Released www.parrot.org/news/2008/Parrot-0.8.2
Set by moderator on 23 December 2008.
Coke . 00:01
Infinoid hmm. 00:07
# Failed test 'decodelocaltime'
# at t/op/time.t line 101.
# got: '2008'
# expected: '2009'
# Looks like you failed 1 test of 7.
t/op/time................................... Dubious, test returned 1 (wstat 256, 0x100)
yeah, what GeJ said :)
00:10 AndyA joined
dalek r34726 | infinoid++ | trunk/compilers/imcc: 00:20
: [pcc] insert_tail_call's "meth" call is NULLOK.
: (Found by the headerizer NONNULL assert() patch, see Trac #105.)
review: www.parrotvm.org/svn/parrot/revision?rev=34726
r34727 | infinoid++ | trunk (9 files): 00:21
: [core] Add argument asserts to another 176 functions.
review: www.parrotvm.org/svn/parrot/revision?rev=34727
Coke chromatic: you around? 00:24
00:42 jimmy joined
chromatic yes 00:46
Coke ah, hi. 00:48
I sent an email to the list.
looks like say burns 17 pmcs every time it's invoked.
chromatic say_s or say_p 00:49
Coke say_i
Coke double checks something, though.
chromatic I think interpinfo is the culprit there. 00:50
jimmy seems that I can make parrot succeed 00:51
seems that I can not make parrot succeed
src\\interpreter.c: In function `exec_init_prederef':
src\\interpreter.c:607: error: `ASSERT_ARGS_exec_init_prederef' undeclared (first
use in this function)
src\\interpreter.c:607: error: (Each undeclared identifier is reported only once
purl i already had it that way, jimmy.
jimmy src\\interpreter.c:607: error: for each function it appears in.)
src\\interpreter.c: In function `init_jit':
chromatic Hm, no. it's not interpinfo.
jimmy src\\interpreter.c:641: error: `ASSERT_ARGS_init_jit' undeclared (first use in th
is function)
make: *** [src\\interpreter.o] Error 1
Coke chromatic: it's not.
chromatic jimmy, you probably need to reconfigure.
jimmy yes, make realclean && perl Configure.pl && make 00:52
Coke (I tested doubling up interpinfo & say - doubling say doubled the leak. doubling interpinfo kept it steady.)
jimmy I had do it many times.
Coke it should only matter once.
but you might have to do it depending on what changes in your working copy.
chromatic: so, my best guess right now is that every time we invoke the calling conventions, some N pmcs get allocated for it and then never freed. 00:53
*get freed.
chromatic I can probably reproduce that. 00:54
jimmy yeah, I had removed all what I want to pacthed.
but still wrong
all source are from svn.perl.org 00:55
there are no any other third codes. 00:56
GeJ I can reproduce jimmy's error on my machine.
Infinoid hmm 00:57
one moment, I'll have a patch for you guys to try
jimmy thanks Infinoid, atfter that i have a patch too.
chromatic Coke, add a sweep 1 after each say. 00:58
Coke woof!
chromatic collect only compacts string pools.
Coke ... well that's crazy. =-)
hokay. 00:59
nopaste "Infinoid" at 75.5.247.153 pasted "quick fix, try this" (26 lines) at nopaste.snit.ch/15143
Coke I wonder...
Infinoid jimmy, GeJ, please try the above patch
I didn't hit that on my box because JIT isn't enabled by default...
jimmy ok
chromatic ./parrot say_leak.pir 01:00
1785
1383
Coke chromatic: yah, I can definitely reproduce your findings.
chromatic No leak then.
Infinoid jimmy: for whatever reason, those functions are not maintained by headerizer, so they didn't get assert macros generated. similar failures can be fixed in the same way, but let me know so I can commit any additional fixes 01:01
Coke chromatic++ 01:02
01:03 masak joined
jimmy Infinoid: I will give you a patch later :) 01:03
Coke chromatic: that also eliminates issues with the bar() invocation.
GeJ Infinoid: worksforme. running `make test`
Just in case... 01:04
purl Break glass, retrieve shotgun.
Coke now to move up to tcl.
chromatic Do you have any dod_register_pmc() calls in Tcl?
Coke no. 01:05
I do have something..;
dalek r34728 | infinoid++ | trunk/src:
: [jit] A couple of non-headerized functions snuck through. (x86-64
: apparently doesn't have JIT enabled by default). This will hopefully
: fix builds for JIT-enabled platforms.
: jimmy++ and GeJ++ for reporting.
review: www.parrotvm.org/svn/parrot/revision?rev=34728
Coke pmc_register calls.
masak nopaste?
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
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)
Coke that's not it.
chromatic pmc_register is different; that tells Parrot about a dynpmc. 01:06
Coke Parrot_register_pmc
nopaste "masak" at 130.238.45.88 pasted "cannot get ncurses_life.pir to run -- bitrot?" (7 lines) at nopaste.snit.ch/15144
chromatic dod_register_pmc() stores a PMC in a hash which is part of the root set.
jimmy masak: Is night there now? if so, good night.
masak jimmy: good night.
Coke I think just Parrot_register_pmc in the C code.
chromatic Ah, but there is a leak.
Coke added by you, actualy, to fix something that was getting freed premautrely.
masak jimmy: it's past midnight here, thus 2009. happy new year. 01:07
01:07 alvar joined
Coke chromatic: you see it? =-) 01:07
GeJ Infinoid: `make test` passes for me. Thanks.
Infinoid GeJ++
jimmy masak: Happy new year. ah ha.
chromatic Not in Tcl, but in MMD.
Coke excellent. 01:08
chromatic Only when there's an exception thrown though.
Coke I do that a lot. 01:09
chromatic And without marking the PMC, PGE doesn't build.
You throw exceptions from MMD?
Coke inside multis.
does that count?
chromatic It's only the case when something in Parrot_mmd_multi_dispatch_from_c_args or one of its callees throws an exception.
Coke ah well, probably doesn't account for my 2MegaPmcs. 01:10
chromatic Do you catch any exceptions from MMD?
Coke I don't know what that would involve. 01:12
chromatic Oh, and there's leftover debris from the MMD merge. Gah.
masak does anyone skilled in the history of imcc have time to look at what's wrong with ncurses_life.pir?
chromatic DOD_REGISTER_PMC IS NOT FOR PREVENTING SEGFAULTS IT IS FOR EXPORTING PMCS TO C CODE WHICH EMBEDS PARROT
Coke is that from my comment in tcl*.pmc?
jimmy Infinoid: trac.parrot.org/parrot/ticket/111
chromatic THE RIGHT WAY TO FIX A SEGFAULT IS TO FIX THE SEGFAULT
Okay, I'm better now.
masak pets chromatic 01:13
01:13 bjoern joined
masak also, once it's working, what are the chances of calling the ncurses library from Rakudo? 01:13
the chances of that working, I mean. 01:14
Coke fixes his comment in tclstring.pmc about avoiding a segfault to make chromatic happy. 01:15
chromatic Nah, PGE bothered me there. 01:16
Although I do remember that comment....
Coke hurls code.google.com/p/partcl/source/detail?r=253 for chromatic
Infinoid jimmy: have you tested this? if so, which platform? 01:17
jimmy yes, on windows
Infinoid oh, good. I was just going to express my fear of breaking something on win32 because I can't test it :)
jimmy Inofinoid: none.
chromatic Coke, if stack scanning didn't work in Parrot reliably, we'd have bigger problems. 01:18
Coke that sounds like a non sequitor to me.
<- clueless. :| 01:19
chromatic We don't dod_register_pmc every PMC we have that doesn't immediately get anchored somewhere reachable from the root set.
We *do* scan the stack for things which look like GCable pointers and try to mark them.
Coke puts in a sweep 1 before his verbose tcl diagnostics to see it goes down under 2MegaPmcs. 01:24
masak ok, I managed to fix the two first errors, but it still chokes on (S15, err) = _load_file(argv, size) -- now, ISTR that register names without dollar prefixes were deprecated. is that right?
chromatic Right.
masak so, do I just add a dollar sign to the var?
Coke ayup 01:25
masak thank you.
bjoern Hi, parrot/compiler.h has a bug that prevents building using Visual Studio 2003, it includes sal.h if _MSC_VER > 1300 but as the comment right above says it's included starting with 2008, so that should probably be 1500 instead.
Coke bjoern: can you whip up a patch and post it to trac? 01:26
that'll give one of our win32 developers a chance to look at it.
(and thanks!) 01:27
bjoern If you give me a url that gives me a simple form to do that, I can. 01:28
Coke chromatic: if I am leaking pmcs in partcl, and I'm unregistering everything I register in the PMCs... what else can I look for ?
trac?
purl somebody said trac was a web-based software project management and bug/issue tracking system emphasizing ease of use and low ceremony. It provides an interface to the Subversion revision control systems, integrated Wiki and convenient report facilities. projects.edgewall.com/trac/ or Python, SQLite and ClearSilver or killing killtrac or a bug-tracking tool or at trac.parrot.org/parrot/
Coke (last one)
parrot trac?
purl hmmm... parrot trac is trac.parrot.org/parrot/
masak does it happen that imcc reports faulty line numbers?
Coke yes. 01:29
masak :/
Coke yes.
loooooong standing bug.
chromatic Coke, the only other option is that you're storing PMCs when you don't want to.
Coke ala with set_global or something?
dalek r34729 | chromatic++ | trunk/t/op:
: [t] Fixed year (and copyright date) in test which fails at the end of a year
: (reported by Geraud CONTINSOUZAS and Mark Glines).
review: www.parrotvm.org/svn/parrot/revision?rev=34729
chromatic In anything which marks PMCs as live.
masak I'm getting "error:imcc:The opcode 'new_p_ic' (new<2>) was not found." now. any ideas?
Coke chromatic: isn't marking pmcs a c thing? 01:30
Infinoid jimmy: no failures here on linux, I'll commit it in my next patch stack
GeJ chromatic++ thanks
bjoern Is there, by the way, supposed to be a perl6(.exe) binary? It's not installed by the win32 installer, and running parrot languages/...pbc results in errors (it can't find dependencies), I'm mainly building parrot to solve that...
Coke masak: rt.perl.org/rt3/Ticket/Display.html?id=40204
masak Coke: thanks.
chromatic Coke, it is.
Coke it refers to /another/ ticket that had off by ones.
chromatic bjoern, samdelacruz.blogspot.com/2008/12/wa...o-get.html 01:31
shorten chromatic's url is at xrl.us/bea7pb
chromatic rt.perl.org/rt3//Public/Bug/Display...l?id=60098
Coke chromatic: could I trouble you to peek at my pmcs: code.google.com/p/partcl/source/bro...nk/src/pmc ?
shorten Coke's url is at xrl.us/bea7pd
masak no, I'm still stuck. if the line number is one too low, the offending line ought to be '$S0 = ENV["COLUMNS"]'. and that looks allright to me. 01:32
Coke (some of the code in there is cargo culted from the old Perl* pmcs!)
bjoern thanks chromatic
jimmy Infinoid: Infinoid++, I have a question. 01:33
Coke hurm. tcldict.pmc could probably stand to pull that TclList decl up a level.
01:34 megamic joined
bjoern I have yet to figure out that trac page, trac.parrot.org/parrot/wiki/NewPar...loperGuide says I should mail to "perlbug" by which it means "parrotbug" apparently :( 01:34
Infinoid jimmy: ask it :)
jimmy wait
Coke bjoern: we're transitioning.
Infinoid ah, suspense.
Coke you can use perlbug; it'll just go to our old system.
better to use that than lose your patch,though. =-)
chromatic Coke, I'll skim them, but I'm almost out of hacking time tonight. 01:35
Coke no worries.
jimmy in that patch, I repalced Parrot_Interp interp with PARROT_INTERP in the docs
Coke I appreciate whatever time you can spare.
jimmy It seems that it is awkward 01:36
Infinoid jimmy: what's awkward about it?
jimmy readability
purl readability is probably a threat to job security
bjoern hits another build error 01:37
Infinoid PARROT_INTERP is in very wide use these days, so it seems appropriate to update the docs accordingly. if it's not self-explanatory, maybe it deserves a blurb
chromatic A little CONST_STRING would help TclFloat.
bjoern apparently it's suddenly using mingw32-make instead of nmake, and tries to use `sh` and then passes c:\\perl\\bin\\perl.exe without properly escaping the \\ to sh, so sh cannot find the executable...
jimmy yeah, I think it should use PARROT_INTERP, but it is marco 01:38
bjoern Configure.PL told me to use mingw32-make too, I was suspecting some unimportant glitch there...
Infinoid yeah, and Parrot_Interp is a typedef that includes a "*" somewhere. smoke and mirrors either way
Coke bjoern: you probably built with strawberry perl
which comes with its own compiler.
if you use activestate perl, it'll tell you to use 'nmake' 01:39
bjoern ActivePerl
purl On the day Perl becomes "Active", Satan will be skating to work. or ActiveState's port of perl plus other so-called "goodies" or it looks like Satan is skating to work. or available from activestate or at www.activestate.com or not Free Software or Free Software or (qv 'lwall on activeperl') or activestate.com/Products/Download/R...ActivePerl
chromatic Coke, you can almost always replace string_from_cstring and string_from_literal with CONST_STRING.
Just don't use CONST_STRING when something might modify the string.
Coke bjoern: hurm. the check for the make exe is probably odd.
chromatic: do I need to hoist up the declaration outside of the function, or can I just do a straight replace? (and these are dynpmcs, does that matter anymore?) 01:40
chromatic That doesn't matter anymore. 01:41
Coke whee!
chromatic A straight replace should be fine.
jimmy Infiniod: I repalced it beacause it is for developers
chromatic If you ever stringify TclLists, you should see an improvement.
Or assign_pmc to a TclList. 01:42
Coke that happens quite frequently.
fixing...
purl rumour has it fixing is good, definitely
Infinoid jimmy: I like it. I'm also thinking of adding a discussion of the differene of PARROT_INTERP, NULLOK_INTERP and SHIM_INTERP
bjoern Apparently it picks the first make utility it finds in the path, with mingw32-make preferred over nmake. And of course I do have mingw32-make in my path... 01:43
chromatic Note that this only works when you have a literal C string in the source code.
You also have a memory leak in TclString on line 79; use %Ss instead and don't cstringify the STRING. 01:44
Same file, line 160, same problem.
That's all I saw skimming your PMCs.
Infinoid bjoern: yeah, there is definitely some build tool confusion on win32. though I do recall some success building with an msvc compiler and mingw's make, at some point in the past
bjoern `set MAKE=nmake` seems to help 01:45
jimmy Infinoid: aye. there were some notes in docs\\dev\\c_functions.pod, but does not include NULLOK_INTERP 01:46
Coke chromatic++ 01:48
bjoern trac tells me "TICKET_CREATE privileges are required to perform this operation" even after creating an account and logging in when trying to create a ticket... 01:49
GeJ bjoern: question did you fill your name and email address in the General panel in your preferences? 01:50
Coke trac-- 01:51
gej's account works. give him the patch and make him open the ticket. =)
bjoern I could post it to one of the perl.* newsgroups (mailing lists), I'm on some of those anyway 01:52
Coke at this point, I woudl punt and use parrotbug. 01:53
parrotbug?
purl i think parrotbug is mailto:parrotbug@parrotcode.org or svn.perl.org/parrot/trunk/docs/submissions.pod or see also "rakudobug" or needs to be converted to trac
GeJ Coke: it looks like the WebAdmin plugin is at fault. I can track serveral issues like the one kid51 and I encountered. 01:55
Coke GeJ: if can email me a writeup, I'll be happy to forward it to the admins. 01:57
*you
bjoern (I also get a "Warning: <acct_mgr.web_ui.MessageWrapper object at 0x81...>" on trac pages btw...)
Coke *cry* 01:59
yah, you've been bitten by the same bug that hit kid51 and gej earlier.
GeJ bjoern: You DO NOT want to remove your email address from your account Preferences.
Coke I apologize that giving us a patch has turned into such a pita.
thank you for your patience. 02:00
(crap, I broke "make test" in parrot, apparently)
er! partcl, I mean.
02:00 megamic left
bjoern Well if one removes the email address there I suppose you'd have trouble recovering your password later... 02:01
so parrot built fine now, and perl6.pbc just finished aswell
GeJ bjoern: could you check if you received an email from trac asking you to verify your email address?
bjoern I did, but given that the email was optional I haven't bothered ... well let's try 02:02
(not that compiling and checking mails works well together)
GeJ bjoern: you and I made the same mistake. Fortunately I may be able to help you not repeat the mistake I made. :) 02:03
bjoern seems verifying helped
GeJ Coke: for future reference trac-hacks.org/ticket/4125 02:04
bjoern I much prefer just mailing bug-<dist>@rt.cpan.org ...
GeJ two suggested workarounds : disabling email verification in trac; make the user answer the email they received about an optional form field. 02:05
02:06 MariachiElf joined
Coke bjoern: feel free to use parrotbug. 02:06
parrotbug?
purl parrotbug is mailto:parrotbug@parrotcode.org or svn.perl.org/parrot/trunk/docs/submissions.pod or see also "rakudobug" or needs to be converted to trac
Coke (use the mailto there.)
GeJ Ok, now what about stop slacking and finish that darn test file conversion, huh?
bjoern So I also built a perl6.exe, that seems to work fine, I get a prompt and `say 'Hello World';` works as it should 02:08
chromatic bjoern, congratulations! 02:12
Coke, any luck with CONST_STRING?
bjoern There goes the patch trac.parrot.org/parrot/ticket/113 02:14
Coke chromatic: I just applied it; however, I noticed that I borked my own make test earlier today, so I haven't timed it. 02:15
testing it out now.
dalek r34730 | infinoid++ | trunk (22 files): 02:16
: Apply patch from jimmy++ in TT #111.
: * Convert lots of Parrot_Interp arguments to PARROT_INTERP and NULLOK_INTERP.
: * Reformat some comments, fix some typos.
review: www.parrotvm.org/svn/parrot/revision?rev=34730
r34731 | infinoid++ | trunk (2 files):
: [core] More NULLOK function arguments.
: * The index arguments to parrot_pass_args() are only passed to other NULLOK
: functions; they can be marked NULLOK.
: * set_context_sig_returns() checks ret_x before dereferencing, it is NULLOK.
: (Found by the headerizer NONNULL assert() patch, see Trac #105.)
review: www.parrotvm.org/svn/parrot/revision?rev=34731
r34732 | infinoid++ | trunk (5 files):
: [core] Add argument assertions to another 145 functions.
review: www.parrotvm.org/svn/parrot/revision?rev=34732
Infinoid 765 functions to go. but now, time for a movie
TiMBuS i want to do the equivalent of '$P0 = get_global/find_sub "subname"; .tailcall $P0' in a pmc, are there any examples i can look at? i get the feeling its not going to be simple 02:18
Coke I don't think there's an actual tailcall in C. 02:19
would simply being able to invoke something work? 02:20
I have an example of invoking a method on a PMC using PCC from C. 02:21
jimmy Infinoid++++ 02:22
masak I have a script that can make Rakudo segfault consistently. what should I do with it? 02:24
TiMBuS Coke, that should do
chromatic masak, strip it to its smallest part (PIR if possible) and file a bug. 02:25
masak chromatic: I'm on it. thanks.
bjoern I also filed an item for the make issue 02:27
all in all this was easier than making the latest pugs work on win32 (which i gave up after the third fix/workaround ...) 02:30
Coke TiMBuS: code.google.com/p/partcl/source/bro...st.pmc#122 02:31
shorten Coke's url is at xrl.us/bea7ts
Coke chromatic: shaves about 9% off append.test
chromatic++
chromatic Not awful. 02:33
Coke every little bit helps, thanks! 02:34
->
bjoern sees his last perl5bug rt.perl.org/rt3/Public/Bug/Display.html?id=32080 is still unfixed ... 02:36
jimmy Infinoid: ping 02:42
03:01 Andy joined
Infinoid jimmy: pong 03:10
GeJ Gah, now I need to give names to 78 tests. 03:15
jimmy Infinoid: no suspenses now. :) 03:17
Infinoid heh. what's up? 03:19
jimmy Infinoid: I just want how #define ASSERT_ARGS(a) ASSERT_ARGS_ ## a works, and I found some marcos like ASSERT_ARGS_Parrot_assert seems to not be used. 03:25
Infinoid they are used. in include/parrot/exceptions.h, there is the following define: 03:26
jimmy I don't know where is it used.
Infinoid #define ASSERT_ARGS(a) ASSERT_ARGS_ ## a
Andy Infinoid: I'm thinking that the ASSERT_ARGS_Func_name needs to be in the .c file, not the .h file.
Infinoid jimmy: so ASSERT_ARGS(PMC_is_null) expands to ASSERT_ARGS_PMC_is_null
Andy: fine with me. I was optimising for minimal changes to headerizer 03:27
jimmy yeah, but I can't find ASSERT_ARGS(Parrot_assert)
Andy Nobody outside of the .c file needs to see them.
jimmy: ack Parrot_assert 03:28
Infinoid jimmy: I haven't done that one yet. there are still 765 functions I haven't tagged yet
I'm about 60% done with that part
jimmy Andy: ASSERT_ARGS_Func_name is in wide use.
Infinoid jimmy: that's because those are autogenerated. but putting the ASSERT_ARGS() calls into the actual functions is time-consuming 03:29
Andy Infinoid: Give me a file to work on.
jimmy Andy: so there are in .h files.
Infinoid jimmy: "prove t/codingstd/c_arg_assert.t" will give you a list of the functions I haven't done yet
jimmy Infinoid: are they generated by make?
Infinoid jimmy: "make headerizer" 03:30
jimmy or by perl?
Infinoid headerizer is a perl script
jimmy Infinoid: ok
Infinoid (written by Andy++)
Andy :-) Thanks
03:31 bjoern left
jimmy Andy++ && Infinoid++, these macros is in wide use and it is should be in .h files, not .c files, I think 03:31
s/is/are 03:32
Infinoid jimmy: actually, I agree with Andy about this. the ASSERT_ARGS_ macros are only used by the .c files that define the actual function
Andy jimmy: That's what we just said
Infinoid so I'd prefer them to be in .c, not .h
the static section is perfect for this, they don't need to be global
jimmy ah, aye.
Andy sorry, backwards
They should be in the .c file 03:33
Infinoid now, if we moved the checking to the caller (through the use of wrapper functions), then I'd agree
jimmy I forgot 'it is global' 03:34
Infinoid I've been thinking inline wrappers might be a way to sidestep the whole attribute_nonnull issue. but it causes several bigger issues of its own
(varargs and call-by-pointer for example)
jimmy what is the issues?
purl Whether mankind has free will is an /issue/. If something doesn't work, that's a /problem/.
jimmy s/is/are/ again :( 03:35
Infinoid hmm. 03:36
jimmy: I've been thinking about a way to check function parameters to ensure non-null pointer semantics. ...without having to touch 1800 functions by hand 03:37
so lets say you declare an inline static function in the header file, which does the checks and then calls the real function
and lets say you add a #define to add a "_" prefix to the real function, so you can tell them apart
suddenly, you can't take a pointer to the function any more, because inline functions don't really exist 03:38
and parrot uses a lot of function pointers
jimmy yes
Infinoid and you can't use a pointer to the real function in that case, because the real function doesn't have the pointer checking any more
so that won't work
you could use a preprocessor macro, but you can't wrap Parrot_io_printf() with that, because varargs macros aren't C89 03:39
and you still have the function pointer issue
jimmy like #define(x...)?
Infinoid #define pmc_new(a,b) return assert(a), pmc_new(a,b) 03:40
uh, s/return //
all of this is a problem because attribute_nonnull tells the compiler to assume the pointer will never be null, and optimize out all of the checks for nullness 03:41
jimmy ah, it is not C89?
Infinoid well, that will work
but varargs isn't C89
so I can't wrap the printf functions that way
and anyway, you still can't take a pointer to that 03:42
so there's no choice but to touch every C function 03:43
...and keep maintaining these things as we add new functions and rename things
(eew.)
jimmy Infinoid++ 03:44
varargs is just like #define(x...)?
I found it in src
Infinoid yeah
docs.freebsd.org/info/gcc/gcc.info....rargs.html
oh... another reason why I was really hoping the wrapper idea would work is: in some cases, there's a lot of work being done in the first lines of a function, where the local variables are still being declared. I have to put the assert line below all of that stuff 03:45
Andy I think someone has broken the .y
Infinoid but by doing so, it can call another function with the parameters before they've been checked
jimmy Infinoid: trac.parrot.org/parrot/attachment/...atch.patch
shorten jimmy's url is at xrl.us/bea7xy
Infinoid one good thing I can say about XS; they can add another set of parens to work around C's silly syntax 03:46
jimmy the patch contains varargs
Infinoid jimmy: yeah, I'm not sure that's as portable as we would like
as far as I know, varargs preprocessor macros are not C89, nor C99, they are a GNU extension 03:47
though I haven't tried it in anything other than gcc, so it might be more widespread than I think.
jimmy it is C99 03:48
Infinoid good to know.
jimmy we called it 'Variadic macros'
Infinoid PDD07 locks this project to C89, so we still shouldn't use it 03:49
Andy Infinoid: Give me a .c file to mark up and I'll work in it.
jimmy yeah, that is the problem of TT#83
Infinoid Andy: okay. I've just been picking a function at the bottom of the list of failures, acking for it and fixing up that file 03:50
so the next one according to that algorithm is src/packfile.c
but beware, it's really boring work. :)
jimmy we discuss it in TT#83
Andy what failures
purl failures are happening in an 'onload' sub? That's... odd.
Infinoid Andy: t/codingstd/c_arg_assert.t
Andy huh, ok
Infinoid I added that along with the headerizer patch, to track my progress. 03:51
Andy Some of thse assertions are gonna be kinda bummery
Infinoid yeah, that's the fun part
I've been adding _NULLOK to anything that breaks during build and test. got around 10 functions so far, been going pretty smoothly.
jimmy make headerizer does not work for me 03:52
Infinoid jimmy: it needs a fully configured and built parrot first
jimmy ah
Infinoid and it might not do anything, anyway. I think all our prototypes are already up to date
jimmy ok
Andy Infinoid: I think that's a bad idea. 03:53
jimmy Infinoid: is there any recommendation about TT#83
Andy the _NULL_OK
The prob'ly might be in the calilng, not the func
Infinoid well, subject to reviewing the function to make sure it can handle it, of course 03:54
Andy ok
Infinoid the fact that the build process or test suite was already doing it is a pretty good sign the function can handle it.
Andy What's something you added _NULLOK to?
Infinoid parrot_pass_args(), set_context_sig_returns(), insert_tail_call() 03:55
full list is in the recent svn log, grep for "NONNULL" 03:56
I've kept those commits separate for easy review.
Andy OK. 03:58
Could well be that I was overaggressive flagging 'em in the first place.
I &heart; teamwork.
03:58 tetragon joined
Infinoid :) or maybe for newer functions they were just added by rote and noone noticed until now 03:59
Andy could be
The stinkything is 04:00
dalek r34733 | petdance++ | trunk (2 files):
: throwing in some ASSERT_ARGS
review: www.parrotvm.org/svn/parrot/revision?rev=34733
Andy look at sub_pragma 04:01
04:02 elmex_ joined
Infinoid ok, I'm looking 04:02
Andy well, hmm
are we living by C90?
Infinoid C89 is what PDD07 says 04:03
Andy ok, so how would you add the assert to sub_pragma?
Infinoid you're looking at the declaration of the variable "pragmas", I'm guessing
that's what I was complaining about earlier, about variable declaration lines containing too much logic 04:04
Andy and todo
but that's a big part of consting.
Infinoid todo is fine, no pointer dereferencing there
I'd grit my teeth and put it immediately after the pragmas declaration
Andy but then what good is the assertion after int pragmas?
because you're dereferencing sub_pmc 04:05
Infinoid it catches a null interp, at least
yeah, it sucks. but I'm doing things one step at a time
Andy ok
Infinoid (see why I wanted wrapper functions?)
Andy and throw a const in front of "int pragmas"
because pragmas never chagnes 04:06
Infinoid does that help?
ah, just killing two birds with one stone
cool.
Andy yeah
ok, if you're at the bottom of the list
I'll pick stuff from the middle
Infinoid I'm done for the day, I'll resume tomorrow 04:07
do whatever you like.
Andy ok
just commit
whatever ya got
Infinoid I did that an hour ago... halfway into a movie now :)
Andy ok
jimmy Infinoid: I still want to know whether the idea what you discussed can help to rewrite the function in TT#83. 04:08
Infinoid jimmy: I have to admit, I don't have the foggiest idea what that patch is actually trying to do. 04:09
jimmy Infinoid, not about the patch 04:10
Infinoid rewrite which function, then? I was looking at the rewrite of STM_TRACE in the patch
jimmy about STM_TRACE_SAFE(x...) marco in src/stm/backend.c 04:11
not in the patch
Infinoid backlogs for a moment
10:47 <@Coke> of course, the right fix there is to delete src/stm* =-) 04:12
jimmy me think that was a joke 04:13
jimmy think that was a joke
Infinoid yeah :)
currently it's not a macro, it's a static function, so there's no problem 04:14
varargs functions have been around for a long time, as ugly as they are. varargs macros are new
the stuff within the "#if STM_DEBUG" isn't portable, but it isn't enabled 04:15
jimmy it is a macro
line 38
Infinoid its a macro if you define STM_DEBUG to 1, but its defined to 0
so the part after the #else is what's actually being compiled 04:16
jimmy yes ,but when it is 1
Infinoid it's ugly debugging leftovers, yes. but portable 04:17
jimmy default is 0
Infinoid we'd only change it to 1 if we had a bug in STM we needed to track down... and then we wouldn't check that in
jimmy hmm, yup
Infinoid anyway, I think that's the idea. (I'm not even sure what stm is.) 04:18
jimmy when we use c89 compiler debug stm, it is a problem 04:19
Infinoid true. so don't do that? :)
jimmy it is not very important. 04:20
04:24 gmansi joined
jimmy thanks infinoid. :) 04:29
Andy oh crud, found a bug in headerizer 04:31
04:47 kid51 joined
dalek r34734 | petdance++ | trunk/tools/build: 04:52
: There is no _NOTNULL modifiers on ARGMOD or ARGOUT and my more
review: www.parrotvm.org/svn/parrot/revision?rev=34734
r34735 | petdance++ | trunk (18 files): 05:01
: Fixed some headerizer problems with FUNC_MODIFIES
review: www.parrotvm.org/svn/parrot/revision?rev=34735
05:31 japhb joined 05:45 Andy joined 06:43 iblechbot joined 06:58 Theory joined 08:33 pdcawley joined 09:12 japhb joined 09:15 flh joined 09:26 MariachiElf joined
nopaste "YzqrBIEToZeHSnCbB" at 213.232.7.203 pasted "wNDNvwetYJTEUTcY" (1 line) at nopaste.snit.ch/15145 09:53
10:44 Zaba joined 10:48 iblechbot joined 11:27 alvar joined 11:42 barney joined
dalek r34736 | bernhard++ | trunk/src: 12:36
: [codingstd] 4 space indention, 2 more spaces on continuation lines
review: www.parrotvm.org/svn/parrot/revision?rev=34736
r34737 | bernhard++ | trunk/languages/pipp/config/makefiles: 13:31
: [Pipp] Simplify the Makefile, now that the variants are gone.
: Normalize variable name: e.g. HASHDIR became HASH_DIR
: Clean up pipp_test_run.tar.gz left over from 'make smoke'
review: www.parrotvm.org/svn/parrot/revision?rev=34737
13:39 Zaba joined 13:40 Whiteknight joined 13:49 alvar joined 13:53 galf joined
dalek r34738 | bernhard++ | trunk/languages/pipp/config/makefiles: 14:00
: [Pipp] Replace HASH_DIR with PMC_DIR
: Replace PIPP_DIR with BUILD_DIR/languages/pipp
review: www.parrotvm.org/svn/parrot/revision?rev=34738
14:04 kj joined
dalek r34739 | rblasch++ | trunk/include/parrot: 14:08
: Applied patch #113 with modifications. Courtesy bjoern.
review: www.parrotvm.org/svn/parrot/revision?rev=34739
14:13 jimmy joined 14:23 rurban joined 14:25 Zaba joined
dalek r34740 | rurban++ | branches/pdd30install_stage3: 14:36
: [cage] delete the generated MANIFEST.generated file from svn
review: www.parrotvm.org/svn/parrot/revision?rev=34740
r34741 | bernhard++ | trunk/languages/pipp (2 files):
: [Pipp] In closure definition, the bound params come after the regular params.
review: www.parrotvm.org/svn/parrot/revision?rev=34741
barney rurban++ 14:37
rurban barney: And the next commit generates MANIFEST.generated completely without .in file. Finally 14:38
How to I read my stored purl messages? 14:39
Infinoid messages? 14:40
purl To access purl's messages, msg me with the word "messages".
dalek r34742 | bernhard++ | trunk/languages/pipp/t/php: 14:44
: [Pipp] Add working Perl 6 equivalent of broken test.
review: www.parrotvm.org/svn/parrot/revision?rev=34742
rurban Infinoid: Got a message from kid51. Thanks
Infinoid ok. don't forget "messages erase", or purl will keep bugging you about the same message 14:45
14:52 UltraDM joined 14:55 kid51 joined
Infinoid I'm getting an intermittant failure in t/pmc/freeze.t test 25 14:56
kid51 Can you paste? What 'make' options? (I have never gotten a failure in that file.) 14:57
nopaste "Infinoid" at 75.5.247.153 pasted "intermittant failure in t/pmc/freeze_25.pir" (47 lines) at nopaste.snit.ch/15146 15:01
Infinoid no configure options, no weird make options, just running under normal "make test", or direct from the command line.
nopaste "Infinoid" at 75.5.247.153 pasted "good and bad traces" (141 lines) at nopaste.snit.ch/15147 15:04
15:04 Andy joined
Infinoid sometimes the failure emits "3 6" before dying, sometimes it doesn't emit anything in the second line at all. 15:05
kid51 What's the proper way to start up gdb for something like this? 15:09
kid51 is gdb noob 15:10
Infinoid gdb parrot 15:11
run t/pmc/freeze_25.pir
repeat until crash.
rurban src/ops/set.ops:451 is the problem 15:12
the first arg is Null
kid51 Infinoid: Verified! Failed on 8th iteration. 15:13
nopaste "kid51" at 70.107.15.55 pasted "failure on 8th interation of gdb run t/pmc/freeze_25.pir" (12 lines) at nopaste.snit.ch/15148 15:14
Infinoid ok, so whatever it is, it isn't specific to my thinkpad 15:15
thanks
kid51 9th iteration was normal
rurban kid51: do you also have 64bit?
kid51 No. 15:16
Infinoid kid51: to get that trace I pasted, I did a "break Parrot_ex_throw_from_c_args" before the "run", and then did a "bt" after the crash
but I bet it'll look more or less like mine. 15:17
looking at the pir trace, I think Hash is broken
barney For me it was the 6th iteration, under Linux
Infinoid on my linux/x86-64 box, running it on the command line, it seems to be time dependent. does Hash use a random key based on system srand(time())? 15:18
I can run it at about 5 times per second by spamming up+enter, and the failures occur in clumps that last about a second
Infinoid tries a bisect 15:21
rurban With -g3: Can you set a conditional breakpoint at Parrot_set_i_p_kc in core_ops.c with IREG(1) = 0x0 ? 15:22
kid51 What does this gdb message mean? Make breakpoint pending on future shared library load? (y or [n])
Infinoid its because it doesn't know about the function yet, because it hasn't seen libparrot.so yet 15:23
kid51 So should I say y or n? 15:24
Infinoid yeah
rurban y
Infinoid hitting "y" usually works. or you can just run parrot to completion once before adding the break
kid51 gdb then prints: Breakpoint 1 (Parrot_ex_throw_from_c_args) pending. That's okay?
Infinoid yeah 15:26
nopaste "kid51" at 70.107.15.55 pasted "more gdb output on freeze_25.pir" (40 lines) at nopaste.snit.ch/15149 15:27
dalek r34743 | rurban++ | branches/pdd30install_stage3 (5 files): 15:29
: 40817-MANIFEST-generated.patch part2 and resolved.
: MANIFEST.generated and MANIFEST.generated.in are now deleted,
: and all necessary generated files which need to be installed
: are now added MANIFEST.generated.
: Special handlers for parrot.pc and tools/build/dynpmc.pl
review: www.parrotvm.org/svn/parrot/revision?rev=34743
rurban Then do two times up to get up to Parrot_set_i_p_kc and inspect IREG(1)
IREG(1) only works if you compiled with -g3
Infinoid gdb doesn't do macros, so IREG(1) doesn't work
rurban -g3 does macroexpansion
Infinoid oh, cool. 15:30
rurban only on DWARF though, not on cygwin :(
dalek r34744 | bernhard++ | trunk/languages/pipp/src/pct:
: [Pipp] Remove unnedded attributes from parameters
review: www.parrotvm.org/svn/parrot/revision?rev=34744
15:30 Theory joined
Infinoid well, I'm on ELF 15:30
rurban otherwise you have to cc -E core_ops and check the macro expansion by yourself
On linux and bsd gcc's you usually already have DWARF, not stabs anymore 15:31
But the real problem is who put the wrong Null integer there? 15:32
you don#t see that in the backtrace
Infinoid yeah, I think the parrot trace is more interesting than the gdb backtrace
it looks like Hash.get_string_keyed_int (or whatever) is returning the wrong data 15:33
perl Configure.pl --ccflags="-g3" doesn't build for me 15:39
kid51 DWARF?
purl i heard DWARF was very popular
kid51 purl, DWARF is "a debugging file format used by many compilers and debuggers to support source level debugging" at dwarfstd.org/. 15:40
purl ...but dwarf is very popular...
rurban ccflags='-ggdb3'
Infinoid ah
kid51 purl, forget DWARF
purl kid51: I forgot dwarf
kid51 purl, DWARF is "a debugging file format used by many compilers and debuggers to support source level debugging" at dwarfstd.org/.
purl OK, kid51.
rurban purl, DWARF is the debugging file format used by many compilers and debuggers to support source level debugging. Superior and faster to the old stabs format. dwarfstd.org/. 15:42
purl ...but dwarf is "a debugging file format used by many compilers and debuggers to support source level debugging" at dwarfstd.org/....
rurban purl, forget DWARF
purl rurban: I forgot dwarf
rurban purl, DWARF is the debugging file format used by many compilers and debuggers to support source level debugging. Superior and faster to the old stabs format. dwarfstd.org/.
purl OK, rurban.
Infinoid ccflags="-ggdb3" doesn't build for me either 15:46
some issues with exceptions.c and an error in my system stdio.h
15:47 flh joined
rurban Bad. But we don't really need it that much on parrot. Just perl5 needs it heavily, because we have a lot more macros there. 15:48
Infinoid oh, ccflags="-ggdb3 -D_GNU_SOURCE" works 15:50
but gdb still doesn't let me inspect macros 15:53
451 $1 = VTABLE_get_integer_keyed(interp, $2, $3);
(gdb) print IREG(1)
No symbol "IREG" in current context.
lathos It never did. You need a gdb script file that contains all the macros you need. 15:58
Oh, hrm. Version 3.1 and later of GCC, the GNU C compiler, provides macro information if you specify the options `-gdwarf-2' and `-g3'; the former option requests debugging information in the Dwarf 2 format, and the latter requests "extra information" 16:00
Infinoid I built with --ggdb3 16:01
rurban In some versions you need -ggdb3 and in some '-gdwarf-2 -g3'. For my gcc-3.4.4 -g3 just works. 16:03
lathos I recommend trying whatever it is that the manual suggests. 16:05
16:06 kj joined
kj Happy 2009 everybody! 16:06
lathos This remains to be seen.
pmichaud It's been happy for me so far. :-)
rurban parrot-1.0 !!! 16:07
lathos pmichaud: Let's stop now then. :)
16:07 Andy joined
Infinoid no turning back now 16:07
(despite Andy's attempt)
16:07 Andy joined
dalek r34745 | bernhard++ | trunk/languages/pipp/src/pct: 16:12
: [Pipp] Try to make closures_7.php pass, but do not succeed.
: Maybe the readonly proberty needs to be set for $indention.
review: www.parrotvm.org/svn/parrot/revision?rev=34745
kid51 cannot locate place in gcc manual that would advise on debugging flags 16:13
lathos sunsite.ualberta.ca/Documentation/G...cc_12.html 16:14
shorten lathos's url is at xrl.us/bea8v9
lathos sources.redhat.com/gdb/current/onli...html#SEC19 also worth a look 16:15
shorten lathos's url is at xrl.us/bea8wd
kid51 lathos, thx 16:16
afk
16:25 mberends joined
dalek r34746 | kjs++ | trunk (7 files): 16:30
: [pirc] refactoring of functions. + update MANIFEST.
review: www.parrotvm.org/svn/parrot/revision?rev=34746
16:47 Brian joined 16:48 Brian left
dalek r34747 | rurban++ | branches/pdd30install_stage3/tools/build: 16:50
: [cage] revert previous r34746. No need to track headerized files
review: www.parrotvm.org/svn/parrot/revision?rev=34747
16:55 flh joined
dalek r34748 | kjs++ | trunk/compilers/pirc/new (6 files): 16:59
: [pirc] create a Parrot earlier in the startup process. Pass it as an extra parameter.
review: www.parrotvm.org/svn/parrot/revision?rev=34748
r34749 | pmichaud++ | branches/rvar/compilers/pct/src (3 files): 17:01
: [pct]: Move subid generation to PAST::Block nodes.
: * POST::Sub nodes will still generate subid as needed, but the
: primary driver is now PAST::Block. 17:02
review: www.parrotvm.org/svn/parrot/revision?rev=34749
r34750 | kjs++ | trunk/compilers/pirc/new (6 files): 17:05
: [pirc] pass a Parrot to the heredoc preprocessor.
review: www.parrotvm.org/svn/parrot/revision?rev=34750
kid51 Is this supposed to be an okay to build Parrot with debugging: perl Configure.pl --ccflags="-ggdb" 17:10
Or this: perl Configure.pl --ccflags="-g3"
dalek r34751 | kjs++ | trunk/compilers/pirc/new (2 files):
: [pirc] use Parrot's API to find included files.
review: www.parrotvm.org/svn/parrot/revision?rev=34751
kid51 (This on Linux/x86 with gcc 4.1.2. 17:11
I ask because when I do so I get this build error: 17:12
nopaste "kid51" at 70.107.15.55 pasted "build errors with 'perl Configure.pl -ccflags="-ggdb"'" (12 lines) at nopaste.snit.ch/15150
Infinoid kid51: I had the same problem. try --ccflags="-ggdb -D_GNU_SOURCE" 17:20
kid51 Trying; will report outcome in 20+minutes. 17:22
afk
Infinoid ok. I'm still bisecting that freeze_25.pir failure; I should have an answer soon. it's definitely something that changed in the last 5 weeks 17:24
17:29 petdance joined
nopaste "kid51" at 70.107.15.55 pasted "$ make realclean;svn up;perl C" (27 lines) at nopaste.snit.ch/15151 17:35
"kid51" at 70.107.15.55 pasted "output with --ccflags="-ggdb -D_GNU_SOURCE"" (27 lines) at nopaste.snit.ch/15152
Infinoid kid51: t/pmc/freeze_25.pir 17:36
kid51: t/pmc/freeze_25.pir doesn't exist yet because t/pmc/freeze_25.t was never run 17:37
err, I mean t/pmc/freeze.t.
Infinoid begins to strongly suspect r34127 17:52
cotto: ping 17:53
nopaste "kid51" at 70.107.15.55 pasted "some output of freeze_25.pir when Parrot built with --ccflags="-ggdb -D_GNU_SOURCE"" (16 lines) at nopaste.snit.ch/15153 17:57
Infinoid ok, bisect done, bug was introduced in r34127 18:01
kid51 And the bug there was ... (am looking at the revision but don't understand this stuff) 18:04
Infinoid the hash seed determines the distribution of data within the buckets. but my first guess is that the seed isn't saved/restored by freeze/thaw
I don't know why, but it's somehow dependent on Parrot_intval_time() 18:05
Infinoid starts adding debugging statements to prove/disprove the above guess 18:06
kid51 Perhaps this is a good point at which to write up a TT summarizing what you've found out so far.
Infinoid good idea. 18:07
purl Infinoid: Good Idea: Going alpine skiing in the winter. Bad Idea: Going alpine skiing in the summer.
dalek r34752 | pmichaud++ | trunk/languages/perl6/docs: 18:10
: [rakudo]: spectest-progress.csv update: 264 files, 5911 passing, 0 failing
review: www.parrotvm.org/svn/parrot/revision?rev=34752
18:15 rurban joined
dalek r34753 | kjs++ | trunk/compilers/pirc/new (5 files): 18:16
: [pirc] fix :immediate (it seems so...). Do some trickery with sub flags.
review: www.parrotvm.org/svn/parrot/revision?rev=34753
PerlJam Has something changed recently with the parrot build process? Normally, it takes a little over 3 minutes for a reconfigure + make perl6. Today it has taken almost 7 minutes. 18:20
Infinoid I fussed a bunch with headerizer 18:21
if you're using ccache, those changes probably invalidated a lot of your cache
(but that should happen only once)
pmichaud times it on his machine. 18:33
tewk pmichaud: did you see the passing todos in rakudo, I think they were the result of the first class registry fix. 18:34
pmichaud tewk: hadn't noticed those yet, no. But I wouldn't think that a class registry change would cause Rakudo tests to start passing -- rakudo doesn't use the class registry. 18:35
tewk Maybe it was something else then.
pmichaud the 4 passing todos that are there now are in subst.t, and they're "faux passes" -- they pass but not because the code is actually doing the right thing. 18:36
tewk ah ok
pmichaud (unless there are more than 4 passing todo's since midnight CST)
tewk nope,
so I've been thinking about class registry round 2 18:37
dalek r34754 | pmichaud++ | branches/rvar/languages/perl6 (4 files):
: [rakudo]: Refactor of basic class creation and inheritance.
review: www.parrotvm.org/svn/parrot/revision?rev=34754
tewk If you want a core PMC, you should do get_root_namespace ['parror 18:38
t'], 'ResizablePMCArray' 18:39
new $P0
pmichaud I think I've convinced myself that we're going to need a key syntax that allows us to include the hll root name.
tewk s/get_root_namespace/get_root_global'
pmichaud otherwise we can't do :multi(...)
no, get_root_namespace is right 18:40
tewk new_root ['parrot' ; 'RPA' ]
pmichaud get_root_namespace ['parrot';'ResizablePMCArray']
the new_root syntax doesn't help us with multi
.sub 'foo' :multi(['Integer']) 18:41
tewk :multi_root :) 18:42
pmichaud .sub 'foo' :multi(['parrot';'Integer'], ['perl6','OtherType'])
tewk verbose, but probably necessary. 18:44
so we should add a deprecation notice that multis need to be fully qualified names 18:46
pmichaud: besides the multi case do you like new_root, subclass_root, etc? 18:51
pmichaud no. 18:52
wait.
(sorry, UPS just crashed)
(so I'm recovering from that.)
I don't want :multi to always be fully qualified names
:multi_root can work to indicate "all names here are relative to global root" 18:53
but since this keeps coming up, I think we probably do want a way to allow a key to specify "from the root" 18:54
allison had suggested ['*parrot';'Integer'] -- i.e., with the leading asterisk.
That cuts out the possibility of leading asterisks in namespace names specified by key. We can probably live with that. 18:55
Another possibility would be to use an empty namespace name in the key:
['';'parrot';'Integer']
tewk I like '';
pmichaud I do too.
If there's a HLL that really needs an empty first namespace component, it can use ['';'';....] 18:56
tewk if you want an empty namespace in your hll ['';'hll';'']
pmichaud yes.
tewk or we could do [ROOT; 'adfa'; 'adfa'], [HLL; 'adfa'; 'adf'] 18:57
and let ['adfadf'; 'adfa'] be relative to the current namespace. 18:58
pmichaud that seems workable also. 18:59
tewk or [REL; 'adfa'; 'adfa'] and let ['adfa'; 'adff'] be from HLL
let the common case be short, let the other cases be obvious.
pmichaud I'd prefer that (except for get_global) all of the short cases be relative to the current hll 19:00
it's pretty rare that we'd need [REL; ...] since we already know what the current namespace is.
kid51 Infinoid++ for writeup of TT 116
dalek r34755 | kjs++ | trunk/compilers/pirc/new (2 files):
: [pirc] add a new API function for PIRC. Empty stub now.
review: www.parrotvm.org/svn/parrot/revision?rev=34755
tewk I think I would add new_hll and new_root opcodes under the covers and let ROOT and HLL be resolved by imcc. 19:03
no that won't work.
devs will want to build up key strings at runtime as well, I assume. 19:04
pmichaud I have yet to runtime build a key.
Normally "build up key at runtime" is really "make an array"
I don't even know _how_ to build a key at runtime. Arrays are the normal way of handling it.
and arrays should definitely be relative to hll_root 19:05
(unless the opcode is indicating otherwise)
tewk how do you build up [ROOT; 'adfa'; 'adfa'] in an array? 19:06
pmichaud you don't.
tewk ["ROOT"; "'adfa'"; "'adfa'"] ?
pmichaud you create the array and then use get_root_namespace
tewk fair.
there is some argument to say just do get_root_namespace all the time if you don't want hll relative. 19:07
I guess multis are the problem with that thinking.
pmichaud ...but you can't say "get_root_namespace" on a :multi
right.
so we either do :multi_root, or we provide a way to say "root relative" in the key syntax. 19:08
If the latter, then we no longer need the new_root, subclass_root, etc. opcode variants.
(because we can do it with the key again)
tewk either way you don't need them, you just have to use get_root_global with new, subclass, etc if you don't want hll relative. 19:09
19:09 Andy joined
pmichaud we need _something_ for :multi 19:09
there is a problem I've run into with the namespace variants 19:10
tewk I'd say keep the impact small and go with :multi_root
I'd like to hear more opinions first though.
pmichaud it turns out that get_root_namespace ['parrot';'SomeClass'] won't work if we're trying to create the class.
in that case we'd have to do 19:11
$P0 = get_root_namespace
$P1 = split ';', 'Parrot;SomeClass'
$P2 = $P0.'make_namespace'($P1)
$P3 = newclass $P2
which starts to make a strong argument for being able to do something like $P3 = newclass ['';'parrot';'SomeClass'] 19:12
dalek r34756 | kjs++ | trunk/compilers/pirc/new (2 files):
: [pirc] add a synopsis for the LSR allocator. + make 1 more function static.
review: www.parrotvm.org/svn/parrot/revision?rev=34756
tewk so get_root_namespace returns null if the namespace doesn't exists? 19:13
pmichaud correct. That's why we needed the make_root_namespace opcode, which we later decided should be a method.
tewk as an opcode it could take a key 19:14
dalek r34757 | kjs++ | trunk/compilers/pirc/new:
: [pirc] fix a typo.
review: www.parrotvm.org/svn/parrot/revision?rev=34757 19:15
pmichaud I'm looking at the method now -- I don't remember if it needed an array or could take a list of strings.
looks like it requires an array.
(or string, or other single element)
Tene pmichaud: why does get_root_namespace not work for creating the class? 19:16
pmichaud because the namespace might not exist yet.
(it does work if the namespace already exists.)
Tene Ah.
tewk and you need some sort of test for existance op.
pmichaud no, make_namespace does the right thing in that case
make_namespace returns the existing namespace if it already exists. 19:17
tewk so you either have vivify and exists semantics or get and make semantics
pmichaud how hard would it be to augment the Key PMC so that it knows "from global root" versus "from hll root"?
Tene I stalled pretty badly on the HLL stuff when I ran into issues with PGE.
I'm going to try it again later today. 19:18
pmichaud then IMCC could be trained to understand [ ROOT ; 'parrot' ; 'Integer' ]
and the relevant portions would know from the Key PMC whether it's from ROOT or not.
(leaving [ 'Foo'; 'Bar' ] to have its existing meanings)
tewk Its a fair amount of work, but not impossible. 19:26
19:32 desertmax joined
pmichaud okay. 19:36
anyway, my vote at the moment is to use [ '' ; 'Foo' ; 'Bar' ] to mean "relative to global root"
that only means changing the namespace lookups. 19:37
(in the relevant class functions)
19:37 Zaba joined
pmichaud that wouldn't be all that difficult, I don't think. 19:38
dalek r34758 | rurban++ | branches/pdd30install_stage3 (2 files): 19:41
: [cage] Do not append html output to MANIFEST.generated while testing.
: Check for internal key Parrot::Docs::Group->{TESTING}
review: www.parrotvm.org/svn/parrot/revision?rev=34758
19:43 PacoLinux joined
desertmax Concerning NCI, how can I most easily check if a function returns NULL / if an unmanaged struct "is" NULL? 19:46
19:47 Theory joined
dalek r34759 | bernhard++ | trunk/languages/pipp/t/php: 19:52
: [Pipp] add a TODO test
review: www.parrotvm.org/svn/parrot/revision?rev=34759
19:54 rurban_ joined
rurban BTW: We have two slurp helpers in lib/Parrot. One in Parrot::Distribution and one in Parrot::Configure::Utils 19:58
No, we have three. Parrot::Test has of course also one 20:00
dalek r34760 | kjs++ | trunk/compilers/pirc/new (5 files): 20:01
: [pirc] copy stuff for :instanceof from imcc. + function doc. + make a .yielding sub a coroutine.
review: www.parrotvm.org/svn/parrot/revision?rev=34760
barney Bah. There is also Parrot::BuildUtil 20:08
rurban Uh, I guess Parrot::BuildUtil should be the only one. This requires the least of those four. I'll make a todo ticket. 20:15
dalek r34761 | bernhard++ | trunk/languages/pipp (2 files): 20:16
: [Pipp] Small beautifications in actions.pm.
: Note that old style constructors are not supported.
review: www.parrotvm.org/svn/parrot/revision?rev=34761
r34762 | allison++ | trunk (2 files): 20:17
: [pdd30install] Add new conditioned line syntax #IF, #UNLESS, #ELSIF, and #ELSE.
: Extracted from pdd30install branch (Reini Urban), plus additional cleanups from
: code/doc review.
review: www.parrotvm.org/svn/parrot/revision?rev=34762
rurban trac.parrot.org/parrot/ticket/117 [todo] 4 different perl slurp methods in Parrot:: 20:21
allison, great! She started... 20:22
I wanted to say allison++
21:14 gmansi_ joined 21:18 gmansi_ joined 21:20 Ron joined 21:21 chromatic joined 21:24 gmansi_ joined
dalek r34763 | bernhard++ | trunk/languages/pipp (2 files): 21:27
: [Pipp] Call __construct of the Class if available.
: Add a TODO test case for the global section returning a PippObject.
review: www.parrotvm.org/svn/parrot/revision?rev=34763
r34764 | pmichaud++ | branches/rvar/languages/perl6/src (3 files): 21:31
: [rakudo]: More class and block refactors.
: * Make sure packages get the correct namespace.
: * Anonymous packages and classes are given names of '!ANON\\d+' for now.
: * Add simple methods and 'self'.
: * Use $?BLOCK<signature> instead of $BLOCK.symbol('!signature')
review: www.parrotvm.org/svn/parrot/revision?rev=34764
r34765 | bernhard++ | trunk/t/codingstd: 21:37
: [codingstd] set svn props for t/codingstd/c_arg_assert.t
review: www.parrotvm.org/svn/parrot/revision?rev=34765
chromatic Coke, ping. 21:57
dalek r34766 | kjs++ | trunk/compilers/pirc/new (4 files): 21:58
: [pirc] stuff for bytecode generation for keys. not tested, but this is a first draft. needs more thought.
review: www.parrotvm.org/svn/parrot/revision?rev=34766
r34767 | chromatic++ | trunk/src: 22:02
: [MMD] Removed dod_register_pmc()/dod_unregister_pmc() pair from
: Parrot_mmd_multi_dispatch_from_c_args(), as stack scanning during mark phase of
: GC should keep the CallSignature PMC alive. We can revisit this if it produces
: strange segfaults, but as we don't register all other stack PMCs, this should
: be fine.
review: www.parrotvm.org/svn/parrot/revision?rev=34767
Infinoid does anyone care much if I change the "item" parameter of list_set(), list_push() and list_assign() to NULLOK? the core tests seem to expect to be able to do this, and one other function (list_append) already has a NULLOK item argument. 22:11
chromatic Do we even use lists? 22:12
Infinoid presumably if we didn't, I wouldn't have gotten assertion failures from "make test". 22:13
t/pmc/intlist.t seems to be a particularly concentrated user of the list functions, judging from its failures.
or was that a joke? :) 22:15
chromatic No; I don't think we use that code.
Oh yes, the IntList PMC. 22:16
22:16 Zaba joined
chromatic Nearly completely unused and unreferenced. 22:17
nopaste "Infinoid" at 75.5.247.153 pasted "full list of NULLness assertion-caused failures." (39 lines) at nopaste.snit.ch/15154
22:17 Theory joined, Andy joined
Infinoid is the code obsolete? or just replaced by the various array PMCs generally? 22:18
chromatic I wouldn't say obsolete, just unused.
22:18 gmansi_ joined
chromatic In theory, it's a sparse array of integers. 22:19
dalek r34768 | kjs++ | trunk/compilers/pirc/new (2 files):
: [pirc] small bits for key bytecode stuff. Not too hard after all. Like most stuff :-)
review: www.parrotvm.org/svn/parrot/revision?rev=34768
Infinoid there's a whole enum of data types they can apparently store, which doesn't explicitly include NULL (though there is an entry for undef). so its not immediately clear whether NULL pointers should be accepted... despite the fact that we're already passing them in.
chromatic Hm, compilers/imcc/imcparser.c and compilers/imcc/imcc.y are out of date with respect to each other. 22:20
kj chromatic: it seems there was some headerizing stuff 22:21
Infinoid Generally I've assumed passing tests know what they're doing, and most of the code I've added NULLOK to has been fairly obviously capable of handling it. but this is a bit less obvious.
kj maybe not so important to generate imcparser.c 22:22
or, more likely, forgotten.
Infinoid oh. did I add the asserts to the wrong file?
chromatic If I regenerate imcparser.c (which I do, because I always configure in maintainer mode), it won't build.
You may have patched imcparser.c and not imcc.y.
Infinoid okay. the code should still build fine without the stuff I added
can you be more specific about "it won't build"? 22:23
kj I can't configure in maintainer mode; windows. Logs show that Andy changed imcc.y
Andy when?
kj and not imcparser.c
petdance, rigth?
Andy yeah
chromatic compilers/imcc/imcc.y: In function ā€˜MK_I’:
compilers/imcc/imcc.y:332: error: ā€˜ASSERT_ARGS_mk_i’ undeclared (first use in this function)
Andy bu I don't believe I changed any .y files
kj r34735
Andy i can't look at it now, I'm sorry 22:24
I'm on my way out the door
chromatic Bungee patcher!
Andy It certainly was not my intent to do tha
Theory coughs
Infinoid is there a call to ASSERT_ARGS(mk_i); at the top of that function?
Andy oh crud, my bad 22:25
chromatic ASSERT_ARGS(mk_i);
kj it seems that there's also a change by Infinoid that doesn't change imcparser.c
r24722
woeps, r34722
Infinoid I've been busy.
kj eh, s/woeps/woops # dutch spelling 22:26
Infinoid chromatic: you can safely remove that line
chromatic Should I remove all of those asserts, or just change them?
Infinoid whatever fails can be removed
if they can be safely added back, the codingstd test will tell me and I'll get it later on
chromatic Will do.
purl well, Will do. is there any further documentation on maintaining dual-life code? how is it handled in version control? has anyone thought of using git submodules in case the cpan branch of a modules also happens to use git?
chromatic purl, forget will do.
purl chromatic, I didn't have anything matching will do
chromatic purl, forget Will do. 22:27
purl chromatic, I didn't have anything matching will do
chromatic purl, forget Will do
purl chromatic, I didn't have anything matching will do
chromatic purl, forget Will do.
purl chromatic, I didn't have anything matching will do
Infinoid odd, I'm not finding any ASSERT_ARGS(mk_i) in trunk
kj Will?
purl Fire at Will!
kj do?
purl do is just a loop where something controls/constrains it to execute once
kj do.
do.?
purl it has been said that do is just a loop where something controls/constrains it to execute once
Infinoid oh, ack doesn't do .y by default.
Theory !think(); do;
Theory goes to bed 22:28
purl grabs the lube and follows Theory
kj goes to bed, but a different one
Theory snorts his Calvados
Infinoid ok, that was my fault. sorry about that. 22:29
chromatic It only hits people who run --maintainer; no big deal.
22:32 Zaba joined 22:35 tetragon joined
dalek r34769 | chromatic++ | trunk/compilers/imcc (3 files): 22:57
: [IMCC] Removed parameter assertions which made --maintainer mode not compile.
review: www.parrotvm.org/svn/parrot/revision?rev=34769
Infinoid chromatic: oh, the only reason why I didn't get MK_I() right is because those things are case sensitive.
chromatic Makes sense. 23:08
dalek r34770 | chromatic++ | trunk/compilers/imcc (3 files): 23:28
: [IMCC] Fixed a memory leak with PASM-style opcodes.
review: www.parrotvm.org/svn/parrot/revision?rev=34770
Infinoid my bison doesn't seem to work. --version is bison (GNU Bison) 2.4 23:44
nopaste "Infinoid" at 75.5.247.153 pasted "bison fail" (6 lines) at nopaste.snit.ch/15155
chromatic I saw that a bit earlier too. 23:46
dalek r34771 | infinoid++ | trunk/src: 23:54
: [PDB] Enable the headerizer for a few more functions, so we can get
: some assert macros for them.
review: www.parrotvm.org/svn/parrot/revision?rev=34771
r34772 | infinoid++ | trunk (2 files):
: [core] The "item" parameter for list_set(), list_push() and list_assign()
: needs to be NULLOK.
: (Found by the headerizer NONNULL assert() patch, see Trac #105.)
review: www.parrotvm.org/svn/parrot/revision?rev=34772
r34773 | infinoid++ | trunk/src (7 files):
: [core] Tag another couple hundred functions with argument asserts.
review: www.parrotvm.org/svn/parrot/revision?rev=34773
Infinoid another 212 down, 553 to go. 23:55
and then we can start building it into pmc2c and (maybe) ops2c
chromatic How many bugs has this found?
Infinoid if by "bugs" you mean "mismarked arguments", I'd say 15-20. 23:56
if you mean "things I feel might need further attention", 2 23:58
chromatic Not bad. 23:59