Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply and context_auto_attrs merges | find out what's up with the slice opcode | Latest modified TT's: icanhaz.com/parrotbugs
Set by moderator on 8 November 2009.
nopaste "NotFound" at 213.96.228.50 pasted "NCI p null" (59 lines) at nopaste.snit.ch/18611 00:07
NotFound plobsing: here is all
plobsing other than having a line that's way too long, looks good 00:09
NotFound++
NotFound I also assumed that a NULL returned is better mapped to a PMCNULL than to an Unmanaged that contains nothing.
plobsing that one is debatable 00:10
but decreasing GC pressure is good
so I'm for it
00:11 mikehh joined
NotFound Note that currently to check if a unmanaged is null you need to create other and compare with it. 00:11
mikehh messages 00:12
plobsing get_bool should return the null status
NotFound I'll try to formatting that lines a little better.
plobsing but it doesn't currently
NotFound plobsing: last time I tried it tell me that doesn't implement that vtable. 00:13
But I think thatchecking for null a thing that the docs of the external lib says that returns NULL is the natural approach.
plobsing NotFound: for completness, we should do the same null check everywhere we put a pointer in a struct pmc 00:16
I'm probably going to try an NCI refactor (see NCITaskList on the wiki). I'll make that mapping then. 00:18
NotFound plobsing: one more reason to have tests of that things. 00:19
00:21 s1n joined
nopaste "plobsing" at 76.67.61.178 pasted "LibJIT i386 'ssc' fix" (181 lines) at nopaste.snit.ch/18612 00:27
plobsing woo. finally traked down the problem!
if someone could apply the patch I just nopasted to the libjit_framebuilder branch, I would very much appreciate it. 00:28
dalek rrot: r42377 | NotFound++ | trunk (3 files):
[nci] fix handling of null in 'p' type parameters and add tests for it
00:36
00:36 xenoterracide joined
mikehh plobsing: I am on Ubuntu 9.10 amd64 at the moment - I can apply the patch, but I don't know if I can test it 00:41
plobsing mikehh: I've tested it in a 32bit virtualbox ubuntu. fulltest passes. 00:42
mikehh: please apply the patch
ttbot Parrot trunk/ r42377 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/136952.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 00:43
japhb Tene: Sorry I missed you ... just got bak. Are your Plumage problems all sorted, or do you still need help? 00:44
dalek rrot: r42378 | mikehh++ | branches/libjit_framebuilder (4 files):
applying patch by plobsing++
00:52
plobsing thanks mikehh, now I just have to find some testers/reviewers 00:56
anyone on i386 willing to install libjit and test libjit_framebuilder?
mikehh I'll reboot and give it a go after some sleep 00:57
dalek rrot: r42379 | NotFound++ | trunk (2 files):
[t] disable the nci_vP test to avoid linkage problems
00:59
plobsing mikehh++
mikehh I can't get virtualbox or kvm to work on my box - they don't like my wireless connection - I can't get to bridge properly :-{
plobsing NotFound: did you not see he__'s nopaste earlier? 01:00
NotFound plobsing: I'm tired of playing ping-pong with the linkage of a test library for a flawed test. 01:01
plobsing ha! I see your point. 01:02
mikehh anyway need some sleep - bbl
NotFound And even more after having discovered that the 'p', that looks far more important for me, was seriously undertested. 01:04
So don't spend time trying to make work silly things. 01:05
plobsing NotFound: P is critical. It is required to implement methods defined in C. 01:06
that said, it is rather trivial and hard to break
NotFound plobsing: is not critical at all for external libraries that does not link with libparrot.
In fact, is not even possible.
01:06 kid51 joined
plobsing yes, but thats not the only place nci is used 01:07
NotFound plobsing: then let's put that test in other place.
plobsing hmmm... I agree
actually, most of these tests bellong elsewhere. I would categorize them as testing the NCI subsystem, not the NCI pmc 01:08
kthakore kid51: hi 01:14
NotFound plobsing: yes, I was also wondering if t/pmc was the rigth place. 01:15
kid51 kthakore hello 01:20
kthakore kid51: whats up 01:21
purl A direction away from the center of gravity of a celestial object. or the y-axis, unless you're using a strange coordinate system.
kid51 just about to go to dinner
kthakore kid51: ah 01:24
kid51: I am getting some late sunday night hacks done
kid51 bbl 01:25
kthakore kid51: kk 01:26
01:39 abqar joined
Tene japhb: there was a little typo in plumage... I haven't committed yet. 02:02
japhb: pushed 02:03
dalek rrot-plumage: 74aa700 | tene++ | :
Minor typo fix to allow plumage to detect when it can install without sudo
02:04
02:05 payload joined
dalek rrot: r42380 | jkeenan++ | trunk/config/init/defaults.pm:
Change one RT # to TT #. Delete reference to RT #41499, as that ticket was
02:25
purl dalek: that doesn't look right
02:35 payload left
japhb Tene: thanks for the fix! 02:38
Whiteknight incoming 02:49
purl duck!
dalek TT #1246 created by jkeenan++: Extra libraries on CC build command 02:50
Whiteknight ...and goodnight 02:51
dalek TT #1247 created by jkeenan++: ar can't read libparrot.a on Mac OS 10.5.2 02:53
plobsing k 02:58
oops
dalek rrot: r42381 | jkeenan++ | trunk/t/pmc/threads.t:
Delete reference to rejected RT ticket.
03:01
TT #1248 created by jkeenan++: t/pmc/threads.t: two test failures 03:17
TT #1249 created by jkeenan++: t/pmc/threads.t: Thread types tests need rework 03:24
rrot: r42382 | jkeenan++ | trunk/t/pmc/threads.t:
Change RT references to TT numbers.
03:25
purl dalek: that doesn't look right
TT #1250 created by jkeenan++: t/pmc/threads.t: Need test for Clone of HLL info 03:31
rrot: r42383 | jkeenan++ | trunk/t/pmc/threads.t:
Replace an RT # with a TT #.
03:48 janus joined 04:14 mikehh joined 04:25 mikehh joined 04:27 kurahaupo joined 04:40 mokurai joined 04:41 brooksbp joined
dukeleto 'ello 05:02
plobsing hi dukeleto!
dukeleto plobsing: how goes it? 05:03
i have been away on a road trip and have not backlogged to see what is up
what is the news?
purl dukeleto: no headlines seen. see www.guardian.co.uk/worldlatest/ for more.
dukeleto gently kicks purl in the face. 05:04
plobsing dukeleto: well, chromatic tested my libjit branch and turned up a weird bug
I spent all weekend tracking it down 05:05
dukeleto plobsing: do you need help testing it?
plobsing do you have an i686?
or compatible 32 bit machine?
the current fix is a workaround for a libjit bug. I'm currently putting together a bug report for the libjit team. 05:07
05:07 Essobi joined
plobsing it only occurs on i386, not x86_64 05:08
dukeleto plobsing: i have access to a few machines 05:13
plobsing: you need an amd64 ?
plobsing not really. My dev machine is 64 bit. And the bug only manifests on 32 bit. 05:14
debugging in virtualbox is painful. perhaps I should set up dual-boot. 05:15
diakopter vmware player is nice... 05:17
plobsing well yes. but its slower than native. and a smaller screen. 05:18
diakopter ('tis full-screen for me...) 05:19
plobsing all virtualization seems to not work for me
maybe I'm technically incompetent
diakopter no, vmware's drivers are tricky on linux/solaris
and macosx. I mean, what? :) 05:21
eternaleye KVM (or KVM-enabled QEMU) with the '-vga std' flag is nice. Full screen and accelerated. And if you turn on the usbtablet mouse mode, it doesn't even need to capture the mouse. 06:00
06:33 particle joined 06:54 uniejo joined 07:03 magnachef joined 07:42 snarkyboojum joined 08:13 mikehh joined 08:14 chromatic joined 08:15 gaz joined 08:18 iblechbot joined 08:20 mikehh joined, snarkyboojum joined 08:27 baest joined 08:41 barney joined
dalek rrot: r42384 | barney++ | trunk/docs/project/release_manager_guide.pod:
Added location of reliable IRC-logs of #parrotsketch.
08:44
08:57 fperrad joined, bacek joined
bacek o hai 09:09
09:23 AndyA joined 09:32 pdcawley__ joined 09:59 davidfetter joined 10:15 snarkyboojum joined 10:17 mokurai left 10:54 payload joined 11:20 pdcawley_ joined 12:16 kid51 joined 12:30 KatrinaTheLamia joined
dalek kudo: 929998c | (Solomon Foster)++ | src/setting/Str.pm:
Remove cautious comment now that #perl6 has confirmed what I did.
12:46
12:50 whiteknight joined
whiteknight good morning #parrot 12:52
plobsing morning whiteknight 12:59
whiteknight hello plobsing, how goes it?
plobsing it goes well. I've isolated the libjit bug chromatic found on i386 to a small test program 13:00
davidfetter !seen ruoso
moritz purl: seen ruoso
purl ruoso was last seen on #dbix-class 10 days, 19 hours, 23 minutes and 19 seconds ago, saying: apparently, not working yet... [Oct 29 17:37:04 2009]
davidfetter seems purl's stats aren't quite the same as dalek's. i wonder which to believe... 13:01
moritz dalek: seen ruoso 13:06
purl ruoso was last seen on #dbix-class 10 days, 19 hours, 28 minutes and 59 seconds ago, saying: apparently, not working yet... [Oct 29 17:37:04 2009]
moritz looks quite similar :-)
whiteknight plobsing: Can I see that small test program? 13:09
nopaste "plobsing" at 76.67.61.178 pasted "LibJIT test prog" (75 lines) at nopaste.snit.ch/18621 13:11
plobsing the program will give different results depending on whether you supply arguments or not 13:12
dalek TT #1251 created by jkeenan++: handle ARM mixed-endian doubles
TT #1252 created by jkeenan++: src/dynpmc/gdbmhash.pmc: Handle case where libgdbm.so cannot be loaded on ... 13:16
rrot: r42385 | jkeenan++ | trunk/src/dynpmc/gdbmhash.pmc:
Change an RT # to a TT #.
purl dalek: that doesn't look right
13:37 payload joined 13:42 payload joined 14:02 pdcawley__ joined
dalek rrot: r42386 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] add stuff for dynops
14:14
14:25 payload joined 14:52 Essobi joined 14:53 Andy joined 14:59 PacoLinux joined 15:13 kthakore joined 15:22 Psyche^ joined 15:49 payload joined 16:10 payload1 joined 16:21 particle1 joined 16:39 hudnix joined 16:44 darbelo joined, pdcawley_ joined 16:51 davidfetter joined 16:56 fperrad_ joined 16:58 theory joined
dalek lscript: 0f4814e | fperrad++ | setup.pir:
add a setup.pir (distutils)
16:59
rrot: r42387 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] add stuff for dynpmc
17:06
lscript: fad8e5c | fperrad++ | setup.pir:
chmod +x
17:11
17:15 kurahaupo joined
dukeleto 'ello 18:02
cotto_work hi 18:03
18:04 payload joined
dalek rrot: r42388 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] add stuff for tge
18:07
18:08 cotto_work left, cotto_work joined
dukeleto cotto_work: hola 18:08
cotto_work wb me! 18:09
darbelo We missed you during those few seconds of dissconnect.
cotto_work It was rough. 18:10
whiteknight we need a welcome back party! 18:12
dukeleto gets some shot glasses 18:13
cotto_work We need a "let cotto_work write and commit code" party.
18:26 payload joined
whiteknight I'd go to that party 18:27
I'm all about writing and committing code
darbelo We could elaborate a complicated plot to get him fired, so he could write and commit code. But I don't think he'd appreciate it. 18:30
cotto_work I can write and commit code just fine as long as it's not from work.
s/I/cotto/ 18:31
;)
darbelo Oh, right. cotto_work pays the food and bills so cotto can hack. 18:32
dalek a: f3baad0 | fperrad++ | setup.pir:
add a setup.pir (distutils)
whiteknight yeah, that cotto_work guy is alright 18:36
dalek rrot: r42389 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] fix dynpmc, pmc2c works only in the current directory
18:37
cotto_work btw, how many here can write/commit from work? 18:40
just ooc
whiteknight I have, I don't think my company has a policy about it 18:41
at least, no policy that I am aware of
obviously I can't spend more then ~30 seconds on it, unless I make up the time 18:42
cotto_work right
whiteknight I run parrot tests and stuff in the background pretty regularly
18:50 iblechbot joined
dalek a: a7f2f15 | fperrad++ | setup.pir:
chmod +x
18:50
19:05 chromatic joined 19:16 AndyA joined
chromatic can write/commit from work. 19:31
cotto_work (working from home)++ 19:35
whiteknight that's because chromatic has one of those wonderful dream jobs 19:36
chromatic No boss, no HR, no one to handle paperwork besides my own self? 19:37
whiteknight like a dream within a dream 19:38
darbelo dreams that he dreams that he dreams that he dreams ... 19:39
Tene I can write and commit from work. 19:44
I've done it many times. 19:45
19:45 bacek joined
Tene Part of my employment contract includes an obligation to contribute to the open source community. 19:45
cotto_work WANT 19:46
whiteknight holy crap. Tene: where do you work? 19:47
Tene gurulabs.com/ 19:48
chromatic Mine too.
purl Mine too. are you approaching 1800 now?
19:48 joeri joined
whiteknight wow, that's hot 19:48
chromatic: aren't you self-employed?
chromatic I co-own an S Corp, so ... sort of. 19:49
whiteknight ah, okay
all I knew for certain was that you left O'Reilly
because that's all you blogged about
that, and I was able to pick out some interesting documents from your garbage 19:50
:)
chromatic Then you know I have two indoor cats!
cotto_work I guess you can expect that sort of thing from our resident GC hacker. 19:51
whiteknight I've spent more time in trash cans of various sizes then I care to admin
admit*
diakopter (or admin) 19:52
whiteknight I've ridden on the back of garbage trucks, sorted trash and recyclables, cleaned dumpsters, compactors and garbage trucks, etc 19:54
diakopter dumpster dove a few times
darbelo whiteknight: You are, in essence, a garbage collector :)
19:55 payload joined
whiteknight in essence, yes 19:55
:)
I wasn't allowed to write or commit code from any of those jobs either 19:56
19:57 hercynium joined
particle is that why your code stinks? 19:59
20:00 Austin_away joined
chromatic Because it's full of garbage particles? 20:01
Tene I never went through particle's trash when I was in seattle. Who said I had? 20:03
darbelo wonders if there are garbage particles in particle's garbage.
particle there's not much in my garbage now, i'm on a clear liquid diet 20:04
Austin Personal foul! Horrifying mental image. 15 yards. 20:05
Open question: compiled pir (or anything else) goes into a .pbc file. Parrot does a pretty bad job of accepting pbc files, since it explicitly checks for a file extension, etc. So what's the right model for post-processed .pbc's? That is, if .pbc is the same as .o or .class, what's the analog for .exe or .out or .jar? 20:07
darbelo Austin: We don't have one? 20:08
Austin I had noticed that, darbelo, but I was kind of hoping that maybe there was one that nobody had told me about... 20:09
NotFound Austin: a .pbc is an o and an exe at the same time.
Tene alternately, parrot doesn't distinguish between .o and .exe 20:10
NotFound And, what is the bad job you are talking?
Austin NotFound: And it does both jobs equally well, I'm sure. :$
NotFound Same as the ELF format
Austin The bad job is that the only way to run bytecode is to have a physical file called whatever.pbc. 20:11
You can't say "--this-is-a-pbc-file-trust-me" on the command line, and you can't use stdin.
NotFound Austin: I can the current logic is: if extension is not pbc, pir or pasm, try it as pir or pasm source. 20:12
I think
Austin Something like that. There are many chances to compile pasm/pir, but only one route to using pre-compiled code. 20:13
Considering the big-O of imcc, that's a weird bias.
NotFound Not just a problem of imcc, load_bytecode uses the same logic. 20:14
Austin I was assuming that load_bytecode called imcc.
chromatic Perhaps we should separate loading from compilation and move some of these responsibilities out of IMCC. 20:15
Austin Anyway, my point is that the present model seems to be "build a .pir file with a lot of .include directives" to get something like an executable.
NotFound Austin: I don't care the implementation, it can be changed. The problem is that is supposed to work that way.
Austin NotFound: huh? 20:16
NotFound Austin: if load_bytecode let imcc decide the file type or does itself.
Austin Oh, okay. sure.
whiteknight chromatic: I strongly agree. I think we need to move a lot of stuff out of IMCC
20:17 redbrain joined
NotFound I agree that abusing .include sucks. 20:17
whiteknight commandline argument processing for one, .pbc loading for another 20:18
redbrain not sure if your interested but i finally got around to setting up a buildbot for us i meant to have it done some time ago but got it nearly working on my webserver as a test then i will extend to work on some sparc and mips for us :)
whiteknight redbrain: awesome. Which platform?
(nevermind, sparc and mips)
redbrain so far just my x86 server
whiteknight that's great
redbrain but i will extend to anything really i have access to most things
it will just take a while untill its setup fully across them all 20:19
i'll send a mail around when i get more setup :)
NotFound whiteknight: BTW you fixed your blog post amazingly fast.
whiteknight NotFound: not nearly as fast as you found the error! 20:20
I'm sorry for misspelling it, I should have been more careful
NotFound I can lost a lot of fans if you mispell ;)
dukeleto warnings.t is still failing on trunk: smolder.plusthree.com/app/public_pr...ails/29760 20:22
chromatic Yeah, in theory bacek is looking at that.
dukeleto bacek++ 20:23
theory Kind of dark in there for bacek, no?
bacek good morning. Who woke me up?
Tene Me!
dukeleto pours bacek++ a shot of scotch
bacek dukeleto, it's too early for scotch... 20:24
Austin bacek: The sun's over the yardarm someplace.
bacek chromatic, warnings.t is about Context inlining? Than it addressed in pmc_headers_move branch. 20:25
chromatic Does it pass there?
The problem I saw was with the optimized build.
bacek chromatic, let me recheck it 20:26
chromatic, btw, I totally stuck with Context CallSignature merging... I just can't grok logic who and when should create it and push it... 20:27
chromatic Let's put a page on the wiki to work it out then.
bacek warnings.t passed on my box, in branch, on --optimized build 20:30
chromatic Does your libparrot.so export Parrot_pcc_warnings_on() et al?
bacek chromatic, nope. 20:33
chromatic Then I'm not sure why the test is passing.
Unless you changed the optimized build to export those functions again.
bacek chromatic, I didn't. But I can take a look how to export them regardless of build. 20:34
chromatic I think that's what we need. I'll try the branch though.
bacek In branch I uncoditionally include "pmc_context.h". So Parrot_Context_attributes are always declared. 20:35
chromatic That wasn't the problem I saw.
bacek chromatic, it was actually. 20:36
but try branch anyway.
dalek rrot: r42390 | barney++ | trunk/NEWS:
Added very first draft for 'New in 1.8.0'.
20:39 ash_ joined, mokurai joined
dalek rrot: r42391 | barney++ | trunk/NEWS:
Fixed indention of the '+' lines.
20:40
NotFound What do you think about this? Add to the ExceptionHandler PMC the capability to set a function to be called from can_handle, avoiding the need to subclass it in lot of cases. 20:41
whiteknight NotFound: seems reasonable 20:42
NotFound It just needs to add a PMC atribute.
To the size of the PMC, I mean.
whiteknight mention it at #ps tomorrow
chromatic bacek, the test passes for me on your branch. 20:43
bacek chromatic, of course :) 20:44
chromatic What's holding up the merge? 20:45
whiteknight which branch?
chromatic pmc_headers_move 20:46
whiteknight oh, what's the purpose of that one?
chromatic Getting generated PMC headers out of src/pmc and putting them in include/parrot/
dalek rrot-plumage: 339f19f | japhb++ | :
[PROBES] for %h.kv -> $k, $v {...} works!
20:47
bacek chromatic, almost nothing. I'm holding it for couple more days for testing. Probably will merge tomorrow 20:48
chromatic, actually "include/pmc" to be consistent with installed parrot
anyway, $dayjob time 20:49
see you
whiteknight that sounds to me like it would buck up against the deprecation policy 20:50
any extensions that rely on those headers in their current location will break
chromatic How would an extension refer to those headers? 20:51
darbelo *Why* would an extension refer to those headers?
whiteknight I don't know. I seem to think it would be possible 20:52
if they were subclassing a built-in type from C, for instance
dalek rrot-plumage: 1a70eb0 | japhb++ | :
[META] Completed TODOs
darbelo whiteknight: pmc2c handles that for them.
.pmc shouldn't #include other pmcs headers. 20:53
20:54 buildbot-redbrain joined
darbelo redbrain++ 20:54
redbrain :) woohoo that works now hehe
20:54 szabgab joined
darbelo redbrain: Do you want me to break the build so we can test the bot? 20:55
;)
redbrain haha not yet its not quite finished yet :P 20:56
working with some of the guys on fnet to help me now its a little fiddly
crules.org:8010/ 21:08
thats the web interface so far
japhb (#git)++ # And now I understand another piece of the puzzle 21:13
21:14 bbredbrain joined
redbrain bbredbrain: help 21:14
bbredbrain Get help on what? (try 'help <foo>', or 'commands' for a command list)
darbelo bbredbrain: help me 21:15
bbredbrain no such command 'me'
darbelo :)
redbrain bbredbrain: notify start
bbredbrain try 'notify on|off <EVENT>'
redbrain bbredbrain: notify on build
bbredbrain try 'notify on|off <EVENT>'
NotFound bbredbrain: help <foo>
bbredbrain no such command '<foo>'
NotFound You liar
Austin bbredbrain: help notify
bbredbrain Usage: notify on|off|list [<EVENT>] ... - Notify me about build events. event should be one or more of: 'started', 'finished', 'failed', 'success', 'exception', 'successToFailed', 'failedToSuccess'
japhb bbredbrain, help reconcile quantum entanglement and special relativity
bbredbrain no such command 'reconcile'
redbrain hahah 21:16
japhb SCNR
21:18 hudnix joined
dalek TT #1253 created by pmichaud++: [BUG] values returned from iterating a hash are no longer strings ... 21:24
pmichaud I should note that TT #1253 is a breakage in the deprecation policy also. 21:25
21:26 estrabd joined 21:36 desertm4x joined 21:48 nbrown_ joined 22:01 bbredbrain joined 22:05 joeri joined
redbrain whoohoo is going its first build now :) 22:06
22:07 jsut_ joined
bacek_at_work pmichaud, why HashIteratorKey is problem? 22:08
japhb bacek_at_work, because it doesn't act sufficiently like a String (or rather, the actual type of the key) 22:09
bacek_at_work japhb, why Hash key should be a String?
japhb So concat with a HashIteratorKey fails.
bacek_at_work, whatever you get out of a Hash should have the same type you put into it. 22:10
chromatic Getting an HIK out of a Hash is a problem if you didn't put a HIK in the Hash.
bacek_at_work nope.
japhb So if you indexed the Hash with String PMCs, you should get String PMCs out when you iterate.
bacek_at_work You get it from iterator
not Hash
japhb bacek_at_work, an iterator is just a way of looking at a container. It should not alter types en passant./ 22:11
chromatic When I'm iterating a Hash, I don't care about the iterator. I care about what's in the Hash.
bacek_at_work HIK.key() returns original key
japhb bacek_at_work, why have the additional layer?
Why shouldn't '$P0 = shift iterator' give me back exactly the keys I put into the hash? 22:12
bacek_at_work japhb, for performance reason. You can avoid second symbolic lookup during iteration
22:12 kiwichris joined
japhb But if you have to do a deref in PIR, how are you gaining anything? 22:12
(in order to actually *use* the key, I mean)
bacek_at_work chromatic, you get iterator key. Which is pair(key, value)
japhb bacek_at_work, Oh, I see, you're actually iterating the pairs, not the keys 22:13
but when you stringify the pair, you get the key?
NotFound japhb: a dereference is less costly than a lookup in the hash
chromatic That's a PIR behavior change though.
japhb odd ...
bacek_at_work japhb, $S0 = shift it; $P1 = hash[$S0]. This is slow.
chromatic, nope. hash[key] still returns value. 22:14
redbrain bbredbrain: help
bbredbrain Get help on what? (try 'help <foo>', or 'commands' for a command list)
japhb I think I'm seeing the reason, it's just not self-evident what's going on.
redbrain bbredbrain: commands
bbredbrain buildbot commands: commands, dance, destroy, excited, force, hello, help, join, last, leave, list, notify, source, status, stop, version, watch
purl doesn't take orders.
redbrain bbredbrain: status
bbredbrain Debian-x86-test: idle, last build 4m43s ago: build successful
purl Since Wed Oct 28 01:13:35 2009, there have been 2415 modifications and 1199 questions. I have been awake for 12 days, 21 hours, 38 seconds this session, and currently reference 809194 factoids. Addressing is in optional mode.
bacek_at_work japhb, it's documented in hashiterator.pmc
japhb If you hadn't told me that I'm really getting pairs that sometimes pretend to be the actual keys, I wouldn't have ever just guessed that.
NotFound purl: sudo make me a sandwich
purl NotFound: sorry...
chromatic If you change what iteration returns, you've changed what iteration returns. How is that anything other than a change? 22:15
bacek_at_work chromatic, it was loong time ago. In Keys refactor.
Austin NotFound: How many remaining siblings do you have?
japhb pmichaud, feel highlighted. This discussion is up your alley. 22:16
NotFound Austin: About what?
Austin Today's xkcd
purl Today's xkcd is awesome
chromatic The point of the change is irrelevant, if we need to follow our deprecation policy.
bacek_at_work chromatic, and I didn't see any problems with approach to use aggregate specific iterators.
NotFound Austin: ah, don't caught it :D 22:17
bacek_at_work chromatic, it was before stable release. Now we can revert hash iterator to 1.0 behavior. Or stuck with 1.6 behavior.
chromatic Did this happen before 1.4? 22:18
NEWS says "Key and Iterator refactor" in 1.4. 22:19
bacek_at_work Date: Wed Aug 5 11:29:16 2009 +0000
it's "Merge branch keys_cleanup into trunk."
chromatic TT #1253 says pmichaud used the old way in 1.3.
Okay, that's post 1.4. 22:20
We need to revert that behavior change then.
bacek_at_work ah. Nope 22:21
Merge branch tt761_keys_revamp into trunk.
Date: Wed Jul 15 13:15:25 2009 +0000
chromatic This behavior change went into 1.4 silently then? 22:24
bacek_at_work chromatic, then yes. 22:26
pmichaud the change went silently into 1.4, yes 22:27
kiwichris I have found the PDD "Embedded and Extending Parrot. Nice. Is there more I may have missed ?
pmichaud along with the other pieces of the hash iterator that broke rakudo at the time. :)
if the hash iterator is now returning something like pairs, I might be able to convince myself I like that better. 22:28
bacek_at_work HIK is (key, value) pair
pmichaud not sure yet. I just know it represented a change that is causing some NQP code to break, in both old and new nqp 22:29
bacek_at_work pmichaud, even documented in top of hashiterator.pmc :)
pmichaud, hmm. If I have small test for it I can fix it.
chromatic Yes, but no one reads HashIterator's documentation for this. 22:30
bacek_at_work chromatic, we don't have PDD for our PMCs.
afaik
chromatic There's not much we can do besides try to make the current behavior work now, I suppose. 22:31
pmichaud the question to be answered is whether iterating a hash returns keys or pairs
the old behavior returned keys
chromatic Pairs seems better.
pmichaud changing that seems.... problematic
bacek_at_work like current behavior more.
pmichaud pairs seems better, yes, but there's a ton of code that depends on it coming back with keys 22:32
I mean a *ton*
Tene ~/
pmichaud so if we have it return pairs, then those pairs have to act like keys in certain contexts, and like pairs in others
and I'm not sure how to tell the difference, or if there's even a clean break (as my example code in the TT shows)
chromatic I agree, but we're talking about four months of tons of code from 1.0 through 1.3 and four months of tons of code from 1.4 through 1.7. 22:33
pmichaud not really
22:33 mikehh joined
pmichaud we're talking about parrot 0.4 to 1.3 22:33
chromatic There were no deprecation promises until 1.0.
pmichaud no, but we'd still have to fix the code 22:34
(more)
bacek_at_work pmichaud, most of this code use "$S0 = shift it". Which works with new iterators
pmichaud bacek_at_work: that's because it assumes that HIK stringifies to its key
I'm not sure that's the semantics we really want
assuming that HIK is really some sort of pair
in some sense it should stringify to its value
and numify to its value
and ...
bacek_at_work why stringify to value? 22:35
pmichaud it's a question of whether one considers to be a value with a key attached or a key with a value attached
chromatic I don't think we can decide that in the general case.
pmichaud *considers a pair
I might feel comfortable if HIK subclassed String 22:36
bacek_at_work it is pair. "Single (key,value) pair."
it has "get_string" to stringify to key.
pmichaud bacek_at_work: yes, but it doesn't have "concatenate" or "add" or any of the other operations that can be done on String
redbrain bbredbrain: status 22:37
bbredbrain Debian-PPC-G5-test: idle
Debian-x86-test: idle, last build 27m05s ago: build successful
purl Since Wed Oct 28 01:13:35 2009, there have been 2420 modifications and 1202 questions. I have been awake for 12 days, 21 hours, 22 minutes, 59 seconds this session, and currently reference 809199 factoids. Addressing is in optional mode.
pmichaud and it's wrong for iterators in general to always use $S0 = iter hash --- what if the hash is keyed on things other than strings, as it will be someday?
bacek_at_work pmichaud, you can use non-string keys right now.
pmichaud bacek_at_work: then you've proven my point that $S0 = iter hash is not the correct interface :)
bacek_at_work pmichaud, and concatenating HIK keys is... weird.
NotFound I suppose that no one wants to add a third type os hash iterator. 22:38
pmichaud bacek_at_work: what's wrong with concatenating a string key with another key?
that's not weird at all
bacek_at_work sorry, have to return to $dayjob, Visio and other duties.
pmichaud that's like saying "adding integer indexes is weird"
bacek_at_work pmichaud, iterating over hashes return (key,value). Concatenating them is weird. 22:39
pmichaud bacek_at_work: except that the hash iterator interface was once that it returned keys, not pairs
changing it to pairs is a very substantial semantic change
and having $S0 = shift iter and $P0 = shift iter do very different things seems.... dangerous 22:40
(where the first returns a key, but the second returns a pair)
bacek_at_work pmichaud, I agree about semantic change. But having old overcomplicated Keys all over code was worth.
"$S0 = shift iter" get HIK, than strinfigy it. 22:41
pmichaud what does $I0 = shift iter do then?
that used to work also. :-)
bacek_at_work I think it eats kittens if there is no test for other behavior 22:42
pmichaud very well. This conversation has now exceeded my "avoid contentious issues" threshhold so I'm abstaining now. :)
redbrain bbredbrain: status 22:43
bbredbrain Debian-PPC-G5-test: idle
Debian-UltraSparcII: idle
Debian-x86-test: idle, last build 34m02s ago: build successful
purl Since Wed Oct 28 01:13:35 2009, there have been 2423 modifications and 1202 questions. I have been awake for 12 days, 21 hours, 29 minutes, 56 seconds this session, and currently reference 809202 factoids. Addressing is in optional mode.
NotFound Why on hell HashIterator.shift_string does temporary_pmc_free? =:o) 22:45
bacek_at_work NotFound, some optimisation by chromatic 22:46
22:46 theory joined
NotFound "Frees a new temporary PMC created by C<temporary_pmc_new()>" 22:46
22:46 kj joined
NotFound I don't see the corresponding temporary_pmc_free. 22:47
s/free/new
bacek_at_work NotFound, temporary_pmc_new == pmc_new.
redbrain bbredbrain: status 22:48
bbredbrain Debian-PPC-G5-test: building(updating)
Debian-UltraSparcII: building(updating)
Debian-x86-test: idle, last build 38m08s ago: build successful
purl Since Wed Oct 28 01:13:35 2009, there have been 2423 modifications and 1202 questions. I have been awake for 12 days, 21 hours, 34 minutes, 2 seconds this session, and currently reference 809202 factoids. Addressing is in optional mode.
bacek_at_work pmichaud, I can change HashIterator to return just strings. But it's less sane than (key,values)...
pmichaud summarizes bacek's final statement as "we're allowed to change behavior if there's no test for something"
NotFound bacek_at_work: shit
japhb redbrain, can you make those /msg's unless there's something interesting to report?
bacek_at_work pmichaud, it is not my summary... :-/ 22:49
redbrain japhb: sorry i am just playing around i'll move it to another chanel
NotFound That usage is a time bomb waiting to explode when someone wants to reimplement that temporary thing to speed it.
japhb redbrain, no biggie. I don't know how your IM client does it, but on mine it's trivial to keep a private session open with a bot, so that's usually how I do it unless I need the other people in the channel to see the interaction. 22:50
chromatic NotFound, if shift_string didn't create the temporary HIK, it wouldn't have to free it. 23:00
jonathan ffs. Please, folks, be careful to init PMC pointers with PMCNULL or make sure things that are meant to return PMCs return PMCNULL rather than NULL. 23:01
23:01 fperrad_ joined
jonathan I'm fixing now another thing that woulda been a NPMCA rather than a segv in the space of a day. 23:01
This time it's Parrot_find_global_n that gave me back NULL. 23:02
kplzthnxbai
chromatic pmichaud, what kind of PIR would you like to see if Hash iterators returned pairs?
NotFound jonathan: That function isn't in the extern interface?
jonathan Dunno. It's exported... 23:03
Not sure that's really for it to hand back NULL though.
It's not like PMCNULL is expensive (or it shouldn't be...) 23:04
chromatic Yeah, that's a bad interface design to return NULL.
NotFound jonathan: there are cases when there must be a distinction into not found and found something with a PMCNULL value.
dalek rrot-plumage: 0cebb38 | japhb++ | :
[CORE] Util.nqp: Add grep(); remove old NQP workarounds
23:05
pmichaud chromatic: I'm not sure what PIR I'd like to see at the moment 23:06
chromatic: it has the potential to significantly change nearly all of the code I have that does hash iteration
so I have to think a bit about what the impact might be
jonathan NotFound: If an existence check is what is wanted, there's exists keyed vtable methods. 23:07
NotFound jonathan: check and then get is inefficient and prone to race conditions.
pmichaud non-existent entry should return PMCNULL to PIR 23:08
jonathan pmichaud: I was calling from C, not PIR. 23:09
NotFound pmichaud: what a C function returns is a different point of what can be stored in a PMC register.
jonathan pmichaud: I'm just bothered by a recent upwards trend I've seen in discovering issues like this.
NotFound The problem is doing unchecked calls and returns from opcodes to functios without the appropiate decorators and semantics.
Unfortunately, the compilers doesn't help catch that. 23:10
And not only for PMC, also for STRING 23:11
chromatic I can't think of a case where someone would store PMCNULL in a namespace by accident. 23:12
jonathan Well, changed the use of Parrot_find_global_n to VTABLE_get_pmc_keyed_str now 23:13
NotFound chromatic: we have already catched and fixed a lot of cases when they were stored in registers,
Don't know if in some of this cases they reached a namespace entry.
jonathan But I was more pointing out the anti-pattern than this specific case.
chromatic I think we should fix this specific case: don't return NULL here. 23:14
If we have bugs where we store PMCNULL in namespaces incorrectly, let's fix those rather than propagating that mistake through the rest of the system. 23:15
pmichaud in general Parrot's model seems to be that PMCNULL == non existent element
at least that's the model I've worked from. If I need to store an explicit "there's an element here but it's empty", that should be a value other than PMCNULL, IMO 23:16
dalek rrot-plumage: c980976 | japhb++ | :
[CORE] Util.nqp: remove straggling old-NQP-ism
chromatic Yeah, that makes the most sense to me.
NotFound The function is explicitly documented as returning NULL, and the code checks explicitly for PMCNULL. 23:17
Doesn't look like an accident. 23:18
chromatic Poor code written deliberately is still poor code. 23:19
NotFound chromatic: yes, but changing the design, even if poor, needs a deprecation notice.
chromatic I agree. 23:20
In general.
purl In general, you do not want to disturb The General.
NotFound BTW Parrot_set_global sucks.
It has NULLOK parameters, and uses then unchecked.
chromatic This file is pretty bad, safety-wise.
I'm sure we could fix the interfaces to work as people expect without harming any existing code. 23:21
We might even be able to make extant code safer.
NotFound Looks like the problem is that it contains a mix of functions for internal usage and for extend/embed
chromatic We should review the design and organization. 23:22
pmichaud chromatic/bacek: after thinking about it a bit, I think I'm fine with keeping the current HashIteratorKey semantic for now. It's just a bit of a surprise, and I fear goes against whatever may be written in the PIR books. 23:25
23:25 kesselhaus joined
pmichaud (to the extent that anything may be written about iterating hashes in the books) 23:25
chromatic We can edit the book; that's not onerous. 23:26
I want to make sure that iteration is appropriately general but the intent of the PIR code is sufficiently explicit.
pmichaud yes.
fwiw, the book explicitly says (page 36) "When iterating over associative arrays, the shift opcode extracts keys instead of values." We'll need to change that. 23:27
japhb: this means that your code would need to read for %hash { say($_.key ~ " => " ~ $_.value); } 23:29
instead of
purl i think instead of is easy.
pmichaud for %hash { say( $_ ~ " => " ~ %hash{$_} ); } 23:30
japhb pmichaud, way ahead of you. ;-)
(dalek just hasn't noticed yet. ;-)
pmichaud that's closer to the Perl 6 semantic anyway, so it's a net plus for us.
japhb nodnod 23:31
pmichaud hopefully the PCCMETHODS for .key/.value won't always be expensive :)
dalek tracwiki: v2 | chromatic++ | NamespaceTasklist 23:32
tracwiki: Edited page; added src/global.c tasks
tracwiki: trac.parrot.org/parrot/wiki/Namesp...ction=diff
tracwiki: v3 | chromatic++ | NamespaceTasklist
tracwiki: trac.parrot.org/parrot/wiki/Namesp...ction=diff
chromatic We could add get_foo_keyed_int() to HIK to get the pair elements more cheaply.
dalek rrot-plumage: abc6bc0 | japhb++ | :
[PROBES] Use modern hash iteration semantics properly in %hash.kv
TT #1254 created by chromatic++: Update PIR Book with new (post 1.4.0) HashIteratorKey Syntax and Semantics 23:33
pmichaud I'd probably prefer not to do the keyed_int part. 23:34
let's see how the present code works out, we can optimize if it's an issue
chromatic Okay.
pmichaud I'll update my ticket with the resolution of the issue. 23:38
dalek rrot-plumage: ae8089e | japhb++ | :
[CORE] Util.nqp: Add %hash.kv
pmichaud which is basically, "we go with the new behavior"
I'll leave it to others to decide if/how/where we need to issue notices that the behavior changed
chromatic I think that's the best option at this point. Reverting is also problematic.
japhb pmichaud, with the NQP pir:: syntax, is there a way to specify keying operations? For example, can I express '$I0 = exists hash[key]; %r = box $I0' using pir:: syntax? 23:49
23:54 Whiteknight joined