|
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 Set by moderator on 10 November 2009. |
|||
| cotto_work | I can confirm that the "nci_ssc" test fails, but I don't have 611 tests in that file. | 00:01 | |
| plobsing | Whiteknight: it appears gcc is only doing short->int extension | ||
| not short->long | |||
| this is a bug where int!=long | |||
| Whiteknight | ah, that makes sense then | ||
| plobsing | so my modification of the test had the intended effect :-) | 00:02 | |
| cotto_work: the number of tests in that file is 71 + $num_nci_sigs | 00:04 | ||
|
00:04
abqar joined
|
|||
| plobsing | where $num_nci_sigs is the number of signatures to be thunked by nativecall.pl | 00:04 | |
| dalek | kudo: f16c9e2 | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 451 files, 32696 (85.2% of 38389) pass, 15 fail S02-lexical-conventions/unicode.rakudo aborted 5 test(s) S12-introspection/methods.t aborted 10 test(s) |
||
| plobsing | so it will vary from config to config | ||
| chromatic | Hm, Rakudo passes more tests than before the great PCC conversion. | 00:06 | |
| dalek | TT #1263 created by jkeenan++: Determine configuration value for 'platform' prior to gen::platform | 00:09 | |
| TT #1194 closed by jkeenan++: 7 config steps improperly rely on Perl 5 %Config 'OSNAME' element | 00:13 | ||
| rrot: r42413 | jkeenan++ | branches/platform_determine_earlier: Create a branch to work on trac.parrot.org/parrot/ticket/1263: |
00:15 | ||
|
00:23
darbelo joined
|
|||
| darbelo | I *really* hate it when X crashes. | 00:24 | |
| nopaste | "plobsing" at 76.67.61.178 pasted "ssc non-libjit fix" (13 lines) at nopaste.snit.ch/18632 | 00:33 | |
| japhb | blizkost appears to have rotted ... or is it just me? | 00:34 | |
| plobsing | this is a quick fix. really all int types (at least signed ones) should be returning INTVALs | ||
| on the other side of the coin, we should be testing all supported signed int types with negative numbers to exercise sign extension | |||
|
00:37
kiwichris joined
|
|||
| dalek | rrot-plumage: 0d6374a | japhb++ | : [plumage] Simplify action functions considerably by improving CWD handli... |
00:43 | |
| dukeleto | parrot github repo should be sync'ing once per hour now, for your pleasure. | 00:47 | |
| also, git.or.cz now supports git mirrors of svn repos. i need to try that out. | 00:48 | ||
| kiwichris | Looking at Parrot_new I see its decl states it cannot return NULL. What happens if memory runs out ? | 00:53 | |
| plobsing | msg Whiteknight nopaste.snit.ch/18632 should fix the ssc issue on non-libjit x86_64 | 00:54 | |
| purl | Message for whiteknight stored. | ||
| darbelo needs sleep | 00:56 | ||
| See y'all later. | |||
|
00:56
darbelo left
|
|||
| dalek | tracwiki: v2 | samlh++ | RakudoTasklist | 00:56 | |
| tracwiki: Prettify (probably unnecessarily) | |||
| tracwiki: trac.parrot.org/parrot/wiki/Rakudo...ction=diff | |||
| Whiteknight | plobsing: i'll take a look at it | ||
| dalek | rrot-plumage: 8dcf4b2 | japhb++ | : [plumage] Use NQP-rx, stage 1: string interpolation |
01:00 | |
| Austin | In the PMC documentation, is =head2 Methods supposed to introduce vtable items or method items? | 01:03 | |
| Whiteknight | method items, I assume | 01:04 | |
| Austin | It seems like the two are regularly conflated, so I'm wondering if I should report those as bugs, or submit patches, or what? | 01:05 | |
| Whiteknight | submit patches | ||
| or better yet, submit a CLA, get a commit bit, and get the karma yourself :) | 01:06 | ||
| Austin | (e.g., undef.pmc has lots of vtable functions, but no methods. But it has a =head2 Methods section, not a =head2 Vtable ops or whatever.) | ||
| If I could translate karma into frequent flier miles, maybe. | |||
| Whiteknight | if you become a committer, you can qualify for our frequent flier program | 01:07 | |
| Austin | Off the top of your head, WhiteKnight, what methods should Undef have? | ||
| Whiteknight | none | ||
| Austin | None? | ||
| purl | None is, like, :/ | ||
| Austin | :? | ||
| purl | well, : is the path separator | ||
| Whiteknight | .'segfault'() | ||
| Austin | :-? | ||
| Whiteknight | .'throw_weird_exception'() | ||
| .'magically_become_defined'() | |||
| Austin | Ahh, you see, I've already defined 5 methods. | ||
| You're just not trying. | 01:08 | ||
| Whiteknight | maybe I'm trying hard, but am just really stupid? | ||
| Austin | .can(), .does(), .defined(), .isa(), .new() | ||
| Whiteknight | never overestimate me | ||
| all those on Undef? | |||
| Austin | Yep. | ||
| Meta-stuff should work just about anywhere. (Especially .defined()) | 01:09 | ||
| !!Especially!! defined() | |||
| So why not make them methods? | |||
| plobsing | what variant of the concept of nullity is Undef trying to provide? Perl5's? Perl6's? Language X's? | 01:10 | |
| Austin | plobsing: yes. | 01:11 | |
| japhb | <nihilism>It's all nothingness anyway ... why try to figure it out?</nihilism> | 01:13 | |
| nopaste | "kiwichris" at 203.206.130.106 pasted "RTEMS: parrot-1.7.0/examples/benchmarks/rand.pir fails." (106 lines) at nopaste.snit.ch/18633 | 01:16 | |
| Whiteknight | plobsing: patch works. All tests pass here without libjit installed | 01:17 | |
| next step is to install libjit | |||
| dalek | rrot-plumage: 45792ee | japhb++ | : [plumage] Use NQP-rx, stage 2: pir:: |
01:22 | |
| Whiteknight | plobsing: Is LibJIT installed..../test_29443: error while loading shared libraries: libjit.so.0: cannot open shared object file: No such file or directory | 01:23 | |
| for libjit, I did "./configure && make && sudo make install" | |||
| and I thought that worked | 01:24 | ||
| plobsing | you need to run ldconfig | ||
|
01:24
theory joined
|
|||
| Whiteknight | I've got libjit.so.0 in my /usr/local/lib folder | 01:25 | |
| what's ldconfig? | |||
| purl | it has been said that ldconfig is not hard | ||
| Whiteknight | thanks, purl | ||
| purl, thanks, purl is <reply>no, thank you | |||
| plobsing | ldconfig updates your dynamic linker cache (from what I've gathered) | 01:26 | |
| dynamic linking still seems a little voodoo to me | |||
| Whiteknight | yeah, definitely voodoo | 01:27 | |
| but I ran it, and now thigns work | |||
| plobsing | yay | ||
| Whiteknight | lobsing++ | ||
| plobsing++ | |||
|
01:28
Zak joined,
mikehh joined
|
|||
| Whiteknight | plobsing: I've been thinking about the framebuilder. I think benefits could be had if we precompiled thunks for the NCI calls commonly used during startup, and delegated everything else to the framebuilder | 01:33 | |
| plobsing | thats probably true. | ||
| it should be possible to get nativecall.pl to do this | 01:34 | ||
| Whiteknight | right, but we'd have to identify the calls that make the most sense to precompile | ||
| it's a small issue though, something we can save till later | 01:35 | ||
| plobsing | config/gen/call_list/core.in maybe? | ||
| of course some of those aren't called by all programs | 01:37 | ||
| Whiteknight | right, it would only make sense to precompile the ones that are called during startup | 01:39 | |
| Austin | Or just have the framebuilder log the ones that it builds, and then run it once. | ||
| plobsing | Austin++ simplicity=genius | 01:40 | |
| Austin | Git 'r done. | ||
| Whiteknight | plobsing: with libjit installed now, I fail that same test | ||
| nci_ssc | |||
| plobsing | hmmm. | ||
| what number are you getting? | |||
| Whiteknight | 65530 | 01:41 | |
| plobsing | arg. improper sign extension, you are the bane of my existance! | ||
| fyi 65530 is better known as 2**16 - 6 | 01:46 | ||
| Whiteknight | ah yes, sign extension. My old nemesis | 01:47 | |
| dukeleto | what a day | 01:49 | |
| purl | somebody said a day was a reasonable time to wait for cpan to catch up | ||
| nopaste | "plobsing" at 76.67.61.178 pasted "add proper sign extension for the nth time" (19 lines) at nopaste.snit.ch/18634 | ||
| diakopter | my PAST interpreter in JavaScript proceedeth. it passes the first 10 nqp-rx test files | 01:51 | |
| Tene: ^^ in case you were wondering.. | 01:52 | ||
| plobsing | oops that paste really shouldn't work! | ||
| I have no idea how it passed | |||
| Austin | Man, tortoisegit is so damn slow I think it would be easier to run a separate git-gui app. :( | 01:54 | |
| nopaste | "plobsing" at 76.67.61.178 pasted "add proper sign extension for the (n + 1)th time" (19 lines) at nopaste.snit.ch/18635 | 01:56 | |
| dukeleto | anybody have any thoughts about Go? golang.org/doc/go_faq.html | ||
| Whiteknight | isn't that a game that I'm terrible at? | 01:57 | |
| dukeleto: that looks very interesting | 01:59 | ||
| Austin | Dude, that language will never succeed. | 02:00 | |
| Remember the rule. | |||
| dalek | rrot: r42414 | cotto++ | trunk/DEPRECATED.pod: [DEPRECATED] clarify VTABLE deprecations currently eligible for removal |
02:01 | |
| plobsing | and what rule is that exactly? | 02:05 | |
| Austin | No language with ':=' will ever succeed. | ||
| plobsing | touche | ||
| Austin | It's the operator of doom. | ||
|
02:06
eternaleye joined
|
|||
| Whiteknight | you only say that because pascal did it and pascal IS TEH SUXXOR | 02:06 | |
| Austin | Nope. Also PL/1, Modula, Oberon, Modula II, Modula III. | ||
| dukeleto | Pascal uses := too | 02:07 | |
| plobsing | aren't most of those wirth languages? | ||
| Austin | And let's not forget Ada, that uber-success story. | ||
| Whiteknight | plobsing: no dice. Latest patch didn't fix the test failure | 02:08 | |
| Austin | Putting ':=' in your programming language is tantamount to saying "I don't want this to be used by anyone except a few undergrad students that I can coerce into using it by basing a 3-credit course on it." | 02:09 | |
| plobsing | nth or (n+1)th? | ||
| Whiteknight | same test, nci_ssc | 02:10 | |
| cotto | ohai | ||
| Whiteknight | hello cotto_not_at_work | ||
| but can't stay to talk. Need to go to sleep. Goodnight | 02:11 | ||
| cotto | night | ||
| dalek | rrot: r42415 | cotto++ | trunk/DEPRECATED.pod: [DEPRECATED] add notice about bitwise ops and VTABLE functions |
||
| rrot: r42416 | whiteknight++ | branches/libjit_framebuilder/lib/Parrot/NativeCall.pm: [libjit] apply one patch from plobsing++ to fix short conversions on x86_64 without libjit installed |
|||
| nopaste | "plobsing" at 76.67.61.178 pasted "64-bit fix (now with 100% less syntax fail)" (19 lines) at nopaste.snit.ch/18636 | 02:25 | |
| plobsing | msg Whiteknight this one aught to do it: nopaste.snit.ch/18636 | 02:26 | |
| purl | Message for whiteknight stored. | ||
| dalek | rrot-plumage: 70bda0e | japhb++ | : [CORE] Add %hash.values and @array.reverse |
02:40 | |
| rrot-plumage: 294058c | japhb++ | : [plumage] Use NQP-rx, stage 3: pointy blocks in for loops |
|||
| rrot: r42417 | jkeenan++ | branches/platform_determine_earlier (4 files): Create a Parrot::Configure attribute 'platform' in auto::arch; use it in to adapt tests for _get_platform() in t/steps/auto/arch-01.t. |
02:41 | ||
| tracwiki: v118 | jkeenan++ | WikiStart | 03:06 | ||
| tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff | |||
| kiwichris | msg rand fixed by statically linking dynops | 03:21 | |
| purl | Sorry, I've never seen rand before. | ||
|
03:41
janus joined
03:43
elmex joined
03:53
DrForr_ joined
|
|||
| dalek | rrot-plumage: 2891881 | japhb++ | : [plumage] Add status command; use grep() in get_installed_projects |
03:53 | |
| rrot-plumage: bc02198 | japhb++ | : [META] TODO update |
|||
|
04:02
hercynium joined
|
|||
| dalek | rrot-plumage: b327f3c | japhb++ | : [plumage] Use NQP-rx, stage 4: git rid of as_array() in most places |
04:15 | |
| tracwiki: v41 | bacek++ | ParrotQuotes | 04:31 | ||
| tracwiki: Definition of "operator of doom" | |||
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
|
05:05
kiwichris joined
05:29
cottoo joined
06:05
nbrown joined
06:06
theory joined
06:21
magnachef joined
06:39
mikehh joined
06:51
chromatic joined
07:03
victori joined
07:10
JimmyZ joined
07:11
payload joined
07:14
uniejo joined
07:25
bacek joined
07:59
iblechbot joined
08:10
barney joined
08:12
fperrad joined
08:18
payload joined
08:22
mokurai left
|
|||
| moritz | golang.org/doc/go_lang_faq.html they use CSP for yet another thing | 08:32 | |
|
09:09
pdcawley_ joined
09:14
AndyA joined
09:28
victori left
|
|||
| dalek | rrot: r42418 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] add chmod |
09:52 | |
|
10:02
TiMBuS joined
10:36
jsut joined
10:54
elmex joined
10:56
AndyA joined
11:02
payload joined
11:48
AndyA joined
|
|||
| dalek | rrot: r42419 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] add stuff for nqp-rx |
12:00 | |
|
12:00
AndyA joined
|
|||
|
12:03
bluescreen joined
12:04
mikehh joined
12:08
bluescreen joined
12:19
AndyA joined
12:31
payload joined
|
|||
| dalek | rrot: r42420 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] add options : harness_exec & harness_files |
12:39 | |
|
13:05
whiteknight joined
|
|||
| dalek | rrot: r42421 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] split cp/install |
13:09 | |
| whiteknight | good morning #parrot | 13:23 | |
| plobsing | hi whiteknight | 13:27 | |
| whiteknight | hello plobsing | ||
| I'll test that new patch out tonight | |||
| plobsing | sorry about the other two patches. turns out they didn't even compile | ||
| serves me right for doing configure; make; test instead of using && | 13:28 | ||
| whiteknight | oh | 13:29 | |
| yeah, I've gotten into those problems before | 13:36 | ||
| I've developed a very elaborate alias "build" to do all those things in the right sequence | |||
|
14:11
payload joined
|
|||
| whiteknight | I think we should be able to get this branch merged soon | 14:18 | |
| pending more testing. | |||
| what we probably want to do is write out a lot of instructions for people on how to get libjit | 14:19 | ||
|
14:24
mj41 joined
14:35
pdcawley__ joined
|
|||
| whiteknight | For anybody who is interested in JIT, here is a very interesting email exchange between the libJIT and LLVM guys: | 14:46 | |
| lists.gnu.org/archive/html/dotgnu-l...00012.html | |||
| (gets a little heated, but that's to be expected. And they mention Parrot a lot) | |||
|
15:01
patspam joined
15:20
Psyche^ joined
15:30
Essobi joined
15:31
Austin joined
15:32
bubaflub joined
15:47
theory joined
|
|||
| bubaflub | morning parrot people | 15:52 | |
| whiteknight | good morning bubaflub | 15:56 | |
|
15:57
darbelo joined
|
|||
| dalek | kudo: a02a26e | (Kyle Hasselbacher)++ | tools/update_passing_test_data.pl: tools/update_passing_test_data.pl: ignore spectest.data comments better |
15:57 | |
|
15:58
payload joined
|
|||
| whiteknight thinks he might finally be able to send in his updated PaFo CLA | 15:59 | ||
| s/be able to/be unlazy enough to/ | |||
| plus, I think I finally understand how the fax machine here works | |||
| darbelo | Fax machines work on balck magic. You have to offer raw chicken entrails to bribe the gods or thwy won't let your message pass- | 16:02 | |
| bubaflub | the value of a fax machine is directly proportional to the number of people who own fax machines | ||
| fperrad | ping allison | ||
| purl | I can't find allison in the DNS. | ||
| allison | fperrad: hi | ||
| fperrad | allison, distutils.pir could replace dynops.pl & dynpmc.pl | 16:03 | |
| allison | fperrad: Sounds good. I haven't looked at it, what does it do? | 16:04 | |
| fperrad | allison, distutils.pir has the same interface as Python Distutils | 16:06 | |
| and has rules to build pge, tge, nqp, nqp-rx, dynops, dynpmc, pbc, pbc_to_exe | |||
| nopaste | "fperrad" at 78.113.94.6 pasted "setup.pir for Pynie (allison)" (105 lines) at nopaste.snit.ch/18637 | 16:08 | |
| Austin | Whiteknight: Updated CLA? | ||
| whiteknight | Austin: I sent in a Perl Foundation CLA a long time ago, but I need to send in a Parrot CLA now | ||
| and I haven't done it | |||
| Austin | Ah. | ||
| whiteknight | but, I have it all filled out and I'm within swinging distance of a fax machine, so I think I might be able to pull it off | 16:09 | |
| allison | fperrad: I like it! The one thing we know for sure that people have (or will have to install) when they're installing a language or module for Parrot is Parrot. | 16:10 | |
| fperrad | allison, yes, distutils.pir remove many dependencies | 16:11 | |
| moritz | (without having looked at the code) can it still compile different subsystems in parallel? | 16:12 | |
| allison | fperrad: do you have an example of a generated file for dynops and dynpmcs? | ||
| moritz | for example by being called concurrently? | ||
| whiteknight | fperrad: where is distutils.pir located? parrot repo? | ||
| fperrad | in parrot repo, runtime/parrot/library/ | 16:13 | |
| allison, github.com/fperrad/wmlscript/blob/m.../setup.pir | 16:14 | ||
|
16:16
Andy_ joined
16:19
joeri joined
|
|||
| dalek | rrot: r42422 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] setup() loops on all targets |
16:31 | |
|
16:34
cotto_work joined
|
|||
| cotto_work | good morning | 16:36 | |
| dukeleto | cotto_work: hola | 16:37 | |
| good to hear that we are having a testing hackathon soon | 16:38 | ||
| i should write a more detailed howto/post about translating tests | |||
| cotto_work | good idea | ||
| purl | cotto_work: Good Idea: Stopping to smell the roses. Bad Idea: Stopping to feel the roses. | ||
| whiteknight | good morning cotto_work, dukeleto | 16:41 | |
| yes, I'm excited about testing hackathon | |||
| cotto_work | I just realized that the hackathon is a great excuse to get cracking on writing test code for the profiler. | 16:44 | |
| w00t | |||
| whiteknight | has anybody heard from bernhard recently? | 16:49 | |
| He's supposed to do 1.8.0 but I don't think I've seen him around | |||
| moritz | he committed a few changelog updates recently | ||
| cotto_work | He's been around. | ||
| whiteknight | of course, I probably haven't been looking too hard | ||
| cotto_work | he's aka barney | ||
| moritz | seen barney | ||
| purl | barney was last seen on #parrot 7 days, 21 hours, 1 minutes and 3 seconds ago, saying: allison: looks good, tnx [Nov 3 19:48:18 2009] | ||
| whiteknight | bernhard? | 16:50 | |
| purl | bernhard is mailto:Bernhard.Schmalhofer@gmx.de | ||
| whiteknight | barney? | ||
| purl | barney is a big, purple piece of shit, or gettin' jiggy wid it or see 'grimace'. or purple dupa or o/` I love you / You love me / We're a happy family / with a great big hug /and a kiss from me to you / Won't you say you love me TOO! /`o | ||
| whiteknight | ...that's not very flattering | 16:51 | |
| allison | different barney | ||
| whiteknight | robble, robble | ||
| allison | I believe #perl had a hate-hate relationship with the child's tv character | 16:52 | |
| cotto_work | perfectly understandable | ||
| whiteknight | of course, that's a perfectly reasonable way to spend your time | ||
| allison | highly logical | ||
| whiteknight | hamburglar? | 16:53 | |
| purl | somebody said hamburglar was on the way out too. convicts are complaining | ||
| whiteknight | grimace? | 16:54 | |
| purl | hmmm... grimace is a foot-long purple dildo belonging to WareCow, or a 6-foot-long talking purple dildo at McDonald's. or www.goats.com/archive/980204.html | ||
| whiteknight | ...that's even less appropriate | ||
| cotto_work | With the first two entries, I'm definitely not following that link. | 16:55 | |
| darbelo | goat dildos? | 16:56 | |
| whiteknight | I didn't think "barney" was a name of one of the mcdonaldland characters | 16:57 | |
| darbelo | Actually goats.com is a webcomic, and features no dildos, to my knowledge. | ||
| whiteknight | oh, right. barney the dinosaur | 16:59 | |
| whiteknight needs to get his children's characters straight, since he's going to have a child soon | |||
| and if there's one thing kids hate, it's getting their favorite characters mixed up | |||
| cotto_work | code.google.com/p/go/source/detail?...3c480d995f | ||
| whiteknight | ...or mixing up star trek and star wars :) | ||
| cotto_work | longest overdue commit ever | 17:00 | |
| whiteknight | I propose that we delete the current repository and rewrite Parrot from the ground up in Go | 17:01 | |
| cotto_work | +1 | 17:02 | |
| purl | 1 | ||
| whiteknight | proof that the language is suitable, or that it will provide any actual benefits is not necessary | ||
| cotto_work | Go is obviously the future. We should abandon this C junk. | ||
| whiteknight | I take it as self-evident that the quality of Go code we produce will be just as good or better than the C code we produce | ||
| Austin | Go is a doomed language. Forget it. | 17:03 | |
| They broke the rule, they suffer the consequences. | |||
| whiteknight | so is C. In another 200-300 rules, it will slowly be phased out | ||
| and then what? That's right, Go | 17:04 | ||
| "200-300 years" | |||
| cotto_work | nice typo | ||
|
17:05
mokurai joined
|
|||
| Austin | Whiteknight has a rules fetish. | 17:05 | |
| Despite all this dynamic language stuff, he's with me in thinking we'd all be better off doing this in C++. | 17:06 | ||
| dalek | kudo: 50e495b | (Kyle Hasselbacher)++ | t/spectest.data: [spectest.data] add a couple runnable files |
||
| cotto_work | It'd be interesting if Parrot got to the point where there were multiple implementations. | 17:07 | |
| Austin | Isn't that what branches are for? | ||
| Maybe we could get the transmeta guys to do parrot in silicon for us... | |||
|
17:09
redbrain joined
|
|||
| Austin | What's the right name for the progression indicated by labels like ":anon", ":init", ":load", and ":main"? | 17:11 | |
| Are those phases, stages, lifecycle-states, events, ...? | 17:12 | ||
| barney | whiteknight: I'm here, been on the phone | ||
| barney prefers to be Barney from the Flintstones | 17:13 | ||
| brubble | Sorry, taken. | ||
| ;) | |||
| darbelo | ;) | 17:14 | |
| whiteknight | barney: okay, I'm just making sure everything is ready for the release | 17:15 | |
| barney | I'll send out a call for updates (NEWS,PLATFORMS) tonight | 17:16 | |
| whiteknight | awesme | 17:17 | |
| redbrain | is it hard getting the releases out? | 17:18 | |
| cotto_work | not at all | ||
| it just involves a lot of waiting while tests run | |||
| Austin | It's only hard getting the release out if you make the mistake of believing the people who tell you it's easy to get the release out. | ||
| cotto_work | and gathering information | ||
| redbrain | lol | 17:19 | |
| cotto_work | and submitting to various news site | ||
| Austin | Look at the logs for the 1.7 release. | ||
| whiteknight | anomaly | 17:20 | |
| Austin | After 1.4, 1.5, and 1.6 going out, with everyone saying "Wow, the documentation makes this really simple. This was much easier than I thought it would be!" the cool-aid finally got drunk. | ||
| Then it was "Yeah, this *is* easy. I'm just following along the documenta ... holy crap!" | |||
| redbrain | yeah i have got like no documentation at all for my programming language :P though i havent made a release yet lol | 17:21 | |
| well i do have a bit of a readme to compile it etc | |||
| Austin | Welcome to the team. | ||
| redbrain | i havent had any time to integrate any of it with parrot or anything keeping it as my own interpreter from scratch untill 2 interations of the language | 17:22 | |
| whiteknight | the release was easy. It always is. The problem was woefully inadequate testing on Windows | ||
| we've already done more of that this month | |||
|
17:22
mikehh joined
|
|||
| whiteknight | redbrain: is it hosted publicly | 17:23 | |
| ? | |||
| redbrain | yeah i guess lol | ||
| whiteknight | link? | ||
| purl | or "Link is ... like ... this pointy eared goblin that walks around in midi-music land with a letter opener attacking circles and things and wooing princesses but not bannon, you know?" or preaction is Error. | ||
| redbrain | its on crules.org but i had some server problems recently so i lost my wiki content and my redmine project tracking content | ||
| at least thats all i lost | |||
| lol | |||
| i had backups of everything else | |||
| whiteknight | #perl is raping my childhood | ||
| redbrain | i was more worried about the 4/5 people i host on my servers but it was ok | 17:24 | |
| diakopter | whiteknight: ouch. | ||
| Austin | whiteknight ? | 17:27 | |
| purl | it has been said that whiteknight is mailto:wknight8111@gmail.com or the grand master funk or wknight8111.blogspot.com/ | ||
| whiteknight | Austin? | 17:28 | |
| purl | Austin is, like, nice. or a city in Texas | ||
| whiteknight | you *are* like a city in Texas | ||
| Austin | Raping your childhood? | ||
| whiteknight | yeah, calling grimace a dildo, or saying like is a pointy eared goblin | ||
| Austin | Bigger than I should be, and full of criminals? | ||
| whiteknight | no, that's just the Cowboys | ||
| redbrain | are most of you guys in america then? :) I am in ireland lol | 17:29 | |
| Austin | Redbrain: It depends on when you're here. | ||
| PerlJam | redbrain: far too many of us are in Texas, let alone America :) | ||
| redbrain | lol awesome one of my friends lived in texas for like 3/4 years | 17:30 | |
| he liked it | |||
| Austin | I'm in the US, and I'm on at all hours. But Bacek is in British Texas, and a couple of regulars are in the EC. | ||
| moritz | EC? | 17:31 | |
| purl | EC is probably Elvis Costello or the short form of EvanCarroll, who is not worth the bytes necessary to transfer the characters in his full name. or Extended Core | ||
| Austin | They'll be here at localtime-appropriate points. | ||
| redbrain | what time is it with you guys then its 17:31 here :) | ||
| purl | redbrain: It's just about half past five in the afternoon where I am. | ||
| Austin | European Commonwealth | ||
| cotto_work | I've never heard Australia referred to as British Texas. | ||
| whiteknight | it's lunch time here | ||
| Austin | Well, technically Texas is the American Australia. But I had to work with the antecedents I was given. | 17:32 | |
| whiteknight | cotto_work: that's probably because you like all the australians you've met :) | ||
| PerlJam | redbrain: it's 17:31 here too ... but my clock is set to UTC ;) | ||
| Austin | clock? | ||
| purl | Austin: LAX: Wed 9:32am PST / CHI: Wed 11:32am CST / NYC: Wed 12:32pm EST / LON: Wed 5:32pm GMT / BER: Wed 6:32pm CET / IND: Wed 11:02pm IST / TOK: Thu 2:32am JST / SYD: Thu 4:32am EST / | ||
| redbrain | hehe :) | ||
| PerlJam | Austin: are you saying Texas was colonized by a bunch of criminals? | ||
| Austin | PerlJam: yes. | ||
| whiteknight | s/colonized/still inhabited by/ | ||
| PerlJam | Austin: including your namesake? :) | 17:33 | |
| whiteknight jokes | |||
| PerlJam | whiteknight: no, you're right. But most of them seem to live in Houston for some reason, so at least they're semi-isolated | 17:34 | |
| redbrain | rofl sure ireland is inhabited by alcoholics :P | ||
| Austin | PerlJam: Technically, my namesake is Ulysses S. Grant. But if you mean Sam Austin, then (as they say in Texas), "Hell yes!" | ||
| whiteknight | redbrain: but that's not a "problem", it's a "tradition" | ||
| PerlJam | "Sam Austin"? | ||
| redbrain | thats true :) | ||
| PerlJam | Stephen F. Austin | ||
| Sam Houston | |||
| Austin | Ah. | ||
| You have me there. | |||
| redbrain | is it your full time job to work on parrot then? :) | 17:35 | |
| whiteknight | I wish that were my job | 17:36 | |
| PerlJam | That would be something. | ||
| redbrain | rofl | ||
| whiteknight | I would quit all my other jobs in a heartbeat | ||
| redbrain | yeah same | ||
| Austin | Whiteknight: Can't you get one of those grant things? | ||
| whiteknight | well, s/in a heartbeat/with two weeks notice/ | ||
| Austin: grant from where? | |||
| PerlJam | whiteknight: start a company that provides software solutions based on parrot. | ||
| whiteknight | they don't just grow on trees | ||
| PerlJam | whiteknight: market to google, mozilla, microsoft, etc. (people with money) | 17:37 | |
| Austin | Isn't one of the foundations handing out grants for parrot development? | ||
| redbrain | i worked for sap research for a year and a half there but back finishing my mathematics and comp science degree now part time over 2 years but i do lots of bits and pieces in between | ||
| whiteknight | sap? I LOVE to hate sap | ||
| :) | |||
| redbrain | haha yeah i hated that job haha | ||
| sap are crooks tbh esp research | 17:38 | ||
| never want to work in research ever! | |||
| lol | |||
| cotto_work | TPF does grants, but it's mostly for Perl 6 work atm. | ||
| whiteknight | right, but not the "I can quit my job now" grants | 17:39 | |
| cotto_work | nope | ||
| whiteknight | meh, it's a pipedream | ||
| cotto_work | back to rl | 17:40 | |
| moritz | TPF has rather little money for grants. There's an additional funding which is tied to Perl 6 develepment though (funded by Ian Hague) | ||
| Austin | That's what I was thinking of. | 17:41 | |
| The Hague grants. For some reason, I knew it was a city name, but couldn't recall which one. | |||
| Well, city reference, anyway. | 17:42 | ||
| Why the hell is it 69 degrees today? | 17:45 | ||
| whiteknight | Austin: do you think that's good or bad? | ||
| Austin | I thought fall was over and winter was upon us? | ||
| I think it's terrible. | |||
| whiteknight | I don't get bothered by the cold so much | 17:46 | |
| Austin | Nor I. | ||
| PerlJam | Fall doesn't end until Dec. | ||
| whiteknight | the rain is shitty, but whatevs | ||
| Austin | But it was all "hot Brazillian chicks in tight sweaters" for a few weeks. Now they're confused, and wearing baggy sweat-shirts or jackets. | ||
| It's interfering with my scenery. | |||
| bubaflub | it's 52 here in the middle of Illinois | 17:47 | |
| it's also boring here in the middle of IL, but that's a different story | |||
| whiteknight | I'm more worried about people getting sick. My wife has an immune system like a '63 volkeswagon | ||
| Austin | I was going to say something about that being its own reward... | ||
| whiteknight: Meaning it doesn't work? | 17:48 | ||
| whiteknight | exactly | ||
| Austin | Man, have you been following the news from New Jersey? | ||
| bubaflub | hmmm, i've had a number of friends come down with the flu | ||
| whiteknight | not to mention that she's 9 months pregnant. A goddamn biological house of cards | ||
| bubaflub | yikes. yeah, keep her quarantined | ||
| whiteknight | Austin: what news from durty jersey? | ||
| Austin | I live in Burlington County, and the health department has been really aggressive about getting flu shots from the govt. | ||
| We've had these flu clinics a couple of times, and every time they have them, they gets these "stay overnight for Journey concert tickets" lines that go forever. | 17:49 | ||
| The other day, they had 1500 doses, and something like 9000 people showed up. They were parking on the side of the road and walking a mile to get in line, and the clinic was expressly for pregnant women. | 17:50 | ||
| From all over the state. | |||
| Apparently, there's a little public panic going on that nobody knows about or wants to talk about. | 17:51 | ||
| whiteknight | I'm not even planning to get the shot | ||
| I'm not a big believer in flu shots | |||
| cotto_work | plobsing, the nci_ssc test from t/pmc/nci.t fails on the framebuilder branch on x64 with libjit installed and detected | ||
| whiteknight | cotto_work: yeah, I pointed out that problem last night | 17:52 | |
| he nopasted a patch somewhere at some point that I have yet to try | |||
| cotto_work | nopaste.snit.ch/18636 seems to be the one. I'll give it a shot. | 17:54 | |
| whiteknight | w00t | ||
| cotto_work | still broken | 17:56 | |
|
17:57
payload joined
|
|||
| whiteknight | urg | 18:00 | |
| dalek | rrot: r42423 | barney++ | trunk/NEWS: More news for 1.8.0. |
18:09 | |
| NotFound | allison: ping | 18:14 | |
| allison | NotFound: pong | ||
| NotFound | allison: have you seen TT #1262 ? | 18:15 | |
| allison looking... | |||
| NotFound: short and sweet, nice | 18:17 | ||
| NotFound: any test failures? | |||
| purl | any test failures are a cause for concern, blah blah blah. Plus it might illuminate something you're tracking down. | ||
| NotFound | allison: the ones for p.invoke(p), as expected. | 18:18 | |
| allison | NotFound: and, how about if the Object is a sub rather than a method? | ||
| NotFound: meaning it's a problem if you pass the object as the first argument? or just general failure if you invoke a method? | 18:19 | ||
| NotFound | allison: a good question, I was unaware of that posibility. | 18:20 | |
| allison: The test failure? Just wrong number of arguments. | |||
| allison | NotFound: ah, yeah | ||
| NotFound: IIRC, there's an older ticket with some more thoughts on the subject, will look | 18:21 | ||
| NotFound | We can add a naive fix: if the first argument is self, do nothing. | ||
| allison | NotFound: yes. mainly at the moment, just get it working, and we'll make some fixes to the PIR 'self' syntax later | 18:22 | |
| NotFound: (like, later we'll have to deal with updating the signature stored in CallSig to match the args it's holding) | 18:23 | ||
| NotFound | allison: chromatic mentioned that yesterday, yes. | 18:24 | |
| allison: so can I commit if the simple fix for the test cases works? | 18:25 | ||
| allison | NotFound: yes, it can't break any existing code because the code would have already been broken | 18:26 | |
| NotFound: bonus points if you can handle the Sub case too | |||
| NotFound: (oh, but please double-check that the Sub case isn't working currently, just in case I'm remembering wrong) | |||
| NotFound | allison: hard to tell, I never tried to set a Sub as vtable override. | 18:27 | |
| whiteknight | NotFound++ | 18:28 | |
| I knew that fix would be an easy one with the new PCC system. I just didn't realize how easy | 18:29 | ||
| allison | NotFound: I'm thinking of the more general case of invoking a PIR object, hang on, will nopaste... | ||
| NotFound | Yeah, the pcc refactor has been great :) | ||
| whiteknight | that reminds me, I'm supposed to be reading up how "self" is done now in IMCC | 18:30 | |
| allison mentioned it was an ugly hack | |||
|
18:30
davidfetter joined
|
|||
| whiteknight | actually, the code in compilers/imcc/pcc.c:unshift_self() doesn't look so horrible | 18:32 | |
| I seem to remember it used to be worse | |||
| I can see some immediate ways we could improve performance here, however | 18:33 | ||
| nopaste | "allison" at 77.98.130.30 pasted "Invoking a Sub object, for NotFound" (11 lines) at nopaste.snit.ch/18639 | ||
| allison | NotFound: and, it doesn't work now, so you're safe if it still doesn't work after, but would be nice to fix | ||
| whiteknight | when I do foo.'method'(), it calls invoke on foo? | 18:34 | |
| allison | whiteknight: no | ||
| when you call foo.bar() it calls invoke on bar | |||
| whiteknight | okay, I was lead to believe that was the case | ||
| allison | (if bar is a PMC) | ||
| whiteknight | okay, so foo.invoke is only called when I do foo()? | 18:35 | |
| allison | aye | ||
| or thingy.foo() | |||
| whiteknight | oh, okay. So how would I create my own Sub type and insert it as a method like that on an object? | 18:36 | |
| and, in that second case, would foo.invoke "self" refer to thingy or foo? | |||
| allison | whiteknight: see my nopaste above, but add a call to add_method on some object | ||
| whiteknight | ok | ||
| allison | whiteknight: that has always been the great debate (what should 'self' be when invoking on an Object sub) | 18:37 | |
| whiteknight: arguably, self shouldn't even exist for foo() | |||
| whiteknight | okay, I remember having that debate, just making sure my memories are accurate | 18:38 | |
| allison | whiteknight: (since it's a sub, and 'self' only exists on methods) | ||
| whiteknight | methods and vtables | ||
| allison | aye | ||
| whiteknight | I would maybe advocate a "current sub" keyword that would exist also in PIR code | 18:39 | |
| allison | whiteknight: IIRC someone raised the question of how to access the sub object when you need it | ||
| whiteknight | so in foo(), self == currsub == foo | ||
| whereas in bar.foo(), self == bar, currsub == foo | |||
| allison | whiteknight: I'd move away from keywords entirely and go for opcodes for both self and current_sub | ||
| NotFound | allison: I don't see a Sub object in that nopaste :? | ||
| whiteknight | I'm in favor of that very much | ||
| allison | or, param types | ||
| NotFound: it's MySub, an object acting as a sub | 18:40 | ||
| whiteknight | param types would be nice and relatively easy to implement | ||
| allison | whiteknight: .param pmc self :object | ||
| NotFound | allison: ah, I thinked you talked about a subclass of Sub, or something like that. | ||
| whiteknight | though I worry if we proliferate too many .param flags, we'll slow some things down | ||
| allison | er, :self | ||
| whiteknight | and .param pmc this :sub | ||
| allison | whiteknight: yup, sounds good | 18:41 | |
| or :current_sub | |||
| whiteknight | sounds like ammunition for an RFC. I'll hit the list and see how many complaints the HLL devs can come up with :) | ||
| allison | whiteknight: it certainly complicates the param checking code, but it is just an integer check | ||
| whiteknight: thanks | |||
| NotFound: it could be a subclass of Sub | 18:42 | ||
| whiteknight | the "special" kinds of flags that will be used infrequently, I think we can mask them off and reduce the number of checks for them | ||
| so it shouldn't be a huge complexity increase | 18:43 | ||
| allison | NotFound: but mainly I meant that Object's 'invoke' vtable should handle cases where there is no invocant | ||
| NotFound | allison: that's what the patch makes. | 18:44 | |
| allison <slaps head> figuring it out about 2 seconds before | 18:45 | ||
| NotFound: okay, so that treads deeper into the debate whiteknight and I just reviewed... | 18:46 | ||
| NotFound: at first glance I though you were handling the case of adding thingy to the argument list for thingy.foo() | |||
| NotFound: (that is, adding the invocant) | |||
| whiteknight | allison: in a related question, for all other VTABLEs, "self" should refer to the object who's vtable it is? But in invoke, "self" is only that object if it's not the invocant? | 18:47 | |
| allison | whiteknight: that's the problem, how do you access the invocant if the sub object takes over self | 18:48 | |
| whiteknight | allison: adding the :current_sub param type | ||
| allison | whiteknight: self should always refer to the invocant | ||
| whiteknight | okay | 18:49 | |
| NotFound | allison: The case for overriding invoke in a method, I don't even looked at it. First I must know some possible use case. | ||
| Well, in a thing acting as a method, maybe better said. | |||
| allison | NotFound: will make a new nopaste... | ||
| NotFound | But in that case... who is 'self' ? | 18:50 | |
| nopaste | "allison" at 77.98.130.30 pasted "Invoking a Method object, for NotFound" (18 lines) at nopaste.snit.ch/18640 | 18:54 | |
| allison | NotFound: this one apparently does currently work | ||
| NotFound: so need to not break it | |||
| NotFound | allison: so maybe we must add a test before applying the patch. | ||
| allison | NotFound: self should always be the invocant (as in the actual invocant argument to a method call) | ||
| NotFound: it is confusing in the vtable case | 18:56 | ||
| NotFound | In that usage: how can MyMethod.invoke access the MyObject instance? | ||
| Austin | In that case, what is the method? | 18:57 | |
| That is, if my_obj becomes self, what does $p1 become? | 18:58 | ||
| allison | NotFound: trying a few more code examples before I make a call... | ||
| whiteknight | email sent. Let the warnocking begin | 19:01 | |
| bernhard++ | 19:02 | ||
| NotFound | With a simple check for self in call_sig[0], all test pass. | 19:03 | |
| whiteknight | Since the invocant is already stored in the CallSignature, I don't see any reason why we would need to pass it as the first argument the way IMCC does it currently | 19:05 | |
| we can still manually insert a ".param pmc self :invocant" to the list on the callee side, but we don't need to pass self as an arg | 19:07 | ||
| nopaste | "allison" at 77.98.130.30 pasted "currently, a :vtable sub has access to the 'self' argument of a method call, as well as other arguments of the call, for NotFound" (29 lines) at nopaste.snit.ch/18641 | ||
| allison | NotFound: this example works now too | ||
| Austin: not sure I understand the question | 19:08 | ||
| Austin: oh, I see, yes, the MyObject instance isn't available in side the body of the 'invoke' sub at all | |||
| Austin | Allison: In your nopaste, you have 7 my_obj.$P1() as an example call. | ||
| I think that's a mistake. | 19:09 | ||
| allison | Austin: yes, the $P1 is only executed, it's not available inside (at the moment) | ||
| Austin | Okay. | ||
| allison | Austin: I agree it should be accessible, but it shouldn't override 'self' (or we limit ourselves from creating PIR methods) | ||
| PIR method object classes, I should say | 19:10 | ||
| whiteknight | I like the :current_sub .param flag | ||
| I think that's the most straightforward | |||
| and :invocant too | 19:11 | ||
| allison | whiteknight: me too | ||
| NotFound | allison: your first example works if I also add a check for current_object being null. | ||
| whiteknight | because then we can name it whatever the hell we want | ||
| .param pmc self :current_sub | |||
| allison | whiteknight: can we add :invocant now, without interfering with the old self? | ||
| whiteknight | allison: yes. | 19:12 | |
| but more importantly, I think we can reimplement the "self" keyword in terms of :invocant for a modest savings | |||
| allison | NotFound: as in, 'self' is the current sub for a sub call, but the invocant for a method call? | ||
| NotFound: the tricky bit would be how to access the current sub from a method call | |||
| pmichaud | normally the "current sub" is available through the interpreter object, fwiw | 19:13 | |
| $P0 = getinterp; cursub = $P0['sub'] | |||
| (unless you're describing something different) | |||
| whiteknight | pmichaud: so is the current callsig. :current_sub would just be shorthand | ||
| NotFound | Take it easy, guys, we are starting to make work the more common case, don't expect that any conceivabe usage works today ;) | ||
|
19:14
payload joined
|
|||
| allison | pmichaud: aye | 19:14 | |
| pmichaud | I'm not sure that level of shorthand is needed. | ||
| allison | NotFound: I'm mainly concerned about the confusion | ||
| whiteknight | a named lookup isn't going to be nearly as fast as a .param with a flag | ||
| pmichaud | whiteknight: sure, but how often do we need to look up the current sub? | ||
| whiteknight | everytime we call VTABLE_invoke, potentially | 19:15 | |
| again, I think it's analogous to :cal_sig | |||
| :call_sig* | |||
| pmichaud | I'm a bit confused by "everytime we call VTABLE_invoke" | ||
| maybe I just understand the use case. | |||
| *don't understand | |||
| allison | pmichaud: it's a good point, and I'm trying to remember the initial request that prompted it | 19:16 | |
| whiteknight | we're talking about overriding VTABLE_invoke from PIR | ||
| pmichaud | whiteknight: yes, I got that part. | ||
| whiteknight | and we're looking to differentiate betwen calls "$P1()" from "foo.$P1()" | ||
| allison | pmichaud: looking through old tickets. It has to do with "make VTABLE_invoke work" | ||
| pmichaud | ah, and the second case the problem is that there are two 'selfs' | 19:17 | |
| there's the invocant foo, and there's the thing being invoked $P1 | |||
| whiteknight | pmichaud: exactly. We need to get references to both objects | ||
| plus I think having :current_sub around would make the functional guys happy: easy anonymous self-recursion | |||
| NotFound | allison: the second nopaste also works | ||
| allison | NotFound: with your fix? that's good | 19:18 | |
| dukeleto | 'ello | ||
| pmichaud | I think the name "current_sub" is entirely misleading | ||
| for one, $P1 is not really a sub | 19:19 | ||
| allison | quick public poll: is it confusing if 'self' refers to something different in an Object 'invoke' override than it usually does? | ||
| pmichaud | allison: I don't have a quick answer, alas | ||
| from the vtable perspective, 'self' should refer to the thing being invoked | |||
| from the caller perspective, 'self' should refer to the invocant | 19:20 | ||
| nopaste | "NotFound" at 213.96.228.50 pasted "Updated patch for Object.invoke" (18 lines) at nopaste.snit.ch/18642 | ||
| whiteknight | funny: code.google.com/p/go/issues/detail?id=9 | ||
| allison | NotFound: I suggest committing it, mentioning it in the 'experimental' section of DEPRECATED.pod, so we're not tied to keeping it | ||
| NotFound | allison: I think the question is: what do you think it usually does? ;) | 19:21 | |
| allison | NotFound: and post to the list about it | ||
| pmichaud | speaking strictly from a p6 perspective (which I recognize may not be appropriate for parrot), I would think of 'self' inside of VTABLE_invoke as being the invoked object, with the first argument as the invocant, if anyway | ||
| allison | NotFound: it usually holds the method invocant, the 'object' | ||
| barney | whiteknight: same thing happened to Kea | ||
| allison | NotFound: but we're talking about a case that has no invocant | ||
| pmichaud | i.e., P6 tends to think of obj.$P0(arg) as being the same as $P0(obj, arg) | ||
| NotFound | allison: Can some other write the deprecated entry? My english is very poor for clearly explain it. | 19:22 | |
| allison | NotFound: go ahead and write it, someone can edit it later | ||
| pmichaud | to put it another way, my naive approach for writing an invokable method object would be | ||
| NotFound | Ok | ||
| pmichaud | .sub :vtable('invoke') | 19:23 | |
| .param pmc invocant # this is the object on which the method is being invoked | |||
| .param pmc arg1 | |||
| ... | |||
| .end | |||
| Austin | whiteknight: Somebody already suggested goatse. :( | ||
| pmichaud | thus in obj.$P1(arg1) we would see $P1 as 'self', obj as 'invocant', and arg1 as 'arg1' | ||
| Austin | pmichaud++ | 19:24 | |
| pmichaud | i.e., vtable-ness overrides method-ness | ||
| Austin | Objectness. | ||
| allison | pmichaud: and in fact, that may be what we're moving to, but with the invocant param marked with :invocant | ||
| pmichaud | I'd be okay with that too. | ||
| (of course rakudo won't be using this, but it's good to know what would be there if we needed it :-) | 19:25 | ||
| whiteknight | the "self" keyword is too magical right now | ||
| allison | self has always been a bit of a weird hack | ||
| pmichaud | I think self works out quite naturally, fwiw | ||
| particle | what about .invocant self | ||
| whiteknight | it works, but not in all corner cases | ||
| particle | rather than .param pmc foo | ||
| pmichaud | well, the tricky part with obj.$P1(arg) is that there are in fact *two* operations being performed | ||
| particle | is it worth a new macro to distinguish invocant from other params? | 19:26 | |
| pmichaud | particle: I think a flag is sufficient | ||
| whiteknight | particle: I don't think so | ||
| flag is more consistent | |||
| pmichaud | anyway, my vote on the quick poll is that inside of vtable_invoke, 'self' refers to the invoked object, always. | ||
| particle | .sub :vtable('invocant') | ||
| NotFound | allison: What section in DEPRECATED.por ? PMCS ? | ||
| particle | .param string invocant | ||
| pmichaud | if I want the actual sub, I can use getinterp | ||
| particle | oops! | ||
| whiteknight | pmichaud so "foo.bar()", self is foo? | ||
| pmichaud | whiteknight: no, self is bar | 19:27 | |
| purl | okay, pmichaud. | ||
| pmichaud | (assuming that bar has a PIR vtable_invoke) | ||
| whiteknight | pmichaud: I think that's exactly the opposite of what you just said | ||
| pmichaud | in foo.bar(), foo is definitely _not_ the invoked object | ||
| whiteknight | "'self' refers to the invoked object, always" | ||
| pmichaud | the thing being invoked is bar | ||
| it's being invoked on foo, but bar is the actual thing doing the executing. | 19:28 | ||
| particle | we'll need an error if the sub is marked :vtable('invoke') and the first param is sot a pmc | ||
| whiteknight | I think that's pretty far backwards | ||
| particle | *not a pmc | ||
| whiteknight | an object of a method pmc class would have exactly opposite meanings for "self" from what a normal PIR method would have | ||
| pmichaud | only in vtable invoke | 19:29 | |
| allison | pmichaud, but if I invoke a method that was defined with .sub bar :method, self is foo in foo.bar() | ||
| pmichaud | keep in mind that method pmcs can have their own methods as well | ||
| allison: I understand the distinction yes. I think the distinction has to be made in vtable invoke versus methodcall semantics | |||
| whiteknight | but so can the invocant have other methods | ||
| "self" should always be the invocant. Changing it in different contexts is wrong | 19:30 | ||
| pmichaud | whiteknight: right, and if the invocant has other methods, then those are treated as methodcalls | ||
| whiteknight: in $P0(xyz) --- what is the invocant? | |||
| whiteknight | none | ||
| allison | whiteknight: I think this just shows that 'self' is wrong | ||
| pmichaud | what is the thing that is handling vtable_invoke ? | ||
| allison | pmichaud: there is no invocant in $P0(xyz) | ||
| whiteknight | allison: if "self" exists at all (and maybe it shouldn't) it should be consistent | ||
| pmichaud | let me put it this way, then | ||
| in all of the other vtable methods, "SELF" refers to the thing that controls the vtable | 19:31 | ||
| if I have $I0 = $P0 | |||
| then it's $P0's "get_integer" vtable that controls | |||
| whiteknight | right, and $P0 is self | ||
| pmichaud | correct | ||
| so if I have $I0 = $P0() | |||
| then it's $P0's "invoke" that controls | |||
| allison | so the confusion is between SELF in C and self in PIR? | ||
| pmichaud | I don't find it confusing. | 19:32 | |
| but that's just me | |||
| my point is that "self" should be the object that is controlling | |||
| whiteknight | in PIR VTABLE overrides, self is the same as SELF in C | ||
| pmichaud | do we agree that in $I0 = $P0() it's $P0's invoke that is in charge? | ||
| whiteknight | pmichaud: my solution, in the face of this confusion, is to say "self" should disappear | ||
| NotFound | The ticket to be mentioned in DEPRECATED is TT #103 ? | ||
| whiteknight | in that case, $P0 is being invoked, but it isnot the invocant | ||
| pmichaud | whiteknight: fair enough, I have no problem with that | 19:33 | |
| the same is true for $I0 = obj.$P0() then | |||
| allison | okay, an "invocant" is always the object on which a method is invoked | ||
| pmichaud | it's $P0's "invoke" that is in charge. "obj" has absolutely nothing to do with it. | ||
| whiteknight | so the question is this: is "self" the invocant, always, or is "self" some magical wonderful thing which means different things at different times and will unpleasantly suprise programmers? | ||
| allison | I've always read self == invocant, rather than self == SELF | ||
| whiteknight | if it's the former, fine: we have some fixing to do. If the later, kill it | ||
| pmichaud | I've already read self == first argument to a method | 19:34 | |
| *always | |||
| whiteknight | pmichaud: that's a perl-ism. | ||
| pmichaud | (because that's the Perl way of thinking of it, yes) | ||
| whiteknight | hardly suitable for the default behavior of a language-agnostic VM | ||
| pmichaud | I disagree. | ||
| (more) | |||
| it just depends on whether you believe methods are first-class objects or not | 19:35 | ||
| and I think that Parrot _has_ to treat methods as first class | |||
| and since methods are first class, they have their own notion of 'self' that may be different from whatever invocant they're operating on | |||
| allison | pmichaud: agreed, this is just a question of what syntax we use to do it | ||
| whiteknight | how does first-classness have any impact on whether the invocant is passed as a normal argument or not? | ||
| pmichaud | therefore, in the case of something like | 19:36 | |
| $I0 = obj.$P0(arg) | |||
| where there's no find_method taking place on obj | |||
| (which is the other major difference here) | |||
| whiteknight | obj is the invocant, $P0 is the invoked sub | ||
| pmichaud | obj isn't the invocant, though. It has absolutely nothing to do with the method invocation | ||
| as opposed to obj.'foo'(arg), where obj determines which method is to be invoked | 19:37 | ||
| allison | pmichaud: we could define invocant that way, but we're safer sticking with Damian's definition | ||
| pmichaud | okay, I'm not familiar with Damian's definition | ||
| allison | from a Perl 5 perspective it would be "the first argument" | 19:38 | |
| but more technically "the object in a method call" | |||
| pmichaud | I'm fine with defining invocant that way | ||
| allison | (without any consideration for what the method is or how invocation happens) | ||
| pmichaud | in the case of obj.$P0(arg1) I'll argue that no method call takes place | 19:39 | |
| allison | we can come up with a different name for the PMC SELF that controls the current behavior | ||
| pmichaud | even though it looks like one | ||
| whiteknight | In most languages, trying to call foo.bar() as bar(foo) would be a big error | ||
| allison | whiteknight: that may be a bit of a rabbit trail | ||
| pmichaud | whiteknight: I'm not arguing for Perl semantics just to have Perl semantics | ||
| allison | I have a more practical problem, if a .sub is defined as :vtable :method, what should 'self' be inside it? | ||
| pmichaud | traditionally, subs defined as :vtable have had 'self' as the vtable's invocant | 19:40 | |
| whiteknight | pmichaud: I'm arguing against perl semantics just to not have to deal with perl semantics | ||
| allison | (that is, if we hypothetically decide that 'self' should be SELF) | ||
| whiteknight | I think Parrot should not impose semantics on the HLLs | ||
|
19:40
bacek joined
|
|||
| whiteknight | allison: I think we need to get rid of the PIR "self" entirely | 19:40 | |
| allison | pmichaud: do you mean Damian's invocant, or PMC SELF? | ||
| whiteknight: yes, I'm walking through Socratically here | 19:41 | ||
| pmichaud | I mean PMC SELF, which also implies to me exactly Damian's invocant | ||
| i.e., I don't see a conflict there. | |||
| allison | more detailed | ||
| ... | |||
| .sub foo :vtable :method... | |||
| called $P0.foo() #assume foo is a variable holding a PMC object | 19:42 | ||
| pmichaud | (it would have to be) | ||
| allison | inside the body of 'foo' what is self? | ||
| pmichaud | I would see 'self' as being foo (more) | 19:43 | |
| my reasoning is that $P0 has no impact whatsoever on the method being called | |||
| except as an argument | |||
| allison | this isn't a vtable override, this is an ordinary method | ||
| pmichaud | oh, you meant $P0.'foo' then | ||
| allison | nope, any method can be called as either a name or an object | 19:44 | |
| pmichaud | no. | ||
| allison | there's no way for Parrot to know how the method object was defined when it's invoked | ||
| pmichaud | right | ||
| so, detailing further... | |||
| dalek | rrot: r42424 | NotFound++ | trunk (2 files): [pcc] experimental object vtable invoke, TT #103, TT #1262 |
||
| pmichaud | .sub 'foo' :vtable :method :subid('xyz') | 19:45 | |
| ... | |||
| .end | |||
| allison | so, you can always pull a method object out of the class object and call it directly | ||
| pmichaud | .const 'Sub' foo = 'xyz' | ||
| like that? | |||
| allison | and, it acts just like a normal method call | ||
| yup | |||
| pmichaud | and then | ||
| $P0.foo(1) | |||
| like so? | |||
| allison | aye | ||
| pmichaud | in that case, I would see self as $P0 (more) | ||
| allison | which should have exactly the same behavior as $P0.'foo'(1) | ||
| pmichaud | because foo is not an object that has a custom VTABLE_invoke | 19:46 | |
| foo is a Sub | |||
| whiteknight | that's a very arbitrary decision to make | ||
| .sub foo :method could be any type, once we have hll overrides working properly in all cases | 19:47 | ||
| pmichaud | in that case I would expect that my answer could change (more) | ||
| whiteknight | it's the changing that's infuriating! Inconsistency is bad | 19:48 | |
|
19:48
bubaflub joined
|
|||
| pmichaud | one could argue that Parrot's vtable_invoke for Sub simply replaces self with the first parameter | 19:48 | |
| whiteknight | we shouldn't implicitly treat PMCs differently depending on how they are defined. Semantics of "invoke" should be consistent | ||
| dalek | TT #1262 closed by NotFound++: Simple patch for the overriding of invoke for objects | ||
| pmichaud | and that this is a Sub semantic, which other objects and methods would not be constrained to follow | ||
| whiteknight | pmichaud: IMCC currently does that with the first parameter, yes. But I view that as a very bad legacy bug | 19:49 | |
| pmichaud | it's not just IMCC that does it | ||
| Sub PMC does it as well | |||
| whiteknight | the behavior is completely defined in IMCC | ||
| pmichaud | incorrect. | ||
| whiteknight | Subs get their arguments from CallSignature now, which doesn't enforce that | ||
| pmichaud | okay, then incorrect prior to the pcc refactor. | ||
| whiteknight | invocants are a distinct object in the CallSignature | ||
| compilers/imcc/pcc.c:unshift_self() is where all the "magic" happens | 19:50 | ||
| allison | whiteknight: they're part of the list, but marked with Pi | ||
| pmichaud | the point being that the previous behavior allows me to do obj.$P0(arg) with any Sub PMC, not only those that are marked as :method | ||
| whiteknight | allison: right, it's the Pi that makes them distinct. They arne't just another argument | ||
| pmichaud | and therefore the notion that the first argument becomes 'self' is actually handled in the Sub PMC as well. | ||
| it's not strictly within IMCC. At least, I don't see how it could be. | 19:51 | ||
| allison | pmichaud: that should continue working, even now | ||
| pmichaud | allison: right. | ||
| allison: afaik, it does. (thank you :-) | |||
| whiteknight | IMCC generates the code that does that. Without this incorrectly-generated code, it would still work fine | ||
| allison | pmichaud: but, should it stop working if $P0 was defined in some other way than as a PIR .sub/.end block? | ||
| whiteknight | we wouldn't have the "self" keyword, IMCC appends a .param line to the sub definition when they keyword "self" is present in the sub | 19:52 | |
| in any case, no code inside Sub PMC has anything to do with any of that | |||
| pmichaud | meaning if $P0 was some custom PMC with its own vtable invoke? | ||
| allison | pmichaud: I would argue that it shouldn't stop working, and should always work no matter how the Sub was created | ||
| pmichaud: yes | |||
| pmichaud | I'd say that the self semantic depends on the custom PMC then | ||
| whiteknight | A sub should be able to determine when it has or has not been called as a method | 19:53 | |
| pmichaud | and that vtable_invoke would be explicitly recognizing a potentially different meaning of 'self' | ||
| allison | pmichaud: probably should, but custom PMCs can't control PIR syntax parsing | ||
| whiteknight | and making that determination means having an invocant be null or not-null | ||
| which means not just filling in the invocant with whatever first argument was passed | |||
| mymethod(1), where 1 is not the invocant | 19:54 | ||
| allison | it sounds like the best solution long-term is to split "invocant" (as object in a method call) from however we access the SELF object inside a vtable invoke override | ||
| whiteknight | mymethod has been incorrectly called as a standalone sub | ||
| pmichaud | whiteknight: if we follow the Damian definition, 1 is an invocant. | ||
| whiteknight | then I don't follow that definition | ||
| pmichaud | I also think that saying that "been incorrectly called as a standalone sub" is Parrot imposing a semantic as well. | ||
| allison | pmichaud: no, obj would be the first parameter | ||
| (because Perl 5 makes no distinction between foo(obj, 1) and foo->obj(1) | 19:55 | ||
| whiteknight | pichaud: saying that methods should not be entered into the namespace to call is exactly the same as saying we shouldn't be able to call the method without a find_method lookup | ||
| allison | obj->foo(1) | ||
| pmichaud | whiteknight: it is not. | ||
| I can certainly have anonymous subs and methods | |||
| and I can certainly invoke methods without having to do a find_method | |||
| indeed, how else would one have an anonymous method if you had to go through find_method to do it? | 19:56 | ||
| whiteknight | how do you call an anonymous method without it? | ||
| allison | pmichaud: if you invoke a method on an object, don't you expect to be able to access that object inside the method body? | ||
| pmichaud | allison: yes, sure. | ||
| anyway, here would be my suggestion | 19:57 | ||
| inside of vtable methods, perhaps we need 'vself' | |||
| instead of 'self' | |||
| the far more common case is non-vtable methods, and so huffmanization would seem to argue that 'self' should be the invocant there | |||
| allison | as in, something more generic than 'current sub' | ||
| whiteknight | I'm fine with that. Whatever we call it so long as distinct concepts have distinct names and non-confusing semantics | 19:58 | |
| pmichaud | whatever was being invoked | ||
| note that 'current sub' is actually different from vself | |||
| with | |||
| allison | it is if you look it up through the interpreter | ||
| pmichaud | .sub 'foo' :vtable('invoke') | ||
| allison | it's the same in the very specific case of .sub invoke :vtable | ||
| pmichaud | let me be a bit more specific | 19:59 | |
| .namespace ['MyMethod'] | |||
| .sub 'foo' :vtable('invoke') | |||
| ... | |||
| .end | |||
| whiteknight | allison: not in all cases of invoke :vtable | ||
| pmichaud | $P0 = new ['MyMethod'] | ||
| obj.$P0() | |||
| the thing on which 'invoke' is occuring is $P0 | |||
| it's an instance of MyMethod | |||
| current sub is 'foo' | |||
| whiteknight | inside foo, obj is self, $P0 is vself | ||
| TimToady | phone | 20:00 | |
| pmichaud | i.e., vself is not the current self | ||
| sorry | |||
| vself is not the current sub | |||
| the current sub is 'foo', it's the invoke vtable function for objects of type MyMethod | |||
| thus I would expect vself to be an instance of MyMethod | |||
| and then 'self' can continue to be obj, if you like :-) | 20:01 | ||
| NotFound | Maybe we need a invoke_method vtable | ||
| whiteknight | NotFound: I thought about that several times today | ||
|
20:02
chromatic joined
|
|||
| NotFound | For a now I'll just enjoy the long awaited ability of creating real functors :) | 20:03 | |
| whiteknight | Notfound: we can't now? | 20:06 | |
| dalek | l: 0972202 | fperrad++ | plumage/xml.json: update plumage with setup.pir (distutils) |
||
| NotFound | whiteknight: Yes we can | ||
|
20:09
mikehh joined
|
|||
| dalek | rkdown: 8484de1 | fperrad++ | plumage/markdown.json: update plumage with setup.pir (distutils) |
20:18 | |
| bubaflub | fperrad: ping | 20:21 | |
| fperrad | pong | ||
| bubaflub | i was rewriting one of your tests, t/dynpmc/gdbmhash.t in PIR and ran into some snags | 20:22 | |
| would you mind taking a look at some code and pointing out where my insanity is? | |||
| allison | NotFound, whiteknight: alternate suggestion | 20:23 | |
| whiteknight | shoot | ||
| and I hope it's not "flip a coin, if it's heads self is the invocant" | 20:24 | ||
| allison | in :vtable, 'self' is the object that the vtable function was defined on | ||
|
20:24
bluescreen joined
|
|||
| allison | and .sub invoke :vtable takes a single argument, the call signature object | 20:24 | |
| (instead of trying to take all the arguments from the original sub/method call) | 20:25 | ||
| bubaflub | fperrad: it's sittin pretty at gist.github.com/232263, any pointers would be appreciated | ||
| whiteknight | I do like the idea about using the call signature, but then again I can think of plenty of places where we are just going to want to get our hands on the raw processed arguments | 20:26 | |
| that prevents vtable invoke from getting processed arguments to use | |||
| allison | it does, but 'invoke' is the metainvoker | ||
| whiteknight | and I still don't like the inconsistency that "self" means different things in different places | 20:27 | |
| allison | so, it makes the call self.'something'(arg :call_sig) work | ||
| whiteknight | that's true, but plenty of types are going to treat invoke like the main act, not redirecting | ||
| allison | (just pass along the current args) | ||
| fperrad | bubaflub, sorry, I can't help with GDBM, I am not the author of this code. | 20:28 | |
| bubaflub | fperrad: my bad. i must have misread the logs. | ||
| whiteknight | allison: I won't disagree with that. It's certainly more sane than the current situation | ||
| fperrad | bubaflub, but digest PMC is mine, I see & test your patch | ||
| bubaflub | fperrad: cool. the only snafu there was that converting the template to use PIR fails a coding standard | 20:29 | |
| i think if i take off the "filetype=pir" at the bottom of the template the coding standard will ignore that file | |||
| NotFound | allison: I hope that now that we have working a sane invoke for the common case we are not going to break or complicate it. | 20:30 | |
| fperrad | bubaflub, which codingstd test fails | ||
| allison | NotFound: should simplify it, actually | ||
| bubaflub | fperrad: ahhhh. the reason i thought you were the author was because my parrot only goes back to R40000 and that just so happens to be yours. git blame was saying it was _before_ your commit... | ||
| allison | NotFound: that is, we don't need the exceptions for a method call | 20:31 | |
| NotFound | allison: Looks as simple as a sub right now to me. | ||
| allison | NotFound: so, self should always be set to SELF in your patch | ||
| bubaflub | fperrad: t/codingstd/pir_code_coda.t fails because config/gen/crypto/digest_t.in has a template symbol @TEMP_md_name@ | 20:32 | |
| i.e. it fails because i have flagged that files as PIR and the test i think is trying to compile it | |||
| allison | NotFound: and we just tell people that the usual interface is to have one param of :call_sig | ||
| whiteknight | Allison: so VTABLE_invoke override would always be called with signature Pi-> and just unpack the signature itself? | ||
| bubaflub | so i could either flag that file as generated, have the test skip that file, or take off the filetype=pir on the last line | 20:33 | |
| whiteknight | that mirrors pretty closely how it's called from C | ||
| NotFound | allison: I talk about the pir code for defiing and for using a functor. The complexity of the C that supports it is a different problem. | ||
| Now the pir looks to me exactly as I want. | |||
| allison | whiteknight: it's only called with a Pi-> signature if it's called as obj.foo() | ||
| whiteknight | so otherwise it's just "->" | 20:34 | |
| and how do we determine which is which inside Object.invoke()? | |||
| allison | whiteknight: well, it's called with whatever was passed into the call | ||
| whiteknight | ah, I get it. Just reuses the same CallSignature | 20:36 | |
| fancy | |||
| allison: while on that note, what's the signature for a :call_sig arg? "Pc"? | |||
| fperrad | bubaflub, we have different coda, for PIR, Perl & C, you must convert Perl coda to PIR coda | 20:37 | |
| allison | lower-case 's' is already taken? (looking...) | ||
| whiteknight | s was slurpy? | ||
| (param, but nice to avoid confusion) | |||
| no wait, params don't get signatures | |||
| whiteknight is confusing himself. | |||
| bubaflub | fperrad: ok, so that option is out. i totally wasn't thinking about how that code is going to be generated... | ||
| allison | whiteknight: yup, slurpy | 20:38 | |
| whiteknight | oh wait, it would be :slurpy on the returns side | ||
| "results" side | |||
| so there is a Ps signature | |||
| allison | whiteknight: yeah, we use the same flags on both sides | ||
| whiteknight | right, but you can't have a slurpy arg | 20:39 | |
| at least, I don't seem to think you can | |||
| allison | 'c' is taken for constants | ||
| whiteknight | in a signature? | ||
| allison | yes, but let's avoid the confusion of a different letter meaning something different on each side | ||
| whiteknight | I know it's that in an ops signature | ||
| allison | parse_signature_string | ||
| whiteknight | damnit | 20:40 | |
| bacek | Good morning | ||
| whiteknight | "Pr"? | ||
| allison | whiteknight: it's all unified now :) | ||
| whiteknight | what's all unified now? | ||
| too much stuff needs a'unifyin' | |||
| allison | the calling conventions, but particularly parsing signature strings | ||
| whiteknight | okay, right right right | ||
| allison | "Pg"? | 20:41 | |
| whiteknight | I'm fine with that | ||
| allison | it's at least close to the beginning of "sig" | ||
| whiteknight | so Object.invoke() will use "Pg->Pg"? | ||
| allison | even though s and i are taken | ||
| bubaflub | particle: ping | ||
| whiteknight | so it will take a CallSignature and produce a CallSignature with results (or reuse the first one, in this case) | 20:42 | |
| allison | whiteknight: technically, it'll be P->Pg | ||
| or, wait | |||
| PiPg->Pg | |||
| yes | |||
| whiteknight | we're calling it with a CallSignature "Pg" full of args | ||
| the signature lready contains the Pi, so we shouldn't need to send that again | |||
|
20:43
mikehh joined,
donaldh_ joined
|
|||
| allison | the Pi is the object the VTABLE function was defined on | 20:43 | |
| (this is what it's virtual signature is) | |||
| whiteknight | but Pi is invocant | ||
| dalek | rrot: r42425 | fperrad++ | trunk/config/gen (2 files): applied patch from TT#1227 (with improvement) Courtesy of bubaflub |
||
| whiteknight | if we want something else for vtable object, I think it should be Pv | ||
| allison | Parrot_Sub_invoke(PARROT_INTERP, PMC *pmc, void *next) | ||
| whiteknight | Right, but the Sub there isn't the invocant | ||
| allison | whiteknight: if it helps clarify your thinking, there are two call signatures here | 20:45 | |
| whiteknight | I was hoping you weren't going to say that | ||
| hoping and praying | |||
| allison | one is the call signature of "return = obj.foo(arg)" | ||
| the other is the call signature of vtable invoke | 20:46 | ||
| whiteknight | my understanding was that if we called a sub with :call_sig, thta would be the signature | ||
| allison | there's already this separation in Sub | ||
| whiteknight | we wouldn't put that signature inside a signature | ||
| allison | we're trying to provide a way to do the same things from PIR | ||
| whiteknight | the (lousy) :call_sig implementation in trunk now does this. if we do foo(bar :call_sig) we don't create a new sig to stuff bar into | 20:47 | |
| allison | yes, if you call a sub with :call_sig, it becomes the actual call signature | ||
| whiteknight | set_args simply sets that as the current signature | ||
| dalek | TT #1227 closed by fperrad++: [PATCH] config/gen/crypto/digest_t.in for generated tests in t/dynpmc | 20:48 | |
| whiteknight | ok | ||
| and now why does that change in vtable invoke? | |||
| allison | yes, for all usual cases, that's how it works | ||
|
20:48
mikehh joined
|
|||
| allison | because vtable invoke is a way to allow people to implement invocation plumbing from PIR | 20:48 | |
| so, they need access to all the features | |||
| whiteknight | and the "results = obj.meth(args)" signature doesn't give that to them? | 20:49 | |
| allison | it does, but they lose information | ||
| we've been trying to dumb vtable invoke down in PIR | |||
| whiteknight | ...do they still lose information if they have a :vtable_self .param? | ||
| besides the vtable owner, what else are they losing? | 20:50 | ||
| allison | no, but we do end up adding a feature that's only needed in one very special case | ||
| they lose consistency, mainly | 20:51 | ||
| whiteknight | okay, let me see if I have this straight: Inside invoke :vtable, "self" is "method" and callsig contains the original object plus original args? | ||
| and vtable invoke will return a CallSignature with the set results and returns? | |||
| or does invoke :vtable not return anything? | 20:52 | ||
| allison | vtable invoke doesn't return anything, technically, but it needs a way to return things to the original call | ||
| returning a CallSignature seems the most straightforward | |||
| whiteknight | in the interests of future-proofing it (think unifying args and returns) I think it should return a signature with returns | ||
| okay. So Object.invoke() calls the override with the signature "PiPg->Pg" | 20:53 | ||
| allison | (technically, it returns an opcode pointer, but we're not giving folks access to do that in PIR | ||
| whiteknight | okay. I think I have it all straight in my mind now | 20:54 | |
| allison | whiteknight: yes, handling packaging up the old sig into the new sig, and unpackaging the return sig into the actual returns | ||
| whiteknight: can't do this until after 2.0, and NotFound's patch is the right fix for now | |||
| whiteknight | okay. I think we could put together a branch to prototype some things now though | 20:55 | |
| what deprecation needs to happen for this to go in? | |||
| just the current behavior of invoke :vtable? | 20:58 | ||
| NotFound | invoke uses the siganture provided for the original call. | ||
| whiteknight | okay | ||
| NotFound | On returning you just need to put values on it. | ||
| And .return already does that. | 20:59 | ||
| allison | whiteknight: we would be deprecating direct access to the parameters from the original call | ||
| whiteknight | gotcha. | 21:00 | |
| allison | that is, an 'invoke' vtable override in PIR would always take a single argument .param pmc call_signature | ||
| and always return a single result, a call signature object | 21:01 | ||
| NotFound | What? And complicating the more common usage? | ||
| allison | NotFound: yes | ||
| NotFound | That's insane. | ||
| allison | NotFound: it's clean, which is important | 21:02 | |
| it's also explainable, unlike most of our solutions so far | |||
| NotFound | You mean the non-solutions? | ||
| allison | and, it's the one solution that means the PIR invoke override is functionally equivalent to the C invoke vtable functions, instead of acting completely different | 21:03 | |
| particle | is it insane if it works, is correct, and is easy to explain? | ||
| NotFound | If you want a clean and undesrstandable invoke method, just add a vtable invoke_method | ||
| allison | and, when we move to Lorito, and are defining all vtable functions in terms of ops, it's how it'll have to work | ||
| (that is, there will be no C version to handle all the complex behavior of invoke) | 21:04 | ||
| NotFound | particle: show me something that works now. | ||
| allison | NotFound: your code works now | ||
| NotFound | allison: yes, and you want to break it. | 21:05 | |
| allison | NotFound: a PMC defined in PIR needs to be able to do everything a PMC defined in C can do | ||
| (specifically, a Sub-like PMC defined in...) | 21:06 | ||
| NotFound | allison: I don't think that means to force the simplest cases to add unnecessary complexity. | 21:07 | |
| chromatic | Where's the unnecessary complexity? | ||
| allison | NotFound: the way I originally implemented Object.invoke (which you just fixed) was trying to dumb down invoke | ||
| NotFound | If direct access to arguments is deprecated, some more convoluted way must be used. | 21:08 | |
| allison | NotFound: but it ends up hampering PMC writers | ||
| NotFound: the idea is that 'invoke' is a dispatcher | |||
| that's what it is in the VTABLE | |||
| and by making it act like a dispatcher, we make PMC writers more powerful | 21:09 | ||
| NotFound | Very nice, but I still don't see the need to complicate the pir side. | ||
| allison | we could even add a second string argument, with the name used to invoke the method/sub | ||
| that would be really helpful | |||
| chromatic | We're *simplifying* the PIR side and the C side simultaneously. | 21:10 | |
| allison | it doesn't really complicate the PIR side, it just means that the really simple case of PIR invoke will probably be | ||
| .param pmc sig | 21:11 | ||
| self.'foo'(sig :call_sig) | |||
| (or something like that) | |||
| NotFound | So the simplest and potentially faster case will need to use pir code to access his arguments. | ||
| chromatic | ... unless you have an easy way to make the VTABLE_invoke macro take varargs in C. | 21:12 | |
| NotFound | Where are C args in that thing? | 21:13 | |
| dalek | rrot: r42426 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] split exe_pbc/installable_pbc |
||
| allison | NotFound: vtable overrides are overriding a C-level vtable function | ||
| NotFound: and usually have exactly the same signature as the C-level function | 21:14 | ||
| NotFound: I know it's strange, and it took me a while to wrap my head around it, but it is cleaner and more powerul this way | 21:15 | ||
| NotFound: even though the syntax isn't as pretty | |||
|
21:16
jan joined
|
|||
| NotFound | allison: the signature of invoke uses no C args. | 21:16 | |
| allison | NotFound: exactly, the call signature is handled out-of-band from the signature of the vtable function | 21:17 | |
| NotFound | Unless you call opcode_t * a C arg in that context. | ||
| allison | NotFound: and the interpreter, and the PMC object (the sub), and a void pointer | 21:18 | |
| but, we hide the interpreter from vtable overrides (consistently) | |||
| and the opcode_t* and void pointer aren't at all useful in PIR | |||
| NotFound | allison: we hide the C arguments and provide pir ones in all other vtable overrides. | 21:19 | |
| allison | it's the one vtable function that really wasn't designed to be used from PIR, which is the cause of our headache | ||
| NotFound: aye, but we can't even do that with 'invoke' | 21:20 | ||
| dalek | rkdown: a6922c6 | fperrad++ | setup.pir: use installable_pbc instead of exe_pbc |
||
| allison | NotFound: PIR doesn't have access to opcode pointers, or even an encapsulated way to deal with them | ||
| NotFound | allison: we are currently doing. | ||
| allison | NotFound: are currently doing what? (lost the train somewhere) | 21:21 | |
| NotFound | allison: we are passing to the invoke override the arguements from the pir that uses it, same as for any other. | 21:22 | |
| Ii I override set_string_native I get a string. | |||
| If I overrdie invoke and use obj(string), I get a string. | 21:23 | ||
| chromatic | If you override it from PIR, but not from C. | 21:26 | |
| NotFound | Of course. | 21:28 | |
| purl | Indubitably. | ||
|
21:28
bluescreen joined
|
|||
| chromatic | In one fell swoop, we can unify the behavior and implementation and interface of the C version and the PIR version. | 21:30 | |
| NotFound | chromatic: At the cost of complicating and slowing down the pir usage? | 21:31 | |
| chromatic | How does that slow it down and how does that complicate it? | ||
| Answer "slowing down" very carefully, because you don't have a benchmark. | 21:32 | ||
| NotFound | Now I can just use the argument. If I must take a signature argument and extract the real arguments from it... | ||
| chromatic: I can't benchmark against a non exisent thing. | |||
| allison | NotFound: how about if CallSignature had an "unpack" method? | 21:34 | |
| ($P0, $P1, $S2) = sig."unpack"() | 21:35 | ||
| well, it would probably be named something like "fetch_args" | |||
| NotFound | allison: even better if parrot does that automatically... as already does. | ||
| chromatic | How is that better? It slows down code that doesn't need to unpack the arguments. | 21:36 | |
| allison | NotFound: it's only better when the automatic behavior is what you want, but it's limiting in all other cases, because there's no way to get around it | ||
| i.e. there's no really good way to turn off the automatic behavior | 21:37 | ||
| NotFound | allison: I have no problem with providing solution for more convoluted cases, I just fail to see why that implies complicating the simpler. | ||
| allison | but, the one that really convinced me is that the automatic behavior can't be consistent | ||
| dalek | TT #1264 created by quietfanatic++: Memory leak on sub call | ||
| allison | 'self' just can't be right when a PIR object sub is acting as a method | 21:38 | |
| in obj.foo(), self is wrong if it's object and wrong if it's foo | |||
|
21:39
xenoterracide joined
|
|||
| allison | (wrong if it's obj, because foo is really the vtable self, and wrong if it's foo because there's no way to get at the object of the method call) | 21:39 | |
| NotFound | I think the clean way can be to add an invoke_method and drop current_object from the context. | ||
| allison | that complicates the whole system to provide some syntactic sugar | 21:40 | |
| chromatic | And that keeps a difference between the C version and the PIR version. | ||
|
21:41
japhb joined
|
|||
| dalek | lscript: aaba1f9 | fperrad++ | setup.pir: use installable_pbc instead of pbc_exe |
21:45 | |
| a: bd95266 | fperrad++ | setup.pir: use installable_pbc instead of exe_pbc |
21:49 | ||
| Austin_away | Do we know if roles work in Parrot? | 21:58 | |
| Austin | Sorry. | ||
| Do we know if roles work in Parrot? | |||
| moritz | perl 6 roles work on top of parrot ;-) | 21:59 | |
| gues that doesn't really answers your question though | |||
| allison | Austin: they are function, but not extensively tested | 22:00 | |
| Austin | Thanks. | ||
| allison | functional | ||
| purl | i think functional is probably difficult. Might be possible though. or side-effect free | ||
| Austin | t/pmc/role.t is very short. | 22:01 | |
| :) | |||
| According to Pdd15, roles mixin without inheritance. Does that mean that if Base does Role, and Base -> Sub, that Sub does not do Role? | 22:02 | ||
| allison | Austin: it could be even worse than I remember | ||
| do you mean if Base does a role? | 22:03 | ||
| or Base composes Role itself? | |||
| Austin | "Cheer up," they told me, "things could be worse." And so I cheered up. And sure enough, things got worse. | ||
| allison | :) | ||
| Austin | My understanding is that a class "does" a role. | 22:04 | |
| "A role adds attributes and methods into a class" [pdd15]. | |||
| allison | yes | ||
| Austin | So if I define a Base class, and mixin Role to it, then Base does Role, yes? | ||
| NotFound | Austin: mine was, but last time I tried to use does instead of isa people almost killed me X-) | ||
| allison | but I'm not clear if you're asking about your own role | ||
| Austin | In particular, the "does" opcode will set its output to non-zero | ||
| allison | oh, you don't compose in Role, you create an instance of Role | 22:05 | |
| and compose in the instance | |||
| Austin | What does that mean? | ||
| purl | That boy needs therapy. | ||
| allison | as in $P0 = new ["Role"] | ||
| Austin | Hmm. | ||
| allison | to be less confusing | ||
| ... | |||
|
22:06
mikehh joined
|
|||
| allison | let's say you have a role "stringy" | 22:06 | |
| it has some methods, like "get_my_string" | |||
| Austin | okay | ||
| So I have a .namespace ['stringy'] with those methods, yet? | 22:07 | ||
| *yes? | |||
| allison | if you define a class Base, and compose the role "stringy into it, then Base will have the method "get_my_string" in it | ||
| Austin | Sounds good. | ||
| purl | Sounds good. is there a good way for me to find out when branches are merged, other than read every svn commit? | ||
| Austin | How do I do that? | ||
| allison | roles are like classes, their methods live in the role, not in the namespace | ||
| Austin | Umm. | ||
| allison | not an important detail | 22:08 | |
| Austin | Since I'm spending a lot of time defining methods in namespaces, I'm really unsure what you mean by that. | ||
| Okay. | |||
| pmichaud | purl, forget Sounds good. | ||
| purl | pmichaud, I didn't have anything matching sounds good | ||
| Austin | So I have a new [ 'Role' ] | ||
| allison | Austin: if you look at the code for the namespace, it stores those methods in the class, but it's not an important detail | 22:09 | |
| yes, you have a new Role | |||
| Austin | According to role.t, I give it a name in the init pmc. | ||
| particle | how do i set up irssi for irc.perl.org? | ||
| allison | and, you add methods and attributes to it | ||
| Austin | Now I want Base to "does" my Role. | ||
| (stringy) | |||
| allison | yes | ||
| Austin | So I get my Base class object. And add_role to it? | ||
|
22:09
Whiteknight joined
|
|||
| allison | yes, exactly | 22:10 | |
| Austin | So now Base does stringy. | ||
| allison | yes | ||
| Austin | And if I say 7 $P0 = get_class ... Base ... ; $I0 = does $P0, [ 'stringy'] then $I0 will be non-zero. | 22:11 | |
| allison | it should be, yes | ||
| Austin | Or do roles not use keys? Should it be 7 does $P0, "stringy" ? | 22:12 | |
| pmichaud | would 'does' apply to the class object, or just to instances of the class? | ||
| allison | Austin: it should accept keys | ||
| pmichaud | (that sounds like the same isa/typeof issues we've talked about in the past, so just curious) | ||
| Austin | Hmm. Good question, pmichaud. | ||
| allison | pmichaud: have to check the code | 22:13 | |
| allison looks | |||
| pmichaud | anyway, possibly not important to the current discussion. | ||
| but I'd certainly expect $P0 = new ['Base']; $I0 = does $P0, ['stringy'] to be true | |||
| Austin | So if I create a derived class Base -> Derived, what is the status vis-a-vis Derived does stringy ? | ||
| pmichaud | instances of derived should also be "does stringy" | 22:14 | |
| Austin | The suggestion in pdd15 is that "no." | ||
| pmichaud | Austin: line no? | ||
| Austin | =head3 role | ||
| pmichaud | (or key phrase) | ||
| Austin | "A role adds attributes and methods intlo a class without inheritance" | 22:15 | |
| *into | |||
| pmichaud | ah, there's a different interpretation there | ||
| Austin | My impression is that you add in the role and it dissolves. | ||
| allison | pmichaud: it looks like it's currently checking what's composed into the class or role | ||
| pmichaud | a class with a role composed into it is not a subclass of the role | ||
| a role simply composes methods and attributes into a class | 22:16 | ||
| allison | pmichaud: so, not restricted to responding from the object like isa is | ||
| pmichaud: (and there's a good chance that should change) | |||
| pmichaud | allison: good to know, thanks. | ||
| purl | good to know, thanks. is there a free version of that I can install (linux or win32) to play with? | ||
| NotFound | Austin: that means that you don't need to inherit from other class, in order to get some methods and attributes from other part. | ||
| At least, I read it that way. | |||
| pmichaud | Austin: subclasses of the composed class will have all of the methods and attributes of the base class, including those obtained from role | ||
| Austin | Sure. | 22:17 | |
| But will they "does stringy" or not? | |||
| pmichaud | I'm pretty sure they "does stringy". | ||
| allison | Austin: mostly true, in that you don't keep a search tree of all the parents and traverse them for finding methods | ||
| Austin | :) | ||
| allison | Austin: but you do keep an idea of what roles you've composed | ||
| NotFound | Write a test, and if it fails, TODO it ;) | ||
| allison | Austin: specifically so you can check "does stringy" | ||
| Austin | Okay, so for e.g., C3 computations, the methods from stringy are dissolved into Base. But for "does stringy" purposes, Base remembers that it has stringy, and Derived will also know that it inherits "does stringy" from Base? | 22:18 | |
| *has stringy = does stringy | 22:19 | ||
| allison | yes | ||
| Austin | What's the mechanism for composing in a role? | 22:20 | |
| I think P6object goes hunting for methods and adds them to the child class. Does role composition need that? | |||
| Allison: On an unrelated note, is there a documentation standard for indicating "vtable methods" versus "pir-callable methods" on pmcs? Right now I see "=head3 Methods" on top of a bunch of VTABLE declarations. | 22:23 | ||
| allison | when you call add_role, it inserts the existing role methods into the class | ||
| "vtable function" versus "method" | |||
| Austin | Okay. | ||
| Okay. | 22:24 | ||
| allison | so, if you see Methods as a header for vtable functions, it should be changed to "Vtable Functions" | ||
| (old documentation, especially before we had an object system, was pretty confused on the naming) | 22:25 | ||
| chromatic | Hm, a memory leak in CallSignatureReturns. | ||
| dalek | rrot: r42427 | chromatic++ | trunk/src/pmc/callsignaturereturns.pmc: [PMC] Added init() to CallSignatureReturns PMC to set the custom destruction Wall). |
22:29 | |
| cotto_work | doesn't pmc2c take care of that? | 22:33 | |
| chromatic: ^ | |||
| chromatic | If so, I didn't know. | 22:34 | |
| Certainly the code doesn't behave as if that were the case. | |||
| Whiteknight | apparently microsoft patented sudi | 22:35 | |
| sudo | |||
| so that makes me happy | |||
| allison | cotto: pmc2c couldn't know it needed custom destruction, could it? | ||
| cotto_work | pmc2c really should be smart enough to set those flags when a custom mark/destroy is defined | ||
| chromatic | Where would pmc2c set those flags? | ||
| darbelo | cotto_work: It should be. It isn't. | ||
| cotto_work | wherever it allocates memory for the attrs | 22:36 | |
| chromatic | msg fperrad Is there any reason PackfileDirectory doesn't set the destroy flag in init()? | ||
| purl | Message for fperrad stored. | ||
| chromatic | We can handle attrs automatically. That's not the problem. | ||
| NotFound | cotto_work: I thinked about that in the auto_attrs branch, but decided it was to risky at that moment. | ||
| s/to/too | |||
|
22:38
theory joined
|
|||
| cotto_work | It might be good to do now. You could even do a runtime check by comparing pointers and setting the flags if those VTABLE entries don't match Default's destroy/mark, though that might not be the prettiest method. | 22:39 | |
| darbelo | cotto_work: You'll need a deprecation notice. | 22:40 | |
| NotFound | cotto_work: I'll better wait until auto_attrs becomes the default. | ||
| cotto_work | probably so. It just strikes me as silly that those flags need to be set manually. | 22:41 | |
| NotFound | And we don't even have no_auto_attrs implemented. | ||
| darbelo | no_auto_attrs? I like the idea, but with a better name. | 22:42 | |
| NotFound | darbelo: ideas welcome. | 22:43 | |
| cotto_work | manual_attrs? | ||
| darbelo | Better than anything I'd come up with. +1 | ||
| cotto_work whips out thesaurus | 22:44 | ||
| NotFound | My idea is to introduce that flag, later emit a warning if no manual nor auto are specified, and later make auto the default. | ||
| A lot of deprecation points. | |||
| darbelo looks up thesaurus in his dictionary. | |||
| cotto_work | explicit_attrs? | 22:45 | |
| NotFound | I must create a ticket to discuss that plan. | ||
| darbelo | NotFound: If you implement the other flag before 2.0 you can put a notice there and ship 2.1 with the new behaviour. | 22:46 | |
| cotto_work | +1 < and a preemptive purl-- > | ||
| NotFound | Well, implementing it will be easy, it just needs to do nothing. | ||
| darbelo | Then what's holding you back? | ||
| ;) | |||
| cotto_work | It's nice to have a deprecation point coming up. it makes it feel like deprecations can make a foreseeable difference. | 22:47 | |
| NotFound | Maybe checking that both are not specified together. | ||
| cotto_work | stick_attrs? | ||
| ;) | |||
| NotFound | darbelo: thinking about editing and checking perl code makes me feel lazy ;) | ||
| chromatic | Hm, and there's a memory leak in Context. | 22:48 | |
| darbelo | Stop checking. We'll let you know if you break it. | ||
| chromatic | Yep, 104 bytes leaked for every Context... but the good news is they're merely leaking PMC attribute pools, so they get cleaned up during global destruction. | 22:49 | |
| NotFound | Well, I think that you can start using the flag right now with the name you choose, because there is no check for non existent flags. | ||
| cotto_work | pmc2c-- | 22:50 | |
| darbelo | pmc2c-- indeed. | ||
| cotto_work | karma pmc2c | ||
| purl | pmc2c has karma of -9 | ||
| darbelo | -9? pmc2c-- | 22:51 | |
| pmc2c-- | |||
| moritz | seen Infinoid | ||
| purl | Infinoid was last seen on purl 8 days, 11 hours, 59 minutes and 17 seconds ago, saying: <private message> [Nov 3 10:51:48 2009] | ||
| cotto_work | I'll be very happy the day it dies. | ||
| darbelo | Preach it! | 22:52 | |
| chromatic | You're going to love this next commit | ||
| moritz | is there any subsystem that doesn't either need a major rewrite, or die? | ||
| cotto_work | Oh boy! | ||
| diakopter | chromatic: you wrote a new pir backend? | ||
| darbelo | moritz: We have code too scary to rewrite or kill. Does that count? | 22:53 | |
| NotFound | moritz: maybe the Null PMC | ||
| chromatic | I plugged more of a leak. | ||
| cotto_work | moritz, anything that's been rewritten in the last year or two. | ||
| moritz wonders if that's the case in most larger projects | |||
| diakopter | to scary to rewrite or kill? sounds like it needs another wrapper layer on top. :) | 22:54 | |
| too* | |||
| darbelo | Probably. | ||
| diakopter | or bottom. | ||
| cotto_work | chromatic, wow. | 22:55 | |
| dalek | rrot: r42428 | chromatic++ | trunk/src/pmc/context.pmc: [PMC] Plugged a memory leak in Context's destroy(), where NULLing the Context's auto-allocated attributes. This fixes at least part of the leak reported by Lewis Wall in TT #1264. |
||
| darbelo | That can be a lot of leaked memory. | 22:57 | |
| chromatic | Huge. | 22:58 | |
| darbelo | Pity I'm too lazy to get some hard numbers. | 22:59 | |
| cotto_work | chromatic, have you looked for similar bugs? | 23:01 | |
| chromatic | I'm looking now. | 23:02 | |
| cotto_work | PackfileDirectory looks suspicious | ||
| afaict the rest are fine, assuming they all use PMC_data(x) | 23:03 | ||
|
23:03
payload joined
|
|||
| chromatic | PackfileDirectory bothers me, but when I added a custom destroy flag, I saw a lot of invalid free() errors. | 23:03 | |
| ... though that's probably because it doesn't need its own destroy. | 23:04 | ||
| bacek_at_work | chromatic, PackfileDirectory.destroy is wrong | 23:05 | |
| chromatic | Looks that way. | ||
| NotFound | The default packfile destruction and the interpreter destruction are itermixed in a hard to fix way. | 23:07 | |
| darbelo | packfiles look like they could go into the 'ItsABugHunt' wiki page. | 23:08 | |
| NotFound | The packfile structures by itself doesn't look too bad, but his integration with other parts complicates the ensemble. | 23:10 | |
| bacek_at_work | darbelo, there is old idea about using PMCs for packfiles. I didn't have time to do it during implementing Packfile* PMCs... | ||
| darbelo | NotFound: That page is more about the surrounding code than the structures mentioned, FWIW. | ||
| NotFound | bacek_at_work: by the way, are all PackfileSegment subtypes supposed to have a type method? | 23:11 | |
| darbelo | bacek_at_work: Is it documented anywhere? I'll be knee deep in packfiles for the freeze/thaw refactor. | ||
| bacek_at_work | NotFound, I think so. | 23:12 | |
| NotFound | bacek_at_work: PackfileAnnotations lack it | 23:13 | |
| Austin | bacek_at_work: A while ago, I remember reading a document you wrote on how to generated a pbc from PIR. Where is that document? | ||
| chromatic | bacek_at_work, does set_integer_native() in CallSignatureReturns need a Parrot_gc_free_fixed_size_storage() when switching to the system allocator? | 23:14 | |
| bacek_at_work | NotFound, it probably inherit it from PFSegment | ||
| Austin, somewhere in examples | |||
| NotFound | bacek_at_work: surely not. | ||
| Austin | ok, thanks | 23:15 | |
| bacek_at_work | chromatic, no idea. I can't dig into parrot sources now. | ||
| NotFound, then we have to add it. | |||
| darbelo, nope. It was some old ticket about Packfiles. | |||
| darbelo goes ticket digging. | |||
| NotFound | bacek_at_work: I was doing a simple pbc dumper using Packfile PMC, in order to check his capabilities, and discovered that. | 23:16 | |
| bacek_at_work | NotFound, bug... Just add it. | ||
| NotFound | Doing it with Winxed, BTW ;) | ||
| bacek_at_work: ok | |||
| bacek_at_work | darbelo, TT#504 | 23:19 | |
| Austin, TT#1011 | 23:20 | ||
| darbelo | bacek++ | ||
| chromatic | Ahhh, this one is subtle. | 23:25 | |
| ... and there it is. | 23:26 | ||
| darbelo shudders every time chromatic says 'subtle' | 23:27 | ||
| japhb | "Subtle are the ways of wizards and dragons" ? | ||
| darbelo | japhb: Exactly, up until the moment they strike you down with lightning or eat you. | 23:28 | |
| dalek | rrot: r42429 | NotFound++ | trunk/src/pmc/packfileannotations.pmc: [pmc] METHOD type in packfileannotations |
||
| diakopter | rakudo: tlety | 23:29 | |
| darn | |||
| darbelo: I didn't know dragons could strike you down with lightning | 23:30 | ||
| chromatic | We always allocate at least a pointer's worth of fixed-sized memory for every Context's register set even if the Context needs no registers. | ||
| japhb | darbelo, depends on the type of dragon ... | ||
| chromatic | However, we never free that memory back to a fixed size pool if the Context has no registers. | ||
| japhb | er, that was to diakopter | ||
| darbelo | chromatic: Ugh. That has potential be another *big* wad o' leaked memory. | 23:32 | |
| chromatic | It doesn't anymore. | ||
| darbelo | chromatic++ | 23:33 | |
|
23:33
kid51 joined
|
|||
| dalek | rrot: r42430 | chromatic++ | trunk/src/pmc/callsignaturereturns.pmc: [PMC] Fixed a memory leak in set_integer_native() when switching from a fixed |
23:35 | |
| rrot: r42431 | chromatic++ | trunk/src/call/context.c: [PCC] Fixed a memory leak of register storage for Contexts which need no even if we didn't need it; that allocation always returns at least one pointer's worth of memory. However, Parrot_pcc_free_registers() skips freeing the register storage back to a fixed-size pool if the Context has no registers. Skipping the allocation avoids this problem. This fixes the final part of the leak reported by Lewis Wall in TT #1264. |
|||
| TT #1264 closed by chromatic++: Memory leak on sub call | 23:37 | ||
| kudo: 365404e | moritz++ | src/setting/Any-str.pm: optimize Str.samecase a wee bit |
23:44 | ||
| kudo: f87efac | moritz++ | src/builtins/any-str.pir: fix RT #70415, substr() returned a parrot String, not a Str jnthn++ for suggesting the correct fix. |
|||
| cotto_work | I love it when people close bugs that quickly. | 23:45 | |
| chromatic++ | |||
|
23:46
whoppix joined
|
|||
| plobsing | hi #parrot | 23:48 | |
| darbelo | hi plobsing | ||
| japhb | o/ | 23:49 | |
| plobsing | whats the status on libjit_framebuilder? | 23:50 | |
| darbelo | cotto_work (or was it cotto? I keep confusing them.) had a failing test today. | ||
|
23:51
nopaste joined
|
|||
| plobsing | seen cotto | 23:51 | |
| purl | cotto was last seen on #parrot 21 hours, 40 minutes and 2 seconds ago, saying: night | ||
| plobsing | seen cotto_work | ||
| purl | cotto_work was last seen on #parrot 6 minutes and 36 seconds ago, saying: chromatic++ | ||
| plobsing | cotto_work: you had test failures in libjit_framebuilder? | 23:52 | |
| cotto_work | plobsing, yes | 23:54 | |
| plobsing | what test(s)? | ||
| what platform? | |||
| cotto_work | Ubuntu 9.04 x64 | 23:55 | |
| The nci_ssc test in t/pmc/nci.t | |||
| plobsing | that gem. | ||
| what's the diag? | |||
| purl | well, the diag is quite clear from test onwards | ||
| cotto_work | It works fine without libjit but fails with | ||
| ? | |||
| plobsing | diagnostic message | ||
| purl | i guess diagnostic message is explained as "The lexeer counted more opening curly brackes (braces) than closing ones." | ||
| cotto_work | 65530 | ||
| that one? | |||
| purl | rumour has it that one is fairly new | ||
| cotto_work | purl, go play in traffic | 23:56 | |
| purl wanders off to dent some cars. | |||
| plobsing | yes. thats useful | ||
| though I thought I nopasted a fix for that | |||
| cotto_work | Cool. I thought it was just broken noise | ||
| nopaste | "cotto" at 131.107.0.74 pasted "current diff from libjit branch" (21 lines) at nopaste.snit.ch/18644 | 23:57 | |
| cotto_work | That's what I have applied against that branch. | ||
| plobsing | hmmm... that ought to do it | 23:58 | |
| it worked on my machine before. retesting... | |||
| cotto_work | it failed even after a realclean | 23:59 | |