Parrot 4.4.0 "Banana Fanna Fo Ferret" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 12 June 2012.
whiteknight blah, this IO code is so fragile 00:26
every single egregious typo I make breaks it
dalek rrot/whiteknight/io_cleanup1: 03ff546 | Whiteknight++ | src/io/ (2 files):
Fix several of the asserts I added last time
00:40
rrot/whiteknight/io_cleanup1: aea16cf | Whiteknight++ | src/io/ (4 files):
Various cleanups. Add TODO notes. Codestd fixes. Add several assertions. These assertions have found at least one problemwith buffer writes, which I haven't fixed.
00:41 schmooster joined
whiteknight blah 00:42
why can't C be just a little bit more forgiving about pointer errors
like a segfault or two ever hurt anything
I figure they build character
and in my branch, Parrot has A LOT of character
and on that not, WHITEKNIGHT AWAY! 00:44
01:25 Khisanth joined 01:54 travis-ci joined
travis-ci [travis-ci] parrot/parrot#424 (io_cleanup1 - aea16cf : Whiteknight): The build failed. 01:54
[travis-ci] Change view : github.com/parrot/parrot/compare/c...a16cf24aa2
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1606422
01:54 travis-ci left 02:15 wagle joined 02:28 wagle joined 02:37 wagle joined 02:38 wagle joined
dalek : f840736 | jimmy++ | .gitignore:
update .gitignore
02:44
rrot/vtable_various: 114e8c6 | jkeenan++ | lib/Parrot/Vtable.pm:
Add more function-level documentation in POD format. Reposition some existing POD.
03:32
rrot/vtable_various: 6577d02 | jkeenan++ | lib/Parrot/Vtable.pm:
Add examples of output from three methods.
03:48 dduncan joined 03:49 dduncan left 06:00 Khisanth joined 07:04 brrt joined 07:21 rich joined
dalek : 3697cd9 | jimmy++ | src/gencode.c:
add more unuse_reg
07:30
08:17 lucian joined 08:18 wagle joined 08:56 kjs joined 09:46 travis-ci joined
travis-ci [travis-ci] parrot/parrot#425 (vtable_various - 6577d02 : jkeenan): The build passed. 09:46
[travis-ci] Change view : github.com/parrot/parrot/compare/1...77d022b4b5
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1607035
09:46 travis-ci left 09:47 alvis_ joined 10:01 PacoAir joined 10:17 kjs joined 10:31 NotFound_b joined 10:35 lucian joined 10:48 JimmyZ joined
JimmyZ good evening, #parrot 10:50
kjs hi JimmyZ 11:14
JimmyZ hello jks
error, kjjs
kjs
:)
kjs :-)
JimmyZ: I found one case where unuse_reg shouldn't be called 11:15
that's in the parameter passing code
i added a comment there.
I dont understand why, though
JimmyZ kjs: I saw it 11:16
kjs I suppose we can leave it for now, it's not that important
JimmyZ I know why it shoud not be called :) 11:19
dalek : be0a7b1 | kjs++ | src/gencode.c:
trying to return values. doesn't work yet.
kjs JimmyZ: cool. please share :-) 11:20
JimmyZ kjs: because you're passing arg1 to I0, arg2 to I1, arg3 to I2, arg4 to I3 with a iter 11:21
kjs yes
thing is, when passing 3 args, i can get 2 args through with the unuse_reg
but the 3rd is always 0
JimmyZ kjs: Let me take a look 11:31
kjs JimmyZ: note that parameter list is stored in reverse order (in the parser), but so are the arguments. As a result, they line up nicely. 11:33
JimmyZ: I think returning values should be done in a similar way to passing parameters. However, I haven't been able to get that working yet. I was thinking 1 return value for now (C-like), so that can just be stored in a fixed register number in the callee's frame; the caller can then just pull it out. 11:34
JimmyZ kjs: +1 11:37
kjs if you feel like checking that out... :-)
11:40 schmooster joined 11:52 crab2313 joined 12:03 whiteknight joined 12:04 whiteknight joined
whiteknight good morning, #parrot 12:05
JimmyZ kjs: I know why know 12:06
kjs: you're useing set_imm I0, 0, 0 before goto_chunk
kjs which line? 12:07
JimmyZ: in gencode.c? which line would that be 12:09
JimmyZ kjs: I think it's c-m0 problem
kjs JimmyZ: I think the latest check in stores the return value in I60 12:10
12:11 mtk joined, JimmyZ joined
JimmyZ kjs: I don't know how to fix it yet 12:11
kjs there's something wonky going anyway
brrt good afternoon, whiteknight 12:12
kjs the return value is stored in I60
whiteknight hello brrt, how are you doing today?
kjs it's then copied into some register, in my test file that's I3
and then later I2 is printed.
so the wrongn register is popped from the regstack
probably some other register is also pushed onto the regstack; I need to debug that with pritning the stack, so we can see what's going on.
JimmyZ kjs: I wil try to fix the unuse_reg problem after dinner 12:13
kjs Not now though. #work
brrt very well, actually
i was planning on making that fix we were talking about yesterday, but I had to get two new roommates instead
kjs aloha, nopaste?
aloha kjs: nopaste is is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl)
brrt so i'm doing it now instead
whiteknight brrt: life happens. No worries
brrt yeah, sure :-) i'm not worrying much 12:14
nopaste "kjs" at 193.1.104.2 pasted "test input for returning values in M1" (11 lines) at nopaste.snit.ch/143983
brrt worst case scenario, i don't make the deadline, i fix it some other time
kjs JimmyZ: I've pasted a test script for returning values, ifyou have time
whiteknight brrt: There's only one deadline to worry about, and it's weeks away
moritz gsoc isn't about meeting deadlines
whiteknight and even then, it's not a hard deadline 12:15
moritz it's about hacking in a structured way, contributing to the community etc.
(yes, you should strive to meet the deadlines anyway, but it's not the no. 1 criterion) 12:16
brrt my point exactly
anyway, i'm hacking on it as we speak, so I'm hoping to push something today 12:17
my makefile is being weird, by the way 12:19
what happens is: i have a dependency on the header file, with nothing to do (obviously)
but it doesn't seem to count this, which annoys me
moritz it should
brrt right? so, I add a statement to this the dependency, a silented echo 12:20
in which case my include statement is a C file all of the sudden?
moritz erm, wait
you declare the dependency 12:21
and 'make' takes that as a file name
brrt pastebin?
moritz and if it exists, and the time stamp is old enough, make is happy
if it doesn't exist, make searches for a rule to build it 12:22
brrt pastebin.com/FPPiAwAD
moritz erm, that looks weird
mod_parrot.so: $(MODULE) $(LIBTOOL) --mode=install cp mod_parrot.la $(BUILDDIR)/build
brrt oh, that is weird 12:23
moritz does that rule create a mod_parrot.so?
brrt $(LIBTOOL) should be on another line
moritz yes, my fault
but it looks like it puts something in $(BUILDDIR)
brrt it does
moritz not in .
brrt true
(actually, in $(BUILDDIR)/build)
oh, good point 12:24
i'll change it
moritz but 'mod_parrot.so: $(MODULE)' is a rule for building ./mod_parrot.so
brrt yes
moritz and I've never been a friend of wildcard rules
I don't really understand them in detail :/
brrt neither do i 12:25
but they 'usually' work
anyway, touching my mod_parrot.h file does nothing 12:27
changing the %.c: to $(SOURCE) does nothing, either
moritz I think I remember something odd about dependencies in implicit rules not working the way you'd expect to 12:28
which is exactly what you're observing
brrt ....
it is of no great import 12:29
dalek rrot: 57e18ad | Whiteknight++ | / (3 files):
Fix some exception messages to help track down failures more easily. re-bootstrap prt0.pir to account for the change in Interpinfo_enum numbering following recent changes. Update prt0.winxed to include the new copyright date (should be dynamic?) so re-bootstrapping does not alter the copyright message. kid51++ for pointing out the test failure.
12:30
brrt brb 12:35
12:35 brrt left 12:55 brambles joined 13:07 travis-ci joined
travis-ci [travis-ci] parrot/parrot#426 (master - 57e18ad : Whiteknight): The build was fixed. 13:07
[travis-ci] Change view : github.com/parrot/parrot/compare/8...e18ad9919a
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1610227
13:07 travis-ci left 13:09 Psyche^ joined
whiteknight Imma lean, mean, build-fixin machine 13:20
JimmyZ kjs: sigh, I don't know how fix m0 ( or m1 ) :( 13:32
kjs JimmyZ: bummer.
which problem did you look into?
JimmyZ kjs: unuse_reg in parameters 13:33
kjs JimmyZ: ok, well that one is not sooo important i guess. We know how to fix the problem, just not why it works ;-)
Also, We could replace the register usage optimization with someething else at some point. 13:34
JimmyZ: I've spent some time yesterday figurugin out why it didnt work but i didnt find anything either.
JimmyZ kjs: I know where is the problem, but don't know how to fix it, it's very tricky 13:35
kjs JimmyZ: but just commenting out that unuse_reg works right? 13:36
JimmyZ kjs: yep
kjs so that will do for now I suppose. perhaps we can unuse that reg at the very end of the function call code
so that there is some "correctness" in the unuse_reg logic.
JimmyZ kjs: I think the real problem is in M0 13:37
kjs maybe. hard to say. but m0_interp.pl has the same problem as C-M0
so at least it's consistent ;-)
we'll know once gerdr's m0 implementation is done.
JimmyZ kjs: aye, that' why I said "I don't know how fix m0 ( or m1 )" 13:38
kjs what's more annoying is that I couldnt get the return values back 13:39
mm. perhaps that's a use-reg issue as well.
14:02 dduncan joined 14:11 brrt joined
dalek : 1fdc321 | kjs++ | src/a (3 files):
add a few splint annotations. Need to find other annotations that are applicable and annotate rest of source.
14:27
14:27 crab2313 joined, crab2313 left 14:28 crab2313 joined, crab2313 left 14:29 crab2313_ joined 14:30 crab2313 joined, crab2313 left
NotFound ~~ 14:32
14:35 crab2313 joined, crab2313 left
dalek kudo/nom: 70fd758 | moritz++ | docs/announce/2012.06:
[release] rename 2012.06 to Strasbourg

in accord with PerlJam++, our release manager. We will use Frankfurt as a release name closer to YAPC::EU 2012 (August 2012)
14:39
kudo/nom: 1e47735 | moritz++ | docs/announce/2012.06:
[announce] start to collect features for the release announcement
14:41 dmalcolm joined
JimmyZ kjs: re splint annotations, I think we could just copy the parrot one from include/parrot/compiler.h ;) 14:46
kjs we can borrow heavily anyway. Not sure about the PARROT_ prefix , it makes it awfully long 14:47
14:49 bluescreen joined 14:53 crab2313 joined
JimmyZ crab2313: ę™šäøŠå„½ :) 14:55
crab2313 JimmyZ: ę™šäøŠå„½
JimmyZ crab2313: åœØåŒ—äŗ¬ļ¼Ÿ 14:56
crab2313 JimmyZ: ęˆ‘åœØč„æå®‰
JimmyZ crab2313: å—Æ
brrt segfaults are back at me! 15:14
.... 15:16
what is happening to me now
15:16 crab2313 joined
brrt my segfault is gone 15:19
whiteknight pretend I fixed it 15:20
moritz :-) 15:21
15:36 NotFound joined
NotFound ~~ 15:36
brrt :-) will do 15:38
no, my segfault is gone because i stopped doing something stupid
(of which the stupidity was not documented, but anyway) 15:39
whiteknight If I stopped to document every stupid piece of code, I'd never have time to write code 15:44
brrt true enough 15:46
but on the other hand the api has been arround for a long time 15:47
i kind of see the rite of passage thing where you have to look at the source code to see what you should do
but its not making things easier
(this is commenting on the apache api, btw)
oh, i could use some C advise 15:53
i need to refer to a post-declared struct
but its declared in the same file
whiteknight okay
brrt and it is static
whiteknight a struct definition or a struct instance? 15:54
and what do you mean "post-declared"?
brrt ehm, both
later in the file
I have this structure called module
whiteknight You can pre-declare a struct definition 15:55
struct foo;
and then later give it guts: struct foo { ... }
brrt yes, but thats not what i mean
whiteknight so pre-declare it, then declare the static instance, and use it
brrt i have an actual file-local static variable called mod_parrot
and I need to refer to it
within my functions
whiteknight paste the code so I can see it?
brrt will do
pastebin.com/2v2p6Ja2 15:57
mod_parrot_set_loader_path refers to the location of &mod_parrot
so mod_parrot needs to be declared before that
but, mod_parrot refers to every other thing 15:58
including (eventually) via mod_parrot_set_loader_path
15:59 dduncan joined
dalek : a7e7d51 | kjs++ | / (5 files):
add a bit more space to annotations. Still experimenting with this. Also, fix a bug: don't forget to typecheck arguments to a funcall, as this sets pointers to the symbols in the symtab, which is essential. Add a test for this.
16:00
brrt ... I have to run now :-)
dalek : ea61e3d | kjs++ | t/stringparam.m1:
minor addition to test another case in stringparam.m1
16:01
: 63f996d | kjs++ | t/numparam.m1:
add a test for passing num args.
16:05
whiteknight msg brrt: Solution is simple: forward-declare all your functions with prototypes, then declare and instantiate mod_parrot at the top of the file. You can use a header file too, to keep the code cleaner.
aloha OK. I'll deliver the message.
NotFound static and extern ? 16:13
16:15 NotFound left, NotFound joined
NotFound Ooops 16:15
16:27 dduncan joined 16:48 zby_home joined
dalek : 50bb40d | kjs++ | / (3 files):
basic return values works! still buggy I think.
17:22
: 1cd8119 | kjs++ | t/return.m1:
make return test slightly more interesting.
17:23
17:30 crab2313 joined
Coke are the M0 calling conventions documented? 17:30
or did kjs++ just make something up? 17:31
17:37 not_gerd joined
not_gerd hello, #parrot 17:37
17:38 contingencyplan joined
not_gerd msg brrt or you could just replace the extern in the 'forward declaration' of the variable with static to make it a tentative definition 17:39
17:39 brrt joined
aloha OK. I'll deliver the message. 17:39
not_gerd Coke: github.com/parrot/parrot/blob/m0/d...onventions and github.com/parrot/parrot/blob/m0/t..._caller.m0
brrt hey 17:43
Coke not_gerd: danke
brrt not_gerd, whiteknight: thanks
it works 17:44
.. it almost works :-)
Coke whoops: This section will specify the following: ... this isn't rendered as a list. bad pod or bad github? 17:45
brrt no, it really just works :-) 17:50
17:50 lucian joined 18:05 kjs joined
dalek d_parrot/cleanup: 48490cb | (Bart Wiegmans)++ | / (11 files):
Add ParrotLoaderPath configuration option, and debug for pudding
18:05
cotto not_gerd, I don't know what's in that link, but I like the link itself. 18:06
brrt this commit is really special and awesome by the way, because testing mod_parrot now works again
cotto d'oh 18:07
just my stub spec
not_gerd ;)
cotto brrt++
kjs cotto: I got return values working, mostly
dalek : 6cf90c6 | kjs++ | t/fact.m1:
add the compulsory factorial test.
brrt as well as gdb auto attaching by perl script 18:08
brrt is a great fan of exec() and fork() and the like
not_gerd I didn't have much time ti work on my m0 implementation, so I keep picking on minor details...
cotto kjs, awesome! time for a karma party
not_gerd ^to work
cotto kjs++ brrt++ not_gerd++ coke++ 18:09
kjs cotto: it is awesome! though it's a bit buggy I suspect.
brrt karma party indeed 18:12
aloha party indeed has karma of 0.
Coke brrt++
chameleon++ 18:13
18:17 brrt1 joined
dalek : 4cc3ea0 | kjs++ | t/return.m1:
only return ints at moment. restore return example.
18:19
kjs Coke: I made something up for the M0 calling conventions 18:30
cotto kjs, cool. did you document it? 18:36
kjs I will once I've tested it thoroughly
and also fixed it :-)
prob this weekend
cotto wfm 18:37
brrt so, euro2012 now 18:50
bye!
18:50 brrt left 18:52 kjs_ joined
dalek website: brrt++ | Update on infrastructure 18:53
website: www.parrot.org/content/update-infrastructure
not_gerd bye, #parrot 19:26
19:26 not_gerd left
whiteknight brrt++ # blog post 19:37
19:44 dukeleto joined 19:58 szbalint_ joined 20:02 mj41_ joined 20:04 d4l3k_ joined, NotFound_b joined 20:05 plobsing_ joined, brambles_ joined 20:12 p6eval joined 20:16 dngor joined 20:18 GeJ_ joined 20:30 dduncan joined
dalek kudo/nom: 90333b3 | moritz++ | src/core/Enum.pm:
Enum.invert now returns an Enum, not a Pair
20:43
20:53 tuxit joined 21:05 autark joined 21:21 perlite_ joined 22:48 whiteknight joined
whiteknight good evening, #parrot 22:48
cotto hio whiteknight 22:49
whiteknight hello cotto 22:50
my computer is working wonderfully, in a very consistently wonderful way, and I'm very happy about it 22:57
Extremely happy and calm and relaxed and happy
I LOVE MY COMPUTER SO MUCH I COULD SQUEEZE IT UNTIL BLOOD CAME OUT MY KNUCKLES
also, my sarcasm gland is starting to glow red hot 22:58
dalek rrot: fa62e0f | jkeenan++ | src/platform/win32/misc.c:
[codingstd] Provide correct format for C function documentation.
23:22
23:23 kid51 joined
dalek rrot: dbe352e | jkeenan++ | / (2 files):
Parrot::Pmc2c::Object not used in any other source code. Delete it.
23:26
rrot: 328cbaf | jkeenan++ | / (2 files):
Merge branch 'no_pmc_object_pm'
rrot: 487e9d0 | jkeenan++ | / (3 files):
Eliminate Parrot::Pmc2c::Attribute.

ack-ing showed that none of this method's packages was invoked more than once. Hence, we can either move them to the package in which they are invoked or eliminate them entirely in favor of simply passing their arguments to callers as needed.
Invocation of name() in Parrot::Pmc2c::PMC re-coded to be a hash dereference rather than a method call.
generate_start(), generate_declaration(), generate_end() and generate_accessor() become Parrot::Pmc2c::PMC internal methods.
new() was called only once, within Parrot/Pmc2c/Parser.pm. It never did anything other than guarantee that all four of its key-value pairs had defined values. Rework its invocation.
23:34
rrot: e6e2d76 | jkeenan++ | / (3 files):
Merge branch 'attribute_generate'
rrot: f4a2ff1 | jkeenan++ | lib/Parrot/Pmc2c/ (2 files):
Parrot::Pmc2c::MULTI::rewrite_multi_sub() is invoked only once, in

to believe that its first argument was an object of its own class, which it is not. The first argument is a Parrot::Pmc2c::Method object. So inside rewrite_multi_sub(), rename $self -> $method to be more self-documenting.
23:50
rrot: 2ad68dd | jkeenan++ | lib/Parrot/Pmc2c/P (2 files):
Parrot::Pmc2c::MULTI::rewrite_pccmethod() and mangle_name() are invoked only

would lead one to believe that their first arguments were objects of the Parrot::Pmc2c::MULTI class, which they are not. In each case, the first argument is a Parrot::Pmc2c::Method object. So inside rewrite_multi_sub(), rename $self -> $method to be more self-documenting.
In addition, mangle_name() makes no use of its second argument, $pmc. So eliminate it.
rrot: a4ffcce | jkeenan++ | / (4 files):
Parrot::Pmc2c::MULTI::rewrite_multi_sub() is invoked only once, inside

where it can reside along two other subroutines invoked within find_methods. This enables us to eliminate lib/Parrot/Pmc2c/MULTI.pm entirely.
cotto someone's been busy
dalek rrot: e2bd11a | jkeenan++ | / (2 files):
Eliminate remaining references to Parrot::Pmc2c::MULTI.
rrot: 144115e | jkeenan++ | / (5 files):
Merge branch 'eliminate_multi'