Parrot 1.2.0 released | parrot.org/ | Weekly Priority: Profiling | Parrot VM Workshop, Pittsburgh, June 20-21
Set by moderator on 7 June 2009.
dalek rrot: r39541 | Util++ | trunk/src/string:
[codingstd] Ignore *.str in src/string
00:11
00:13 amuck joined 00:18 mikehh joined
dalek tracwiki: v19 | coke++ | BranchDescriptions 00:20
tracwiki: trac.parrot.org/parrot/wiki/Branch...ction=diff
00:32 bacek joined 00:45 Whiteknight joined
dalek TT #762 created by ingmar++: parrot_config --dump: libparrot_linkflags, rpath_blib contain references ... 00:51
Coke wonders how tcl is parsing [expr {{-0x1234}}] 01:07
that would be a helpful thing if someone is bored. =-)
dalek rtcl: r485 | coke++ | trunk/runtime/builtin/ (2 files):
These functions should return a copy of the value, not the PMC itself.
01:10
01:28 f0rk joined 01:57 Theory joined
amuck I'm trying to install the svn version of parrot but I keep getting permission denied errors due to the lib/parrot directory being created with 000 permissions 02:35
I also get warnings about Argument "/opt/local/lib/parrot/1.2.0-devel/languages/pge" isn't numeric in mkdir at /Library/Perl/Updates/5.8.8/File/Path.pm line 165. 02:36
Is this an issue with a known fix?
Infinoid How exactly are you configuring and building parrot? 02:44
amuck perl Configure.pl --prefix=/opt/local 02:45
make
make install
03:20 donaldh joined 03:46 davidfetter joined 04:01 bacek_ joined 04:34 Zak joined 04:50 Andy joined 04:55 Zak joined 05:44 viklund_ joined
cotto bacek++ for working to make Keys sane. 06:16
Parrot needs more sanity.
06:24 cognominal joined 06:37 viklund_ joined 07:03 Hunger joined
dalek rrot: r39542 | bacek++ | branches/pmc_pct/compilers/pmcc/src/parser/actions.pm:
[pmcc] Build short signature for MULTI. Override virtual param type with PMC* when needed.
07:04
rrot: r39543 | bacek++ | branches/pmc_pct/compilers/pmcc/src/builtins.pir:
[pmcc] Add Hash.keys into builtins
rrot: r39544 | bacek++ | branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm:
[pmcc] Preliminary stub for MULTIs handling.
bacek cotto: It almost works 07:05
07:09 viklund_ joined
cotto pmc_pct? That's awesome! 07:16
(for a second I thought you were referring to the Key refactor, which would have made my head asplode)
I know that in pmc2c the RO variant VTABLEs require some state from parent PMCs. Did you find a way around that? 07:18
nm. you're just referring to MULTIs
07:20 donaldh joined
cotto bacek, why not add a C-level 'keys' method to Hash? 07:20
(other than ease of implementation, which is compelling enough) 07:21
bacek I'm not very keen to change PMCs in pmc_pct branch. 07:22
Just to reduce hassle on merge
cotto perfectly reasonable 07:23
bacek (And I'm going to rewrite all Keys/Iterators anyway :)
cotto for which your name will be called great 07:24
That code needs some tough love. 07:25
bacek indeed...
purl indubitably
cotto What motivated you to take on that particular ball of cruft? 07:26
bacek My sense of beauty. 07:28
And totally unsatisfied sense of perfection.
dalek rrot: r39545 | bacek++ | branches/pmc_pct/compilers/pmcc/src/parser/actions.pm:
[pmcc] Build long signature for MULTIs.
07:30
cotto so you generally avoid imcc then ;) 07:31
bacek yes :) 07:32
I've got my prototype for emitting PBC from PIR :)
cotto That explains that. 07:33
07:34 patspam joined
cotto Sometimes I wish I could look into the future to see what Parrot 3.5 will look like, to see if all the crazy stuff that's being discussed now will come to pass. 07:34
but if I could actually look into the future, I'd probably be able to find something more profitable to look at.
bacek :) 07:39
cotto on that note, paulgraham.com/hundred.html is an interesting article about what programming lanuages will look like in 100 years. 07:41
bacek I can predict what on this page. Everything will be DSL on top of Lisp? :) 07:43
08:08 bacek_ joined 08:29 barney joined 08:31 mikehh joined
dalek rrot: r39546 | bacek++ | branches/pmc_pct/compilers/pmcc/src/parser/actions.pm:
Remove debug "say"
09:10
rrot: r39547 | bacek++ | branches/pmc_pct/compilers/pmcc/src/builtins.pir:
Remove debug "say"
rrot: r39548 | bacek++ | branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm:
[pmcc] Generate full set of required constants.
rrot: r39549 | bacek++ | branches/pmc_pct/compilers/pmcc/src/parser/actions.pm:
Store almost full MULTI name in PAST.
rrot: r39550 | bacek++ | branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm:
Change generate_signature method to accept desired name. Implement emitting multis.
purl dalek: that doesn't look right
rrot: r39551 | bacek++ | branches/pmc_pct/compilers/pmcc/t/08-multi.t:
[t] Add tests for emitting MULTIs bodies.
bacek msg cotto It's your turn now :) I've finished MULTIs handling (fsvo "finished" and "handling") 09:13
purl Message for cotto stored.
dalek rrot: r39552 | bacek++ | branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm:
[pmcc] Generate _temp_multi_func_list almost the same as pmc2c.
09:14
rrot: r39553 | bacek++ | branches/pmc_pct/compilers/pmcc/t/08-multi.t:
[t] Add more tests for MULTIs
rrot: r39554 | bacek++ | branches/pmc_pct/compilers/pmcc/src/emitter/pmc.pm:
[pmcc] Swap generate_multis and generate_passes. Add TODO comment for cotto++
bacek karma bacek 09:20
purl bacek has karma of 609
bacek erm... 09:21
clock? 09:23
purl bacek: LAX: Sun 2:23am PDT / CHI: Sun 4:23am CDT / NYC: Sun 5:23am EDT / LON: Sun 10:23am BST / BER: Sun 11:23am CEST / IND: Sun 2:53pm IST / TOK: Sun 6:23pm JST / SYD: Sun 7:23pm EST /
dalek rrot: r39555 | bacek++ | branches/tt761_keys_revamp:
Branch for cleanup Keys/Iterators implementation as described in TT#761
09:31
bacek Anyone here? 09:57
purl look around and see, you dolt
bacek stupid girl...
dalek rrot: r39556 | bacek++ | branches/tt761_keys_revamp/src/pmc/arrayiterator.pmc:
[pmc] Add stripped version of Iterator as ArrayIterator.
10:14
rrot: r39557 | bacek++ | branches/tt761_keys_revamp/t/native_pbc (4 files):
Regenerate native PBCs
10:18
rrot: r39558 | bacek++ | branches/tt761_keys_revamp/t/pmc/pmc.t:
[t] Add ArrayIterator to untestable without initialisation.
rrot: r39559 | bacek++ | branches/tt761_keys_revamp/t/pmc/iterator.t:
[t] Use pop instead of shift for reverse iterator.
rrot: r39560 | bacek++ | branches/tt761_keys_revamp/src/pmc (6 files):
[pmc] Migrate all *Array*.get_iter to ArrayIterator
rrot: r39561 | bacek++ | branches/tt761_keys_revamp (2 files):
[core] Add pmc_reuse_init similar to pmc_reuse but with initing reused pmc.
rrot: r39562 | bacek++ | branches/tt761_keys_revamp/src/pmc/iterator.pmc:
[pmc] When we try to instanciate Iterator for Array fall to ArrayIterator.
10:27 flexibeast joined 11:20 donaldh joined 11:29 Whiteknight joined
moderator Topic for #parrot is: Parrot 1.2.0 released | parrot.org/ | Weekly Priority: Testing for 1.3.0! | Parrot VM Workshop, Pittsburgh, June 20-21 11:32
Whiteknight I'm seeing a new failure this morning on t/manifest/03-regenerate_skip.t 12:39
Failed test 'No need to regenerate MANIFEST.skip' 12:40
dalek rrot: r39563 | Infinoid++ | trunk/MANIFEST.SKIP:
[cage] regenerate MANIFEST.SKIP.
12:50
Infinoid Whiteknight: That should fix it 12:52
Whiteknight awesome, Infinoid++ 12:53
12:54 DanielC joined
Whiteknight yes, appears fixed. Awesome! 12:54
DanielC I think there is a weird bug in the JSON library. Easiest way to explain is to try running this test: pastebin.com/m428594f4 12:55
Infinoid is doing fulltest in x86-32
DanielC The test fails if you assign Hash keys in a non-alphabetical order. 12:56
Whiteknight wow, that is a weird error
are we sure the test is testing the right things?
Infinoid does json really guarantee hash insertion order? (I don't think Hash does) 12:57
DanielC Infinoid: I am sure it doesn't. The order should not matter.
Infinoid oh, I see, the values are switched? 12:59
DanielC It doesn't matter. What matters is that the keys are assigned in a different order. 13:00
If you set $P0["b"] = 1 and $P0["a"] = 2 after, the error remains.
Infinoid From the error message "# Mismatch at [a]: expected 1, received 2" I would have assumed it was comparing $P0["a"] with $P1["a"] 13:01
DanielC yeah 13:02
It should compare $P1["a"] to $P0["a"] but it doesn't seem to.
Infinoid and if I print $P0["a"] and $P1["a"], I get 1 and 1
DanielC wtf? 13:03
Infinoid I'm suspecting an issue with is_deeply
DanielC oh, sorry
DanielC mis-read something :)
yeah, the issue might be in is_deeply
Infinoid "This only handles comparisons of array-like structures. It shouldn't be too hard to extend it for hash-like structures, too." -- the is_deeply pod 13:05
DanielC Yeah, when I print all the values of $P0 and $P1 the numbers look right.
ah!!!! 13:06
Infinoid Guess we should open a ticket for that :)
DanielC So is_deeply doesn't work for hashes.
Thank you very much.
Infinoid (I don't really want to break Test::More before tuesday's release)
is_deeply doesn't work for hashes, yet. But it really *should*, hopefully we can fix that soon 13:07
DanielC Hopefully.
13:10 kid51 joined
Whiteknight Infinoid: can you check t/examples/pod.t? 13:11
I
I'm getting a few failures there now that were probably hidden by the MANIFEST.SKIP test failure
Infinoid Failed 9/400 subtests 13:18
13:18 skids joined
Infinoid but I have to go soon, hopefully back later this morning 13:18
Infinoid hates the fulltest sequencing 13:19
Coke I have an issue with my ternary operator, trying to figure out if it's a problem with the PGE optable stuff or my code. 3>2?2***3:66 gives an RPA error, even though 2***3 by itself gives an expected failure. 13:29
dalek rtcl: r486 | coke++ | trunk/runtime/builtin/ (2 files):
If we were doing things as early as possible, then our value would

we're waiting until the end to run all the code.
13:35
Infinoid DanielC: ping 13:37
nopaste "infinoid" at 65.18.171.17 pasted "[PATCH] Test/More.pir should handle hash comparisons without relying on Iter ordering" (63 lines) at nopaste.snit.ch/16909 13:40
13:56 burmas joined 15:20 donaldh joined 15:53 iblechbot joined 16:18 barney joined 16:22 Psyche^ joined 16:25 Theory joined 16:32 gaurav joined
dalek rtcl: r487 | coke++ | trunk/ (4 files):
move the compile* .subs into their own file.
16:38
rtcl: r488 | coke++ | trunk/tools/gen_builtins.pl:
alphabetize these includes
16:38 burmas left
Coke hurm. I can have a PMC that has functions defined in PIR, no? 16:42
(just shove them in the appropriate namespace?)
16:48 whoppix joined
pmichaud Coke: Yes -- Rakudo and PGE do that quite a bit. 16:49
at least for normal methods. I don't know if you can do vtable functions that way.
Coke this is plain methods. 17:06
trying to make my code a little more object oriented. 17:07
odd. getting Class '[ 'parrot' ; 'Getopt::Obj' ]' not found
(pretty sure I didn't change /that/ code. :P)
(ah. .hll marker screwed it up) 17:09
Coke grumbles. 17:44
18:11 DanielC joined
DanielC How do you delete a file? There doesn't seem to be an "unlink" function in PIR. 18:11
18:50 bacek joined 19:20 donaldh joined 19:26 jan joined
davidfetter who's going to pittsburgh this week? 20:08
f0rk not making it there until monday :( 20:09
20:29 viklund_ joined
Util davidfetter: coming in Friday 20:50
davidfetter Util, cool :)
so am i :)
21:04 AchaBacha joined
Util davidfetter: great! I do not see you on yapc10.org/yn2009/wiki?node=Parrot%...hop%202009 ; are you coming in early for a different reason? 21:20
davidfetter oops. forgot to sign up 21:21
where's the sign-up?
Util DanielC: I think you would call `unlink` from the os PMC, but it is not implemented yet. 21:22
DanielC Util: Ok 21:23
Infinoid hmm! Apparently, I'm only 5 hours from Pittsburgh
Util davidfetter: the link I pasted is the signup; register on the wiki, then edit the page to add yourself.
Infinoid: Road trip! 21:24
purl well, road trip is more fun =)
Infinoid Of course, I was only 5 hours from San Francisco last year, and I didn't make it to PDS last year either
I think 2 hours is my "easy" driving threshold 21:25
davidfetter hrm 21:28
i signed in and edited
i guess i'll try less clever
Util DanielC: from the looks of the other os.pmc methods (and `man 2 unlink`), I think it would be easy-ish to implement. Not volunteering, though; no tuits available.
DanielC Util: Ok. Just so I know, where can I find os.pmc ? 21:29
Infinoid parrot trunk/src/pmc/
DanielC thanks
Util davidfetter: try [user:2895] ; that will link to you, while displaying your name. 21:33
davidfetter done 21:34
how'd you find that?
Util the number-instead-of-name technique, or the wiki page? 21:37
davidfetter my number
DanielC Util: os.pmc seems to already have a template for "rm"
Util You are listed at the bottom of the page as the last user to change the page. Also, I could have done a user search. 21:38
davidfetter ah
<-- n00b
Util DanielC: Oh! I missed it, narrowly searching only for `unlink`. 21:39
21:39 zak_ joined
Util DanielC: See t/pmc/os.t for an example of usage. 21:40
DanielC Thanks.
I tried just using it the obvious way but I got an error ("could not fin sub rm"). 21:41
DanielC looks at the test
ah... 21:42
$P1 = new ['OS'] ... $P1."rm"($S1)
mikehh t/op/debuginfo has TODO passes in make smoke and make -k fulltest - all PASS except t/examples/pod.t in examples_tests 21:43
DanielC Util: It works!! 21:44
Util: Thanks.
Util glad to help
mikehh Ubuntu 9.04 i386 at r39563
Util mikehh++ for smoking :) FYI, `make fulltest_all` is the equiv-to `make -k fulltest`, with benchmarks moved to run last. 21:46
Infinoid DanielC: r39564 has your fix 21:48
DanielC Infinoid: Thanks!
dalek rrot: r39564 | Infinoid++ | trunk (2 files):
[Test/More.pir] is_deeply can compare hashes, but depends on insertion order.

Thus, after comparing the number of entries, we should base the rest of the comparison on *one* Iter, not two in parallel. I think we still need more work to handle undef values properly, but this is a step in the right direction. While we're at it, add a test.
21:49
mikehh Util: Yeah - used to run that but I find make -k fulltest is a little quicker 21:51
not that much though - I let it run while doing a cpu[;e of oyjer things 21:53
couple of other
21:55 Whiteknight joined
mikehh I haven't been able to get a decent keyvoard that fits my fingers properly since my grandson spilt Coke on my old favourite 21:55
Coke as in Coca-Cola not a certain Will :-} 21:56
you see I keep hitting v instead of b, ; instead of l etc, etc... 21:58
Infinoid silly soda companies, polluting the namespace
mikehh certainly polluted my old keyboard :-} 21:59
I had that one for years and now can't an equivalent anywhere - have tried about 6 now :-{ 22:02
Infinoid I was fortunate enough to get used to a certain type of cheap but decent ones that have been cloned by 5 or 6 noname companies 22:04
...and then bought a 10-pack of them
I hope it's been carried over from PS/2 to USB... haven't had to check yet 22:05
22:22 ZeroForce joined
Coke yawns. 22:31
22:33 rg joined
Infinoid Is Undef a singleton? 22:33
Whiteknight PMCNULL is 22:35
at least, I think it is
Infinoid Yeah, that makes sense 22:36
Undef is a real PMC tho
Oh, wow, with a real set_pmc method. That's gonna make singletons ... unlikely 22:37
Coke I believe that's so that you could do $P0 = new 'Undef'; morph $P0, 'some random thing' 22:48
22:53 ZeroForce1 joined 23:03 bacek joined
dalek TT #763 created by Infinoid++: Test/More.pir's is_deeply() needs work with hash corner cases 23:04
bacek good morning 23:05
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
Infinoid ohai 23:06
GeJ Good morning everyone 23:07
dalek rrot: r39565 | bacek++ | trunk/src/string/api.c:
[core] Applying patch from TT#758 to improve Parrot_str_to_num.
23:16
23:18 patspam joined 23:21 donaldh joined
bacek Infinoid: looks like openbsd/hppa requires explicit cast to double from int... 23:23
Infinoid pmichaud: I'd love to get your opinion on TT #763, if you've got a spare tuit to toss at it
bacek: Wow, that sounds like a pretty broken platform 23:24
bacek is_deeply(%a,%b) { for %a.keys { return 0 unless exists %b{$_} and %a{$_} == %b{$_} }; for %b.keys { return 0 unless exists %a{$_} }; return 1} 23:27
This is how I understand is_deeply should work
(I didn't check Test::More.pir though)
Infinoid Test::More.pir's hash handling isn't well tested, and actually the POD said it only handles arrays, not hashes 23:29
I fixed up the existing hash code to work, and updated the POD
and then I started looking for more corner cases based on some comments in #perl6 about how tricky it was to get it fully correct 23:30
That ticket is intended as a starting point for discussion
So your is_deeply does treat !exists as distinct from !defined 23:31
bacek indeed.
I think "key3 => undef" not equal to absence of "key3" 23:32
Infinoid According to pmichaud, parrot returns PMCNULL in the !exists case, so assuming is_deeply can handle that (and Undef) without crashing, we can make that work
bacek Parrot's Hash returns Undef. I'm not sure that returning Null will not brake something
Infinoid I haven't tested any of this, just going by what others have said 23:34
[10:35] <@pmichaud> Actually, looking up non-existent keys in hashes normally returns NULL (in Parrot) 23:35
If you're seeing Undef, maybe it's fixed up somewhere between the C layer and the PIR layer
GeJ bacek: running make fulltest on FreeBSD against your latest patch. Will try with the FLOATVAL cast right after it. 23:36
bacek Ah. pmichaud is right. It actually returns Null.
GeJ: thanks.
dalek rtcl: r489 | coke++ | trunk/ (3 files):
- rename TclString.get_list to TclString.getListValue()

  - add a :multi variant to let the TclString version avoid creating a new PMC.
bacek need more coffee 23:37
Coke_afk bacek: I'm pretty sure we've already switched between Undef and NULL for hashes at /least/ once. 23:41
Infinoid I don't want to switch it, I just want to understand it 23:43
bacek Coke: yes. It returns PMCNULL now.
Infinoid and to make is_deeply() work with it :)
bacek Infinoid: actually "exists %b{$_}" equals to "%b{$_} ~~ Null" :) 23:44
Infinoid Great. That gives me something I can check from PIR 23:45
So if I can get is_deeply printing nulls and undefs properly, the right behavior should just fall out 23:46
Coke bah. I finally gave up doing a wholesale switch and having massive failures and am now doing incremental changes. next time, just start there. Oy.
Infinoid Switching what, Coke? 23:47
Coke I have a 'toList' :multi in partcl. Trying to switch it to a method. 23:48
bacek
.oO( Migrate partcl to PCT? )
Coke no, but I'd love to have that patch if you have the tuits. =-)
Infinoid: was just lamenting that I should know that small, incremental changes are better. =-) 23:49
bacek time to go to $dayjob... 23:51
dalek rtcl: r490 | coke++ | trunk/ (2 files):
Switch toList to no longer be a :mult

  - add a version to the builtin String.
Coke bah. getting test failures in 'make TEST_JOBS=3 test' in partcl, but not in 'make test' or 'prove -f some/failing/test' 23:57
Infinoid race condition from multiple tests creating the same tmpfile? (just a guess) 23:58
Coke Infinoid: could be. care to check my tempfile logic?
code.google.com/p/partcl/source/bro...est/Tcl.pm 23:59
I'm just using tempfile().