|
Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply and context_auto_attrs merges | find out what's up with the slice opcode | Latest modified TT's: icanhaz.com/parrotbugs Set by moderator on 8 November 2009. |
|||
| Whiteknight just updated his kernel, hopes ubuntu becomes slightly more stable | 00:01 | ||
| I've spent the last 45 minutes trying to get online | |||
| darbelo | Ubuntu != stable | ||
| cotto_work | wb | ||
|
00:02
|kesselhaus| joined
|
|||
| Whiteknight | 9.04 was very stable, and I loved it | 00:03 | |
| the 9.10 upgrade was a little more rocky | |||
| I'm fine with it though, I did adopt it pretty early. I know the risks to a major update like that | |||
| so I'm not upset, I'm just going to do what I need to do to get it working again | 00:04 | ||
| NotFound | Whiteknight: for me upgrading to 9.10 has been easier than to 9.04 | 00:07 | |
| And it solved some pitfalls | |||
| Whiteknight | 9.04 was 100% smooth for me. No problems whatsoever | ||
|
00:07
kid51 joined
|
|||
| NotFound | Whiteknight: an example: changing the wallpaper from the control center never worked for me. Failed silently. | 00:08 | |
|
00:09
plobsing joined
|
|||
| NotFound | And the same for changing kdm settings. | 00:09 | |
| Well, maybe is just kubuntu | |||
| Whiteknight | i've been on gnome for a few years now | 00:10 | |
| NotFound | I originally installed ubuntu, but later installed the kubuntu packages, and later uninstalled the gnome ones. | 00:11 | |
| Is a mutating system X-) | |||
| darbelo | In my experience, ubuntu doesn't handle mutations gracefully. | 00:12 | |
| NotFound | Well, not exactly, in my newest laptop I don't installed it, it comes preinstalled. | ||
| Whiteknight | I got ubuntu at 8.04, have upgraded early every release, and this is the first time I've had problems | 00:13 | |
| so I'd say I'm very very happy with it | |||
| dukeleto | my cow-orker upgraded ubuntu today and got bit by libc issues | 00:14 | |
| evidently the new libc shenanigans no longer work on older dell desktops, which is quite unfortunate | |||
| darbelo | "libc issues" ? | ||
| Whiteknight | I am only bothered by problems that don't get attention. I can put up with any problem if I know people are actively working on it | 00:15 | |
| so I don't mind a few headaches after an upgrade | |||
| dalek | tracwiki: v117 | jkeenan++ | WikiStart | ||
| tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff | |||
| chromatic | doc.cat-v.org/inferno/4th_edition/d...cification | ||
| doc.cat-v.org/inferno/4th_edition/dis_VM_design | |||
| dukeleto | darbelo: libc was forked recently, because the guy who maintains it is not working with people. the libc is going through a schism right now | ||
| darbelo | Ah, yes. Godd ol' mr. Drepper, right? | 00:16 | |
| dalek | rrot-plumage: 79842ba | japhb++ | : Move Glue.pir's exists() and keys() to Util.nqp's .exists and .keys; fix... |
||
| TT #1255 created by jkeenan++: fix PARROT_EXPORT visibility=default for gcc other than 4.x | 00:19 | ||
| kthakore | chromatic: do you has unix? | 00:20 | |
| pmichaud | japhb: there's not a way to get to PIR's keyed syntax, sorry. That's one of those "features" that makes things a bit more difficult for compilers :-| | ||
| kthakore | chromatic: hi btw .. | ||
| japhb | pmichaud, understood | ||
| kthakore | anyone got access to a unix box with display? | ||
| kthakore needs testing done ... oh well | 00:21 | ||
| oh well | |||
| gym time | |||
| japhb | pmichaud, I see that I forgot to put try and /or CATCH on Plumage Requests. Do they already exist, or should I add them to the list? | ||
| pmichaud | add to list. | 00:22 | |
| try can come quickly... CATCH I'm not so sure yet :-) | |||
| japhb | pmichaud, roger dodger | ||
| pmichaud | afk, dinner | ||
| japhb | added. | 00:23 | |
|
00:26
mikehh joined
|
|||
| dalek | TT #1256 created by jkeenan++: src/pmc/class.pmc: Need a pluggable MRO in instantiate() PMC | 00:29 | |
| rrot: r42392 | jkeenan++ | trunk/src/pmc/class.pmc: Change an RT # to a TT #. Remove references to closed RT tickets. |
00:33 | ||
| purl | dalek: that doesn't look right | ||
|
00:42
szabgab joined
00:52
darbelo left
|
|||
| dalek | TT #1257 created by jkeenan++: src/io/utf8.c: Does the amount read in Parrot_io_read_utf8() need to be ... | 00:52 | |
| rrot: r42393 | jkeenan++ | trunk/src/io/utf8.c: Change an RT # to a TT #. |
00:53 | ||
| purl | dalek: that doesn't look right | ||
| TT #1258 created by jkeenan++: Method cache not always invalidated | 00:56 | ||
|
00:58
Zak joined
|
|||
| dalek | TT #1259 created by jkeenan++: src/debug.c: Correctly handle comparisons of PMCs with constants | 01:02 | |
| kid51 | There are no longer any tickets in RT owned by 'nobody'. All 30 remaining RT tickets have owners. | ||
| And with that ... | 01:03 | ||
| dalek | rrot: r42394 | jkeenan++ | trunk/src/debug.c: Change an RT # to a TT #. |
||
| purl | dalek: that doesn't look right | ||
| kid51 rests | |||
|
01:03
abqar joined
|
|||
| pmichaud | 22:12 <bacek_at_work> japhb, for performance reason. You can avoid second symbolic lookup during iteration | 01:20 | |
| fwiw, I don't quite understand this comment. | 01:21 | ||
| (and would like to understand it better.) | |||
| bacek_at_work | pmichaud, $S0 = shift it; $P1 = hash[$S0]. | ||
| hash[$S0] is symbolic lookup. | |||
| pmichaud | and you're saying that | 01:22 | |
| bacek_at_work | We have to calculate new hashvalue, iterate over buckets, etc. | ||
| pmichaud | $P0 = shift it | ||
| $P0.value | |||
| is faster? | |||
| bacek_at_work | yes | ||
| jonathan | lol | ||
| pmichaud | ...but I've been told recently that PCCMETHODS are incredibly slow | ||
| wehreas hash[$S0] is a vtable method | |||
| jonathan | bacek_at_work: I highly doubt it. | ||
| For the reasons pmichaud just mentioned. | |||
| pmichaud | I'd like to see a performance comparison. | 01:23 | |
| jonathan | $P0.'value' creates probably two gcables. | ||
| At least. | |||
| (The CallSignature and the returns thingy) | |||
| pmichaud | In fact, I've been told recently that PCCMETHODS can consume almost all of the benefit that might come from implementing a given function in C | 01:24 | |
| jonathan | hash[$S0] creates none. | ||
| pmichaud | (obviously depends on the function, but still, that it's a huge amount of overhead) | ||
| jonathan | In fact, looking up the method to call involves a lookup in a hash. :-) | ||
| pmichaud | lol | ||
| via the vtable method | 01:25 | ||
| jonathan | Right | ||
| pmichaud | *snicker* | ||
| jonathan | So I think by definition you *have* to be doing more work! | ||
| pmichaud | okay, I think I understand now. | ||
| thanks. | |||
| chromatic | What's your new understanding, pmichaud? | 01:26 | |
| jonathan | Full marks for another refactor that's probably made Parrot slower again though. :-/ | 01:27 | |
| diakopter | it if did call itself, it'd loop forever... | 01:30 | |
| pmichaud | what jonathan said. | ||
| diakopter | oh, you're saying two hash lookups instead of 1 | ||
| pmichaud | diakopter: we're saying that instead of a hash lookup, we now have a hash lookup (in a different hash) and a PCCMETHOD call | ||
| diakopter | ok; thnx | 01:31 | |
|
01:33
jonathan left
|
|||
| Whiteknight | the pcc refactor has dividends yet to pay | 01:36 | |
| pmichaud | Whiteknight: I seriously look forward to those. See my latest message to parrot-dev. :) | ||
| Whiteknight | when did you send it? | 01:37 | |
| pmichaud | last week | ||
| on thursday morning | |||
| Whiteknight | oh, okay. I have that one | 01:38 | |
| pmichaud | "things parrot can do to help rakudo". #1 was finish reaping dividends from the pcc refactor | ||
| kiwichris | I have found the PDD "Embedded and Extending Parrot. Nice. Is there more I may have missed ? | 01:39 | |
| Whiteknight | chromatic: is there any progress on the CallSignature + Context merger? | 01:40 | |
| chromatic | bacek stalled wondering which part of the code has the responsibility of creating the merged PMC. | 01:41 | |
| I suggested he start a writeup on the wiki where we can resolve the questions. | |||
| Whiteknight | ah, that is a good question | ||
| plobsing | kiwichris: there's a bit more under various pages at docs.parrot.org/parrot/latest/html/...loper.html | ||
| kiwichris | plobsing, thanks. | 01:42 | |
| I want to understand the constraints the VM when embeddeding. For example can I have more than one intrpt running in different thread active ? | 01:43 | ||
| chromatic | Yes. | 01:44 | |
| By design, interpreters should never interfere with each other. In practice, there may be bugs that we need to fix. | |||
| kiwichris | My concern is exit(3) being called. | 01:45 | |
| It stops everything. | |||
| Sorry to be a pain and head back to this topic. | |||
| Whiteknight | the exit opcode calls the exit() libc function | 01:46 | |
| so yeah, that's a bit of a problem | |||
| kiwichris | Another one. If I start an interp and it exits, with my RTEMS specific exit path and avoids libc exit, can I start a new interp and it should run ? | 01:48 | |
| chromatic | Yes. | 01:51 | |
| I recommend starting a parent interpreter, then creating children of that interpreter and running code in them though. | |||
| kiwichris | Great. I getting an assert in pt_add_to_interpreters. I will take a look. Should I raise a ticket with the details ? | ||
| chromatic, the RTEMS shell is just a thread that can run parrot. I am not sure how the parent/child interp model works. | 01:53 | ||
| chromatic | It's sort of like the init process model on Unix. | 01:54 | |
| Every interpreter has a parent interpreter, except for the first interpreter which has no parent. | |||
| If you want to create a new interpreter, it needs a parent. | |||
| kiwichris | chromatic, interesting. So I do a new but do not call runcode ? | 01:55 | |
| chromatic | Exactly. | 01:57 | |
| kiwichris | chromatic, then I create a child and a thread and let that thread call runcode ? | ||
| chromatic | Yes. | ||
|
01:58
eternaleye joined
|
|||
| kiwichris | chromatic, nice. I like this. It is a sort of embedded fork. | 01:58 | |
|
01:58
elmex joined
|
|||
| kiwichris | chromatic, does runcode ever return ? | 01:59 | |
| chromatic, when run as a child ? | |||
| chromatic | Yes, when the code run ends. | 02:00 | |
| kiwichris | chromatic, many thanks. I will wander away and play with this. | ||
|
02:02
s1n joined
|
|||
| chromatic | If you look at the source code for Parrot::Embed in the Parrot distribution, you'll see similar embedding. | 02:03 | |
| There's a file called Embed.xs which creates a parent interpreter at the start and uses it as the parent for all subsequent interpreters. | |||
|
02:04
integral joined
|
|||
| plobsing | I fixed the libjit_framebuilder nci.t problems on i386 on the weekend. What do I need to do before it can be merged? | 02:06 | |
| chromatic | If kid51 and Whiteknight have looked over it and approve of their respective parts, we'll discuss it in #ps tomorrow and it should be good. | 02:08 | |
| Whiteknight | I looked at it last week, need to check again | ||
| okay, how do I get libjit? | 02:24 | ||
| I thought I had it on my system, but I don't seem to see it now | |||
| plobsing | ftp://ftp.gnu.org/gnu/dotgnu/libjit/ | 02:25 | |
| Whiteknight | there it is | 02:26 | |
| chromatic | No Ubuntu packages; you'll have to make a .deb with checkinstall. | 02:29 | |
| plobsing | is there somewhere I can request a package for ubuntu? not being packaged makes installation a pain. | 02:30 | |
| chromatic | No idea; good question. | 02:32 | |
| diakopter | bugs.debian.org/cgi-bin/bugreport.cgi?bug=514063 | 02:34 | |
| as debian, so ubuntu | 02:35 | ||
| dalek | rrot-plumage: aa58298 | japhb++ | : [plumage] Remove hack for old NQP |
03:07 | |
| rrot-plumage: 88e52c3 | japhb++ | : [TESTS] Test cleanup, stage 1: Refactor MAIN(), git rid of ARGS and G:PI... |
|||
| rrot-plumage: 2c2e0a4 | japhb++ | : [TESTS] Test cleanup, stage 2: Add 01-sanity.t to test testing framework |
|||
| rrot-plumage: 8303084 | japhb++ | : [TESTS] Test cleanup, stage 3: Rename glue.t -> 02-glue.t, util.t -&g... |
|||
| dukeleto | wow, japhb++ is on a roll | 03:10 | |
| japhb | indeed. :-) | ||
| dukeleto | japhb: nice refactoring. i dig it | 03:11 | |
| japhb | dukeleto, thanks! :-) | ||
| japhb is currently filling in 03-util.t to improve coverage of Util.nqp | 03:12 | ||
| dukeleto | i have still been thinking of how to make the harness not depend on Util.nqp | 03:13 | |
| is it evil to inline slurp() and rx() in the harness? | |||
| japhb | Hmmm. I think rx() may be able to go away once we have the P6Regex happy place. I'll think about slurp() when I'm done with current task. | 03:14 | |
| (P6Regex happy place is blocked on lack of continuable matches in NQP-rx at the moment.) | 03:15 | ||
| dukeleto, if you haven't been watching it, pmichaud and I have been doing low-friction task management for NQP-rx here: wiki.github.com/perl6/nqp-rx/plumage-requests | 03:16 | ||
|
03:27
hercynium_ joined
|
|||
| dukeleto | japhb: yes, i have taken a look at plumage-requests, but i will again, since it seems that you two have been burning the candle at both ends lately | 03:31 | |
| japhb | dukeleto, yeah, making up for health problems the last few weeks | 03:32 | |
|
03:35
janus joined
03:37
Essobi_ joined
|
|||
| cotto | why does plumage need float support? | 03:39 | |
|
03:41
JimmyZ joined
|
|||
| japhb | cotto -- will be used for user interface stuff. | 03:41 | |
|
03:44
Andy joined
|
|||
| dalek | rrot-plumage: 5a3959b | japhb++ | : [CORE] Util.nqp: Add missing SYNOPSIS entries |
03:46 | |
| rrot-plumage: 8101383 | japhb++ | : [TESTS] Fill out hash method tests in 03-util.t |
|||
| japhb | ... and with this next push, time to take a break. | 03:55 | |
| pmichaud | purl message bacek I apologize for some of my earlier comments and remarks about HIK performance; upon reflection my statements were likely more condescending than deserved. I shall try to be more constructive with my comments in the future. | 03:56 | |
| purl | Message for bacek stored. | ||
| pmichaud | thanks, purl | ||
| dalek | rrot-plumage: dec4bd5 | japhb++ | : [TESTS] 03-util.t: Add tests for set_from_array() |
03:57 | |
|
04:02
kurahaupo joined
04:12
pdcawley__ joined
04:18
kid51 joined
04:32
pdcawley_ joined
04:59
nopaste joined
|
|||
| bacek_at_work | pmichaud, no worries. trac.parrot.org/parrot/wiki/Parrot...version=13 :) (And perfectly accept same in my address) | 05:02 | |
| kurahaupo | ping bacek ? | 05:05 | |
| purl | I can't find bacek in the DNS. | ||
| kurahaupo | Is doesn't work; should it? $P0 = new 'Integer' ; $P0 = .MIN_INT ; neg $P0 ; $S0 = typeof $P0 ; is($S0, 'BigInt', 'promotion worked') | 05:08 | |
| s/Is/This | |||
| chromatic | I don't know if we perform overflow detection with neg wraparound. We probably should. | 05:09 | |
| kurahaupo | We do (so far) for add & sub... | ||
| bacek_at_work | kurahaupo, there is no VTABLE_neg in Integer. So it uses Scalar.neg, which doesn't check for overflows. I agree with chromatic, we should check it. | 05:11 | |
| chromatic | Except that neg_i_i can't autopromote. | 05:12 | |
| bacek_at_work | I think it should throw exception than | 05:14 | |
| kurahaupo | It seems like we have a problem. Is an Integer PMC simply a Box in which to put an INTVAL, with identical behaviour to an integer register ($I0 etc), or is it a "small version of BigInt" ? | 05:15 | |
| I would argue for the former: if you *want* a BigInt, just ask for one. | |||
| chromatic | I have no better idea than an exception. | ||
| kurahaupo | So should Integer do *any* promotions at all? | 05:16 | |
| chromatic | I think so. | ||
| dukeleto | kurahaupo: in which case? | ||
| kurahaupo | (This is apropos converting t/pmc/bigint.t to PIR, BTW) | ||
| dukeleto | kurahaupo++ # fellow soldier in the Perl->PIR test army | ||
| kurahaupo: we need lots more tests for edge cases | 05:17 | ||
| kurahaupo | The test suite appears to test autopromotion of addition (and subtraction also works). When I added tests for abs(MININT) and neg(MININT) they both failed. | ||
| chromatic | Good, we can fix them then. | 05:18 | |
| kurahaupo | And the "correct" behaviour should be .... ? | ||
| kurahaupo is leaning towards ripping out the autopromotion and throwing exceptions on all overflow cases | 05:19 | ||
| chromatic | That simplifies the implementation, but won't that lead to bugs in certain cases? | ||
| Bugs of usage, I mean. | |||
| kurahaupo | Exceptions are our friends | 05:20 | |
| diakopter | is this an error in PAST __dump: parrot.pastebin.com/f3f8bd543 line 30 is missing the var name? | 05:21 | |
| chromatic | Do you want to wrap every integer operation in an exception handler? | 05:22 | |
| kurahaupo screws up face with a *yuck* expression | |||
| dukeleto | kurahaupo: min/max and friend have lots of bugs lurking near auto-promotion boundaries | 05:24 | |
| kurahaupo | I'm pretty sure we don't need to put an exception handler, say, around an integer iterator over a range where both endpoints are integers. IOW it's cheaper to check the values for prospective overflow, which can then be subject to CSE-type optimisation | ||
| Having checked them, you can be sure they won't overflow and trigger an exception. | 05:25 | ||
| You only blow up if your checking is faulty, which you probably want to know about. | |||
| We might conceivably want to add opcodes for "add-modulo-2^N" (N=32 or 64) | 05:26 | ||
| dukeleto | floor and ceiling have lots of bugs/unspecc'ed behavior as well | ||
| kurahaupo: that might be a nice candidate for a dynop | 05:27 | ||
| kurahaupo | Don't floor & ceil just do whatever the FPU does? | 05:28 | |
| kurahaupo wonders why every time he starts looking at code, it's like upending a can of worms... | 05:29 | ||
| dukeleto | kurahaupo: look at t/op/inf_nan.t | 05:31 | |
| kurahaupo: they are called "yak holes" and they are deep and wide | |||
| kurahaupo | Back to bigint.t -- what should I assert as the "correct" behavour for abs & neg? | ||
| dukeleto | kurahaupo: the hairiest yaks burrow into the earth and live in recursive underground dens of complexity | 05:32 | |
| kurahaupo | dukeleto: are those holes sort of like a TARDIS? | ||
| dukeleto | kurahaupo: what is the $64,000 dollar question? i haven't backlogged | ||
| dukeleto has given up on backlogging. i just jump in the river and start swimming | 05:33 | ||
| kurahaupo: have you split the test file up? | |||
| kurahaupo: into foo-old.t and foo.t ? | |||
| kurahaupo | dukeleto: sounds like a good idea, which I've kindof done but probably not in the way you mean. | 05:34 | |
| The 0.064 million dollar question is: given that "add" autopromotes an Integer PMC to a BigInt PMC, but neg and abs don't, how should I fix it? The old bigint.t tests for the former but not the latter. | 05:35 | ||
| chromatic | Add TODO tests for the latter and we'll see how they look. | 05:37 | |
| dukeleto | kurahaupo: add tests, like chromatic says | 05:38 | |
| kurahaupo: if you want to write tests in PIR, svn copy a file called bigint-old.t, then make bigint.t the new, PIR tests | |||
| kurahaupo: that way you don't have to translate all tests at once | 05:39 | ||
| kurahaupo: t/op/inf_nan.t is a good example for how the PIR test should look | |||
| kurahaupo: an then send an email to parrot-dev, giving the link of the trac ticket that the patch is attached to, and ask what the proper behavior should be | 05:40 | ||
| then allow the proper amount of bike-shedding, and then make the tests Just Do The Right Thing That Everyone Agrees On | 05:41 | ||
| easy, huh ? | |||
| kurahaupo | piece of gateau. | ||
| I like the idea of introducing the PIR tests a few at a time -- I'm only at line 400 of 1200 so far; I hope nobody mods the file before I can get it checked in! | 05:42 | ||
|
05:46
fperrad joined
|
|||
| dukeleto | kurahaupo: we will hit them with a big stick | 05:49 | |
| kurahaupo: definitely submit a patch of what you have so far, so that we can tell you if you are on the right track | 05:50 | ||
| kurahaupo: you can always overwrite the patch on the trac ticket with the newest version of the patch | |||
| kurahaupo: incremental translation was needed, because nothing was getting done, since translating an entire file at a time is a huge undertaking | 05:51 | ||
| kurahaupo: look for other *-old.t files for tests which need to be translated to PIR | |||
|
06:07
bacek joined
|
|||
| bacek | o hai | 06:09 | |
| JimmyZ | helloooooooooooo. | 06:10 | |
| dalek | rrot: r42395 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] pge allows multi source files |
06:14 | |
| JimmyZ | whiteknight? | 06:27 | |
| purl | it has been said that whiteknight is mailto:wknight8111@gmail.com or the grand master funk or wknight8111.blogspot.com/ | ||
| dalek | rrot: r42396 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] step 'test' try first to run 'perl t/harness' |
06:31 | |
|
06:37
TiMBuS joined
|
|||
| dalek | rrot: r42397 | fperrad++ | trunk (2 files): [library] improve variable interpolation |
06:37 | |
| dukeleto | bacek: good localtime() | 06:44 | |
| bacek: thanks for those links to realtime gc algorithms, there is really cool stuff going on there | |||
| bacek: i am concerned that parrot on RTEMS will have to turn off the current gc to be actually real-time. | 06:45 | ||
| bacek: but we can support a RTEMS-compatible real-time gc | |||
|
06:48
mokurai1 joined
07:20
uniejo joined
08:17
mikehh joined
08:24
payload joined,
Zak joined
08:26
payload joined
08:55
davidfetter joined,
payload joined
08:57
payload1 joined
09:05
payload joined
09:10
payload1 joined
|
|||
| dalek | rrot: r42398 | barney++ | trunk/NEWS: Went over the news for 1.8.0. |
09:14 | |
|
09:18
AndyA joined
|
|||
| mikehh | We are still failing t/src/warnings.t - test : 2 with --optimize on i386 and amd64 with both g++ and gcc- see TT #1187 | 09:37 | |
| I am getting testr failure as well | 09:38 | ||
| bbiab | 09:39 | ||
|
10:54
payload joined
|
|||
| bacek | dukeleto, we have to properly encapsulate our GC. Then we can provide RT version of it. | 11:00 | |
|
11:22
mikehh joined
|
|||
| dalek | rrot: r42399 | fperrad++ | trunk/tools/dev/mk_language_shell.pl: [languages] now works with a Configure.pir or a setup.pir (distutils), instead of Configure.pl. |
11:46 | |
|
12:00
kid51 joined
|
|||
| kid51 | libjit_framebuilder branch: Have spotted one codingstd error. Am in process of testing correction. Otherwise, passes 'make fulltest' on Linux/i386 and Darwin/PPC. | 12:02 | |
|
12:06
payload joined
|
|||
| dalek | rrot: r42400 | jkeenan++ | branches/libjit_framebuilder/config/gen/libjit/frame_builder_libjit_c.in: Correct codingstd error: c_indent. |
12:14 | |
| TT #1232 closed by jkeenan++: t/src/warnings.t: Test fails when Parrot built with g++ and --optimize | 12:24 | ||
|
12:24
plobsing joined
12:25
nopaste joined
12:32
payload joined
12:52
cognominal joined
12:54
bluescreen joined
12:56
whiteknight joined
13:12
bluescreen joined
|
|||
| whiteknight | good morning #parrot | 13:20 | |
| plobsing | morning whiteknight | 13:21 | |
| whiteknight | hello plobsing | ||
| I wasn't able to get libjit installed and tested last night before bedtime | |||
|
13:21
gaz joined
|
|||
| whiteknight | I swore I already had it, but I must have lost it at some point | 13:22 | |
| plobsing | that's alright. | 13:23 | |
| whiteknight | no it's not. I should have done it earlier | ||
| plobsing | so I've been thinking about lorito. If we specify the output of the parser as a tree, we can avoid specifying a language for it for the time being, and I can start hacking away at a prototype | 13:28 | |
| with a throwaway language | |||
| whiteknight | it's not just the output of the parser, lorito is supposed to be the way that ops are defined | 13:29 | |
| right now they are defined in C | |||
| plobsing | lorito = ops defn + backend | ||
| (s) | |||
| whiteknight | right | ||
| plobsing | and I'm interested in hacking on the backend | ||
| whiteknight | each lorito op should correspond in a trivial way to a jittable operation | 13:30 | |
| ok | |||
| so are you talking about the output of the lorito parser? | |||
| plobsing | yes | ||
| and I'll make a makeshift parser | |||
| whiteknight | okay, but that's where I'm getting confused. if lorito is trivially simple, the output won't be a "tree" | 13:31 | |
| plobsing | but then it'll be a pain to write the ops. | ||
| and we want to expose as much of the VM as possible to the JIT, so it makes sense to define it in a structured language | |||
| whiteknight | the more structure it has, the more parsing effort it takes to JIT it | 13:32 | |
| plobsing | there are already good examples of converting structured languages to JIT | ||
| whiteknight | how structured are you talking? because ops are already written in C and that's far too high level to be JIT'd efficiently | ||
| plobsing | not to mention, most JITs operate on a level similar to C operations (eg: store this in such and such an array) | ||
| whiteknight | we would basically need to write a whole C parser just to do JIT at runtime | 13:33 | |
|
13:33
ruoso joined
|
|||
| plobsing | um. no. the JIT is free to store the information about jittable things *in a way that is most conveniant to that JIT* | 13:34 | |
| so, for llvm, that would be .bc files | |||
| whiteknight | okay, so that's where my thought process is derailed | ||
| plobsing | how so? | ||
| whiteknight | we have .ops files (Written in some language X), gets converted to the JIT-native format at build time, and then the JIT assembles those building blocks together at runtime? | 13:35 | |
| plobsing | that's what I thought we were doing all along. | ||
| whiteknight | right, so I'm trying to figure out what you think language X should be | ||
| because we also need to be able to convert that directly to machine code at build time to support our non-JIT runcores | 13:36 | ||
| plobsing | something like C. | ||
| whiteknight | ok. so how is it like C? same syntax? Same capabilities? etc? | ||
| plobsing | I was thinking of doing a prototype with pascal (because I have porcupine + libjit's dynamic pascal at my disposal) | ||
| note however I don't propose pascal for the final product | |||
| whiteknight | is that how libjit does it natively, in pascal? | 13:37 | |
| plobsing | no. it has a pascal interpreter | ||
| as an example | |||
| whiteknight | okay | ||
| I'm not sure I would recommend pascal as the final product either, especially since that won't work so well with LLVM | |||
| plobsing | my understanding is that pascal is easier to parse, and operates at a similar level to C, but with a better type system | ||
| the better type system ties into the strengths of several VMs, which have better type systems to C | 13:38 | ||
| whiteknight | I'm sure the pascal people say that :) Everybody has good things to say about their own product and bad things to say about the competition | 13:39 | |
| ease of parsing is why I think we need something lower level than C or Pascal | |||
| and if we had to decide between the two, something more like C would be better (since our codebase is mostly in C), I think | 13:40 | ||
|
13:40
payload joined
|
|||
| whiteknight | but, that's just my initial impression | 13:41 | |
|
13:41
tetragon joined
|
|||
| plobsing | whiteknight: JIT's are mostly designed to JIT structured languages initially | 13:41 | |
| structured, static languages | |||
| whiteknight | I'm not sure I understand what you mean by that | ||
| plobsing | llvm, libjit, jvm | ||
| whiteknight | LLVM for instance operates on an assembly-like language natively | 13:42 | |
| with opcodes and labels | |||
| plobsing | yes. but there are several projects which use structured, static languages that target it | ||
| it does it very well | |||
| whiteknight | Right, but you still need to parse the structured language into the lower-level representation for LLVM to consume natively | 13:43 | |
| plobsing | and you can do that at compile time | ||
| no big deal | |||
| purl | Yes it is! I hate you I hate you | ||
| plobsing | the feeling is mutual purl | ||
| whiteknight | it's been said before that we don't want to maintain our own C parser in the repo. | 13:44 | |
| I think we can extend that by analogy to anything that's equally high-level | |||
| however, since we already have NQP in the repo, it's not unthinkable to use that | 13:45 | ||
| plobsing | what is ncigen then? does it not parse C and generate NCI defn's? | ||
| whiteknight | or, a subset of that | ||
| ncigen, I believe, parses a list of simplified signatures only | |||
| plobsing | oic | ||
| README was misleading | |||
| whiteknight: I don't think nqp or anything that targets execution on parrot is a good idea. | 13:46 | ||
| whiteknight | src/call_list.txt | ||
|
13:46
payload joined
|
|||
| plobsing | no. that's nativecall.pl | 13:46 | |
| whiteknight | oh, then I may be confused | ||
| plobsing | compilers/ncigen | ||
| whiteknight | far too many of these stupid little tools laying around | 13:47 | |
| plobsing | whiteknight: my argument for a structured lorito is that it makes it less painful, which means we can use it more extensively | ||
| the more extensive our use of lorito, the more the vm is exposed to JIT, and the better we can inline our hot path | |||
| whiteknight | we aren't against bootstrapping. And we can check in generated files and use them to build parrot from scratch | 13:48 | |
| plobsing | for example, i could imagine all of our pmc's available for inlining | ||
|
13:48
payload joined
|
|||
| whiteknight | or, a two-stage build process where the first stage parrot isn't JIT capable | 13:48 | |
| plobsing | no more vtable lookups in tight loops | 13:49 | |
| whiteknight | and it generates the JIT libraries for the second stage | ||
| agreed: vtable lookups and indirect calls get expensive | |||
| missed branch predictions, cache misses, etc | 13:50 | ||
| plobsing | anyways, I've got to get to $work. | ||
| I hope you consider making lorito structured for the reasons I've detailed above. | 13:51 | ||
|
13:58
payload joined
14:06
payload1 joined
14:08
payload joined,
mberends joined,
PerlJam joined
14:48
Austin_away joined
14:57
patspam joined
15:13
bubaflub joined
|
|||
| Essobi whispers 'Anger is a gift.' | 15:18 | ||
| whiteknight | not what I want for xmas this year | 15:19 | |
|
15:21
Psyche^ joined
|
|||
| Essobi | hahaha | 15:21 | |
| you're the second person who said that | |||
| PerlJam | I'll take anger for xmas ... i'll just regift it :) | 15:22 | |
|
15:23
cognominal joined
15:30
redbrain joined
|
|||
| redbrain | bbredbrain: status | 15:31 | |
| bbredbrain | Debian-ARM-Feroceon: offline | ||
| Debian-PPC-G5-test: idle, last build 2h16m56s ago: build successful | |||
| Debian-UltraSparcII: idle, last build 2h05m05s ago: failed test | |||
| Debian-x86-test: idle, last build 2h31m40s ago: build successful | |||
| purl | Since Wed Oct 28 01:13:35 2009, there have been 2542 modifications and 1287 questions. I have been awake for 13 days, 14 hours, 17 minutes, 6 seconds this session, and currently reference 809289 factoids. Addressing is in optional mode. | ||
| whiteknight | impressive | ||
| redbrain | some bsd comming soon :) | ||
| whiteknight | redbrain++ | ||
| redbrain | might be some weeks though becasuse i have some work to do and want to get back to playing around with parrot :) | 15:32 | |
| crules.org:8010/builders/Debian-Ult...s/warnings | |||
| whiteknight | hey, no rush. You need to be having fun too :) | 15:34 | |
| I wonder what all those casting problems are caused from | |||
| redbrain | thanks its kind of cool isn't it though going to setup some buildbots for my programming language project too ...eventually :P | 15:35 | |
| NotFound | Are you talking about making lorito a language even more complex than pir? I've supposed that the idea was just in the opposite direction. | 15:36 | |
| whiteknight | NotFound: That seems to be plobsing's idea, yes | 15:37 | |
| and I have to admit that I am swayed by it | |||
| PerlJam | making lorito more complex than pir? | 15:38 | |
| redbrain | anyways i'll be back later going to make some lunch :) | ||
| NotFound | If we talk seriously about using a pascal-alike language for writting ops, I'll just quite the project. | ||
| Seriously. | |||
| purl | I'm totally freaking serious. | ||
|
15:45
payload joined
|
|||
| whiteknight | It wouldn't be pascal | 15:47 | |
| if we were going to use a language of that level, it would be C | |||
| which raises the prospect, what if C *was* lorito? | |||
| LLVM is certainly capable of compiling C down to LLVM bytecode | |||
| redbrain | are you redesigning pir? | ||
| whiteknight | and all we need at runtime is just that bytecode, we don't need to do any parsing at runtime | 15:48 | |
| NotFound | I think the intention of a lot people was mainly to avoid the need to use C in lots of places. | ||
| whiteknight | redbrain: bnot really. We're adding a new abstraction layer "Lorito" that will nicely interface PIR with a JIT engine | ||
| at the moment, PIR is not easy to JIT | |||
| NotFound: yes, true. But if it means we don't need to rewrite everything, that might be a benefit | 15:49 | ||
| NotFound | At the moment, pir mostly works. Something that a lot of proposals seems to not care about. | ||
| whiteknight | NotFound: what do you mean by that? It does work, but I don't think it's ideal | ||
| redbrain | i was talking to llvm guys few weeks ago and they were saying if you have like a runtime with a basic switch loop and you turn the runtime functions into a library you can compile it with llvm-gcc so you turn it into bytecode which llvm does the jitting for you because apartently there is some trick with linking against it | ||
| NotFound | whiteknight: talking about writing a full C compiler is fantasy. | 15:50 | |
| redbrain | NotFound: yeah very true my first experience with compiler stuff i started writing a basic c-compiler it worked but only for very limited subset of c | ||
| whiteknight | NotFound: I disagree. We don't need a full C compiler, just whatever subset the ops use | ||
| but that's not even the issue, LLVM *is* the C compiler | 15:51 | ||
| we use LLVM to compile the .ops files to bytecode, and then use LLVM at runtime to JIT them | |||
| so if Lorito is C, all the ops are already written in Lorito and we already have a Lorito compiler | 15:53 | ||
| NotFound | whiteknight: try to compile any .pbc file with a limited subset of C. | ||
| whiteknight | NotFound: we don't compile .pbc files. it's a two-stage process | 15:54 | |
| we compile C files to LLVM BC files. Then we use the PBC to lookup functions in the BC file, combine them together into methods, JIT them, and execute the machine code | 15:55 | ||
| it's the same way we use .pbc files to lookup functions in the Fast Core | 15:56 | ||
| NotFound | What's a BC file? | ||
| redbrain | yeah thats quite cool :) | ||
| whiteknight | "BC" is my shorthand there for "LLVM Bytecode" | ||
|
15:57
AndyA joined
|
|||
| NotFound | So the plan is to us full embrace LLVM? | 15:57 | |
| whiteknight | That's what Allison said, yes | ||
| redbrain | even though llvm is beast its probably the safest option since its activly developed etc | 15:58 | |
| whiteknight | libjit is active too | ||
| but that's neither here nor there, really | |||
| LLVM does come with an impressive suite of tools | 15:59 | ||
| And there are good possibilities for Parrot to integrate closely with LLVM | |||
| pmichaud | #ps in 150 | 16:00 | |
| redbrain | yeah good point | ||
| NotFound | I'm not against using LLVM or any other platform, but I supposed we pretending to be plaftorm independent. | ||
| moritz | is there any platform parrot runs on and llvm doesn't? | 16:01 | |
| whiteknight | I have been arguing for JIT engine independence, yes | ||
| LLVM I think is shakey on Windows | |||
| but in development | |||
| I think the goal is that Parrot will run everywhere, but if we have LLVM too it will just be faster | 16:02 | ||
| redbrain | i always wondered how do things like llvm or libjit handle like multi threaded apps wanting to access the same jitted function etc | 16:03 | |
| NotFound | I think if we are going to a way like that, we can also consider targeting jvm, or cli. | 16:04 | |
| whiteknight | I'm not sure JVM or CLI provide any benefits to Parrot | ||
| NotFound | whiteknight: same for llvm | ||
| whiteknight | LLVM gives us JIT and AOT | ||
| and it gives us those things without additional overhead | 16:05 | ||
| A translator from PBC -> CLI would be interesting, but not really a benefit | |||
| NotFound | whiteknight: you seems to assume that that means speed and some other benfits, but I haven't seen any proof of that. | ||
|
16:06
darbelo joined
|
|||
| whiteknight | NotFound: you need proof that JIT brings speed benefits? | 16:06 | |
| NotFound | whiteknight: yes. | ||
|
16:07
fperrad joined
|
|||
| NotFound | Our previous JIT is a good counter example. | 16:07 | |
| whiteknight | our previous JIT was not a real JIT | ||
| and didn't do anything that a good JIT does | |||
| NotFound | whiteknight: and we can't say same about our future JIT, beacause it doesn't exist. | ||
| whiteknight | look at projects like smalltalk, or unladen swallow which is approaching 5x speedups | ||
| NotFound: We're desiging our future JIT right now. We're desigining it to improve speed | 16:08 | ||
| darbelo | IIRC the JIT removal gave us a ~1% speed improvement, by virtue of the struct pruning. | ||
| just to give NotFound more ammo. | |||
| whiteknight | it's not the same thing. Our old JIT wasn't a real JIT | ||
| you can't compare it to LLVM | |||
| NotFound | whiteknight: give me the resources of google and I buy you at least a 10x speed improvement ;) | 16:09 | |
| whiteknight | And, our old JIT *did* improve runtime performance | ||
| it wasn't much, but there was a measurable improvement with it | |||
| especially when combined with cgoto and PIC | |||
| I don't have the numbers handy | |||
| NotFound | whiteknight: at the cost of an immense lose on developpers time and patience. | 16:10 | |
| whiteknight | NotFound: no question.It wasn't good. But it was a performance improvement | ||
| and a real JIT will be a bigger improvement without draining developers | |||
| NotFound | I don't buy at that cost. | ||
| darbelo | whiteknight: The frame builder gives more bang for the buck 30% on start up time. vs I don't know 5% at runtime? | 16:11 | |
| whiteknight | the frame builder is a special case. There are direct tradeoffs to be made | 16:12 | |
| A "smart" frame builder would precompile stubs used by Parrot internally, and delay others until runtime | |||
| but we're still early in that development | 16:13 | ||
| We got rid of old JIT for a reason, and are replacing it for a reason. We expect improvements | 16:14 | ||
| darbelo | True. Hm. Speaking of that. I think plobsing's branch is ready to merge, have you looked at it? | 16:15 | |
| whiteknight | I tried last night but ran out of time | 16:17 | |
| will tonight, if nobody beats me to it | |||
| darbelo | I looked at it, but I'm hardly a domain expert. | 16:19 | |
| NotFound | Don't take me too seriously, I'm in a bad mood because of dayjob things. | ||
| szbalint | Function aware (as opposed to simplistic op dispatch) JIT in today's world is a necessity, so that a. you don't have to go microoptimizing things for mediocre performance b. to counterbalance the encapsulation penalties c. to be fast enough as a platform for implementing languages on top of. As far as I know the old JIT implementation was quite op specific and didn't do anything about the C/PIR barrier crossings that take up a lot of the execution time... | 16:20 | |
| redbrain | yeah to be honest jitting is somethin i need to learn more about but i am still not convinced it will beat a really well cleanly written runtime because the amount of code to manage the jit and dispatching is an overhead | 16:25 | |
| though i still think jitting is a good idea | |||
| since it gives many more possibilties | |||
| NotFound | szbalint: however people keeps using perl, python, and other languages old versions without any jit. | ||
| And even non jitted jvm's | 16:27 | ||
| szbalint | yes, that's why I said a., for Perl 5 | ||
| NotFound | Perl 5 works. Many teoric better designed projects don't. | 16:29 | |
| dalek | rrot: r42401 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] add getenv/setenv OS utilities |
16:30 | |
|
16:32
Zak joined
|
|||
| dalek | a: 4ec9b26 | fperrad++ | t/object.t: untodo a test |
16:33 | |
| a: e81e58d | fperrad++ | setup.pir: add custom targets |
|||
| whiteknight | redbrain: JIT is a tradeoff: increased startup time (compilation) in exchange for improved performance over the life of the program | 16:39 | |
| for short programs it's useless, but for longer programs the costs amortize over time | |||
| if we use a trace-based approach, we can determine where the biggest gains are, and only compile critical paths to save on startup time | 16:40 | ||
| redbrain | whiteknight: yeah thats the thing thats been in the back of my mind :P, though i find it head bending as in what can you jit do you compile the program basicly or jit bits and pieces as they are called throughout the program managing that seems quite hard | 16:41 | |
| NotFound | whiteknight: I've been hearing for years people saying that with that approach java, or cli, will beat C. I've failed to see demonstrations. | ||
| whiteknight | yeah, that's true. It's hard to keep track of everything | ||
| NotFound: it's never going to beat C. Anybody who says that doesn't know what they are talking abou | 16:42 | ||
| redbrain | and what happens if your calling un-jitted libraris etc tbh i wouldn't know where to start and then how do you jit the only thing i can think of doing it is building some kind of shared library with the jitted functions and call it with dlsym functions | ||
| whiteknight | A VM+JIT will be a normal VM though. I can find lots of examples to prove that | ||
| szbalint | NotFound: Perl 5 works on top of 15 years worth of optimizations and XS, and if you want reasonable speed you're using XS. | ||
| whiteknight | redbrain: it's simple. At the machine code level we just jump control flow to the entry point of the library. JIT can do that very easily | 16:43 | |
| JIT isn't some magical process: It's just a normal compiler that compiles code down to normal machine code | |||
| NotFound | szbalint: and other approaches work on... They work? | 16:44 | |
| redbrain | yeah that makes more sense but if your generating machine code can you literly ./jittedprogram ? :P | ||
| whiteknight | the magic comes from doing the compilation lazily at runtime | ||
| redbrain: yes, that's a possibility. AOT (ahead-of-time) compilation can be used to convert our bytecode down to native optimized executables | |||
| szbalint | NotFound: you mean that you're doubting whether JIT for Parrot could work? | 16:45 | |
| whiteknight | ...which would use the same mechanism at JIT, just writing the machine code to a file instead of executing it | ||
| NotFound | whiteknight: that is one of the things I dislike. A trend to think that we just switch to using some jit library, and magically all will be beautiful. | ||
| szbalint: We don't have a JIT that works. That is a reality, not a belief. | 16:46 | ||
| whiteknight | NotFound: no, it's definitely not that simple. There are modest gains to be had from a naive approach | ||
| but the real gains come from deeper integration with the JIT engine, and complex algorithms built on top of JIT | |||
| redbrain | whiteknight: wooo thanks very much i think i see how that works properly now i tried starting a thread on comp.compilers some time ago on this got quite interesting compilers.iecc.com/comparch/article/09-07-079 i built a basic jit for some small functions like + / ... but i just generated x86 code and turned it into a shared library i could call with dlsym and i knew this couldnt be the right way to do it :) | 16:47 | |
| whiteknight | nice! | 16:48 | |
| szbalint | NotFound: As far as I know there isn't any JIT in Parrot atm, so it can't have any properties. Worthwhile JIT has been done elsewhere with good results, so _building_ one is in the realms of possibilities | ||
| whiteknight | JIT is very hard to do properly. That's why we would rather use a good existing one then try to create our own | 16:49 | |
| NotFound | szbalint: "not work" is not a property, is the absence of a property. A non existent thing obvoiusly don't have that property. | ||
| whiteknight | let's not digress into an argument about the philosophy of being | 16:50 | |
| szbalint | indeed | ||
| NotFound | And I don't dount that is possible and interesting to work on a JIT. I doubt that we must fully commit to one that isn't ever designed. | ||
| s/ever/even | 16:51 | ||
| whiteknight | Here are the facts: (1) Parrot does not have a JIT right now, (2) Parrot has less-than-optimal performance right now, (3) JIT has been demonstrated to improve performance in other VMs | ||
| NotFound: I think it is getting designed quite well. We still have lots to discuss though | 16:52 | ||
| a lot of it needs to be put on paper eventually | |||
| NotFound | To be burnt? ;) | 16:57 | |
| NotFound is the Spanish Inquisition | 16:58 | ||
| szbalint | I don't find you unexpected. | ||
| darbelo hides his books. | 16:59 | ||
|
17:01
theory joined,
kj joined
|
|||
| NotFound | Thinking about the philosophical point... Is possible to set a property on PMCNULL? | 17:02 | |
| darbelo hopes not. | 17:05 | ||
| NotFound | Answer: no. Null uses his vtable defaults of throwing. | ||
| whiteknight | we can try to test it. I assume not | ||
|
17:23
Andy joined
17:38
bubaflub joined
|
|||
| kurahaupo regrets UTC+13 and ponders the necessity for sleep which keeps him away from interesting discussions about JIT | 17:40 | ||
| dalek | rrot: r42402 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] revert the :anon logic. |
17:41 | |
|
17:42
allison joined
|
|||
| kurahaupo | good morning Allison | 17:43 | |
| s/morning/$localtime | |||
| dalek | lscript: ed47d61 | fperrad++ | setup.pir: improve readability |
17:45 | |
| lscript: aa9c056 | fperrad++ | setup.pir: clean up |
|||
| purl | well, clean up is a breeze | ||
| darbelo | ps in ??? | ||
| dalek | rkdown: 29d36d7 | fperrad++ | setup.pir: code tidy |
||
| moritz | 44 | ||
| date --utc is very helpful ;-) | |||
| dalek | l: 91aa291 | fperrad++ | setup.pir: code tidy |
17:47 | |
| darbelo | I know what time it is. I wasn't sure if ps was synched to a clock or the sun. | ||
| ;) | |||
|
17:51
iblechbot joined,
mokurai joined,
barney joined
|
|||
| dalek | a: f7bbc12 | fperrad++ | setup.pir: build Lua libraries in a custom step, after the build of the Lua compiler. |
17:51 | |
|
17:55
mikehh joined
|
|||
| whiteknight will miss part of #ps today | 17:56 | ||
| whiteknight will try to backlog | |||
|
17:57
payload joined
|
|||
| allison | kurahaupo: good morning | 17:59 | |
| kurahaupo has to leave for $DAYJOB[0]; $DAYJOB[1] =~ s/work/UMTS seminar/ | 18:02 | ||
| diakopter initially read 'seminary' there | 18:03 | ||
| bubaflub | any seminary fans here? | 18:04 | |
| diakopter guesses that any wouldn't answer that question.. | 18:10 | ||
| darbelo isn't religious enough to enter a seminary. | 18:11 | ||
|
18:16
chromatic joined
|
|||
| bubaflub | fair nuff. loaded quesiton. | 18:17 | |
|
18:18
whiteknight joined,
pdcawley__ joined
|
|||
| whiteknight | allison: I don't see the AllisonTasklist page on the wiki | 18:24 | |
|
18:26
ilia joined
|
|||
| allison | whiteknight: do you see it now? | 18:26 | |
| whiteknight: (it looks like I kept hitting "Preview" but not "Save") | |||
| whiteknight | ah yes, it's there now | ||
| pmichaud | I have that problem too. | ||
| I keep hitting Preview and then later wonder "where did my page go...?" | |||
| allison | whiteknight: my 'f' key is dying on this laptop too, need to fix that | 18:27 | |
| pmichaud | doesn't that make it harder to swear? ;-) | ||
| dalek | tracwiki: v1 | allison++ | AllisonTasklist | ||
| tracwiki: trac.parrot.org/parrot/wiki/Alliso...ction=diff | |||
| whiteknight | uck no it doesnt | 18:28 | |
| allison | pmichaud: it does kind of take the orce out of "uck" :) | ||
| diakopter | kind o, even | 18:29 | |
| allison | diakopter: aye, tryin' out me luck o the irish | 18:30 | |
| dalek | tracwiki: v2 | allison++ | AllisonTasklist | 18:31 | |
| tracwiki: trac.parrot.org/parrot/wiki/Alliso...ction=diff | |||
| cotto_work | #ps in -1 | ||
| allison | cotto: thanks | ||
| cotto_work | www.makinggoodsoftware.com/2009/11/...developer/ | 18:37 | |
|
18:37
hudnix joined
18:40
mokurai left,
mokurai joined
|
|||
| moderator | Parrot 1.7.0 "African Grey" is out! | Testing hackathon November 14 and 15 -- improve opcode coverage | find out what's up with the slice opcode | Latest modified TT's: icanhaz.com/parrotbugs | 18:41 | |
| dalek | tracwiki: v3 | allison++ | AllisonTasklist | 18:41 | |
| tracwiki: trac.parrot.org/parrot/wiki/Alliso...ction=diff | |||
| tracwiki: v4 | allison++ | AllisonTasklist | 18:44 | ||
| tracwiki: trac.parrot.org/parrot/wiki/Alliso...ction=diff | |||
| chromatic | cotto_work, it's from last Thursday, entitled "List of possible rakudo needs from Parrot" -- I can forward if you don't have it. | 18:47 | |
| cotto_work | just found it | ||
|
18:59
whiteknight joined
19:01
AndyA joined
|
|||
| whiteknight | I hadn't ever even heard of libffi | 19:02 | |
| dalek | tracwiki: v1 | cotto++ | RakudoTasklist | ||
| tracwiki: initial version from pm's parrot-dev post with some formatting adjustments | |||
| tracwiki: trac.parrot.org/parrot/wiki/Rakudo...ction=diff | |||
|
19:02
AndyA_ joined
|
|||
| whiteknight | but it looks very interesting from what I see | 19:02 | |
| cotto_work | It looked promising from what I could tell. | 19:03 | |
| whiteknight | dukeleto: didn't we already have a Kea project on Parrot somewhere? | 19:05 | |
| chromatic | There's a Kea-CL, I think. | ||
| whiteknight | maybe that's what I'm thinking of | 19:06 | |
| and when is this testing hackathon going to be? (needs to be advertised on the wiki) | 19:07 | ||
| cotto_work | Should the bitwise ops->dynops migration be marked as a milestone? | 19:08 | |
| chromatic | November 14 and 15, whiteknight. | ||
| whiteknight | w00t | 19:09 | |
|
19:09
ilia joined
|
|||
| bubaflub | should i just hangout here to help out with the hackathon this weekend? | 19:10 | |
| dukeleto | whiteknight: kea-cl seems to be defunct | ||
| whiteknight: and kea != kea-cl :) | |||
| whiteknight | gotcha, it was a very fuzzy memory | 19:11 | |
| Austin | Is there any chance of getting a better diagnostic message from the C3 linearization subsystem? | ||
| whiteknight | Austin: what kind of diagnostic? | ||
| dukeleto | whiteknight: kea is a mountain parrot that occasionally feeds on sheep. or velociraptors... | ||
| cotto_work: did someone say dynops? | |||
| Austin | *Any* would be nice. Currently, I get 7"Could not build C3 linearization: ambiguous hierarchy" on a class with essentially one parent. | 19:12 | |
| chromatic | bubaflub, that would be great. | ||
| dukeleto | has anyone benchmarked the speed difference between a plain op and a dynop? | ||
| Austin coughs. | |||
| Dukeleto, I could have sworn you just asked about benchmarks. | |||
| dalek | tracwiki: v6 | whiteknight++ | AllHackathons | ||
| tracwiki: add info about testing hackathon this month | |||
| tracwiki: trac.parrot.org/parrot/wiki/AllHac...ction=diff | |||
| dukeleto | Austin: ? | ||
| Austin | If you can't do it with "helloworld.pir" or "fibonacci.pir" and a sandglass, it isn't done. | 19:13 | |
| chromatic | Any measurable difference would surprise me. | ||
| bubaflub | chromatic: is the hackathon primarily focused on getting tests converted to PIR? anything homework i should have done (besides a functioning build of parrot from trunk) before the weekend comes? | ||
| Austin | :-( | ||
| chromatic | bubaflub, converting tests to PIR will be good. I'd like to increase test coverage of opcodes as well. | 19:14 | |
| A working build and some familiarity with PIR and our test layout should suffice. | |||
| bubaflub | cool. i'm not too familiar with opcodes. any recommended reading? | ||
| whiteknight | testing hackathon is on the wiki and on the calendar now | ||
| dukeleto | Austin: i do lots of parrot benchmarks, have you not seen them? | 19:15 | |
| chromatic | docs/overview.pod is a good place to start. | ||
| Austin | Whiteknight: I declared a class in NQP ("class Kakapo::Test::Undef") and then tried to add an existing class ("Testcase") as a parent using the P6object calls (add_parent). Naturally, it blew up. (??!) But I have no idea why, since the only diagnostic is "ambiguous hierarchy". | ||
| dukeleto | bubaflub: you want to hack on dynops? Bring me a broom. | ||
| whiteknight | Austin: so you want a printout of the hierarchy? | 19:16 | |
| Austin | dukeleto: I have not. Where are they? | ||
| whiteknight: That would be spectacular. Or an explanation of which two classes were in conflict, or something. | |||
| whiteknight | gotcha | ||
| dukeleto | Austin: here is an example that I sent to p5p: www.xray.mpe.mpg.de/cgi-bin/w3glimp...tml?49#mfs | 19:19 | |
| Austin | dukeleto: Looks great! Can we somehow get that added to parrot? "make bench" or something? | 19:21 | |
| I tried to do some opcode benchmarking, and came up against the imcc O(N^2) limit. | |||
| dukeleto | Austin: it has perl 5 cpan module deps right now, but we can attempt to write it in PIR/NQP if we want | 19:22 | |
| chromatic | Austin, benchmark PBCs instead. | ||
| Austin | Chromatic: Thanks for the tip. Why do you suppose I was running imcc? | ||
| dukeleto | tool_bench is the rewrite of euler_bench that is not tied to the euler project problems | ||
| Austin | dukeleto: Why don't we just eat the cpan deps? | ||
| What are the euler project problems? And if tool_bench is the "way forward," does it work yet? | 19:24 | ||
| whiteknight | i would like to have a more comprehensive suite of benchmarks | 19:25 | |
| cotto_work | dukeleto, I wouldn't expect much of a penalty for dynops apart from the time it takes to load them. | ||
| chromatic | Austin, I'd only run IMCC if I wanted to benchmark the parsing cost of dynops. | ||
| Austin | seen bacek? | ||
| purl | bacek was last seen on #parrot 8 hours, 24 minutes and 46 seconds ago, saying: dukeleto, we have to properly encapsulate our GC. Then we can provide RT version of it. | ||
| Austin | chromatic: So how do I compile pir down to pbc? | 19:26 | |
| whiteknight | it may be good practice to write a benchmark that targets a particular subsystem before we do any performance-related work to that subsystem | ||
| dukeleto | cotto_work: that is what i would want to benchmark. but also to verify that they do not incure a large run-time cost, for some unknown reason | ||
| chromatic | ./parrot -o output.pbc input.pir | ||
| dukeleto | whiteknight: i really like that idea | ||
| cotto_work | dukeleto, That's certainly a good idea. I'm all for sanity checks. | ||
| Austin | chromatic: Perhaps I'm confused, but isn't that running imcc? | ||
| (Because that's what I always do to compile pbcs) | 19:27 | ||
| whiteknight | dukeleto: so first goal might be a benchmark that exercises the hell out of PCC | ||
| darbelo | Austin: Yes, but runing the pbc is IMCC-free | 19:28 | |
| NotFound | If you want to absolutely avoid imcc code you must embed, because parrot main calls imcc_main | ||
| darbelo | Austin: for some values of IMCC-free | ||
| chromatic | You avoid IMCC's big-O blowup there. | ||
| By running the PBC directly, I mean. | 19:29 | ||
| Austin | darbelo: My problem lies in the effort to get from pir to pbc. I generated a fairly long pir file mechanically, and then tried to compile it. | ||
| dukeleto | whiteknight: so do fib.pir and primes.pasm *not* excercise the hell out of pcc? | ||
| whiteknight: how do we properly excercise the hell out of pcc? | |||
| whiteknight | dukeleto: maybe they do. if so, we can evaluate that | 19:30 | |
| a good PCC benchmark probably has a few phases: lots of sub calls, lots of method calls, lots of tailcalls and method tailcalls, lots of closures, etc | |||
| darbelo | Austin: I guess you are in trouble then. I don't think anyone here is willing to invest the time to knock an exponent off IMCC's O() | ||
| Austin | Actually, I was wondering about generating the pbc directly. | 19:31 | |
| From what I recall, Bacek had something working in the pbc generation space. | |||
| darbelo | That was a way for pir programs to emit pbc. | 19:32 | |
| Austin | Works for me. | ||
| I'll have to get with him and find out. | 19:33 | ||
| darbelo | Austin: If you want pir -> pbc it doesn't help you. | ||
| Austin | darbelo: I want ->pbc. My benchmarks are of the form "repeat this set of opcodes 10,000 times". I can write that in nqp. | 19:34 | |
| (For somewhat large values of 10,000, ideally.) | |||
|
19:34
desertm4x joined
|
|||
| NotFound | Austin: Maybe a exponential chain of macros can be parsed easily by imcc? | 19:36 | |
| treed | Anyone have tips for having one git-svn repo that you use on two machines? | 19:37 | |
| (rsync or whatever) | |||
| cotto_work | easy karma for someone who wants to add a note to DEPRECATED.pod for trac.parrot.org/parrot/ticket/1260 | ||
| Austin | NotFound: AFAICT, the problem lies in the symbol table. Per chromatic, it is a common table, searched linearly. | ||
| treed | Apparently you can't really do it with normal git operation. | ||
| chromatic | Searched linearly several times, some of them in nested loops. | ||
| Austin | :) | 19:38 | |
| dalek | TT #1260 created by cotto++: [DEPRECATION] bitwise ops and VTABLE functions | ||
| Austin | We have a winnah! | ||
| treed: I'd recommend putting the two machines on the git side of that equation. | |||
| chromatic | cotto_work, are you handling the wikification of Patrick's message? | 19:40 | |
| darbelo | purl: msg plobsing Can you submit a CLA to the PaFo so we can get you a commit bit? | ||
| purl | Message for plobsing stored. | ||
| cotto_work | chromatic, it's under RakudoTasklist | 19:41 | |
| darbelo | purl: msg plobsing See www.parrot.org/files/parrot_cla.pdf | ||
| purl | Message for plobsing stored. | ||
| chromatic | Thanks, cotto_work. | 19:42 | |
| nopaste | "NotFound" at 213.96.228.50 pasted "Austin: something like that" (48 lines) at nopaste.snit.ch/18629 | ||
| cotto_work | also, someone should update DEPRECATED.pod to match trac.parrot.org/parrot/ticket/866 . I just updated it to deprecate only the VTABLE functions mentioned in the tt. | 19:46 | |
| Austin | NotFound: Any way via macro do generate a unique label? | 19:48 | |
| *do=to | |||
| whiteknight | Austin: none that I am aware of | 19:49 | |
| purl | i already had it that way, whiteknight. | ||
| NotFound | Austin: I think is a feature that never worked. | ||
| Austin | :) | ||
| whiteknight | dukeleto: where are fib.pir and primes.pasm? | ||
| treed | Austin: Sure, but I tried setting one as a remote of the other and push/pulling, but weird things happened that may be related to git-svn. I think it's recommended that you not push/pull git-wise when dealing with git-svn. | ||
| dukeleto | whiteknight: examples/benchmark | ||
| NotFound | But my trick is nice, anyway ;) | 19:50 | |
| whiteknight | ah right, I was looking in t/benchmark for some reason | ||
| Austin | Yeah, it kind of blows up on repeated labels. | 19:53 | |
| darbelo | Austin: I've never used it, but I think the packfile PMC can do what you want. | ||
| Austin | Can I say "unless_null foo, +3" or something? | ||
| cotto_work | Austin, that works | ||
| NotFound | Austin: but if local label worked, surely you'll have the problem with the symbol table. | ||
| cotto_work | (iirc) | 19:54 | |
| Austin | NotFound: That's what I was going to test. | ||
| How big is "$P11 = new [ 'Undef' ]"? | |||
| darbelo | one opcode. | ||
| Size of the opcode? You don't want to ask. | 19:55 | ||
| Austin | Looks like "3" | ||
| chromatic | Three, but the third is a reference to a constant. | 19:56 | |
|
19:56
joeri joined
|
|||
| Austin | Sure, but the 3 is for a branch offset. | 19:56 | |
| whiteknight | primes.pasm doesn't appear to call any functions | 19:57 | |
| chromatic | primes.pasm is about math, PMC, and opcode dispatch. | ||
| whiteknight | fib doesn't call nearly as many as I am thinking of, and not with multiple types of signatures | 19:58 | |
| chromatic: right | |||
| I want a benchmark that pushes PCC to the limit | |||
| Austin | Hmm, it still takes a while. | ||
| cotto_work | chromatic, could you do a quick sanity check on TT #1260? | ||
| whiteknight | a quick loop that makes 100K function calls would be a good start | ||
| Austin | Do we have the source code to that url-rewrite bot that was here for a while? | ||
| whiteknight | something similar with permutating argument lists would be very nice | 19:59 | |
| chromatic | fib.pir recurses a lot. | ||
| Austin | Because rewriting TT#1111 as a trac.parrot.org url would be a good service. | ||
| whiteknight | chromatic: that's a step in the right direction, but not nearly so comprehensive as I think we need | ||
| darbelo | Austin: The web irclog does that. | ||
| whiteknight | if we want to improve PCC performance, we need a comprehensive way of measuring that | ||
| chromatic | It's sane to me, cotto_work. | ||
| Austin | That's cool. | ||
| cotto_work | Thanks chromatic. | 20:00 | |
| whiteknight | fib.pir makes one type of sub call: I->I | ||
| chromatic | I agree we need more comprehensive benchmarking, but I focused on fib.pir because we're never going to get any faster than that type of sub call at its slowest. | ||
| whiteknight | fair enough | ||
| I would like to know what the relative speed differences are between named and positional parameters, for instance | 20:01 | ||
| or how expensive it is to do :slurpy and :flat args | |||
|
20:16
patspam joined
|
|||
| NotFound | The PackfileAnnotations PMC does not have METHOD type. This is intentional? | 20:19 | |
| chromatic | Where would you expect it? | 20:20 | |
|
20:20
theory joined
|
|||
| NotFound | All other derived of PackfileSegment, except directory, have it. | 20:20 | |
| And if you want to be able to query the type of a directory entry, you need it. | 20:21 | ||
| dukeleto | whiteknight: what about oofib.pir ? | 20:22 | |
| whiteknight: i hear what you are saying, you want benchmarks for different calling conventions. i don't think we have that right now | |||
| whiteknight | speaking of benchmarks, I would like to get some setup for parrot-linear-algebra eventually | 20:25 | |
| especially being able to compare timings between BLAS calls and pure-PIR versions of the same algorithms | 20:26 | ||
| chromatic | Perhaps we should benchmark some NQP-rx examples. | ||
| That'll give us some concrete numbers to help Rakudo and other HLLs. | |||
| dukeleto | whiteknight: i can do some PLA benchmarks with euler_bench for you. let me know what you want. | 20:27 | |
| chromatic: we definitely need nqp-rx benchmarks. it got a lot slower to compile. i hope it got faster to run. | |||
| whiteknight | what is euler-bench? | ||
| dukeleto | whiteknight: euler_bench is what i use to benchmark parrot, currently | 20:28 | |
| whiteknight | ok. What does it do? | ||
| dukeleto | whiteknight: it is being rebranding tool_bench, but that is still being written | ||
| whiteknight | or, where is the code? | ||
| purl | somebody said the code was already out | ||
| dukeleto | whiteknight: www.xray.mpe.mpg.de/cgi-bin/w3glimp...tml?49#mfs | ||
| purl, euler_bench? | |||
| purl | i heard euler_bench was what i use to benchmark parrot, currently | ||
| dukeleto | purl, forget euler_bench | 20:29 | |
| purl | dukeleto: I forgot euler_bench | ||
| dukeleto | purl, euler_bench is github.com/notbenh/euler_bench and what dukeleto uses to benchmark parrot | ||
| purl | dukeleto: i don't know | ||
| dukeleto | purl, euler_bench is github.com/notbenh/euler_bench | ||
| purl | OK, dukeleto. | ||
| dukeleto | purl, euler_bench is also what dukeleto uses to benchmark parrot | 20:30 | |
| purl | no idea, dukeleto | ||
| dukeleto | purl, die in a fire | ||
| purl | HALP | ||
| diakopter | purl, euler_bench is also that which dukeleto uses to benchmark parrot | ||
| purl | okay, diakopter. | ||
| whiteknight | github down | 20:33 | |
| purl | yes | ||
| whiteknight | github up? | ||
| diakopter | purl, github down is true | ||
| purl | ...but github down is <reply>yes... | ||
| diakopter | purl, github up is true | ||
| purl | OK, diakopter. | ||
| diakopter | purl, no, github up is NEVER | 20:34 | |
| purl | okay, diakopter. | ||
| diakopter | github up? | ||
| purl | github up is, like, NEVER | ||
| diakopter | purl, no, github up is <reply>NEVER | ||
| purl | okay, diakopter. | ||
| diakopter | github up? | ||
| purl | NEVER | ||
| diakopter | heh | ||
| darbelo | purl: github? | 20:35 | |
| purl | github is a repository-centric social network for hackers where $friending eq $cloning_a_repo -- github.com/ or a cocoaruby interface to git : github.com/Caged/gitnub/wikis/home or really nice or a good place or neat enough to take nperez's tags ands tarball them up for me | ||
| chromatic | dukeleto, I think a recent CodeString commit fixed parsing time. (Variable-width string encodings are evil.) | 20:36 | |
| whiteknight | gitorious? | 20:39 | |
| purl | gitorious is getting a lot of work atm, it seems. | ||
|
20:41
jan joined
|
|||
| whiteknight | I like the angry-looking unicorn that is the github error page | 20:41 | |
| and i especially like how they say to check twitter for status updates, but that hasn't been updated since the 7th | 20:42 | ||
| cotto_work | At least you know there'll be a writeup once they get it fixed. | ||
| dukeleto | #github on freenode is the best way to get ahold of the github guys | 20:43 | |
| whiteknight | meh, I don't care enough to join another irc network | 20:44 | |
| darbelo | purl: fleanode? | ||
| purl | i don't know, darbelo | ||
| darbelo | So useless sometimes... | 20:45 | |
| whiteknight | purl isn't useless! | 20:46 | |
| we could use her to weight down papers in a drafty room | |||
| darbelo | whiteknight: Electronic bits don't weight. | ||
| japhb | darbelo, sure they do! Just very, very little. | 20:47 | |
|
20:48
bacek joined
|
|||
| dukeleto | whiteknight: irssi can be connected to as many networks as you need :) | 20:48 | |
| darbelo: irc.freenode.net | |||
| purl | irc.freenode.net is home of the mirror universe #perl that isn't full of assholes. or where you can find a #perl that's supposedly actually got something to do with perl | ||
|
20:48
mikehh joined
|
|||
| darbelo | japhb: I study engineering. Too small to measure := doesn't exist ;) | 20:49 | |
| japhb | whiteknight, plobsing: Saw this a couple days ago, kept forgetting to link it here: blog.vlad1.com/2009/11/06/canvasarr...nvasarray/ | ||
| darbelo, you just need vast quantities, that's all. :-) | 20:50 | ||
| dukeleto | chromatic: i am interested to see if parsing time is noticeably faster | ||
| darbelo: get a smaller epsilon :) | |||
| darbelo | japhb: Too large to fund == Doesn't exist either. | 20:51 | |
| ;) | |||
|
20:51
bubaflub joined
|
|||
| japhb | whiteknight, plobsing: The above link is about how the WebGL people are dealing with NCI where you will be filling, modifying, and reading fast arrays of (sometimes mixed) native types. They essentially separate the concept of a raw buffer and a type mapping into a chunk of that buffer. You can have many type mappings into the same buffer, but those type mappings act as if they were just arrays of the proper type. | 20:53 | |
| darbelo | dukeleto: Oh, I know where fleanode is, I just wanted to know what purl had to say about it. | ||
| japhb | darbelo, Funding really large things just requires using some of the creative math during the proposals that you'll end up using on the project itself ... | 20:54 | |
| dukeleto | darbelo: i see, says the blind man | 20:55 | |
| japhb | "... as he spit into the wind -- 'It's all coming back to me now.'" | 20:56 | |
| dukeleto | japhb: i like that! | 20:57 | |
| whiteknight | dukeleto: chatzilla can be connected to other networks too. I don't care, not gonna do it. Too lazy | 20:58 | |
| dukeleto | whiteknight: alrighty then. | ||
| whiteknight | never underestimate the force of laziness | ||
| japhb | whiteknight, if you're lazy I'm a can of pickles. | ||
| dukeleto | whiteknight: i am on too many channels anyway. you don't want to go down the path of >20 irssi panes | 20:59 | |
| whiteknight | on my personal laptop I have xchat setup to open ~20 channels on startup | 21:00 | |
| but here at work, I'm not able to keep up with all that crap | |||
| so I don't | |||
| japhb: That's a very interesting link. I wonder if/how we could apply that to Parrot-Linear-Algebra | |||
| japhb: I would be very happy to setup any types that you need for OpenGL, of course | 21:01 | ||
| dukeleto | yes, PLA seems like a good place to put types that OpenGL needs | ||
| whiteknight | PLA is really focusing on fast 2D data buffers | 21:02 | |
| japhb | Just being able to get a pointer to the raw buffer (as opposed to the array object header) would be nice. | ||
| whiteknight | the numeric ones have bindings to BLAS, but you don't need to do that | ||
| japhb: I could set up get_pointer for that purpose | 21:03 | ||
| does OpenGL need a float array, or an integral one? | |||
| dukeleto | whiteknight: i would assume both | ||
| whiteknight | yeah, but I want to ask before I start throwing shit together haphazardly | ||
| japhb | whiteknight, yes. :-) Part of the interest of that article I linked is that very often you need a mixed type array, or a single large buffer with multiple type blocks within it. | ||
| I know that may be outside of the bounds of PLA, | 21:04 | ||
| whiteknight | japhb: we have a PMCMatrix2D type which does that | ||
| japhb | but something to think about. | ||
| The other thing (longer term) is being able to lock memory that's being handed off to the video driver. | |||
| whiteknight | doesn't acheive the same separation between data/metadata though | ||
| japhb | nodnod | ||
| whiteknight | lock memory? what do you mean by that? | 21:05 | |
| write-protect it? | |||
| japhb | keep it from being paged out. | ||
| or gc moving it to a new location | |||
| whiteknight | oh, and how would we accomplish that? | ||
| darbelo | whiteknight: With a very clever method you will devise. | ||
| whiteknight | you know what would be really hot? Passing databuffers off to the GPU for fast vectorized mathematical processing | 21:06 | |
| japhb | mlock? | ||
| whiteknight, POGL began working on that a few years back. | |||
| whiteknight | when we lock it is it write-protected? | ||
| japhb | Had some basics working on that to, but then he got a job taking all of his tuits. | 21:07 | |
| whiteknight, well, that's mmap then | |||
| whiteknight | japhb: I'm trying to figure out what you need and what you mean by "lock" | ||
| japhb | whiteknight, two thingsL | ||
| 1. OS told not to page the memory out to swap. | 21:08 | ||
| 2. GC told not to move the buffer. | |||
| whiteknight | Okay, that should be simple then | ||
| what would you need first? FloatMatrix or IntMatrix? | 21:09 | ||
| or something entirely different? | |||
| japhb | FloatMatrix is most valuable. | 21:10 | |
| NotFound | allison: ping | ||
| dalek | TT #1261 created by NotFound++: Document NCI type 'p' behavior for PMCNULL/NULL values | ||
| whiteknight | japhb: okay | ||
| japhb | Not everything, but *most* GL functionality can use float as a fallback type, just possibly slower than the "native" type for the operation | ||
| Number two most valuable is actually byte arrays -- for color buffers/textures. | 21:11 | ||
| And then at the third tier you get into wanting everything else. | |||
| allison | NotFound: pong | 21:12 | |
| NotFound | allison: what dalek just said | ||
| whiteknight | japhb: Matrixy has need of a char buffer for it's weird string handling | 21:13 | |
| so that type will be forthcoming | |||
|
21:14
bluescreen joined
|
|||
| allison | NotFound: looking... | 21:14 | |
| whiteknight | anyway, I have to pack up and go. Later | ||
| japhb | fperrad, backloggin #parrotsketch I notice you saying you wanted to "fix Plumage on Windows" ... um, what's not working? I thought we had everything resolved ...? | 21:15 | |
| NotFound | japhb: we must fix Windows X-) | ||
| cotto_work | NotFound, MS have been trying that for years. | ||
| NotFound | cotto_work: you sure? ;) | 21:16 | |
| fperrad | japhb, not all solved, but we made some progress | ||
| japhb | NotFound, first, go back in time. Second, hire an operating system architect with taste. | ||
| fperrad, OK. What's still broken? | 21:17 | ||
| dalek | rrot: r42403 | pmichaud++ | trunk/runtime/parrot/library/P6object.pir: [p6object]: Make add_parent smarter about adding HLL-specific method types. |
||
| japhb | fperrad, now that I can pass for moderately healthy, I'm anxious to get back into the world domination game .... | ||
| NotFound | japhb: my flux condenser is broken, must fix it first. | ||
| fperrad | japhb, I've problem with $ENV{HOME} and with space in pathname | 21:18 | |
| allison | NotFound: looks great! change "his" to "its" on line 95, change line 97 to "If this is a return type and the value is NULL, PMCNULL is returned,", and change "some damn thing" to "something" on line 99 (I know, that was there before, but figure we might as well clean it up while we're in there) | ||
| NotFound | The "some damn thing" is not mine ;) | ||
| allison: better we can get rid of that part, the UnmanagedStruct usage seems to be consolidated. | 21:19 | ||
| dalek | kudo: 01c042f | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION to get p6object and other fixes. |
||
| NotFound | parrot-mysql depends on it. | ||
| allison | NotFound: aye, I saw that was in the original, just figured we might as well change it while we're editing | ||
| japhb | fperrad, OK. So what is the $ENV{HOME} problem? That env var doesn't exist, I'm guessing? And I assume the space in path problem is during run/qx calls, yes? | 21:20 | |
| allison | NotFound: okay, go ahead and edit the text about UnmanagedStruct | ||
| NotFound | allison: ok, thanks | ||
| fperrad | japhb, $ENV{HOME} exists but it isn't complete, see | 21:21 | |
| NotFound | allison: BTW the UnmanagedStruct usage was already taken for granted in later parts of the draft. | ||
| fperrad | HOME=\\Documents and Settings\\fperrad | ||
| HOMEDRIVE=D: | |||
| japhb | fperrad, oh, interesting. | 21:22 | |
| That's just ... wow. | |||
| I'm guessing it's for remappable network drives? | |||
| allison | NotFound: it's probably been partially updated | ||
| NotFound | Mmmm... I think I was misreading the phrase... The damm thing is not the Unmanaged, but the thing pointed by it. | 21:23 | |
| japhb | fperrad, I've got some Plumage refactorings in a local branch (pending NQP-rx enhancements). I can either there, or if the branch is blocked for too long, turn home-dir fetch into a method with some logic behind it. | 21:24 | |
| NotFound | allison: I think the "or other" is the confusing part. Just "pointer to something" will be clean. | 21:26 | |
| japhb | fperrad, HOMEDRIVE issue now added to Plumage TODO | ||
| dalek | rrot-plumage: a66dee9 | japhb++ | : [META] More TODOs |
||
| japhb | fperrad, where are you seeing the "space in path" problems, exactly? (So I can figure out the scope of what needs to be fixed.) | 21:27 | |
|
21:27
jsut_ joined
|
|||
| fperrad | japhb, it's my default env, I try without success to set $ENV{HOME} to current directory (./) | 21:27 | |
| For a first time, I prefer set $ENV{HOME} | |||
| japhb | I'm not sure I understand. Prefer over what? | 21:28 | |
|
21:29
mikehh joined
|
|||
| fperrad | japhb, Plumage could use its own env variable (for example PLUMAGE_HOME), instead of HOME | 21:29 | |
| japhb | fperrad, I don't mind having that as an override, but we still need to detect a proper default. | ||
| I really don't want to get back to "early cpan" days when you had to answer a couple dozen questions just to get started. | 21:30 | ||
| zero configuration to get the average person started. configuration is there for power users and special cases. | |||
| fperrad | japhb, I agree with zero configuration | 21:31 | |
|
21:32
kj joined
|
|||
| NotFound | As long as you don't use NOZEROCONF=true to deactivate it, as linux network conf uses in some systems X-) | 21:34 | |
|
21:34
AndyA joined
|
|||
| dalek | rrot: r42404 | NotFound++ | trunk/docs/pdds/draft/pdd16_native_call.pod: [nci] fix doc of 'p' type, TT #1261 |
21:34 | |
| japhb | pmichaud, (still backlogging #ps): why do you want the new NQP-rx-in-parrot binary to be called 'parrot-nqp' instead of just 'nqp' as it is now. What is the benefit to dehuffmanizing there? | 21:35 | |
| cotto_work | NotFound, ping | 21:36 | |
| NotFound | pong | 21:37 | |
| cotto_work | NotFound, can you add a notice to DEPRECATED.pod about TT #1260 and update the entry for TT #866? | ||
| dalek | TT #1261 closed by NotFound++: Document NCI type 'p' behavior for PMCNULL/NULL values | ||
| cotto_work | Both should be pretty quick changes. The change for TT #866 is just to make the list of deprecated VTABLE functions explicit, and they're listed in the TT's first post. | 21:38 | |
| NotFound | cotto_work: There is no one with an worse english than me for that task? ;) | 21:39 | |
| cotto_work | I saw that you'd just committed something and I don't want it to get dropped on the floor. | ||
| NotFound | I always have problems for writing understandable DEPRECATED entries. | ||
| cotto_work | If you prefer, I can msg cotto. | ||
|
21:39
theory joined
|
|||
| NotFound | Please do. | 21:40 | |
| cotto_work | msg cotto update DEPRECATED.pod for TT 1260 and TT #866 | 21:41 | |
| purl | Message for cotto stored. | ||
| cotto_work | botsnack | ||
| purl | thanks cotto_work :) | ||
| japhb checks wiki.github.com/perl6/nqp-rx/plumage-requests ... aww, I was hoping for a visit from the magical feature gnomes during the night! :-) | 21:47 | ||
|
21:49
patspam joined
|
|||
| dalek | rrot: r42405 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] improve unlink |
21:51 | |
| a: cfdfc77 | fperrad++ | setup.pir: some refactor and fix targets for test |
21:52 | ||
|
21:53
mikehh joined
|
|||
| nopaste | "fperrad" at 78.113.94.6 pasted "(for japhb) can't configure Plumage on linux" (24 lines) at nopaste.snit.ch/18630 | 21:58 | |
| japhb | looking | 21:59 | |
| fperrad, how recent is your nqp-rx? | |||
| fperrad | japhb, I work with nqp, not with nqp-rx | 22:01 | |
| nopaste | "NotFound" at 213.96.228.50 pasted "Object.invoke patch, makes 'object()' works" (17 lines) at nopaste.snit.ch/18631 | ||
| NotFound | allison: ping | ||
| chromatic | Clever, but do we need to add 'Pi' to the start of the PCC string? (I forget if we removed that in the rush to improve speed.) | 22:02 | |
| NotFound | chromatic: for the simple test I have, it works. | ||
| chromatic | Also you're missing a space around the assignment operator. | 22:03 | |
| But I nitpick. | |||
| NotFound | As always :) | ||
| Be happy don't used hard tabs ;) | 22:04 | ||
| pmichaud | japhb: (nqp versus parrot-nqp) -- the parrot standard appears to be that language translators should be named "parrot-*" | ||
| japhb: I'm happy to install it as 'nqp', though. | |||
| japhb: I just need someone official-ish to tell me what to do there :) | |||
| japhb | bak | ||
| fperrad, Plumage requires nqp-rx. We were seriously blocked on features missing in old nqp, so needed to switch. | 22:05 | ||
| fperrad, since nqp-rx will (soon) ship with parrot, that's not going to hurt our users, thankfully. | |||
| diakopter | I don't suppose someone wants to fix a bug (at least, it seems like a bug to me) in __dump for PAST nodes... | 22:06 | |
| it's blocking me, somewhat.. | |||
| pmichaud | what's the bug? | ||
| purl | the bug is www.cbttape.org/funny/bug3.jpg or img227.imageshack.us/img227/2596/featureiu1.jpg | ||
| japhb | pmichaud, hmm, OK. I certainly prefer the language translators to just be called by their simple name. As important as parrot is to us, it doesn't really matter to the end user who just wants to get things done. | ||
| So my vote is just plain 'nqp', as it is right now. | 22:07 | ||
| pmichaud | japhb: that kinda doesn't work if the language is 'python', though. :-| | ||
| diakopter | pmichaud: parrot.pastebin.com/f3f8bd543 line 30 is missing the var name | ||
| japhb | pmichaud, I didn't realize there was a language for which the code name was the same as the original language name ... | ||
| fperrad | japhb, thanks, I'll install nqp-rx | 22:08 | |
| pmichaud | japhb: there may not be. I suppose it could be installed as 'pynie' | ||
| japhb | You're saying to install particle as parrot-tcl? | ||
|
22:08
Whiteknight joined
|
|||
| japhb | pmichaud, I can see both arguments, but my preference is to use the project name, not parrot- plus the language name. | 22:09 | |
| pmichaud | japhb: I'm saying I'd like to know what parrot's official standard is, and to use that :) | ||
| japhb: I personally don't have a strong preference when it comes to nqp versus parrot-nqp | |||
| japhb | pmichaud, I know. I'm under the assumption there isn't a standard, and trying to influence a future choice. :-) | 22:10 | |
| pmichaud | well, it is mentioned in pdd30, iirc | ||
| dalek | TT #1262 created by NotFound++: Simple patch for the overriding of invoke for objects | 22:17 | |
| NotFound | Certainly the pcc refactor has simplified things :) | 22:18 | |
| fperrad | japhb, could you take a fresh parrot-MT19937 and play with setup.pir (distutils). | 22:25 | |
| Plumage needs a support for setup.pir interface | |||
| japhb | Can you give me the 100-word overview of what setup.pir/distutils is? Configure replacement, make replacement, both, neither? | 22:26 | |
| fperrad, ^ | 22:29 | ||
| fperrad | japhb, setup.pir replaces Configure & generated Makefile, | ||
| $ parrot setup.pir | |||
| $ parrot setup.pir test | |||
| $ parrot setup.pir install | |||
| setup.pir uses the library distutils.pir (in the parrot tree) | |||
| darbelo | fperrad: You a python user? | 22:30 | |
| fperrad | japhb, yes but I prefer Perl | 22:31 | |
| darbelo | Just wondering about the influences to distutils.pir | ||
| japhb | fperrad, OK, interesting. Where is the master source for setup.pir? (I didn't find it in the parrot tree.) | 22:32 | |
| fperrad | japhb, each project has its setup.pir | ||
| darbelo | japhb: If he's using the python custom, it's specific to each project | ||
| Eh. What he said. | 22:33 | ||
| fperrad | japhb, setup.pir is just data + a call setup() | ||
| japhb | fperrad, I meant, where do you keep the "canonical version", that you copy/paste into each new project? Or does distutils have a function to create a skeleton for you? | ||
| fperrad, ah, OK | |||
| fperrad | japhb, tools/dev/mk_language_shell.pl generates it | 22:35 | |
| japhb | What's the repo url for parrot-MT19937? | 22:37 | |
| fperrad | japhb, github.com/fperrad/parrot-MT19937 | ||
| japhb | Wow ... distutils.pir feels like it would be WAY simpler in NQP | 22:38 | |
| darbelo | japhb: Well, that *is* the point of NQP ;) | 22:39 | |
| japhb | darbelo, yeah, but even more than usual. Browse the source a bit. My carpal tunnels hurt just reading it. | 22:40 | |
| darbelo reads it | 22:41 | ||
|
22:43
payload joined
|
|||
| darbelo | PIR is such a *high* level assembler. | 22:44 | |
| ;) | |||
| NotFound | Only a bit not so high as macroassembler ;) | 22:45 | |
| japhb | fperrad, is setup.pir with no arguments basically configure, or build, or both? | 22:46 | |
| fperrad | japhb, 'build' is default target | ||
| japhb | fperrad, so no configure step at all? | ||
| (I should say, no *separate* configure step) | 22:47 | ||
| fperrad | japhb, no Configure step | ||
| japhb, see setup.pir examples, I put links in the top distutils.pir | 22:48 | ||
| japhb | fperrad, sure, just confirming that it wasn't an accident of example choice, but really intended to be no configure step. | ||
| Which you just did? | |||
| er, s/\\?/./ | 22:50 | ||
| fperrad | japhb, the goal is : remove Configure step and remove Makefile/make/shell dependencies | 22:51 | |
| NotFound | fperrad++ | 22:52 | |
| japhb | fperrad, understood | ||
| holy cow ... well, I will say one thing ... setup.pir is FAST | 22:58 | ||
| fperrad, incoming | 22:59 | ||
| NotFound | japhb: Even without jit? ;) | 23:00 | |
| japhb | fperrad, U CAN HAZ PLUEMIJ SETUP | ||
| NotFound, one hell of a lot faster than make .... | 23:01 | ||
| fperrad | japhb, you would say : parrot is fast | ||
| darbelo | japhb: make doesn't JIT either :) | ||
| dalek | rrot-plumage: 9ce5135 | japhb++ | : [plumage] Support setup.pir tool for new mt19937 project |
||
| rrot: r42406 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] use nqp.pbc instead of parrot_nqp.exe |
23:10 | ||
|
23:15
kid51 joined
23:27
plobsing joined,
payload joined
|
|||
| plobsing | hi parrot | 23:28 | |
| darbelo | hi plobsing | ||
| dalek | rrot: r42407 | jkeenan++ | branches/auto_libjit: Branch has been superseded by libjit_framebuilder branch. |
||
| darbelo | saw my purl-o-grams? | ||
| plobsing | yes. thanks. | 23:29 | |
| darbelo | Let me know when you send the CLA so I can nominate you on the next #parrotsketch | ||
| plobsing | will do. | 23:30 | |
| kid51 | Last call for comments on these 4 TTs: | 23:31 | |
| trac.parrot.org/parrot/ticket/1194 | |||
| trac.parrot.org/parrot/ticket/1234 | |||
| trac.parrot.org/parrot/ticket/1235 | |||
| trac.parrot.org/parrot/ticket/1236 | |||
| darbelo | I have a problem with TT#1194 | ||
|
23:32
hercynium joined
|
|||
| kid51 | Yes? | 23:32 | |
| darbelo | You waited too much to do it ;) | ||
| Other thatn that it looks goog to me | |||
| chromatic | +1 to all four of your suggestions, kid51. | 23:33 | |
| japhb | plobsing, I sent a link to you earlier, but you may have been offline at the time. | 23:35 | |
| plobsing, it's here: blog.vlad1.com/2009/11/06/canvasarr...nvasarray/ | 23:36 | ||
| plobsing | saw it | ||
| japhb | ah, ok | ||
| plobsing | I was considering something similar | ||
| japhb | excellent | ||
| plobsing | the only weakness with that approach is requiring at least 2 pmcs for every C object | ||
| this of course makes the common case suboptimal | |||
| I propose a variant of this where the first PMC created with a pointer "owns" a pointer | 23:37 | ||
| other pmcs can refer to this but, defer to the original for GC purposes | |||
| NotFound | +1 for all also | ||
| plobsing | of course there should be a way of transfering ownership | 23:38 | |
| japhb | plobsing, then that owning PMC needs to have the API for locking memory etc. | ||
| dalek | rrot: r42408 | jkeenan++ | trunk/t/op/hacks.t: Delete useless test file per trac.parrot.org/parrot/ticket/1234. |
||
| japhb | right | ||
| TT #1234 closed by jkeenan++: t/op/hacks.t: Delete useless test file | |||
| plobsing | japhb: thats the thing, other PMCs will have the same interface and just forward to the owner for that kind of thing | 23:39 | |
| japhb | plobsing, nodnod | 23:40 | |
| plobsing | japhb: regarding your issues with struct creation; we should be able to freeze the descriptor into the PBC | 23:41 | |
|
23:41
wknight8111 joined
|
|||
| dalek | rrot: r42409 | jkeenan++ | trunk/t/op/sysinfo.t: Eliminate dependence on Perl 5 '%Config' in tests. Cf.: trac.parrot.org/parrot/ticket/1235. |
23:41 | |
| plobsing | then we won't have to push tokens onto the array at runtime. | ||
| dalek | TT #1235 closed by jkeenan++: t/op/sysinfo.t: Improper dependence on Perl 5 %Config | ||
| japhb | plobsing, nice. | 23:43 | |
| damn, fperrad left. | |||
| purl, msg fperrad With my last push, I believe I've got a fix in for your HOMEDRIVE requirement. The remaining problem is spaces in paths ... and I need to find out exactly where that fail is occurring, so could use debugging help from you. | 23:44 | ||
| purl | Message for fperrad stored. | 23:45 | |
| kid51 | Whiteknight: Do you have more hours in the day than the rest of us? Is that how you manage to juggle all these github projects in addition to Parrot? :-) | ||
| Whiteknight | kid51: not nearly so much juggling as you think | 23:46 | |
| I can keep a few things from hitting the ground | |||
| plobsing: I'm getting test failures in libjit_framebuilder witout libjit installed | |||
| t/pmc/nci.t fails test 611 | |||
| dalek | rrot-plumage: bdd12b6 | japhb++ | : [CORE] Util.nqp: Add user_home_dir() portability function |
23:47 | |
| rrot: r42410 | jkeenan++ | trunk/MANIFEST: Fix MANIFEST to reflect recently deleted file. |
23:48 | ||
| chromatic | Whiteknight, is that on 32-bit Linux? | 23:49 | |
| plobsing | Whiteknight: what is the title of the test? | ||
| Whiteknight | 64-bit linux | ||
| "nci_ssc" | |||
| plobsing | without you say? | 23:50 | |
| chromatic | That's new. | 23:52 | |
| pmichaud | poll: $PARROT_INSTALL/bin/nqp or $PARROT_INSTALL/bin/parrot-nqp ? | 23:53 | |
| moritz | nqp | 23:54 | |
| rakudo doesn't ship a parrot-perl6 binary either | |||
| pmichaud | well, the slight difference is that nqp will be part of the parrot distro, while rakudo won't. | 23:55 | |
| (er, that _could_ be a perceived difference) | |||
| moritz | it will be? | ||
| dalek | rrot: r42411 | jkeenan++ | trunk (71 files): Merge auto_format_no_Config branch into trunk. Eliminate dependence on Perl 5 '%Config' in auto::format and corresponding test. Transfer that lookup to init::defaults. |
||
| rrot: r42412 | jkeenan++ | branches/auto_format_no_Config: Branch has been merged into trunk and is no longer needed at HEAD. |
|||
| moritz thought it was decided the other way round | |||
| purl | i already had it that way, dalek. | ||
| moritz | pmichaud: then I retract my vote | ||
| pmichaud | nqp will continue to live in its own repository. But Parrot will snapshot it into its repo so it can be built along with Parrot. | 23:56 | |
| dalek | TT #1236 closed by jkeenan++: config/auto/format.pm: Replace direct dependence on Perl 5 %Config | ||
| plobsing | Whiteknight: I changed that test to better exercise short->long promotion | ||
| pmichaud | i.e., obtaining parrot provides nqp and its libraries as well. | ||
| plobsing | it did asser 2*3=6 | ||
| now it asserts -2*3=-6 | |||
| Whiteknight | plobsing: okay, I'll give it another go in a little while | ||
| plobsing | I'm trying to reproduce now | ||