#parrot Parrot 2.2.0 "Like Clockwork" Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: fix line number annotations | Finish GSoC applications
Set by moderator on 6 April 2010.
00:00 kurahaupo joined 00:03 davidfetter joined
tcurtis Is there a technical reason why PIR of the form "$P0 = foo() 00:29
.return ($P0)" can't be automatically optimized to ".tailcall foo()"
Whiteknight no 00:30
darbelo The glib answer is: Yes, IMCC. 00:31
chromatic I'd rather have that as a PAST optimization.
Whiteknight +1 to PAST optimization 00:32
00:32 payload joined
chromatic If no one takes that on for GSoC, I'll submit a Hague grant for it. 00:33
darbelo Cool. 00:34
Whiteknight chromatic, what, optimizing tailcalls in PAST?
darbelo I would expect "PAST optimization" in general. 00:35
chromatic Writing a PAST optimization layer.
Whiteknight +1
purl 1
darbelo Shame Rakudo Star is so close. I think it would really benefit from that. 00:36
chromatic If we can get constant string handling improvements in 2.3, we'll see a lot of benefit. 00:37
Mostly we need a clever algorithm/data structure pass through the branch before it's ready.
An AVL tree is still arguably the right data structure, but we need to tune our use of it severely. 00:38
If anyone's looking for an evening's worth of low-hanging but high-value work.... 00:39
darbelo Speaking of low-hanging fruit, tucking _buflen into the buffer data tourned out not to be. Strings like to play dirty games with it. 00:41
chromatic I'm surprised. 00:42
Halfway.
darbelo It's probably debugable, since it looked like an issue with externally allocated data. But it will be much easier to do after bacek's branch lands. 00:43
chromatic The immutable string branch? 00:44
00:45 ash_ joined
darbelo Yeah. 00:45
sorear darbelo: R* is also pretty far 00:46
purl okay, sorear.
sorear after the first R* in late May, there will be new blessed bundle releases also called R* every N months
I am not privy to the value of N
darbelo If strings are immutable, then they can't go around poking into each other's buffer's without asking first.
chromatic allison needs more convincing about immutable strings.
She thinks, in part, that it'll make writing more expensive. 00:47
(which is true, but ameliorated by the fact that reads get much cheaper, and they happen much more frequently than writes)
sorear It will. Good thing we don't actually care that much about writing
darbelo We could also indirect through mutable buffers to speed up some operations. 00:48
Whiteknight chromatic: what's an evening's worth of low-hanging but high-value work?
chromatic Fixing the AVL tree in the constant string caching branch. 00:49
sorear At some point I'd like to try and implement type inference in NQP
Coke $P14 = "Capture[0x1ace630]"() 00:50
... that looks wrong. =-)
00:58 abqar joined 01:04 Mokurai joined 01:05 Mokurai1 joined
dalek rtcl-nqp: 867850c | Coke++ | src/Partcl/commands/ (2 files):
eliminate _Tcl::string_trim , it duplicates the helper function for [string trim]
01:12
01:21 leprevost joined 01:29 Mokurai1 joined 01:30 Mokurai joined 01:38 leprevost joined 01:54 Andy joined
dalek rrot: r45438 | petdance++ | trunk/src/key.c:
removed unused var
01:57
02:03 kyle_l5l joined
dalek rrot: r45439 | petdance++ | trunk/src/pmc.c:
removed unused arg from Parrot_pmc_reuse_noinit
02:30
02:46 eternaleye joined
dalek rrot: r45440 | petdance++ | trunk/include/parrot/pmc.h:
re-headerizerd
02:47
02:54 janus joined
dalek rrot: r45441 | petdance++ | trunk/src/pmc.c:
reducing number of exits out of functions
03:20
sorear (what, no comments on the concept of NQP type system?) 03:29
03:56 Mokurai2 joined
cotto It's a nice idea, but part of the idea of nqp is that it's mostly a subset of perl 6. 04:15
I can't say I'd mind some better compile-time checks
though
sorear cotto: I am very speculatively thinking that less wrapper PMCs and more $S and $I variables will mean less garbage while running NQP-rx parsers, which could be a win on a par with immutable strings for bootstrap performance. 04:17
*Rakudo/etc bootstrap 04:18
Alternatively, it could be nearly useless.
cotto My impression was that the lack of non-PMC lexicals was the blocker for anything like that. 04:19
sorear $I0 works fine? 04:21
or are you talking about find_lex
04:21 snarkyboojum joined
sorear thinks NQP doesn't actually need to use Parrot lexicals, since it's such a static language 04:22
cotto "$I0" works fine, but it's still a PMC internally. 04:23
kurahaupo !?
cotto in nqp
nopaste "cotto" at 71.231.102.30 pasted "%I0 is a pmc in nqp" (16 lines) at nopaste.snit.ch/20202 04:25
sorear IREG seems to exist
NQP is not FORTRAN
NQP values are all PMCs 04:26
cotto yeah
sorear I would fix it in a Not Quite Perl6 way - my int $x := 1
as opposed to selecting on the first name character
cotto That could be an improvement.
and compatible with perl 6 04:27
05:06 Mokurai1 joined 05:07 eternaleye joined 05:14 snarkyboojum_ joined
dalek parrot: 7e1353d | dukeleto++ | plparrot.c:
Correct pushing floats onto func_args
05:16
parrot: 113e58a | dukeleto++ | plparrot.c:
Refactor conversion of PG datatypes into Parrot datatypes into the plparrot_push_pgdatatype_pmc function
rrot: r45442 | petdance++ | trunk (3 files):
Hid all the macro logic behind the new ->valid_macro method
05:47
rrot: r45443 | petdance++ | trunk (2 files):
removed redundant copy of extract_function_declarations
06:00 payload joined 06:02 uniejo joined
dalek rrot: r45444 | petdance++ | trunk (2 files):
removed redundant extract_function_declarations and updated the one in Parrot::Headerizer
06:04
rrot: r45445 | petdance++ | trunk (2 files):
encapsualted all the warnings in the Headerizer object, and set them via ->squawk method
rrot: r45446 | petdance++ | trunk/tools/build/headerizer.pl:
removed unused hash %opt
TT #1545 closed by petdance++: Properly split the headerizer 06:09
TT #1545: trac.parrot.org/parrot/ticket/1545
06:12 snarkyboojum joined 06:23 Mokurai1 joined 06:25 Austin joined 06:27 Austin joined 06:31 Mokurai joined
dalek rrot: r45447 | petdance++ | trunk/tools/dev/nci_thunk_gen.pir:
quiet a ton of unused warnings and do some consting
06:36
06:41 pjcj joined
dukeleto what is the best way to see if a ResizablePMCArray is empty from C? 07:03
sorear VTABLE_elements
purl VTABLE_elements is failing likely because mro is null
sorear or VTABLE_get_bool 07:04
dukeleto sorear++ 07:06
GeJ clock? 07:22
purl GeJ: LAX: Thu 12:22am PDT / CHI: Thu 2:22am CDT / NYC: Thu 3:22am EDT / LON: Thu 8:22am BST / BER: Thu 9:22am CEST / IND: Thu 12:52pm IST / TOK: Thu 4:22pm JST / SYD: Thu 5:22pm EST /
07:27 yjh joined 07:36 fperrad joined 07:37 yjh joined 07:39 AndyA joined
dalek parrot: 17bdd73 | dukeleto++ | plparrot.c:
Correct function signature for Parrot_ext_call and refactor a bit

which returns nothing. Also, refactor create_* functions so that the global interpreter does not have to be passed in.
07:39
parrot: b6ffc8c | dukeleto++ | plparrot.c:
Fix signature of Parrot_ext_call and actually get PIR sub return values
07:48 fperrad joined 07:50 payload joined 08:00 payload joined 08:11 payload joined
sorear it appears that the return value of get_pmc_keyed is supposed to be an lvalue 08:26
although I can't keep all these layers of indirection straight in my head
Austin Heh
I thought the return value of get_pmc_... should be a pmc, no?
sorear yes
but pmcs can be lvalueish or rvalueish
my_pmc_thingie = array[12] 08:27
my_pmc_thingie = 5
if array is a RPA, it's just been modified in place
but if array was a RIA, it hasn't been
it's all extremely confusing 08:28
and I have no idea what the right semantics for any operation are
Austin Is this from perl, or from pir?
sorear RIA get_pmc_ returns a duplicate of the stored value
pir
Austin Ahh
sorear RPA get_pmc_ returns an alias of the stored value
which is correct?
Austin You're getting confused by an irritating "feature" of pir
In any case where there is an "operation" on the rhs of an = in pir, the = is really syntactic sugar for a 3-part opcode: 08:29
sorear if Perl is going to be implemented on Parrot ever, then it needs to be able to do lvalue gets
\\$array[12]
Austin my_pmc = array[12]
sorear $$ref = 42;
Austin is really "get_pmc_keyed_int my_pmc, array, 12" 08:30
sorear but if $array could be either RIA or RPA, then it seems this is unimplementable
Austin: cute syntax, but it tells me nothing about how get_pmc_keyed_int is supposed to be used 08:31
Austin On the other hand, in a case where = is the only visible op, then you are looking at an "intelligent" system that maps = to either "bind" (aka set) or "assign"
08:31 riffraff joined
sorear half of parrot treats PMCs as containers, the other half treats them as reference values 08:31
this would be much simpler if the Integer PMC was immutable 08:33
Austin The upshot is that $P0 = $P1 is a pointer copy, while $P0 = 5 is really sugar for set_integer $P0, 5
sorear yes 08:34
Austin For myself, I'd prefer a different syntax. But it's too late for that.
sorear it seems that right now, if you get_pmc_, you need to always clone afterward
since if you're accessing a RPA it might only be an alias and could be changed out from under you at any time 08:35
and if you want to do an lvalue, you need to make a wrapper object
and you should always clone before set_pmc, because it might bind internally
unless I'm hopelessly confused 08:36
which I am
Austin :-$
sorear the upshot of this is that I'm writing PMCs and it appears any combination of semantics is valid for PMCs
Austin You probably need a "reference" pmc. 08:37
sorear (am I coming acrosss as complaining?)
Austin You could fake it with a FPA[1], but ...
sorear What does a reference PMC do
Austin Actually, this is pretty normal. Most people make a lot more noise, or just quietly walk away. 08:38
A reference PMC would enable you to do \\\\\\\\\\\\\\$foo, or whatever.
Sorry.
A Reference PMC ...
sorear What I /want/ is a formal denotational semantics for PASM
Austin Heh
Sure.
moritz wants a ponie 08:39
Austin Email me a copy when you get it.
Moritz, are you on windows?
sorear when I look at Parrot interfaces, PMC* can be an object, or a container
it's like I'm looking at machine code and I don't know if a word is an integer or an address
and... different PMCs implement the same function with different interpretations of the arguments 08:40
Austin Yeah, that's a little irksome..
moritz Austin: only for $work - my whole dev setup is linux
Austin Hmm.. I have you in my mind as knowledgeable about Parrot/win.
Bummer. 08:41
moritz Austin: nope... try jonathan, particle or ... dunno :-)
Austin Sure
08:42 JimmyZ joined
sorear jnthn is definitely a Parrot/win person 08:42
Austin: It's a little irksome for you, who already have Parrot enlightenment 08:43
I have no coherent mental model of what "PMC *" means
Austin Yeah, but I don't have to deal with very many PMC types, so it's only a little irksome.
sorear and I've spent two days completely stalled on Blizkost because of this
Austin PMC* means "object handle"
sorear which basically boil down to "to what extent should the return value of get_pmc_keyed be lvalueish?" 08:44
Austin What are you calling get pmc keyed on? 08:45
sorear Perl5 HASH references
Austin So the key is a string?
(Or does p5 do object hashing now?)
sorear AAAAA
don't. go. there.
Austin Sorry. "String PMC" 08:46
sorear p5 does object hashing too, but only for tied hashes, and my brain will explode if you make me think about that
it's hard enough just contemplating a returned PMC*
now you want me to think about an argument!!!
08:50 eternaleye joined 08:56 eternaleye joined 09:01 clinton joined 09:16 AndyA joined
sorear so, uh, help? 09:21
under what circumstances should get_pmc_keyed return an lvalue?
11:21 lucian joined 11:26 aukjan joined 12:05 bluescreen joined 12:08 bluescreen joined 12:13 whiteknight joined
bacek Good morning, Mr. Whitworth :) 12:15
12:24 preflex joined
Coke brad.livejournal.com/2409049.html 12:31
(how google eats open source developers, and how to help people contribute to your project.)
12:34 preflex joined 12:41 tetragon joined
whiteknight good morning, #parrot 12:44
kthakore whiteknight: morning 12:56
whiteknight good morning kthakore
kthakore whiteknight: or should I say 'squawk!'
12:58 atrodo joined
kthakore I guess not 12:58
whiteknight :)
kthakore whiteknight: so for the lame ness
whiteknight lots of GSoC proposals! That makes me happy 12:59
kthakore whiteknight: yup
whiteknight: who new perl hackers wanted to do game stuff 13:00
whiteknight: I see 7 apps related to games
:)
makes me happy
atrodo I wish GSoC was around when I was in school
13:02 Andy joined 13:04 smash joined
smash hello everyone 13:04
whiteknight good morning smash
dukeleto: ping
13:05 hudnix joined
whiteknight looks like TPF has 17 proposals total so far. By my count, 6 of those target Parrot specifically, and 1 more targetting Rakudo which could have some benefit to Parrot as well 13:09
so that's quite a nice haul
as for how many slots we get, and how many of these proposals for Parrot get accepted, that's a different story entirely 13:10
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33064), fulltest) at r45447 - Ubuntu 10.04 beta amd64 (gcc with --optimize) 13:11
moritz in the last two years we got about $slots == .8 * $appplications, but I guess in both cases there was a good deal of luck involved
in particular I've heard from other organizations that their factors were much smaller 13:12
PerlJam also haven't there been 2 rounds of slot allocation? The initial allocation and then when there are "extra" slots from other orgs, they redistribute them 13:13
moritz yes, but the second round usually changes not much 13:15
+/- 1 slot usually
particle we had 16 apps last year, ~15 good enough, and 6 slots
er, 26 apps last year 13:16
proposals, applications, whatever. gosh, i'm tired.
moritz that many? 13:17
wow, my memory must have tricked me 13:18
kthakore particle: yes I es 13:20
particle: tired
13:20 Mokurai joined
kthakore particle: wow how did you choose out of 26 for 6 slots? 13:20
particle the first pass makes sure the proposals meet our criteria, all fields filled out with enough detail, etc 13:22
we determine how many mentors we have, and how many projects we can take on
(last year, we had 44 prospective mentors, and enough to handle 6 for any sub-project (bricolage, p5, p6, parrot)) 13:23
moritz and then, we vote
particle then, all prospective mentors vote
ewilhelm created an app that makes sure that mentors vote according to the rules we set up 13:24
only a certain amount of votes total per mentor, only +1, 0, -1 votes allowed per application
then there is a subjective look at the proposals: 13:25
moritz I think most mentors are not yet aware of these rules :-)
particle of those ranked lowest, who are likely to succeed?
this is usually done by the org admins, and subproject experts 13:26
Coke petdance - what is wrong with "fail early" to exit a function?
er, also Andy.
13:26 ruoso joined
particle after that, we submit a request for the amount of slots 13:26
and we wait. 13:27
Coke msg andy - r45441 - what's wrong with "fail early" to exit a function?
purl Message for andy stored.
13:32 atrodo joined
PerlJam wishes the stupid socghop app weren't as stupid. 13:33
I want to sort by rank, so let's see ... 1,10,11,12,2,3 ... yeah, that's perfect. 13:34
:(
mikehh rakudo (6b54693 builds on parrot r45447 - make test PASS, spectest_smolder (pugs r30336 -> #33035) FAIL - Ubuntu 10.04 beta amd64 (gcc with --optimize)
rakudo - t/spec/S06-multi/syntax.rakudo - Failed tests: 21-22
rakudo - t/spec/S05-mass/properties-general.rakudo - TODO passed: 4-6, 11-13, 544-546, 550
Coke someone just complained about that. have we filed a bug y et?
PerlJam has no idea how to file a bug on that 13:35
moritz submitted a bug report
Coke moritz++ 13:36
PerlJam moritz++ indeed
mikehh the rakudo smolder test is #33065
moritz turns out it was a dupe: code.google.com/p/soc/issues/detail?id=847 13:39
it seems fixed, but the fix is not yet deployed
13:46 payload joined 13:51 GodFather joined 13:55 atrodo_ joined 13:58 patspam joined 14:10 ascent_ joined
Coke just had someone in #perl6 ask about TT#827. 14:12
14:23 Andy joined
Coke wonders why And<TAB> hits AndyA first. 14:26
Andy: hio.
Andy hey Coke
I wanna find more attributes! 14:31
14:35 bubaflub joined 14:36 integral joined 14:41 theory joined
dalek rrot: r45448 | petdance++ | trunk/src/global_setup.c:
removed unused variable
14:49
rrot: r45449 | petdance++ | trunk/config/auto/warnings.pm:
Add new flags for cage mode under ICC
Andy Just discovered how to turn on the cranky warnings in ICC. Lots of goodness there. 14:56
15:02 lucian joined
dalek rrot: r45450 | petdance++ | trunk/src/runcore/main.c:
Comment out code only used with computed GOTO
15:05
15:17 payload left 15:31 cotto_work joined
dalek rrot: r45451 | petdance++ | trunk (2 files):
marking functions with annotations
15:54
16:00 davidfetter joined, Maddingue joined 16:11 theory joined 16:21 senf_statt_oel joined 16:24 payload joined 16:33 jan joined 16:44 ash_ joined
dalek kudo: 6b54693 | (Ingy dot Net)++ | src/Perl6/Module/Locator.pm:
Patched rakudo to look for .pm6 modules.

Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
16:45
cotto_work www.fourmilab.ch/documents/apostrophe/ 17:11
ash_ i like theoatmeal.com/comics/apostrophe 17:16
17:31 ash_ joined 17:36 whiteknight joined
cotto_work morning whiteknight 17:40
whiteknight hello cotto_work
17:50 joeri joined 17:57 doubi joined
Coke parrotsketch? 18:06
purl rumour has it parrotsketch is a status meeting for parrot core committers held every Tuesday at 20:30 UTC in #parrotsketch
Coke whiteknight: someone on #perl6 was asking after the option to limit the amount of memory used by parrot. 18:13
(just to bump that up ever so slightly on your priority list.) 18:14
whiteknight Coke: okay, will look at it soonish
18:14 petdance joined
Coke danke. 18:15
18:18 Coke joined 18:24 senf_statt_oel left 18:25 mikehh joined 18:32 chromatic joined
chromatic ccl.clozure.com/manual/chapter16.4.html 18:43
PerlJam chromatic: that's the GC algorithm you're going to implement next? :) 18:49
chromatic I don't see the word volunteer anywhere! 18:50
darbelo A compacting collector? I thought parrot was morally oposed to those?
PerlJam Actually .... where's a gsoc student when you want one?
19:05 ash_ joined
dalek nxed: r442 | julian.notfound++ | trunk/examples/packfile.winxed:
print offsets in hexa in pirado disassemblies
19:07
chromatic Coke, Andy, I'm curious about r45441 as well.
Andy ?
you mean trac.parrot.org/parrot/changeset/45451/ ? 19:08
oh, I see
OK, what are you curious about? 19:09
chromatic Why? 19:10
Andy Why what?
chromatic Why did you make that change? 19:11
Andy "reducing number of exits out of functions"
chromatic Pretend I'm not a third grader. Why is reducing the number of exits out of functions useful?
Coke I think the readability of "fail early" trumps that.
Andy If what you're really saying is "I don't think that was useful", then just say that. 19:12
chromatic I can't tell why it's useful, that's why I'm asking why you did it.
Coke there's a difference between "I don't think that's useful" and "why do you think that's useful".
Andy Because I think having fewer, ideally one, exits from a function is generally safer. 19:13
Is this a bizarre, unheard of concept?
Have you never heard of that before?
Coke safer how?
chromatic Like I said, pretend I know a little bit about C and have some programming experience.
Coke (I'm not trying to be a jerk.)
Andy It sounds like you're fucking wth me to make a point.
Coke me? no.
chromatic I'm asking you a sincere, honest question.
Coke sounds like you're overly defensive. 19:14
Andy OK, I apologize then.
Because usually "Please explain to me why you did this" is the prelude to "I'm now going to tell you why you're full of shit."
dalek rrot: r45452 | mikehh++ | trunk/src/runcore/main.c:
fix codetest failure - Correctly indented preprocessor directives
chromatic I hope that's not the case on #parrot at least. 19:15
Andy Fair enough.
moritz so how would you ask why somebody did something as an honest question?
PerlJam Never on #parrot that I've ever seen
moritz: less tersely :)
Andy In general, I try to keep a single exit point from a function, almost as reflex. 19:16
www.c2.com/cgi/wiki?SingleFunctionExitPoint
Austin The 45451 that I see is "marking functions with annotations" ...?
Andy Austin: no, wrong one. 19:17
I poisted the wrong link
Austin Oh
Andy Plus, in this case, what we're really saying is "If we have to change it, here's what you do."
I see "return pmc" x2 as DRY.
Austin: trac.parrot.org/parrot/changeset/45441/ 19:18
chromatic I don't know; if guard clauses violate DRY, that seems very, very DRY.
Andy Well, you say "guard" and I don't think that's right. 19:19
Should it actually be an error if we ask for a change in type if it's already that type?
Coke I can definitely see the appeal if you're duplicating more than a return statement.
Andy Sould that if actually be an assert()?
chromatic In a dynamic language, I think that'd be harder to work around the assert (and that, only if you're using a debug build) than making this an early return no op. 19:20
You'd effectively move the "are these the same types?" checks to every place which calls this function, rather than within the function. 19:21
Andy Again, not sure of the intent.
We're not really guarding against anything.
Austin Anyone know how to access a *program* environment from within a *dll* in windows? 19:23
Coke www.c2.com/cgi/wiki?GuardClause seems to indicate that these are also used as 'checks for trivial cases'.
Andy I'm really not up for a debate.
I explained. 19:24
Coke Andy: harsh.
Andy Why?
I'm not interested in debating. I'm just not.
If you think it should be changed back, then let's deal with that.
Coke I think it's more readable the other way, yes. 19:25
Andy I'm not pissed that you want to debate. I just don't want to take part in it. :-)
chromatic I don't particularly care about this one. I think it's easier to read the other way too, but it's not sufficiently more readable that I want to debate it either.
PerlJam would have written it the other way too
Andy I have nothing invested in it.
chromatic I'd rather find out if you're likely to refactor other functions this way, and if so I think it's a matter of coding style to discuss.
19:26 smash joined
Andy Depends on the amount of DRY involved. 19:26
smash hello everyone
cotto_work hi smash
chromatic Well if "return pmc" is sufficient to trigger your DRY reflexes, there are a lot of potential candidates. 19:27
tewk I prefer the early exit.
Andy If I promise not to do it again, can we stop talking about it? 19:28
chromatic For everyone preferring the early exit, is this because you see it as a guard clause?
Andy "return pmc" is inadequate for DRY. Got it.
I defer.
mikehh BTW I am getting hundreds of warnings of the form: 19:29
src/nci/extra_thunks.c:78: warning: ignoring return value of ā€˜PMC* Parrot_pcc_build_call_from_c_args(parrot_interp_t*, PMC*, const char*, ...)’, declared with attribute warn_unused_result
Andy any other functions besides that? 19:30
mikehh which I did not get in my last build at r45447
Andy i'm working on it mikehh
tewk dynamic type checks at the beginning of a function are really contract checks, returning early is the C equivalent of throwing an exception because the contract was violated.
Andy there's no disagreement, tewk
mikehh: You getting problems with anything beside Parrot_pcc_build_call_from_c_args ? 19:32
tewk single return in such cases makes me think the contract is part of the semantics of the function, not just a pre condition, thats why I like early exit.
Andy++ for cleanup and C safety
mikehh Andy: Yes mostly nci related 19:33
Andy ok, what other functions?
what are you buildling that causes these warnings?
mikehh make corevm/make world
Andy specific target in make world I can focus on? 19:34
mikehh fulltest PASSes though - it's just warnings
let me go through the log
Andy I'm wondering what you built that threw all those warnings, such that I'm not building it and therefore seeing them as well 19:36
PerlJam mikehh: did you do a "make realclean" prior to your build? 19:38
cotto_work src/extra_nci_thunks.c generates many warnings
Andy when did you last update, cotto_work > 19:39
chromatic On a quick skim, it almost looks like removing that function call from several NCI thunks would work just fine.
cotto_work just now
purl Now!? I'm not even close to ready!
cotto_work core_thunks too
Andy mikehh: svn up and those warnings should disappear 19:40
cotto_work: Do a make realclean
cotto_work that's after reconfig, which does realclean
Andy and you get a bunch of warnings in nci_thunks? What warning specif? 19:41
chromatic Okay, wait. 19:42
Andy for?
purl for fun.
chromatic Parrot_pcc_build_call_from_c_args() shouldn't be ignorable.
Andy it's ignored all the time.
cotto_work nm. seems to be happy now 19:43
chromatic It's dead code in those cases.
Andy ok
cotto_work not necessarily correct, but happy
Andy so it's building a call that we're just throwing away?
chromatic I'm 95% certain of that.
Andy and the real problem is that we're calling Parrot_pcc_build_call_from_c_args for now reason?
chromatic Yes.
Andy well awesome.
chromatic Yeah, the warning found dead code. That's very good. 19:44
cotto_work warnings++
darbelo (dead code)--
Andy ok, so I'll go reverse the warning AGAIN
chromatic Thanks. 19:45
Andy glad to get shit done. :-)
chromatic You could always argue about something or other on p5p. That looks like a peculiar type of fun. 19:46
Andy I'd rather not.
If you haven't noticed, I'm not one for arguing for enjoyment.
chromatic I've known you too long to believe that.
dalek rrot: r45453 | petdance++ | trunk (2 files):
Parrot_pcc_build_call_from_c_args is actually ignorable
19:47
Andy Believe it.
I don't argue for fun.
I'm the anti-arguer.
Which is why I didn't want to get into the early return debate.
Coke oh, I had meant to complain - why do we have "#if 0" in parrot? can't we just rip all that out? 19:48
Andy Coke: I've been pulling it out where I see it.
Coke I guess complain is the wrong word.
Andy No, i don't think so. #if 0 sucks. :-)
We have version control to take care fothat. 19:49
chromatic Yes, please delete it.
Coke whee. danke.
Andy Related, I am giving a talk in Columbia, SC in a week on what kids don't know coming out of college
kids = programming
darbelo We also have #if DEFINE_THAT_DOES_NOT_EXIT_ANYMORE in a few places. 19:50
Andy darbelo: seems an easy fix
cotto_work Yeah. Change it to 0.
mikehh Andy: that seems to have cleared up most of the warnings
cotto_work ;)
darbelo I've ripped out the ones I've seen.
Andy mikehh: They're coming back next commit. :-)
doubi 'evening all. I'm working on a GSoC application (for porting ctypes to perl) and it was suggested that I ask in here if anyone knows much about C/Invoke as compared to other FFI libraries?
darbelo But the could be more. 19:51
PerlJam Andy: will the talk be recorded or transcribed in some way?
Andy PerlJam: Dunno
I'll have the slides up on slideshare
PerlJam Andy: I've some some student workers who are going to graduate soon who could use another voice other than mine telling them all the things they don't know :) 19:52
s/some/got/
Andy I'm oing to put up my mindmap for it
and I welcome input.
#1 on the list: Build systems. 19:53
chromatic msg sorear If you find the Parrot development ethos "appalling", this is the place to discuss it.
purl Message for sorear stored.
Andy #2: version control
purl i think version control is like backups. You advise your customers to do it.
Andy chromatic: What was that in response to?
chromatic Non bug reports not filed here.
Andy so, bitching?
chromatic I'm not going to categorize it as anything other than "I can't fix bugs no one reports." 19:54
Andy petdance.com/random/mindmap.png 19:56
Rough order of presentation is down the left side, then down the right side 19:58
and I have to say, I rather like freemind.
Austin Heh
Andy freemind is mind-mapping software at freemind.sourceforge.net/
Austin I'm laughing at the part in the middle...
"Day 1" 19:59
Andy which?
purl which is bad because it means that a role can generate different methods for different classes
Andy I don't get the funny.
Austin How long is this talk supposed to be?
mikehh oh forgot to report
All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33071), fulltest) at r45452 - Ubuntu 10.04 beta amd64 (g++ with --optimize)
Andy Austin: an hour
PerlJam Andy: Neat. I've been trying to get a "software craftsmanship" course offered locally that would cover everything on the left but Business. Unfortunately the local profs seem to think there's adequate coverage of these topics (while I have 5 very-bright students near the top of their class who had no clue about most of these things) 20:00
Andy I origiinally framed it around telling students what they're missing, but the real target is the educators.
posscon.org/april-16th-day/ 20:01
11:30am
PerlJam Andy: 2 of the students recently went on job interviews and told me that the things they've learned here figured prominently in the interview.
Andy Where is "here"?
purl hmmm... "here" is where? There are -4 stores EVERYWHERE in Taiwan
PerlJam Andy: Corpus Christi TX, Texas A&M University Corpus christi 20:02
chromatic I wish schools had a software craftsmanship class.
dukeleto Andy: the book "Apprenticeship Patterns" from O'reilly would probably interest you.
PerlJam Andy: (I work at a research institute on the campus)
Andy dukeleto: Written by fellow Chicagoan Dave Hoover, as I recall.
Yeha, he took our standing Perl Mongers meetings and started a Polyglot Programmers group 20:03
20:03 theory joined
Andy I dont' even care about it from a craftsman point of view. 20:04
I would just love it if, for example, they gave out assignments like "You ahve to do project X. Your one deliverable to me at dd/mm hh:mm is a URL to your repo that I can check out and build with setup.sh"
Or 20:05
"Here is a steaming shitpile of code. Add feature X to it."
PerlJam heh.
Andy Because THAT is what the student will be doing on dayone.
chromatic Al Aho's compilers class does something like that. I was jealous.
PerlJam yep
Andy Not starting on green field development.
"Yeah, uh, we're between projects, so, uh.... go look at ticket #2112 and fix it."
dalek rrot: r45454 | petdance++ | trunk (2 files):
In fact, Parrot_pcc_build_call_from_c_args should NOT be ignored. If it is called without saving the return value, then it is dead code. The warning is a flag that we need to change that dead code.
Austin That's probably the way to sell it to professors. 20:06
Andy chromatic: Are you getting the many errors at src/extra_nci_thunks.c ?
PerlJam A good class would be how to turn "steaming shitpile" into "nice, clean, refactored" code.
Andy s/error/warning/
chromatic I'm building and checking now, Andy.
Andy That's why I'm giving this talk. :-)
Austin They've already got a pile of code that they've been working on for a while - and because they're academics, it's crappy code almost by definition. 20:07
chromatic Andy, I am.
Andy chromatic: Good!
Austin So the assignment would be "deliver to me a patch for an open ticket, or an update to the ticket that explains why it can't be patched, for my steaming pile of phd research"
They'd love you. 20:08
Andy I'm just here to be the voice of the working world.
Austin How'd you get involved with that?
Andy One of the organizers saw me at OSCON last year, asked me to talk 20:09
'cause Saturday is a 2-hour resume + interviewing talk posscon.org/april-17th-day/
dalek kudo: 8681735 | smashz++ | (2 files):
Implement getc funcion in IO, add getc.t to spectest.data
Austin Were you talking about the same stuff at oscon? 20:11
Andy just job hunting 20:15
20:27 bluescreen joined
Andy I'm interested in what is being done with the headerizer. 20:29
Wondering who was working on splitting it out.
Even if he/she caused me pain in the process. :-)
Coke I'd check with blame, but that sounds like the sort of cleanup kid51 does.
your pain sounds familiar enough I nearly looked for a ticket to see if I already complained about it. 20:30
Andy it was just incomplete refactoring.
Coke In fact I did. 20:31
trac.parrot.org/parrot/ticket/532
Andy Donde?
purl Donde is where, not why
Andy ALSO
can you look at RTs # 39085 and #39917 and either reject them or migrate
I have had that as a todo in my task list FOREVER
it's from you
Coke parrot doesn't have any rts any more. 20:32
Andy That's what I figured.
Coke those are now: trac.parrot.org/parrot/ticket/1291
... and an RT error. 20:33
Andy oh, good, so I already didit!
yay me!
I think my next big thing will be consting the ops. 20:34
darbelo Consting the PMCs might be worthwhile too. 20:38
dalek rrot: r45455 | chromatic++ | trunk/lib/Parrot/Pmc2c/PCCMETHOD.pm:
[lib] Removed a warning message about ignoring the return value of
20:39
rrot: r45456 | chromatic++ | trunk/tools/dev/nci_thunk_gen.pir:
[NCI] Removed a warning about ignoring the return
rrot: r45457 | chromatic++ | trunk/src/nci/core_thunks.c:
[NCI] Removed a warning about ignoring the return
rrot: r45458 | chromatic++ | trunk/tools/dev/nci_thunk_gen.pir:
[NCI] Removed a warning about ignoring the return
rrot: r45459 | chromatic++ | trunk/src/nci/core_thunks.c:
[NCI] Regenerated core NCI thunks to avoid warnings.
chromatic Summary: it's not dead code, but it's a confusing API. 20:40
Andy darbelo: I would like to if we could consistently, but unless we change the typedefs of the function pointers, it's worthless.
It doesn't matter if the function is a const, because the caller has to know it's feeding stuff into const. 20:42
There's a LOT I would like to const, but all these dispatch tables make that pretty undoable. 20:44
ttbot Parrot trunk/ r45459 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/255713.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ )
Coke oooh, someone broke the build! 20:47
darbelo B-b-b-buildbreaker! 20:48
Coke chromatic, looks like either 45457 or 45458. 20:49
inder-tt1/client-data/Parrot-trunk-temp/src/nci/core_thunks.c:1274: undefined reference to `_imp__Parrot_str_new_constant'
cotto_work So if the return value of Parrot_pcc_build_call_from_c_args in those nci thunks was ignored, why wasn't stuff exploding? 20:50
Andy couldn't be me, I've never broken a build in my life.
<cough>
Coke Andy: ^_O
Andy cotto_work: Because they were called unnecessarily, I assume.
It was just extra work getting done.
chromatic No, they're necessary. The API doesn't make it obvious. 21:02
Those calls *set* return values in an existing CallContext.
darbelo Misleading, evil, functions. 21:03
chromatic Yeah, we should probably break them into two separate functions. 21:04
allison might not like that though; she really wanted to unify the paths.
darbelo The returning is just another call thing? 21:07
chromatic Yeah, that's the nice thing about CPS. 21:08
The problem is, the C API doesn't make that obvious.
If you ignore the CallContext created when you're making a call, that's a problem.
darbelo So, C needs continuations ;)
Andy If they're setting return values as a side effect, then why is it not ok to ignore the reutrn values?
chromatic If you ignore the CallContext returned when you're invoking a return continuation with the CallContext you're passing in (which is the same one which you get returned), it's not a problem. 21:09
Andy what is nci anyway?
purl nci is Native Call Interface or the National Cancer Institute, a part of the NIH or national cancer institute
darbelo Andy: Sometimes it's ok, sometimes it's not!
chromatic NCI lets you call functions in shared libraries from Parrot.
Andy src/nci/*.c are not getting headerized.
Soon they will be. 21:10
chromatic A Parrot_pcc_build_return_from_c_args() which returns nothing would clear all of this up. 21:11
dalek rrot: r45460 | chromatic++ | trunk/src/nci/core_thunks.c:
[NCI] Removed a spurious, build-breaking #define
21:12
21:12 Whiteknight joined
darbelo Hi, Whiteknight. 21:13
Whiteknight hello darbelo
cotto_work Wow. fperrad sure seems to like writing pir. 21:28
dalek rrot: r45461 | fperrad++ | trunk (7 files):
[library] add a TAP parser
darbelo Fortunately, he also seems to be quite good at it. 21:29
cotto_work Sure. I'm just curious why he didn't use nqp to write a parser. 21:30
That's one of nqp's strong points.
PerlJam he really likes PIR :) 21:31
darbelo I think dukeleto had tried to write a TAP parser in nqp and found it horrybly slow. 21:32
(The parser, not NQP)
cotto_work That's surprising. I thought it was a very simple language. 21:34
Andy Does pir support includes? 21:35
cotto_work yes
.include "foo.pir"
Andy I'm trying to figure where Parrot_nci_load_core_thunks is getting created
darbelo But they're dumb text-replacement ones. 21:36
cotto_work tools/dev/mk_nci_thunks.pl 21:42
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33072), fulltest) at r45460 - Ubuntu 10.04 beta amd64 (gcc with --optimize)
dalek rrot: r45462 | petdance++ | trunk (2 files):
headerizing src/nci/api.c. There are two other functions in include/parrot/nci.h that have redundant declarations
21:44
rrot: r45463 | petdance++ | trunk/tools/dev/nci_thunk_gen.pir:
consting
22:01
22:13 snarkyboojum joined 22:17 plobsing joined
plobsing hi #parrot 22:18
Coke why are we adding a tap parser to parrot?
Andy is looking at cppcheck sourceforge.net/apps/mediawiki/cppc...=Main_Page 22:19
In Perl, every program will expand until it is able to parse TAP. 22:20
Coke I thought the plan was to reduce our runtime/library and push that into plumage. 22:21
Andy I don't know, I'm just making funnies. 22:22
plumage?
purl plumage is the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth. The repository is at gitorious.org/parrot-plumage/parrot-plumage and the design docs are at trac.parrot.org/parrot/wiki/ModuleEcosystem
Coke also, I wonder how this is supposed to relate to tapir.
22:23 arnsholt joined
darbelo Coke: Ask fperrad. My guess is that it's for distutils. 22:26
Coke I guess I'd like to see some discussion on list or in a ticket before changing the library. 22:27
(or after.) 22:28
darbelo You are just in time for after ;) 22:30
dalek rrot: r45464 | petdance++ | trunk/tools/dev/nci_thunk_gen.pir:
Removed declarations in source file that are redundant to the header file
22:34
rrot: r45465 | petdance++ | trunk/include/parrot/nci.h:
move non-headerized functions up top so we can see they are not headerized
cotto_work Coke: you can ping fperrad 22:38
22:44 snarkyboojum left
dalek rrot: r45466 | petdance++ | trunk/src/pmc/lexinfo.pmc:
Removed unused attrs var. Consted some lexicals.
23:07
darbelo The keys in config_lib.pasm definitely need some review. 23:09
"HAS_OPENGL" vs "has_opengl" 23:10
include/parrot/compiler.h 23:11
Eh, the last line was a mis-paste. 23:12
japhb darbelo: the opengl detection sets several redundant flags mostly because (at the time, at least) *other* detection steps did the same. It was cargo-culted, because I had no idea why other steps did that. 23:13
chromatic The more we cut from that file, the faster Parrot will start.
japhb I have no objection to man walking on the moon. 23:14
darbelo japhb: Oh, I'm not singling you out at all, there's plenty of cruft in there to go around ;)
japhb :-)
darbelo There's also what apears to be a lot of redundant definitions of integer types. 23:15
23:16 theory joined
darbelo And I'm pretty sure all of the _provisional keys aren't supposed to be there at all. 23:16
Whiteknight are there any .NET coders around here? 23:20
arnsholt I know a bit about .Net 23:21
darbelo I am within five meter of one ;)
nopaste "whiteknight" at 68.46.29.192 pasted "Parrot running in C#" (36 lines) at nopaste.snit.ch/20218 23:23
Whiteknight take a look at that nopaste. It works in mono on my machine
dalek rrot: r45467 | petdance++ | trunk/src/pmc_freeze.c:
consting
23:24
rrot: r45468 | petdance++ | trunk/src/pmc/unmanagedstruct.pmc:
removed unused return value from calc_offsets. Consted locals.
darbelo Whiteknight++
Whiteknight It's not exactly pretty, but could be cleaned up a little bit
darbelo A C# wrapper of our embed/extend API could be nice to have. 23:26
23:26 kid51 joined
Whiteknight darbelo: I was thinking that exact thing 23:26
japhb Whiteknight++ indeed 23:27
darbelo wonders about runtimes within runtimes. 23:31
japhb If m.c. escher was a modern computer scientist .... 23:32
cotto_work cool project a co-worker is working on to make OSS suck less on Windows: arst.ch/iaa 23:33
darbelo Package management for windows? I'm already scared. 23:35
dalek rrot: r45469 | plobsing++ | trunk/src/nci/api.c:
build_call_func will actually never return null
23:40
23:46 tetragon joined, ruoso joined
darbelo Though, from reading the comments, the guy doing it seems to have put some serious thought into doing it right... 23:47
darbelo chuckels at "Being an open source developer at Microsoft is kindof like being a preacher in Vegas" 23:49
kid51 cotto_work: Are those developers in contact with the Strawberry Perl folks? 23:52