Parrot 2.1.1 Released! | parrot.org/ | Tasks: PCC deprecations hackathon on Saturday, TT #389 branch
Set by moderator on 2 March 2010.
00:07 petdance joined, petdance_ joined 00:19 cotto_work joined
Coke waits for folks to tell him how broken his branch is. 00:20
ash_ does parrot have file encoding detection? 00:21
00:22 bubaflub joined
Tene Coke: is x86_64 linux gcc gnu make a useful test? 00:23
Coke can't hoit.
Tene okay, I'll think about it after I take a nap
ash_: not as far as I know 00:24
ash_: doesn't ICU have something to do that? You could probably build something to do it pretty easy
dlfunc the function from libicu 00:25
ash_ hmm, okay, i know someones trying to figure out how to do it in rakudo, was going to see if there was an easy way, maybe if lue in #perl6 is working on it,
icu has it
Tene yeah, dlfunc libicu
ash_ but icu is optional, so, yea
for now, icu seems fine, but maybe we can re-write it in pure parrot/perl6 (which is eventually parrot) 00:26
cotto_work icu is comparable to parrot in size 00:28
Tene sup dawg, I heard you like parrots.
cotto_work nom
Coke hurm. if I have merged from trunk to branch and resolved all conflicts there, why does a mergeback to trunk have more conflicts? 00:31
Tene because svn fail? 00:33
cotto_work It might be because of svn-- 00:34
00:42 rblackwe joined 00:45 patspam joined
Coke ... do we support win9x? 00:49
I vote no on that one.
(TT #471) 00:50
cotto_work no we don't
I'm pretty sure that decision was made explicitly at some point. 00:52
00:53 abqar joined 00:58 snarkyboojum joined
mikehh Coke: couple of problems with config 1) --optimize both g++ and gcc - init::optimize - Enable optimization...Use of uninitialized value in string eq at config/init/optimize.pm line 92 00:58
00:58 tetragon joined
mikehh Coke: 2) with g++ the post-config test I reported before 00:58
Coke: some codetest failures - looking at now 01:00
01:04 theory joined
dalek TT #471 closed by coke++: [PATCH] stops spawnw tests from running on Win9x 01:05
Coke mikehh: you don't have 'cpuarch' defined in config? 01:07
mikehh Coke: as far as I can see - yes (from config_lib.pasm -> set P0["cpuarch"], "amd64") 01:21
Coke mikehh: hurm. wonder why you're getting that error. 01:23
mikehh Coke: looking 01:27
Coke: auto::arch comes after init::optimize 01:33
01:39 Whiteknight joined
cotto_work wanders off to do not work things 01:44
Whiteknight (not work)++ 01:46
02:07 tetragon_ joined, parthm joined
Coke finally gets gcc installed on his mac. 02:09
dukeleto 'ello 02:10
02:28 parthm left
dalek tracwiki: v20 | whiteknight++ | CallingConventionsTasklist 02:30
tracwiki: Mark a few items completed which I either know to be completed or are so vague that I'm just going to say "yeah, it's probably done"
tracwiki: trac.parrot.org/parrot/wiki/Calling...ction=diff
02:35 eternaleye joined, hercynium joined
cotto It appears that I can now cross "set off the fire alarm" off my todo list 02:42
itwb if headerizer didn't touch files that didn't need to be changed. 03:11
s/itwb/iwbn/
plobsing cotto: I hear ya. ditto on configure (though that might be harder) 03:13
03:29 atrodo joined
dalek rrot: r44612 | cotto++ | trunk (4 files):
[ops] remove unused prederef and reserved ops and supporting code/docs
03:31
rrot: r44613 | cotto++ | trunk (2 files):
[ops2c] remove some unused enums from op_jump_t, plus supporting code
rrot: r44614 | cotto++ | trunk/PBC_COMPAT:
[pbc] PBC_COMPAT bump from previous op changes
03:35 janus joined
dalek rrot: r44615 | cotto++ | trunk (3 files):
[ops] remove used but unnecessary PARROT_JUMP_ENEXT
03:47
03:54 petdance joined
dalek rrot: r44616 | cotto++ | trunk/MANIFEST.SKIP:
[MANIFEST] manifest skip update
04:04
rrot: r44617 | cotto++ | trunk (2 files):
[ops] remove PARROT_JUMP_ABSOLUTE, which also appears to be unused
04:20
04:31 parthm joined 04:33 kthakore joined
dalek rrot: r44618 | cotto++ | trunk/lib/Parrot/OpsFile.pm:
[ops2c] simplify code some, remove unused OP_SIZE
04:37
parrot: c191159 | dukeleto++ | (2 files):
Give pgTAP a much-needed haircut and forego using pg_prove

version of Postgres that is being used. We get rid of all functions that deal with schema-verification and use psql directly instead of using pg_prove, so as to not have another external dependency that users need to run our tests. Your welcome.
04:49
cotto my welcome?
dalek rrot: r44619 | cotto++ | trunk (2 files):
[ops] remove unused flags member from op_info_t struct
04:53
dukeleto cotto: yes, your welcome :) 04:56
dukeleto can't spel
04:59 slavorgn joined
dalek parrot: e757b80 | dukeleto++ | (2 files):
Add a note about using pgTAP Lite and update TODO
05:00
05:03 GeJ joined
dukeleto anybody here a moderator on parrot-dev ? there is an important-ish email waiting in the queue 05:06
Parrot_String objects seems to only be defined if PARROT_IN_CORE is defined. is that by design?
cotto I think Coke would be a good person to bug about parrot-dev issues. 05:07
parthm hello. i am running the languages/examples/squaak factorial example available in 2.1.1 but I cant seem to get the right result pastebin.com/kAQ1J4VJ 05:28
dukeleto is reading comments in src/extend.c . scary 05:33
parthm: maybe try sprinkling in some print statements to see what is going on? 05:35
did Parrot_call_sub get renamed recently to something else? 05:36
oops, no, there it is in parrot/extend.h
parthm dukeleto: it seems n < 2 is returning true. pastebin.com/uqFdeKxS 05:40
dukeleto parthm: sounds like you found a bug :) maybe < is broke in squak? 05:41
oh my. mod_parrot includes parrot/parrot.h . isn't that a big no-no ?
parthm dukeleto: i am just starting to learn parrot (and perl 5/6) so my debugging abilities are fairly low :-P so should i just go ahead and file the bug? 05:42
dukeleto parthm: sure. if you go to trac.parrot.org and make an account, you will be able to create bug tickets, and that would be greatly appreciated 05:44
parthm: i would also email your example to parrot-dev if you think there is a bug. usually i would say parrot-users, but what you seem to have found is actually a bug, not just a user question 05:45
parthm++
parthm: creating tickets will give you some karma, as well :)
karma parthm
purl parthm has karma of 1
05:48 Austin_Hastings joined
parthm dukeleto: trac.parrot.org/parrot/ticket/1494 :-) i am quite excited about parrot. will also report on parrot-dev 05:49
dukeleto parthm: sweet! welcome to the party :) 05:50
parthm: yes, email parrot-dev and reference the ticket you just made, and somebody should tell you what is up, or fix it :) 05:51
cotto Clearly it should be using the fact op. 05:54
dukeleto cotto: that doesn't fix the fact that < is broken 05:59
dukeleto attempts to not feed the trolls 06:00
bacek_at_work cotto, holley schitt. r44619. flags aren't used at all?
So we reduced scope of opsc! :)
cotto exactly 06:01
I made lots of small commits so that it's easy to bisect anything that splodes, but opsc just got easier.
cotto is hungry for troll foods 06:02
also, soup ingredients
time for shopping 06:03
dalek TT #1494 created by parthm++: factorial example in languages/squaak gives incorrect result
parthm fwiw (n == 0 or n == 1) makes factorial work ok :-) 06:05
dukeleto parthm: if you want to attach a patch to the ticket, someone can apply that. at least the example will work. but it would be nice to fix < 06:09
06:10 snarkyboojum joined
parthm dukeleto: maybe having < in isn't such a bad thing. its a good test case. creating the patch shouldn't be a problem though. 06:13
dukeleto parthm: we should definitely fix < in squak, but having a working example is nice too. does squak have actual tests? it seems that it should 06:16
parthm: but yes, I agree. using < in the example is kind of a like a test :) 06:17
parthm dukeleto: there is the t directory with some tests. how do i run the tests. README doesn't seem to say anything. 06:20
dukeleto: nevermind. parrot setup.pir test. 06:26
the problem seems to be with the argument passed. n < 2 == 1 but with constants 10 < 2 == 0. 06:35
06:45 chromatic joined 06:54 fperrad joined 07:08 bacek joined, uniejo joined
bacek o hai 07:30
cotto ohelo 07:33
treed ehlo
bacek cotto, I can't spot any usage of PARROT_JUMP_RELATIVE 07:34
looks like we can kill it (and jumps field inside ops) 07:35
cotto There's on in src/debug.c
bacek any real usage 07:36
cotto There's also some direct uses of op_info->jump. At this point that's equivalent to checking for PARROT_JUMP_RELATIVE. 07:37
bacek ah, ok.
I missed this one
cotto If you can get rid of the one in compilers/imcc/parser_util.c and the one in src/debug.c, we're golden. 07:38
I'm not sure if it's possible or not
bacek hang on a scond
It's in OpCode.pm 07:39
cotto grabs a scond
bacek :)
cotto The ones in src/pmc/opcode.pmc can be ignored. That's just exposing the information. 07:40
bacek I couldn't find anything in compilers/imcc...
cotto compilers/imcc/parser_util.c +1362
bacek there is only 1362 lines in this file.. 07:41
cotto It makes me think of a line from Predator
bacek and last one with coda
cotto sorry. 551
bacek oh noes 07:42
cotto dukeleto, you awake? 07:43
bacek Nope. we can't get rid of it.
cotto dukeleto, nm
NotFound seemed to think it was necessary for disassembly when I asked earlier today.
bacek, do you know what'd happen if we took that code out of imcc? 07:44
bacek "BAD THINGS"
purl "BAD THINGS" is a movie, I think.
cotto That'd be my guess. 07:45
bacek It sets ITBRANCH flag.
cotto Well, at least most of the flags are gone.
What's that do/ 07:46
?
bacek I do think that you broke it already :) 07:47
We need some PARROT_JUMP_WHATEVER flag
cotto orly? I ran fulltest several times
bacek testsuite doesn't do fulltest with -O2 flag in IMCC 07:48
cotto fulltest--
that's not very full
karma fulltest 07:49
purl fulltest has neutral karma
cotto next question: how do we make sure imcc optimizations get tested? 07:51
Yup. I broke it. Sad face. 07:53
looks like it's pretty trivial. I'll be adding a 'testo' make target shortly 07:55
dalek rrot: r44620 | bacek++ | trunk/t/native_pbc (4 files):
Rebuild native pbcs
07:56
bacek testo target looks reasonable. 07:57
or we can ignore broken imcc optimisations... 07:59
otoh, we can use same target for testing other pir compilers. 08:00
dalek TT #1490 closed by cotto++: remove prederef__ op and supporting code
08:02 iblechbot joined 08:07 parthm left
cotto Hmmm. After reverting the relevant commits, testO2 seems to be just as broken as before 08:07
This may just be a case of imcc-- 08:09
dalek rrot: r44621 | cotto++ | trunk/config/gen/makefiles/root.in:
[build] add a testO2 target to run parrot with imcc optimizations
08:13
cotto Yeah. -O2 was all kinds of broken before I started and even -O1 doesn't look very good. 08:15
That's what we get for not testing these things. 08:16
08:16 snarkyboojum joined
cotto imcc optimizations are not our friend 08:18
bacek s/optimizations are/ is / 08:19
chromatic I don't remember the last time they worked. 08:20
bacek Than ignore it
cotto Sooooo.... why aren't we throwing up big red flags and scary warning when someone runs imcc with -O? 08:21
chromatic Because we forgot that option even existed. 08:22
cotto The Optimzations that Time Forgot
chromatic, would it be worthwhile to rip them out? 08:23
chromatic Fine by me. 08:25
dalek rrot: r44622 | cotto++ | trunk/config/gen/makefiles/root.in:
[build] apparently imcc optimizations are extravagantly broken, not just my recent changes
08:29
08:49 lucian joined 09:28 parthm joined 09:38 lucian joined 09:48 allison joined 09:49 joeri joined
dalek rrot: r44623 | mikehh++ | trunk/MANIFEST.SKIP:
re-generate MANIFEST.SKIP
10:07
TT #1495 created by mj41++: MacOS and one WinXP TapTinder clients hanging on t/library/pg.t 10:12
10:13 parthm left
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32484), fulltest) at r44623 - Ubuntu 9.10 amd64 (g++ with --optimize) 10:20
10:31 joeri joined 10:32 AndyA joined 10:33 parthm joined
parthm hello. is it recommended to follow the trunk for parrot or to use the monthly tarball. 10:34
chromatic What do you intend to do with Parrot? 10:36
parthm chromatic: i am hoping to use it as the vm for a HLL i am working on .. a hobby project at this point. 10:38
allison parthm: most likely you'll want the monthly releases for that. if you absolutely need the latest features, use trunk 10:39
parthm allison: thanks. i will go with the tarballs then and do monthly upgrades. 10:40
10:55 parthm left 11:35 bacek joined 11:51 allison joined 12:22 ruoso joined 12:42 petdance joined 13:06 whiteknight joined 13:10 payload joined
whiteknight good morning #parrot 13:36
13:37 riffraff joined
mikehh hi there whiteknight 13:37
13:37 AndyA joined
whiteknight good morning mikehh, how are you today? 13:37
mikehh fine - just testin' 13:38
regarding rm_cflags - is there any reason auto::arch and auto::cpu shouldn't move up the list (lib/Parrot/Configure/Step/List.pm) to just after auto::warnings 13:44
13:45 atrodo joined
mikehh it works fine for me on Ubuntu 9.10 amd64 13:45
it removes an warning with init::optimize if I do that 13:48
and the pre/post-tests are ok (except for 1 with g++ - not related) 13:50
Coke: ping 13:56
dalek rrot: r44624 | coke++ | branches/rm_cflags/config/auto/warnings.pm:
Fix FAIL with mingw (gcc 3.4.5) - check on an invalid option is a little naive:

  fperrad++ for the report.
Coke dukeleto: message approved. 13:57
purl Sorry, I've never seen approved before.
mikehh Coke: did you see my comments just above 13:58
Coke mikehh: yes, just caught up. 13:59
I have no problem with re-ordering the steps. kid51 will have a chance to review it before we merge back.
mikehh ok I'll commit it 14:00
14:02 whiteknight joined
whiteknight is trying to install VisualStudio 2010 ReleaseCandidate on his computer, but the installer keeps forcing the computer to reboot 14:03
how quaint: an OS that requires a complete reboot any time any aspect of the system changes
Coke mikehh++ 14:04
dalek rrot: r44625 | mikehh++ | branches/rm_cflags/lib/Parrot/Configure/Step/List.pm:
move auto::arch and auto::cpu to just before init::optimize to make sure cpuarch is set
14:11
rrot: r44626 | mikehh++ | branches/rm_cflags/config/init/optimize.pm:
fix codetest failure - trailing space
14:16 smash joined
smash hello everyone 14:16
dalek kudo: 4055fde | tene++ | src/Perl6/Actions.pm:
Revert "Re-work try {} to ignore control exceptions"
mikehh rm_cflags branch: 14:38
All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32490), fulltest) at r44626 - Ubuntu 9.10 amd64 (gcc with --optimize)
Coke mikehh++ 14:39
hopefully I fixed fperrad's error, also. 14:40
msg darbelo - can you test out rm_cflags with --optimize on sun?
purl Message for darbelo stored.
mikehh I've still got that 1 post-config test failing with g++ - t/steps/auto/warnings-01.t - Failed test: 17 14:42
otherwise everything ok there too 14:43
14:50 patspam joined 15:06 parthm joined
parthm if i try to build ($parrot setup.pir) a lang shell generated by mk_language_shell.pl, it seems to be failing pastebin.com/VRwSsQAL 15:11
i suspect its because of what --with-pmc is doing but i don't know enough about parrot yet to be sure.
i am using parrot-2.1.1 15:12
allison parthm: there are some incompatibilities between the language shell generators and some versions of the compiler tools 15:16
parthm allison: what would be a good workaround? should i file a bug?
allison parthm: I'm looking at your error message... 15:18
parthm: have you made any changes to your language?
parthm allison: no changes, just the "echo 0 > PARROT_VERSION" in the listing 15:19
^ PARROT_REVISION
allison parthm: this error looks suspicious "/usr/local/include/parrot/2.1.1: No such file or directory" 15:20
parthm: like it's not finding your parrot install
parthm allison: i am running parrot directly from the parrot-2.1.1 folder , built with 'perl Configure.pl ; make'
allison: thats what i was thinking too. let me get the build log for parrot. 15:21
allison parthm: ah, that could explain it. the mk_language_shell.pl expects an installed version of parrot. Fine to install it in a local directory rather than a system directory, though
dukeleto parthm: you should always use an installed version of parrot or you will get strange errors sometimes
parthm: perl Configure.pl --prefix=foo 15:22
parthm allison, dukeleto: sounds fine. will do that.
allison parthm: where "foo" is something like "/home/parthm/src/parrot-install"
parthm is building with --prefix 15:24
NotFound Who said PARROT_JUMP_RELATIVE is not used? You don't have ack? 15:25
src/runcore/main.c
377: if (((opinfo->jump & PARROT_JUMP_RELATIVE)
rc/debug.c
2571: (info->jump & PARROT_JUMP_RELATIVE)) {
parthm allsion, dukeleto: that worked well. thanks. sorry for the confusion. 15:27
15:27 janus joined
dukeleto parthm: no worries. I have made that mistake many times before :) 15:27
parthm dukeleto: i am still ramping up on parrot. the people on irc have been patient :-) 15:28
dukeleto allison: what do you say about including parrot/parrot.h oustide of parrot core? 15:30
allison dukeleto: generally shouldn't be needed 15:31
dukeleto: parrot/extend.h should be enough, and if it isn't, should be modified (sanely)
dukeleto: the problem with parrot/parrot.h is that it exposes prototypes for all parrot functions, even those that aren't supported as part of the API 15:32
dukeleto allison: it seems that parrot/embed.h and parrot/extend.h are both needed, but occasionally some necessary things are not in there. When I run into those, I will open tickets
NotFound allison: reading last messages in the mailing list, looks like isn't nearly enough. 15:33
Tene allison: expect to have time to look at my parrot-dev email today?
allison dukeleto: yes
dukeleto allison: yes, I was under the impression that parrot.h was *only* for parrot core, and I think that is a good idea
Tene AFK
allison Tene: yes, what's the message subject?
dukeleto: yes, that's the intention
Tene Subject: Weird behavior of subclasses of Exception
allison Tene: thanks, will look at it
NotFound After the introduction of STRNULL we can't even check if a parrot string is null out of core. 15:34
dukeleto NotFound: yeah, that is what PL/Parrot is running into 15:35
15:35 whiteknight joined
NotFound dukeleto: I just answered that message by suggesting to open a trac ticket. 15:36
15:38 Psyche^ joined
NotFound BTW we still have an example in docs/embed.pod that uses: #include <parrot/parrot.h> 15:39
dukeleto NotFound: the horror! 15:41
purl i guess the horror is a genre, or a collection of related genres.
dukeleto NotFound: does the example work without including parrot.h ? 15:42
NotFound dukeleto: I don't care. Including parrot.h is wrong. 15:44
And I can't test in all operating systems where it can fail. 15:45
tewk w
NotFound I think we must just delete all examples in that file and just say to look for examples in the examples directory. 15:46
dukeleto NotFound: trac.parrot.org/parrot/ticket/1496 15:48
NotFound: I agree that including parrot.h is wrong, wasn't arguing that
NotFound Then please don't ask me if it works. 15:49
dukeleto NotFound: I was asking you if it was unnecessarily including the file, i.e. does the example still work if you delete the parrot/parrot.h include. Take a breath. 15:50
NotFound dukeleto: Is not just unnecessary, is forbidden.
dukeleto NotFound: We are agreeing :) 15:56
NotFound: things are getting lost in translation.
NotFound dukeleto: the example that uses the correct headers and is supposed to work (I'm about to check) is examples/emebed/cotorra.c
dalek TT #1496 created by dukeleto++: Parrot_String-related functions are only available from parrot/parrot.h 15:57
NotFound dukeleto: I'm not upser, just a little tired of the slow advance in that part. 15:58
dukeleto NotFound: i hear ya. I have a feeling that PL/Parrot is going to uncover a lot of inconsistencies in the parrot public API 16:00
NotFound Let's hope so :) 16:01
16:31 lucian joined
whiteknight the public API has definitely never been exercised too rigorously, as I understand 16:34
I thought mod_parrot was using it, but apparently not
NotFound whiteknight: mod_parrot abuse it.
16:42 cotto_work joined
japhb dukeleto, darbelo: Thanks both of you for keeping Plumage moving forward while I've been bereft of tuits. 16:50
dukeleto japhb: welcome back!
purl Your dreams were your ticket out.
japhb dukeleto, thanks. ;-)
dukeleto whiteknight: mod_parrot uses parrot/parrot.h and hence uses the internals API 16:51
whiteknight right
dukeleto whiteknight: it seems that PL/Parrot will be the first project that tries to stay on the correct side of the fence 16:52
japhb (PL/Parrot)++ for that
whiteknight As I recall from earlier discussions about the external API is that API functions were really being added in an on-demand fashion
NotFound dukeleto: I think others tried, but gived up ;)
dukeleto NotFound: yeah, probably. But I am a tenacious and stubborn person, so I ain't givin' up :) 16:53
NotFound In fact I added some just to be able to wtite some tests.
japhb *Sigh* Compiling Parrot + Plumage + Rakudo in quick succession makes me really want a faster computer ... 16:54
16:57 davidfetter joined 17:01 parthm left 17:03 Austin joined
Austin Buenos dias, #parrot. 17:17
whiteknight hello Austin 17:18
cotto_work hi Austin
Austin Today is mocking day.
whiteknight well you're a big stupid head
there, you've been mocked
Austin Your kid won't be able to afford college.
there, you've been mocked. 17:19
And in a few hours, Kakapo will mock us all.
Unless I discover another parrot bug.
cotto_work That'll never happen.
Austin Heh
Austin touches wood. 17:20
cotto_work that can be interpreted in more than one way
whiteknight did that "classes can't have the same last name" issue get handled in any way?
Austin Yeah, I renamed the f*****g class. 17:21
whiteknight no, that's goddamn horible 17:22
damnit. let me look at the ticket. We're solving this today
Austin "Matcher" -> "SigMatcher"
I don't mind the three extra characters. It was the hours spent tracking it down that gripes my wagger. 17:23
whiteknight I mind it. it's stupid behavior 17:25
mind-blowingly stupid
ls
Austin Man, does anyone even realize that this works: 7 method mock_class($parent = 'P6object', :$named = mock_class_name($parent)) { 17:34
17:36 theory joined
Coke ... i have no idea what that would even do. =-) 17:36
Austin It provides default values for positional and named parameters in NQP, and because it lexifies them left-to-right, you can use leftward parameters in rightward defaults. 17:38
*because it = because NQP 17:39
Tene Austin: that's by-design. 17:40
Austin Yes. And I was admiring that design when I asked "Man, does anyone even realize that this works" 17:41
Tene Ah, I misunderstood. :)
Austin One of my maintenance problems in Kakapo has been weeding out stuff that I used to need, but don't anymore because it's built in now. 17:42
dalek kapo: 8e100d6 | austin++ | :
review: gitorious.org/kakapo/kakapo/commit/...7652c809e9
17:51
kapo: 0e28756 | austin++ | s (3 files):
More progress on Matchers
kapo: b21403a | austin++ | (30 files):
Checkpoint.
Coke "different in my test file" always concerns me. 17:54
how do we know that your test file isn't so different as to not exhibit the same behavior? =-)
is anyone here able to build rakudo on feather? (or any linux box, for that matter)? 17:56
Tene Coke: WFM 17:57
I have a kind of old parrot, though.
couple of weeks or so
Coke Mine fails with the recommended version from --gen-parrot
Linux feather 2.6.18-6-xen-686 #1 SMP Sun Feb 10 22:43:13 UTC 2008 i686 GNU/Linux
cotto_work Coke, trying now 17:58
Tene I can't say I've ever used --gen-parrot. You'd likely get a better response from #perl6 on freenode, though.
17:59 brooksbp joined
Coke Austin: why do you think get_class should work on a namespace? 17:59
(certainly the op codes for get_class don't say that.)
Austin I stole that code from Pmichaud, and I figure he knows what he's doing?
Coke er, op docs.
Austin This is about TT# 1492 ? 18:00
Coke yes. 18:01
ok. that calls Parrot_oo_get_class, which for namespaces: 18:02
Austin Yeah, the example code in 1492 is based on one flow through the get_parrotclass function in P6object.
Coke classobj = VTABLE_get_class(interp, key); 18:03
namespace seems to have a vtable get_class and a METHOD get_class that do 2 different things. 18:05
Austin Yeah, I was pretty impressed by that. 18:06
Coke the macro in one case might expand to the code in the other...
cotto_work Coke, wfm 18:07
Coke cotto_work: (*&#$. 18:08
on feather or elsewehre?
cotto_work on my local machine
Coke k.
cotto_work ubuntu 9.04 x64
Coke I'll have to try on my osx box that finally got xcode reinstalled this evening and see if it works there.
wanted to do some bug admin work, but not having a working rakudo makes that realllly hard. =-)
whiteknight Coke: the get_class METHOD does the same thing as the get_class VTABLE, just in a stupid way 18:12
if (PMC_IS_NULL(ret_class)) ret_class = PMCNULL; is useless 18:13
allison Tene/whiteknight: I'm deleting the pcc_reorder_results branch, is someone else already working on a new branch for the PCC refactor hackathon? 18:29
whiteknight allison: no
I was planning to delete it and create a fresh one tomorrow, but today works just as well
dalek rrot: r44627 | allison++ | branches/pcc_reorder_results:
Removing unused calling conventions refactor branch
18:34
rrot: r44628 | allison++ | branches/pcc_hackathon_6Mar10:
Creating branch for PCC deprecation item to reorder set_returns and get_results.
parrot: a4516e0 | (David Fetter)++ | HACKING:
Changed HACKING to HACKING.git, which is more appropriate.
18:35
allison whiteknight: okay, the easy part is done now :) 18:36
whiteknight w00t
Coke seen fperrad?
purl fperrad was last seen on #parrot 5 days, 5 hours, 8 minutes and 47 seconds ago, saying: purl ? [Feb 27 13:28:12 2010]
whiteknight holy crap. This code for working with namespaces and Classes in src/oo.c is terrible 18:39
Remarkably inefficient across the board
If I call Parrot_oo_get_class on a NameSpace we call VTABLE_get_class. And if that returns PMCNULL, it converts the namespace to a string (which does not include the names of parent namespaces), looks up the type number from the string name, looks up the vtable from the type number, gets the vtable's whoami string, *looks up the namespace*, calls VTABLE_get_class on the namespace *again*,... 18:43
...and if that's still PMCNULL for some reason it creates a PMCProxy and calls the set_class METHOD on the namespace with that proxy.
Even if we ignore the fact that the "looks up the type number from the string name" step manually iterates over the list of all VTABLEs comparing whoami strings, this is still horribly inefficient 18:45
Austin whiteknight: And probably every one of those cases was exercised at some point.
whiteknight Is there a way for me to tell whether a given name corresponded to a built-in PMC type or a user-defined Class, if the Class object for it hasn't been created yet? 18:47
And for that matter, why doesn't a .namespace with :methods in it just automatically create a class object? 18:48
Austin It does, just as soon as you call 'get_class', see? 18:49
whiteknight Austin: hellz to the no it doesn't
Austin Heh
whiteknight you have to call "class_nsp = newclass namespace_nsp" to get what you want now
Austin I think you can look up the pmc type from a name ... 18:50
whiteknight calling get_class on it returns whatever bullshit nonsense the system dredges up
Austin just do 7 system("grep NAME ../include/parrot/pmc_types.h")
whiteknight oh, that's novel. And by "novel" I mean it's horrible and making me cry 18:51
Austin Whine, whine, whine. Open source is better, because people get to look at it. Remember?
18:53 theory joined
whiteknight What I don't remember is the design pattern for "include copies of my source because my program sucks so bad I need to write another program to grep through my source code to let the end user do what I couldn't make my program do by itself" 18:53
I dub that pattern the "Crapulator"
dukeleto whiteknight: lulz
dukeleto pours whiteknight a stiff drink 18:54
Austin The term for a program that prints out its own source code is a "Quine" 18:55
I leave the joke to you.
whiteknight there are some subsystems in Parrot that I swear to god are held together by little more than hope, masking tape, developer's tears, and an absolute lack of rigourous testing
s/rigourous testing/any testing whatsoever/ 18:56
Austin Hmm. And we're all out of hope and masking tape.
whiteknight what's worse still, if the NameSpace doesnt have a class, so I just return NULL from the lookup, THE BUILD FAILS 18:57
not just a test fails, the whole damn build fails
dukeleto whiteknight: would you like to start a wiki page for "Subsystems that make developers cry" ? List the reasons why and that may give people the direction to fix stuff. I volunteer to write tests for anything that doesn't have proper test coverage. 18:58
whiteknight Something in whatever miniparrot does is looking up a built-in type by namespace, and expecting the PMCProxy to be autovivified by doing it
Coke shouldn't you return PMCNULL, not NULL?
whiteknight Coke, I meant "PMCNULL", but it really doesn't matter in this case 18:59
Coke k
cotto_work dukeleto, we have a page for that: ItsABugHunt 19:00
Coke xenomorph?
dukeleto we probably need a wiki page for "these codepaths need tests", where people can describe in words or pseudocode things that are untested/undertested. that would help a lot in my Crusage Against Untested Code
whiteknight not just tests. Some of these codepaths need to be hit with a hammer
Coke (these codepaths need tests). there's already a page that shows all those paths.
someone's running code coverage against parrot already. 19:01
dukeleto Coke: link? And I hear ya, but having a human explain things is sometimes more useful 19:02
Coke coverage? 19:03
purl hmmm... coverage is cv.perl6.cz
whiteknight it's not just code coverage. We can cover code with two different inputs and one works and one doesn
Coke tapir2.ro.vutbr.cz/cover/cover-resu...6/c_cover/
(there's the most recent c code coverage report.)
Tene whiteknight: chromatic thinks that tt384 might need pmcproxies to be instantiated much earlier in parrot startup. 19:04
whiteknight Tene: exactly
I'm hoping and praying for that now
because if PMCProxy PMCs are all created automatically, we don't need to worry about needing to autovivify them when we try to look them up
Tene whiteknight: work on that would certainly be welcome, and then we could merge in tt384 branch 19:05
erm, 389
whiteknight Tene: after that branch merges, I'll start a new branch to clean up some of this shit 19:06
dukeleto Coke: also, just because a line of code has been "covered" does not mean that all code paths through it have. They are very different things.
Tene whiteknight: that branch can't merge until we get it working, which c thinks requires creating pmcproxies early
whiteknight Tene: okay. I keep hoping to be able to work on it myself but I've been busy 19:07
Tene nods.
whiteknight Tonight or tomorrow night I might be able to do it
Tene I'm rather intimidated by those parts of parrot I haven't worked on yet, so I haven't tried looking into that yet.
whiteknight Tene: yeah, I know what you mean. There are some parts of Parrot that I still regard as being opaque and a little mysterous 19:08
...and the more I understand, the more parts I find to criticize...
Tene I think I'm scheduled to work on rakudo tonight, but tomorrow afternoon is probably open.
whiteknight Tene: okay, awesome 19:09
Tene whiteknight: just so long as you don't get so upset that you leave the project, taking those hard-earned criticisms with you.
whiteknight if we can get that branch knocked off and merged this weekend I think everybody wins
Tene: I have no plans to leave any time soon. I only criticize things that I love, because I want them to be better
dalek parrot: 7a54f57 | (David Fetter)++ | HACKING.postgres:
Added HACKING.postgres
Tene "namespace with :methods -> class" probably won't work, as there's no information on whether it should be a subclass of anything, etc.
whiteknight when I stop finding problems, it's because I've stopped looking
yeah, you're right about that
Tene It's always spooky to me when I find some code path that looks horrible, and 'git blame' shows that it was last touched years ago by a name I've never seen before.
whiteknight haha, yeah
Tene I got that a couple of times with exceptions a while ago, and I saw that when I tried to look into the "threads fail horribly" issue. 19:11
cotto_work any objections to removing the unused/untested src/events.c and src/tsq.c?
Tene events.c is unused?
cotto_work yup 19:12
tapir2.ro.vutbr.cz/cover/cover-resu...nts-c.html
Tene speaking of creepy.
afk teaching
dukeleto cotto_work: there is always the version control history if someone actually cares about them. KILL HER!
dukeleto hopes somebody gets the Jurassic Park reference 19:13
19:13 payload joined
cotto_work will do so when I get home tonight 19:13
alternately, it's 15 minutes of work if someone who can commit wants to do it now
whiteknight I thought tsq was DEPRECATED 19:15
no idea about events.c. Maybe allison knows better
19:15 jsut_ joined
allison tsq is deprecated 19:16
much of events.c was replaced by scheduler.c
I'm not sure if events.c is entirely unused, but wouldn't be surprised
whiteknight allison: I think the coverage results indicate events.c is unused 19:17
cotto_work allison, it's unused.
the build works and make test passes without it
whiteknight allison: on that topic, I have some changes I would like to propose for the scheduler, especially since Timer is supposed to be moving to a dynpmc. Where do you think is the best place to discuss that? A wiki page? 19:18
Coke (tsq is deprecated) ... ticket, please?
(discussion) I prefer the mailing list for discussion. wikis are good for fluid documentation.
allison how thorough is the coverage test? does that guarantee that no part of the parrot codebase ever makes a call to functions in events.c?
whiteknight Coke: #982 19:19
allison (not even ifdefd sections for various platforms?)
Coke whiteknight: that ticket is closed, invalid.
whiteknight Coke: you closed it because a function was used in src/events.c
which, as we are discussing now, is likely unused as wel 19:20
Coke yup. the original premise of the ticket is wrong.
whiteknight Coke: premise looks right to me. The functions are not used, so the file can be removed
Coke the functions /are/ used. 19:21
(peek_entry is used. the functions that call it seem to be used.)
this is like the mmd ticket that says to remove one of the functions but gives no hint as to what or how to replace it. 19:22
whiteknight "used" implies that active code is calling those functions, not that a text match returns true on the function name
cotto_work allison, I'll make sure that none of the functions are referenced before removing the files 19:23
whiteknight cotto_work: I've got a hit in src/thread.c. queue_lock and queue_unlock appear to be called 19:24
don't know what they do yet
Coke once rm_cflags is merged back, many of the unused static functions will be removed. 19:25
cotto_work whiteknight, remove_queued_suspend_gc, which is where those are used, isn't referenced anywhere else 19:26
whiteknight cotto_work: yeah, I'm seeing that now too
cotto_work That's the one function I had to delete.
It'll be nice to get that code out. 19:27
whiteknight yeah, remove those two files and that one function, build works perfectly
cotto_work For some reason I thought it was harder to remove than it turned out to be.
(plus scaffolding)
whiteknight I think include/parrot/tsq.h can go too
cotto_work and events.h 19:28
whiteknight Make sure the scheduler isn't cross-referencing anything there, but yes
actually, I'm checking that now
cotto_work thanks 19:29
Are you going to delete the files too?
whiteknight nope, not yet anyway
Austin One of the problems with Parrot is that it's possible to build an object that you're afraid to interact with.
whiteknight okay, I got a missing token hit in src/thread.c when I tried deleting those files blindly
nevermind, false alarm 19:30
(it was the prototype for remove_queued_suspend_gc)
cotto_work 1 minute to delete the files, 14 to chase down the loose ends
whiteknight and then 23 hours and 45 minutes to PARTY! 19:31
cotto_work: build goes just fine until tools/build/h2inc.pl tries to find events.h 19:32
cotto_work I think the trick there is to delete events.str from the root makefile 19:35
whiteknight cotto_work: okay, I've got a commit brewing
cotto_work w00t
whiteknight have to rebuild after playing with the makefile, and then test 19:36
cotto_work perl tools/dev/reconfigure.pl --step=gen::makefiles is your friend
whiteknight meh 19:37
Tene Ah, yes, I was thinking of scheduler.c 19:39
19:45 zpmorgan joined
whiteknight cotto_work: all tests pass. 19:54
purl Time to write more tests!
whiteknight Any objections to this commit?
cotto_work I object to not committing it. Is that what you mean? 19:55
20:00 bacek joined
cotto_work hio bacek 20:01
whiteknight Okay, I'm going to commit this sucker
cotto_work it's always nice to shed a couple kloc 20:04
Coke tell me again why we don't have "make makefile" ? 20:06
cotto_work That'd be trivial to add. We should add it.
Coke we /removed/ it.
cotto_work lolwut? 20:07
purl lolwut is the pic with that freaky giant pear with a mouth
bacek ~~
cotto_work Le
Let's unremove it.
whiteknight one of the greatest joys in the world is to reduce the size of your code while either keeping capability the same or even increasing
cotto_work I'd put "birth of your child up there", but that's definitely nice too.
s/up there"/" up there/ 20:08
bacek whiteknight, we do need CallSignatureReturns. Trust me :)
whiteknight bacek: I firmly disbelieve
I do not think we need it 20:09
bacek invoke_from_c_args(interp, "P->P", self, &result)
inside "invoke_..." we have to remember pointer &result
Because using valist twice isn't portable 20:10
davidfetter greatest pleasures? well, according to temujin, they're these:
to vanquish your enemies, to chase them before you, to rob them of their wealth, to see those dear to them bathed in tears, to clasp to your bosom their wives and daughters.
whiteknight that's fine. in that case, we just use a different type of return continuation where invoke takes us back into invoke_from_c_args, where we have the pointer 20:11
dalek rrot: r44629 | whiteknight++ | trunk (8 files):
[cage] src/tsq.c, src/events.c, include/parrot/tsq.h, and include/parrot/events.h are all dead code and have been removed. Also, remove one dead function from src/threads.c, and a few items in the makefile that seemed to rely on the header files but have no test coverage or docs that I can find.
20:12
bacek no way 20:13
whiteknight or, the false return continuation does nothing on invoke, the runloop returns, and invoke_from_c_args unpacks the CallSignature
bacek and?
whiteknight ...and party?
bacek we have to process valist fully before
and store pointer somewhere 20:14
e.g. in CSR :)
whiteknight bacek: we can do that, fine. Then all we need is a C array somewhere
bacek on positive note, it will be local to invoke_from_c_args 20:15
whiteknight We're parsing the PCC signature anyway, we know the count of pointers to expect
Coke whiteknight: some of those functions you removed are not static.
(and are tagged with PARROT_EXPORT) 20:16
(r44629) 20:17
whiteknight Coke: support_policy.pod only says that we must deprecated PARROT_API function changes, not PARROT_EXPORT function changes 20:21
OR "Parrot functions not marked wth PARROT_API, or documented as part of the public API" in docs/embed.pod
Coke ah, right, forgot that split was done. Carry on. 20:22
whiteknight And I would be willing to ignore the technicallity if the code weren't dead and essentially useless and unusable
Coke I would not, but the API vs. EXPORT thing covers it. danke for reminding me.
whiteknight no problem 20:23
Coke note that CFLAGS in trunk still refers to tsq.c, but don't bother fixing it. 20:25
cotto_work There's a reference in lib/Parrot/Docs/Section/C.pm and t/codingstd/c_function_docs.t to tsq 20:26
whiteknight MURDER DEATH KILL
Coke (I got it.)
whiteknight Coke++
20:28 kurahaupo joined
cotto_work Coke++ 20:29
whiteknight++
Coke pick an environment variable that would stop perlcritic.t from running. 20:34
PARROT_TEST_NO_PERLCRITIC ? 20:35
whiteknight +1 20:36
purl 1
20:38 payload joined 20:39 whiteknight joined
whiteknight EFIREFOXCRASHED 20:39
Coke also needed to re-run headerizer. 20:42
whiteknight I think I might just hate headerizer 20:43
Coke beats the alternative. 20:44
the previous one, anyway.
cotto_work manually updating everything?
whiteknight back in my day, we wrote our own function prototypes. Uphill both ways! 20:45
cotto_work and without any of those newfangled typedefs?
dalek rrot: r44630 | coke++ | trunk/t/codingstd/perlcritic.t:
Sometimes you really don't want to wait for this test.
rrot: r44631 | coke++ | trunk (6 files):
cleanup after removal of src/events.c, src/tsq.c
whiteknight One of my pet peeves is spelling errors in code files 20:49
at work today I had a file where the original author was talking about "varifying" things and it confused me 20:50
Coke yays at feedback from AndyD.
that just leaves fperrad. 20:51
and maybe someone on windows.
whiteknight I could try a windows build later tonight 20:52
no promises
Austin That's what I like about parrot - useful diagnostic messages! 5 too many positional arguments: 4 passed, 5 expected 20:53
Coke Austin: is that sarcasm?
whiteknight Austin is always sarcastic
it's his ninja way
Austin Unless 4 is greater than 5, yes. 20:54
Coke rereads that error.
oh.
sarcasm allowed.
Austin Although, in fairness, the fact of the error was enough to indicate the problem. 20:56
cotto_work It's still a nice error message.
whiteknight yeah, and the lower you set your standards, the better it becomes! 20:57
Austin Indeed. The color is nice.
Coke er, where windows is more specifically some VC++ variant.
oh, look, we don't support dmake.
(I knew that, didn't I.)
ah. i can duplicate fperrad's issue on strawberry. 21:00
(even after my fix.)
dalek rrot: r44632 | coke++ | branches/rm_cflags (33 files):
merge latest changes from trunk.
21:02
rrot: r44633 | coke++ | branches/rm_cflags/config/init/optimize.pm:
This file was removed, we no longer need to not optimize it.
Tene lsls 21:04
cotto_work ENOTYOURTERMINALWINDOW 21:05
Austin ENOTTY ? 21:07
Another joke, passing by... 21:08
NotFound thinking about starting the trend 'social terminal': twityourcommandline.com
Austin setup.nqp && t/Mimidae/Cuculus.nqp
(And yeah, I know - I'm gonna fix that later.)
cotto_work Austin, that filename reaches new levels of awesomeness and geekery. 21:10
Coke facepalms. 21:11
Austin sings, "One day I devised my self a plan that should be the envy of most any man: I'd sneak it out of there in a lunchbox in my hand!"
21:14 kurahaupo joined
dalek rrot: r44634 | coke++ | branches/rm_cflags/config/auto/warnings.pm:
Don't bother to memoize -$conf changes. Fix bug where we were not actually

Must have been a thinko during one of the rewrites - happened to work for the gcc I was using and for non-gcc. fperrad++'s failure pointed out the problem.
21:19
21:30 theory joined 21:31 rt7 joined
dalek kudo: 37e5746 | pmichaud++ | docs/release_guide.pod:
Update release_guide.pod with recent release information.
21:58
plobsing hi #parrot 22:19
cotto_work hi plobsing
plobsing noone complained about tt1477 when I put it to the list, so I'm looking at merging it back sometime tonight 22:20
22:45 Whiteknight joined
mikehh rm_cflags branch: 22:45
post-config FAIL - t/steps/auto/warnings-01.t - Failed test: 17
all other tests PASS (pre-config, make corevm/make coretest, smoke (#32492), fulltest at r44634 - Ubuntu 9.10 amd64 (g++ with --optimize)
23:04 shockwave joined
shockwave Hi. 23:05
I'm reading: docs.parrot.org/parrot/latest/html/...y.pmc.html
When something is defined as a function (as opposed to a method), I would think that it's supposed to be used as a subroutine. But, 23:06
When using something like push_integer(INTVAL value), that looks like it should be a method.
Because, the array to which the integer is being added is nowhere in site. 23:07
I'm know I'm reading that wrong.
allison plobsing: the general principle of TT #1477 is sound, the right answer is to pass a single PMC argument to Parrot_ext_call and mark the signature as :call_sig
shockwave Can someone enlighten me.
Specifically, is a 'Function' like push_integer() supposed to be used as: $P0.'push_integer'(5) # where $P0 is an resizable array? 23:09
Whiteknight shockwave: where do you see push_integer? 23:10
shockwave void push_integer(INTVAL value)
docs.parrot.org/parrot/latest/html/...y.pmc.html
Whiteknight, ^^^
Whiteknight shockwave: Ah, that's a VTABL 23:11
VTABLE
they're sort of like methods 23:12
shockwave ah
gotcha
Whiteknight that function gets called when you do the "push" opcode
shockwave Whiteknight, like: push $P0, 42 ? 23:13
Whiteknight exactly
shockwave Whiteknight, Thanks for the info.
Austin shockwave: in a .pmc file, you will see things called VTABLE ... and other things called METHOD ...; the vtable ones get called by opcodes, while the method ones have to be called like 7 $P0.'method'(...) 23:14
shockwave Austin, what threw me off in this particular case was the lack of VTABLE identifier. 23:15
Austin Yeah, I've seen that in a few places. :(
shockwave What a minute. Besides using the opcode, am I also supposed to add a vtable override named 'push_integer()' to the class? Or does the array already provide a default version? 23:20
(I'm still trying to get the hang of the working in PIR)
cotto_work What are you trying to do? 23:21
subclass RPA?
shockwave cotto_work, Push an integer onto a resizable array.
cotto_work $P0 = new ['ResizablePMCArray']
shockwave I guess I could also do:
cotto_work push $P0, $I0 23:22
shockwave Cool.
So I know that I only have to define a push_integer() if I want to *override* the default implementation.
cotto_work yes 23:23
shockwave Thanks, cotto_work.
cotto_work np 23:24
Austin shockwave: Why aren't you working in NQP? 23:25
Or is this generated code? 23:26
shockwave Austin, It's the code being generated from my compiler.
from/by
23:28 lucian joined
plobsing allison: I don't see any call_sig handling in Parrot_pcc_build_sig_object_from_varargs 23:35
allison plobsing: it's on the param side at the moment, but the flags are in place 23:37
plobsing: and what you're describing could be handled by a simple flattened array arg 23:38
plobsing allison: and for returns?
allison plobsing: returns are about to be melded with calls
as in, this weekend 23:39
so, we won't have to deal with those bizarre variable pointers passed around in the call
plobsing allison: so how will we get multiple return values back in C? 23:40
also, there are embedding cases where the embedder is simply forwarding parrot to users (eg: Parrot::Embed). Requiring them to build a call_sig object requires them to know more about parrot than they might want. 23:41
allison plobsing: an array will be fine for most Parrot::Embed cases
plobsing: at the moment was planning to keep the Parrot_ext_call interface after the internal change 23:43
plobsing: it would be possible to expose setting the args and fetching return values as separate function calls (which they are internally) 23:44
23:45 kid51 joined
plobsing allison: setting args and fetching returns is great *if* you know what the signature means. That means either Parrot::Embed needs to parse PCC signatures itself or parrot has to provide a way for embedders to know what it wants in terms of args/returns. 23:48
allison plobsing: I don't understand. It's necessary to pass a signature when setting arguments or fetching returns. 23:50
that specifies what arguments you're passing, or what returns you're expecting
plobsing allison, yes. but Parrot::Embed forwards that to users. It doesn't know. It shouldn't have to know. 23:51
NotFound BTW I'll probably be busy most of the weekend but I'll try to keep an eye at the hackathon
allison plobsing: yes, agreed, but it doesn't have to know now. I don't see where it would have to parse signature strings. 23:53
it's just a pass-through 23:54
plobsing allison: it needs some way of knowing what parrot wants for a given signature in order to marshal from perl's stack.
23:55 snarkyboojum joined
plobsing functionality for setting args and getting returns is pretty useless if you don't know what is expected 23:55
Whiteknight plobsing: that's getting to a pretty advanced case where you want both variadic params and returns from C 23:56
plobsing how many elements should I pop of perl's stack? should I coerce them to strings? wrap them as PMCs?
Whiteknight we could, for instance, use :slurpy returns to simplify the list
allison spelunking through plobsing's diffs 23:58
perl 5 is pretty much always :flat on the caller side and :slurpy on the return side 23:59
it has braindead argument semantics compared to Parrot (or Perl 6)