Camelia, the Perl 6 bug

IRC log for #parrot, 2010-12-09

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 Matt221 I noticed some discussion previously on builds failing on Darwin..
00:00 cotto_work We want OSX users to be able to build too.  It'd be better to fix the issues you're seeing.
00:01 cotto_work do you know how to debug it?
00:01 kid51 Matt221: I was having problems building on Darwin a few days ago, but those problems were fixed.  OTOH, I haven't tested there in 2-3 days.
00:01 Matt221 cotto_work: nope, just trying to get some tasks done for GCI on the embed_api2 branch
00:01 whiteknight joined #parrot
00:03 * whiteknight can't tell if spam coming to the mailing list is getting more clever, or less clever
00:04 cotto_work whiteknight: Matt221 is seeing a build failure on darwin in embed_api2 in pbc_merge.
00:04 whiteknight hmmm. weird. Last I heard kid51 had a clean test there
00:07 kid51 I will try later this evening.  smoking master on that machine right now
00:07 cotto_work you can ask him about it.  He just reported it.
00:07 cotto_work (him being Matt221)
00:12 hercynium left #parrot
00:27 kid51 is now known as kid51_at_dinner
00:33 bluescreen left #parrot
00:48 Hunger joined #parrot
00:53 bluescreen joined #parrot
00:57 Coke we have some ubuntu users in here, yes?
00:58 kid51_at_dinner There have been no commits to the embed_api2 branch since my last test, so, not surprisingly, I just successfully built on both Darwin and Linux.
00:58 kid51_at_dinner is now known as kid51
00:58 cotto_work Coke: yes
00:58 Coke whiteknight: last you heard from me, it was broken on os x. ;)
00:58 kid51 Coke: me but only at $job
00:58 Coke cotto_work: I have bug that is reported fixed by a kernel update. Is there a way for an idiot user (moi) to upgrade the kernel?
00:58 kid51 Of course, there's always a chance that a branch will build on 10.4 but not on 10.5 or 10.6.
00:58 Coke or do I just get to wait for the next point release?
00:59 Coke I'm on 10.6/x86. I'll retest the branch.
00:59 cotto_work Coke: is there a .deb or ppa you can use?
00:59 kid51 Coke:  On my $job box, where I passively hit the Install Updates button, I get kernel updates every month or so.
01:00 Coke kid51: hokay.
01:00 Coke danke.
01:00 kid51 whiteknight: Note that on embed_api2 I still get this warning at the conclusion of 'make', regardless of platform:  src/install_config.c:2604: warning: no previous prototype for 'Parrot_set_config_hash'
01:01 Coke make: *** [runtime/parrot/library/PCT/PAST.pbc] Segmentation fault
01:02 cotto_work Coke: is that when running pbc_merge?
01:02 nopaste "coke" at 192.168.1.3 pasted "embed_api2 build failure" (1474 lines) at http://nopaste.snit.ch/26827
01:04 Coke lots of warnings, too. (and that's not with --cage)
01:04 Yuki`N joined #parrot
01:04 Hunger left #parrot
01:05 Coke I wonder if kid51's is failing the same way but just happens to finish on src/install_config.o
01:05 Coke (I'm getting that warning also)
01:05 Hunger joined #parrot
01:06 kid51 Coke: Your revision number is not the same as mine.  What's the calendar date of your most recent commit in git log in that branch?
01:06 Coke c7def2f52a7860e3fc0a380401bc6c7acc41b6fc
01:06 Coke Date:   Mon Dec 6 19:26:12 2010 -0500
01:07 kid51 Hmm:  Then why does your paste suggest a different revision?
01:07 Yuki`N Hey, just wondering, what tool is used to calculate the code coverage statistics found at http://tapir2.ro.vutbr.cz/cover/cover-results/
01:07 kid51 Yuki`N:  Can't say for sure, but probably gcov
01:07 Coke what revision does it suggest?
01:08 kid51 Your Configure.pl step auto::sha1 says:  924acec
01:08 cotto_work Yuki`N: you can generate the same information with make cover with the right compiler and Perl modules.
01:08 Yuki`N I see.
01:08 Yuki`N That's good to know.
01:08 Coke kid51: no clue.
01:09 theory left #parrot
01:10 Coke kid51: because that's what's in .parrot_current_sha1
01:12 Coke uh... is that file generated?
01:12 Coke I just did an ack -Qa for that file, and it doesn't ever seem to be set anywhere.
01:13 Coke ah, lib/Parrot/SHA1.pm ...
01:16 Coke um. why are we caching that value?
01:17 Coke that means if we ever do a git up, we MUST do a realclean to catch the latest version.
01:17 Coke s/git up/git pull/
01:19 cotto_work Oh brave new world that has such gits in it.
01:19 Coke presumably this is also the reason I was having trouble building rakudo earlier.
01:20 Coke rebuilding embed_api2 branch...
01:20 Coke cotto_work: want me to open a ticket about not caching that file?
01:21 cotto_work Coke: sure.
01:22 nopaste "coke" at 192.168.1.3 pasted "embed_api build failure on OSX" (1020 lines) at http://nopaste.snit.ch/26828
01:24 kid51_ joined #parrot
01:26 cotto_work dukeleto: ping
01:27 kid51 left #parrot
01:29 Coke ah. just noticed that my "make realclean" was "mmake realclean" because I was testing out the failure of my build script. :P
01:29 Coke so I did not, in fact, realclean first. I still contend I shouldn't have had to.
01:30 Coke (that embed_api2 build had a manually realclean in front, though.)
01:32 lucian left #parrot
01:33 theory joined #parrot
01:34 theory left #parrot
01:35 cotto_work msg dukeleto Would it be possible to add a post-recieve hook to update .parrot_current_* to all clones of the git repo or would that have to be added manually?
01:35 aloha OK. I'll deliver the message.
01:36 Coke why do that? doesn't git give you an easy way to get the latest sha1?
01:36 theory joined #parrot
01:39 dalek TT #1884 created by coke++: don't cache .parrot_current_git_describe
01:39 dalek TT #1884: http://trac.parrot.org/parrot/ticket/1884
01:44 whiteknight left #parrot
01:52 Yuki`N Could someone quickly explain to me how PIR works, as I think I'm going to try improving the String PMC test coverage.
01:56 plobsing Yuki`N: (greatly simplifying) a PIR file consists of a set of subroutines (delimited by .sub .end) given as a sequence of parrot ops. it supports predeclared named registers (.local {pmc,string,int,num}) as well as automatic registers ($P0, $N1, $S2, $I33, etc).
01:58 fbrito Yuki`N: take a look at http://docs.parrot.org/par​rot/devel/html/index.html (PIR Book)
01:58 fbrito Yuki`N: it helped me a lot :)
02:03 Yuki`N So each PMC has a set of "vtable" functions
02:03 Yuki`N And depending on which PIR opcode is called, the appropriate function is used?
02:14 plobsing some opcodes invoke vtables, yes. others do more mundane things like copy pointers between registers.
02:16 Yuki`N example being, how do I choose between is_equal, is_equal_num, and is_equal_string?
02:16 Yuki`N cmp $I0, $P0, 1 vs cmp $I0, $P0, "1"?
02:16 Matt221 left #parrot
02:20 plobsing you'd have to look at the implementation of the ops to find what you are looking for. those are under src/ops/. The two ops you listed call the get_integer and get_string vtables.
02:30 dalek parrot/tt532_headerizer_refactor: 3129b83 | jkeenan++ | / (2 files):
02:30 dalek parrot/tt532_headerizer_refactor: Refactor some code from within Parrot::Headerizer::Object into internal method
02:30 dalek parrot/tt532_headerizer_refactor: check_pointer_return_type().  Test it in 02_methods.t.  Replace repetitive
02:30 dalek parrot/tt532_headerizer_refactor: test setup code with a subroutine.
02:30 dalek parrot/tt532_headerizer_refactor: review: https://github.com/parrot/parrot/commit/3129b838ea
03:00 fbrito left #parrot
03:04 Yuki`N I'm still having a bit of trouble running `make cover'; it's not giving me any coverage information for src/pmc/*
03:04 Yuki`N Not even any .pmc files.
03:12 * kid51_ runs 'make cover' for the first time!
03:14 kid51_ Is it supposed to provide direct coverage of .pmc files?  (I don't see them listed in config/gen/makefiles/root.in.) (Caveat: I'm not in master at the moment.)
03:15 Yuki`N I *think* so.
03:16 Yuki`N I'm not quite sure how the online coverage tool works, because it has data for the .pmc files.
03:17 plobsing it should just be running make cover
03:19 Yuki`N Weird.
03:19 plobsing aloha, coverage?
03:19 aloha plobsing: coverage is http://cv.perl6.cz or http://tapir2.ro.vutbr.cz/cover/cover-results/
03:20 plobsing Yuki`N: examining the vutbr.cz site, the script to run the coverage appears to be http://tapir2.ro.vutbr.cz/co​ver/script/makecover.sh.txt
03:20 Yuki`N It does appear to only call make cover.
03:21 Yuki`N I'm going to try logging my output from make cover and seeing if there are any perl modules I don't have installed.
03:21 Yuki`N I think I've increased the string.pmc coverage by ~5%.
03:22 kid51_ Yuki`N:  How would running make cover shed light on missing Perl modules?
03:22 kid51_ Wouldn't a simple 'make test' do that?
03:22 Yuki`N ...true.
03:23 Yuki`N Make cover is almost 80% make test anyway.
03:23 kid51_ It's repetitions of 'make test' with different runcores.  It's actually closer to 'make fulltest'
03:24 p_l|dmp joined #parrot
03:25 kid51_ Yuki`N:  I've done a lot of coverage testing on the configuration and build tools.
03:26 kid51_ In my experience, if you FAIL any tests, the script you're running exits before 'cover'.  Consequently you don't get results.
03:26 Yuki`N It looks like I just needed to distclean; I see .gcno files in src/pmc now.
03:26 kid51_ Fortunately, that does *not* appear to be the case here.
03:27 kid51_ Unfortunately, 'make cover' is set up to produce .html output by default.
03:27 kid51_ Which doesn't help everybody.
03:36 kid51_ This is a useful overview of the coverage:
03:36 kid51_ cover -summary 2>/dev/null | grep '^src\/' | grep -v creating
03:37 * kid51_ must sleep
03:37 kid51_ left #parrot
03:43 * dukeleto waves from PDX.pm
03:43 Yuki`N Whoo.
03:44 Yuki`N string.pmc is now at 87.6% coverage.
03:44 Yuki`N I think I can up that a bit though./
03:44 dukeleto Yuki`N: awesome!
03:44 dukeleto Yuki`N: also, welcome!
03:45 Yuki`N xD hi.
03:46 Yuki`N Wow silly copypaste typo
03:46 Yuki`N In the sub testing cmp_num I actually used cmp_str.
03:46 Yuki`N I was wondering why cmp_num wasn't shown as covered.
03:51 dukeleto Yuki`N: what exactly is your question?
03:53 dukeleto Yuki`N: i am not sure i understand
03:55 dukeleto cotto_work: i am not sure i understand your question about .parrot_current_rev
04:00 dukeleto Yuki`N: are you working in a github fork?
04:04 Yuki`N dukeleto, yes, but I haven't committed yet.
04:04 Yuki`N My question resolved itself.
04:06 Yuki`N Coverage up to 91% :)
04:06 dukeleto Yuki`N: awesome!
04:06 dukeleto Yuki`N: i can make you another task for another 5% if you want
04:06 dukeleto Yuki`N: you only need to get it to 88% for this task :)
04:06 Yuki`N Ah.
04:07 Yuki`N Well, I think I can bump it up another 3% if I figure out how to call methods from PIR
04:07 Yuki`N e.g. METHOD is_integer(STRING *src) {
04:07 dukeleto Yuki`N: awesome! Some methods might not be callable from PIR, but I am not sure which aren't and which are
04:08 dukeleto Yuki`N: that is part of the fun :)
04:08 Yuki`N xD
04:08 Yuki`N Indeed.
04:08 dukeleto Yuki`N: what is your name on github?
04:09 Yuki`N https://github.com/nol888/parrot/commits/master
04:09 Yuki`N nol888
04:09 dukeleto Yuki`N: are you ready to send a pull request?
04:10 Yuki`N I may go for the extra 2%, but as it stands I can send a pull request.
04:13 dukeleto Yuki`N: does "make fulltest" pass for you?
04:13 Yuki`N It does.
04:13 Yuki`N The only 'not ok' tests have comments after them.
04:13 Yuki`N So I'm assuming that means ignore result.
04:14 dukeleto Yuki`N: they are probably "TODO" tests, which are allowed to fail
04:14 dukeleto Yuki`N: awesome, send your pull request and I will check it out
04:14 Yuki`N Sent.
04:14 Yuki`N Also claiming the task on Melange.
04:21 Yuki`N dukeleto, If no PIR opcode calls a VTABLE method, can I still call it via callmethod?
04:23 dukeleto Yuki`N: that is a great question
04:24 dukeleto Yuki`N: want to try and see? :)
04:24 dukeleto Yuki`N: i don't know off the top of my head
04:24 Yuki`N I'll try, lol.
04:24 dukeleto Yuki`N++
04:26 Yuki`N What's a return continuation?
04:26 adu joined #parrot
04:29 dukeleto Yuki`N: it is a thingy that remembers the state of everything when it was created
04:29 plobsing Yuki`N: parrot uses CPS as a generalization of a call stack. calling a function involves the caller capturing a continuation. when the callee is finished, it invokes the continuatoin.
04:29 dukeleto Yuki`N: and you can pass it around to other things
04:29 Yuki`N Oh, I see.
04:30 Yuki`N Is it ok for me to just use callmethodcc?
04:30 dukeleto Yuki`N: in your string tests?
04:31 plobsing Yuki`N: you should use the syntax sugar PIR provides for function and method calls
04:31 plobsing $N0 = $P0.'method-name'($S0, $I0)
04:32 Yuki`N Oh that's nice.
04:34 Yuki`N Does it work for VTABLE functions as well?
04:35 dalek parrot: 19648f1 | plobsing++ | / (2 files):
04:35 dalek parrot: eliminate static numbering of ops
04:35 dalek parrot:
04:35 dalek parrot: static numbers for ops has no meaning. also, opsc generates number automatically
04:35 dalek parrot: now, rendering these completely unecessary.
04:35 dalek parrot:
04:35 dalek parrot: also eliminate a nasty cast (op_func_t* => void** => (void*)() => op_func_t*)
04:35 dalek parrot: review: https://github.com/parrot/parrot/commit/19648f1861
04:35 dalek parrot: 1660edd | plobsing++ | / (2 files):
04:35 dalek parrot: eliminate op documentation mentioning defunct CORE_OPS_*
04:35 dalek parrot: review: https://github.com/parrot/parrot/commit/1660edd4ac
04:35 plobsing Yuki`N: vtables and methods are distinct. you can't call vtables using the method call mechanism.
04:35 Yuki`N Oh.
04:37 plobsing it is a POLS violation we hope to resolve in a couple months
04:37 Yuki`N It's a shame. The only uncovered code left is in an "experimental" method and vtable functions not called in any opcode.
04:38 Yuki`N dukeleto, can you accept my claim to the melange task? http://www.google-melange.com/gci/task/show/goog​le/gci2010/parrot_perl_foundations/t129176557195
04:55 cotto ~~
04:55 cotto dukeleto, ping
05:00 adu Yuki`N: so there are opcodes that are never used?
05:00 Yuki`N No, there are vtable functions that are never used.
05:01 dalek parrot: 352fa3c | plobsing++ | src/nci/framebuilder.pod:
05:01 dalek parrot: add some documentation about pluggable framebuilder subsystem
05:01 dalek parrot: review: https://github.com/parrot/parrot/commit/352fa3cae1
05:01 dalek parrot: 1ebb549 | plobsing++ | MANIFEST:
05:01 dalek parrot: mk_manifest_and_skip
05:02 dalek parrot: review: https://github.com/parrot/parrot/commit/1ebb549239
05:14 simcop2387 left #parrot
05:15 Yuki`N dukeleto, unfortunately there's no simple way to cover the rest of the code in string.pmc
05:19 Yuki`N left #parrot
05:37 Kapace joined #parrot
06:22 bluescreen left #parrot
06:33 p_l|dmp is now known as p_l|backup
06:45 allison left #parrot
06:46 fperrad joined #parrot
06:57 Kapace Hello, Im am a Google Code-In student and I have claimed this task: http://socghop.appspot.com/gci/task/show/google​/gci2010/parrot_perl_foundations/t129182043556
06:58 Kapace this is what I have so far, if anyone could take a quick look: http://dpaste.com/284704/
06:59 sorear Is load_bytecode "xxx.pir" deprecated yet?
07:01 cotto Kapace, I don't see anything obviously wrong with it, though you should be loading the .pbc file, not the .pir.
07:02 Kapace ok, brand new to parrot. whats a pbc file? compiled pir?
07:02 cotto yes
07:03 Kapace so, it doesn't do the automatic loading like python does with pyc files?
07:04 sorear Parrot is a multi-language system
07:04 sorear If you load the .pir, you require the PIR compiler to be loaded
07:04 sorear Yes, it will use the PBC if available, but it has to hit the PIR compiler first
07:05 sorear Right now the PIR compiler is an unmaintainable C blob statically linked to Parrot, so you don't pay extra for "loading" it
07:05 sorear But eventually it's going to be separated out
07:06 Kapace ok, but what if the PBC is not available. would it not make sense to load the PIR file in case it isn't, to compile?
07:06 cotto it should be available.  It's part of the base install.
07:07 Kapace sorry if I'm being reluctant to go for this, but it goes against my python nature
07:07 Kapace ok, i guess that makes sense
07:07 sorear In Python you have 1 compiler
07:07 cotto we go both with and against many natures
07:07 Kapace i think that makes parrot a very interesting project
07:08 cotto I'm excited to see where we can take it.
07:13 p_l|backup PIR is th txtual representation while PBC files contain compiled bytecode, right?
07:13 p_l|backup *the textual
07:14 bacek_at_work p_l|backup, nope. PASM is textual representation. PIR is little bit higher.
07:14 bacek_at_work but yes, PBC is Parrot ByteCode
07:15 Kapace where would one find the reference for the (builtin?) "say" function?
07:15 p_l|backup ah. Are there any languages that directly output bytecode?
07:15 p_l|backup (on parrot, that is)
07:19 cotto p_l|backup, not yet.
07:20 cotto There's PIRATE, which outputs pbc from PIR and is written in PIR, but it needs some updates from Parrot before it'll be viable.
07:20 cotto well, in nqp-rx which compiles down to pir
07:27 simcop2387 joined #parrot
07:27 p_l|backup is there anything using Parrot in "production"? While I know of Perl 6, I have yet to encounter any Perl other than good old 5.x on any machine.
07:28 p_l|backup (I'm looking because I'll be working on my own bytecode VM for Common Lisp implementation and decided to look into existing ones)
07:28 cotto p_l|backup, several Linux distributions include a release of Rakudo *.  It's still at the early adopter stage though.
07:29 cotto We have some major performance (and other) issues to overcome before we can call it production ready.
07:31 cotto That said, Perl 6 is a great language and a lot of fun to write.  I'd highly recommend playing with it if you don't mind the slowness.
07:32 p_l|backup cotto: I'd probably go mad at some point. Not because Perl is bad, but because of how comfortable I got with Lisp :)
07:35 theory left #parrot
07:35 Kapace should MappedByteArray have a method returning the filesize, or should I find that using other utility functions in the parrot library?
07:36 cotto Kapace, you can use elements $P0
07:37 cotto that will return the number of bytes in the array
07:37 Kapace ah, didn't see that
07:38 Kapace is there a way to suppress the newline at the end of say ?
07:38 cotto if it doesn't make things worse, src/vtable.tbl lists all possible vtable functions
07:38 cotto Kapace, use print
07:38 Kapace awesome, thanks
07:43 nopaste "cotto" at 192.168.1.3 pasted "suggested changes in md5sum" (13 lines) at http://nopaste.snit.ch/26832
07:43 cotto Kapace, ^
07:44 cotto not quite complete, but it should be doable from there
07:44 Kapace ah, yes thanks
07:45 cotto nice work so far
07:46 nopaste "cotto" at 192.168.1.3 pasted "your program at work" (8 lines) at http://nopaste.snit.ch/26833
07:47 Kapace :D
07:49 cotto claim accepted, btw.  You may now begin work.
07:50 adu left #parrot
07:50 Kapace haha
07:51 sorear why only the first 4 bytes?
07:52 Kapace because my test_data only had 4 bytes at the time, and I didn't know how to get filesize
07:52 Kapace its fixed now of course
07:53 cotto I'm glad you found the md5 library.  I'd be sad if you reimplemented it unnecessarily.
07:53 Kapace yeah, its just you linked me to the MD5 wiki page
07:53 Kapace so i started to read it, and it describes the algorithm..
07:54 Kapace and I may have gotten carried away :P
07:54 TypeNameHere_____ left #parrot
07:54 cotto If you want to implement it knowing that we already have a working and tested version, that's fine too.
07:56 Kapace I would, but I'm a little rushed to get as many tasks done before the contest ends ;)
07:57 cotto your call
07:57 allison joined #parrot
07:58 Kapace how's it looking now: http://dpaste.com/284738/ (action: http://dpaste.com/284739/ )
07:58 cotto Google likes us better than these guys: http://www.loritomgt.com/
07:59 cotto Take that, nonsensical artist management people.
07:59 Kapace lol: "This web site is best viewed
07:59 Kapace with a resolution of
07:59 Kapace 1024 X 768"
08:00 cotto It's a highly competitive world out there.
08:01 cotto Kapace, nice work
08:01 cotto stick it on melange and I'll give you a pass.
08:04 Kapace awesome, thanks: http://socghop.appspot.com/gci/task/show/google​/gci2010/parrot_perl_foundations/t129182043556
08:06 cotto done
08:06 Kapace great, I look forward to doing more parrot tasks :D
08:07 cotto me too
08:09 rfw oh dear god that website
08:09 Kapace rfw, oh hey rfw
08:09 rfw hey Kapace
08:09 Kapace melange giving you trouble?
08:09 rfw no, loritomgt.com is though
08:09 rfw my eyes hurt
08:09 Kapace oh lol
08:10 rfw well, melange is always giving me trouble
08:10 rfw so i selectively ignore that
08:12 Kapace cotto, it /is/ slow... i doubt its the MappedByteArray though
08:13 sorear more boys from Brazil?
08:14 Kapace but I'll compare with normal file
08:15 * cotto sleeps, only about an hour late
08:15 Kapace good night!
08:23 Kapace cotto, quickly made a normal file io test and its still slow..
08:25 Kapace details: http://dpaste.com/284749/ (main_m is MappedByteArray, main_nfio is normal file io)
08:42 contingencyplan left #parrot
08:54 jsut_ joined #parrot
09:00 jsut left #parrot
09:15 NotFound That program is using MappedByteArray to build a string, it doesn't exercise it's byte addressing ability.
09:24 rfw left #parrot
09:31 lucian joined #parrot
10:15 bacek aloha, humans
11:13 dalek parrot: ffa881f | (Gerd Pokorra)++ | t/pmc/string.t:
11:13 dalek parrot: Merge branch 'master' of https://github.com/nol888/parrot into nol888-master
11:13 dalek parrot: review: https://github.com/parrot/parrot/commit/ffa881fd3f
11:32 fbrito joined #parrot
11:39 fbrito left #parrot
12:00 zby left #parrot
12:03 bluescreen joined #parrot
12:10 dalek parrot: b1b79f3 | (Gerd Pokorra)++ | t/pmc/string.t:
12:10 dalek parrot: remove whitespace
12:10 dalek parrot: review: https://github.com/parrot/parrot/commit/b1b79f38e8
12:43 smash joined #parrot
12:43 smash hello everyone
12:51 tadzik hello smash
12:59 Kovensky left #parrot
13:09 Kovensky joined #parrot
13:19 lucian left #parrot
13:33 Coke HULK
13:33 Coke ENOPURL.
13:33 Coke aloha, HULK is <reply>HULK SMASH!
13:33 aloha Coke: Okay.
13:33 Coke aloha, hulk?
13:33 aloha Coke: HULK SMASH!
13:33 Coke close enough.
13:33 Coke ~~ smash.
13:36 whiteknight joined #parrot
13:38 p_l|backup left #parrot
13:43 whiteknight good morning, #parrot
14:35 bluescreen left #parrot
14:39 bluescreen joined #parrot
15:02 whiteknight src/packfile.c:Parrot_load_bytecode() is evil
15:02 whiteknight not only does it load bytecode, but it also helpfully loads .pir and .pasm files too apparently
15:05 AzureStone left #parrot
15:10 AzureSto_ joined #parrot
15:11 cotto whiteknight, I approved the md5 task. I hope you don't mind.
15:11 whiteknight fine by me
15:11 whiteknight I just assigned you a new RFC, I hope you don't mind :)
15:13 cotto fine by me
15:15 dalek TT #1885 created by whiteknight++: Parrot_load_bytecode should only load bytecode
15:15 dalek TT #1885: http://trac.parrot.org/parrot/ticket/1885
15:15 dalek parrot: 7842d27 | cotto++ | examples/pir/md5sum.pir:
15:15 dalek parrot: add md5sum tool using MappedByteArray from Kapace++'s gci task
15:15 dalek parrot: review: https://github.com/parrot/parrot/commit/7842d2717d
15:16 cotto yuck
15:17 whiteknight yuck?
15:17 Coke I posted a suggestion on the #1885.
15:18 cotto referring to the behavior mentioned in that ticket
15:19 whiteknight I want to start putting together an RFC for a standard interface for compiler objects
15:20 whiteknight then I want to move IMCC over to the new interface
15:22 cotto a fire-based interface, perhaps?
15:23 whiteknight I think a compiler should have .compile_string, .compile_file, .eval_string, .eval_file, .validate_string, and .validate_file methods
15:24 whiteknight .compile_* compiles the input and returns a Sub or Eval PMC that can be executed. .eval_* should compile and execute immediately, and .validate_* should verify whether it's a valid code file for that compiler
15:24 Coke whiteknight: still makes sense to have a new version with less power than to change the existing version.
15:24 whiteknight so .validate_ would parse the input to see if it parsed okay, or would do magic-number and header checking, etc
15:24 whiteknight Coke: what do you mean?
15:25 Coke I mean, don't change the behavior of existing functions.
15:25 whiteknight Coke: even if they are stupid and misleadingly-named?
15:25 Coke yes.
15:26 particle that's what deprecation is for.
15:26 whiteknight particle: this would have to happen after a deprecation boundary, yes
15:26 Coke whiteknight: you can't deprecate something /in place/
15:26 Coke you need to have the alternative in place ahead of time so people can switch.
15:26 whiteknight we have the alternative in place right now: the PIR compreg
15:27 whiteknight people can use that, and they should use that
15:27 whiteknight load_bytecode is being abused for this behavior, and the abuse should stop
15:27 * Coke gives up.
15:27 whiteknight Coke: I'm not sure what other kind of alternative you think we need
15:27 Coke left #parrot
15:30 whiteknight if the alternative is to add in a new op that only does one thing and then remove load_bytecode entirely that doesn't really matter to me
15:30 NotFound whiteknight: I fail to see the usefulness, or event tha viability, of validating without compiling.
15:32 whiteknight Notfound: so maybe we don't need that part
15:33 whiteknight I'm trying to think of a way to associate a file with a compiler, so we can say "load this file", and have Parrot go down the list asking each compiler to see if they can do it
15:33 whiteknight but that may be a little bit too magical and error-prone
15:34 whiteknight .eval_* and .compile_* really seem like the important ones to me, and .eval_* will probably redirect to .compile_* and then invoke the result
15:34 whiteknight I'm trying to borrow existing interfaces and names from HLLCompiler as much as I can and still keep it general
15:35 NotFound A name for the role may also be nice.
15:36 whiteknight yeah. I was thinking does "compiler" is the most straightforward
15:36 NotFound WinxedCompiler isa HLLCompiler -> false
15:36 whiteknight Of course
15:36 whiteknight if we create one standard interface, everybody is going to need to change a little bit
15:37 NotFound Yes, and "does" should be the way to declare we implement that interface.
15:37 whiteknight right
15:38 whiteknight I want to have a Compiler PMC type too that takes Sub/NCI PMCs to perform each of these tasks. That way we can wrap the existing IMCC compiler into a nicer interface than it has now
15:39 Patterner left #parrot
15:39 Psyche^ joined #parrot
15:39 whiteknight And when IMCC has a nicer PMC-based interface, we can start untangling it from core and register it through the API like everybody else uses
15:39 Psyche^ is now known as Patterner
15:41 cotto <3
15:42 dmalcolm joined #parrot
15:43 NotFound Maybe we can do a proof of concept with a Class, and later convert to a PMC if needed.
15:47 whiteknight NotFound: that's fine too, but creates a bootstrapping
15:47 whiteknight It's going to be hard to write a class in PIR that gets run BEFORE set set up the PIR compiler
15:47 cotto left #parrot
15:49 NotFound For the proof of concept phase is not a problem.
15:53 whiteknight how is that not a problem?
15:53 whiteknight actually, nevermind. We could work around that if you really want
15:54 whiteknight we could override VTABLE_invoke on the new compiler object to continue with the old behavior too
15:56 whiteknight msg plobsing I want to set up a GCI task to move src/packfile.c, src/packout.c, and src/packdump.c into src/packfile/ directory like other subsystems use. This seem reasonable/acceptable to you?
15:56 aloha OK. I'll deliver the message.
15:57 NotFound The only problem I see is modifying compreg to return it instead of the current pir interface, but we can use an alternative name for testing.
15:58 whiteknight I've been staring at this code and I think it would be pretty easy
15:58 whiteknight I need to add an API function to handle compiler registration, but that's trivial
15:58 whiteknight actually, I could set up a GCI task to do that (if bluescreen hasn't already done it)
15:59 bluescreen its done whiteknight
15:59 bluescreen sorry
15:59 whiteknight :)
16:00 whiteknight Yes, it is done, though I suspect there is a bug in it
16:00 theory joined #parrot
16:00 whiteknight parameter "type" is a Parrot_String, but later you cast it to a char*
16:01 NotFound Maybe we can put all that in a library, leaving the core interpreter free of compiler related parts. That way we can get a nanoparrot almost free.
16:01 whiteknight A compiler registry is just a hash. Removing that doesn't seem like it would save us much
16:01 whiteknight the bigger task is to break IMCC out of libparrot, and have IMCC register itself like any other compiler would
16:02 whiteknight that would make libparrot much smaller
16:02 whiteknight and we can do that almost 100% if we add the new compiler interface PMC and use the new embedding API
16:02 NotFound Just don't put that hash in the interpreter. The library can store in in its namespace.
16:03 whiteknight What's the benefit to that? Code in one namespace won't be able to detect and use compilers from other namespaces.
16:03 whiteknight Perl6's eval("code", :lang(<foo>)) requires that
16:04 dalek tracwiki: v3 | whiteknight++ | APIFuncRenaming
16:04 dalek tracwiki: http://trac.parrot.org/parrot/wiki/API​FuncRenaming?version=3&amp;action=diff
16:05 NotFound whiteknight: a library for loading and registering compiler, with its namespace inside ['parrot']
16:06 NotFound The benefit is to get out of the interpreter parts that are not always needed.
16:07 whiteknight Okay, I see what you are saying. Again I suggest that the compreg stuff is very small. We can create the compreg hash lazily if we don't need it
16:07 whiteknight there are other things we should cut out first. Open an RFC
16:07 AzureStone joined #parrot
16:07 NotFound I think the interpreter struct is already too bloated.
16:08 whiteknight no argument
16:08 cotto_work ~~
16:09 AzureSto_ left #parrot
16:10 cotto_work plobsing++ for nuking the static op numbers
16:10 whiteknight cotto_work: I want to set up GCI tasks to move the various frontend source files into src/frontends/*
16:10 whiteknight (main.c, pbc_merge.c, pbc_dump.c, etc)
16:11 whiteknight chromatic gave that idea a +1 a while back, but want to get more opinions before I jump on it
16:11 NotFound +1
16:11 cotto_work The only thing I'm not sure about is the name src/frontends/
16:11 whiteknight see, this is why I ask first :)
16:12 NotFound src/exe ?
16:12 cotto_work src/fe?
16:12 whiteknight I'm fine with whatever, but I would like to visually separate things that go in libparrot from things which do not
16:12 cotto_work absolutely
16:12 cotto_work I could get used to whatever name you feel like using.
16:12 whiteknight you don't think src/fe is too obscure?
16:13 contingencyplan joined #parrot
16:13 cotto_work should it be under src ?
16:13 NotFound fe is faith in Spanish ;)
16:13 cotto_work we have compilers/ now
16:13 particle spell it out
16:14 cotto_work particle: that's probably the best idea
16:14 particle everyone looking at gc/ knows in the context of a compiler's source tree that means garbage collection
16:14 whiteknight cotto_work: ah, that makes good sense for src/main.c. But src/pbc_merge.c and src/pbc_dump.c are not compilers
16:14 particle nobody knows what fe/ is
16:14 cotto_work whiteknight: I mean that it should be under the root of the repo, not under src
16:14 NotFound An atom of iron.
16:15 whiteknight maybe src/main.c should move to compilers/imcc/main.c (since it really is just a wrapper around IMCC), and move the current compilers/imcc/main.c to compilers/imcc/imcc_main.c
16:16 whiteknight cotto_work: so like frontends/* instead of src/frontends/*?
16:16 cotto_work yes
16:16 particle don't make the dir plural
16:16 whiteknight okay, that works fine for me. Subfolders under there?
16:16 whiteknight particle: okay
16:16 particle src/pmcs/, src/gcs/ ...
16:16 cotto_work compilers/
16:17 whiteknight frontend/parrot, frontend/pbc_merge, frontend/pbc_dump?
16:17 NotFound All .c files are under src, except the ones in compilers/imcc
16:18 cotto_work there'll be more than one frontend.  Why not use the plural?
16:18 whiteknight there is more than one gc, and we do src/gc/
16:18 whiteknight (I'm not arguing for either name, just pointing out a parallel)
16:19 cotto_work both have parallels.  Use whichever makes the most sense to you at the time.
16:19 whiteknight okay, I'll start setting up the GCI task for this
16:19 cotto_work I'd say "frontends", but the person implementing gets the most votes.
16:22 particle it'd be easier to fight for one over the other if our dirs were consistent in case
16:22 particle but they're not... quite.
16:23 cotto_work agreed
16:23 particle i really wish when i originally re-organized the src tree 6 years ago or so that i had named docs/ doc/
16:24 cotto_work Is it too late now?
16:25 particle it'd be pretty hard, but not impossible.
16:25 plobsing_ joined #parrot
16:25 particle it requires updates to things outside the repo, like websites and such
16:25 particle i'm not sure it's worth it.
16:25 Andy left #parrot
16:27 plobsing_ ≁≁
16:27 whiteknight good morning plobsing_
16:28 whiteknight I just aloha'd you an msg to your non-underscored username
16:28 * plobsing_ reads logs
16:29 whiteknight short version: I want to set up a GCI task to move the packfile-related stuff into src/packfile/*
16:29 plobsing_ moving all packfile related stuff to a separate folder is a *very* good idea.
16:30 plobsing_ I'm not sure we should keep the distinction between packfile.c and packout.c. It's kinda blurry.
16:30 whiteknight plobsing_: packfile.c, packout.c and packdump.c. Anything else you think we need moved?
16:30 cotto_work there's some stuff in imcc
16:30 cotto_work compilers/imcc/pbc.c for one
16:30 whiteknight I am having a hard time figing out where exactly pmc_freeze.c fits in
16:31 plobsing_ packdump.c, iirc, only implements stuff for pbc dump. I'd like to see that move out of libparrot eventually.
16:31 plobsing_ cotto_work: ah, but imcc/pbc.c only really makes pseudo-sense in the context of imcc
16:31 whiteknight plobsing_: Ah, I'm also looking to move front-end code to frontend/, so I could move that to frontend/pbc_dump/pbc_dump.c
16:31 plobsing_ pseudo-sense because nothing in imcc truly makes any sense
16:31 cotto_work I got that.  Nice wording.
16:32 whiteknight okay, I'm going to set up a new GCI task to move packfile.c and packout.c to src/packfile/. We can work on cleaning up that subsystem and redistributing functions to files later
16:33 whiteknight pbc_dump.c I will move out eventually into frontend/pbc_dump/dump.c, when it's time for that and remove it from libparrot
16:33 plobsing_ whiteknight: pbc_dump is a little tangled up with the packfile struct vtable-ish function tables ATM
16:33 whiteknight right
16:33 whiteknight so we can be ginger about it for now
16:34 plobsing_ src/pmc_freeze.c could be moved to src/packfile/object_serialization.c or something to that effect
16:34 whiteknight okay, I like that
16:50 whiteknight who do we have that speaks Polish?
16:50 plobsing_ whiteknight: (re: compiler role API) I'd like to suggest that compilers also be able to provide a means of executing a single line (possibly with a persistable context like rakudo's repl). This could be useful in applications which want to have a repl interface (eg: parrot-debugger, vim, etc)
16:51 whiteknight plobsing: that would be very nice, though I suspect it would be the hardest to accomplish. Especially for the PIR compreg
16:51 whiteknight we can definitely give it a shot though
16:51 plobsing_ I didn't say all compilers need to implement it.
16:51 whiteknight ok
16:52 plobsing_ PIR implementation could be "throw new ['NotOnYourLifeException']"
16:54 dalek tracwiki: v178 | whiteknight++ | WikiStart
16:54 dalek tracwiki: http://trac.parrot.org/parrot/wiki/W​ikiStart?version=178&amp;action=diff
16:55 whiteknight plosbing: is there a way to generate a .pbc file from PIR code?
16:55 whiteknight pmichaud is suggesting in TT #1885 that there isn't
16:55 plobsing_ There is, but you can't readily get at it from PIR.
16:55 NotFound The idea, for me, is to provide a standarized way to do common things, not to force compiler doing anything we can imagine.
16:56 particle i speak reverse polish ;)
16:56 whiteknight plobsing_: Okay, next question is obvious: how to we get at it from PIR? New opcode? New PMC with methods?
16:56 plobsing_ new method on PIR compreg in anticipation of compiler API
16:56 whiteknight the PIR compreg is currently an NCI PMC pointing to a function in IMCC
16:56 plobsing_ compile-to-file should be part of compiler role as well
16:57 whiteknight plobsing_: I'm more envisioning that .compile will return a PackFile PMC or whatever the future equivalent is, and then we can write that to file using a method on PackFile
16:57 whiteknight though that's probably way out in the long term
16:58 plobsing_ well, if we're using packfiles as the means of getting things into files, we could get Eval to give us a handle to its internal packfile.
16:59 plobsing_ Eval is really just a thin, convenient, and crufty wrapper over a packfile.
16:59 whiteknight my thinking is that once we have a packfile PMC, we can execute it directly (which would default to executing :main), or we could write it to file, or we could look like individiual Subs in it like a library and execute those, etc
16:59 whiteknight or, we should be able to do all those things
16:59 plobsing_ oh wait, we already have that. Eval.get_string()
17:00 whiteknight and that does...?
17:00 plobsing_ gives you a string containing the packfile
17:00 whiteknight and don't tell me it returns the stringified packfile
17:00 whiteknight damnit
17:00 plobsing_ i could tell you otherwise, but I'd be lying
17:01 whiteknight a pity that lies would be so sweet
17:02 whiteknight The nuclear option of "delete everything and start from scratch" looks just a little bit more attractive every time I talk about this stuff
17:02 plobsing_ Eval.get_string() provides a means of acheiving what pmichaud wants. it's not great, but it'll do. ideally we wouldn't even have an Eval pmc. allison had an RFC about that IIRC.
17:04 whiteknight okay, so let's talk about removing it first. What would we need to replace it with? Are the PackFile family of PMCs ready for this kind of use?
17:04 cotto_work whiteknight: no.  They don't know about opmaps yet.
17:05 mtk joined #parrot
17:05 cotto_work bacek++ made a couple commits to the opmap branch though.
17:05 NotFound We should put the PackFile PMCs to full use, otherwise they'll get bitroten every time we chnage something.
17:06 cotto_work NotFound: that's exactly what I want to do.
17:06 cotto_work only have one implementation of packfiles (the PMCs) so that it can't bitrot without horribly breaking everything
17:06 plobsing_ packfile pmcs were designed to be convenient as an external API for packfiles. they currently have little to no consideration for internals. we need a two-layer approach (currently the struct/pmc duality, but eventually a delegation-style wrapper)
17:07 whiteknight plobsing: I don't see why we can't have a single implementation
17:08 whiteknight a Packfile structure wrapped inside a PackFile PMC. The get_pointer/set_pointer VTABLEs let us get at the underlying implementation
17:08 whiteknight the PMC provides nice methods and a nice storage mechanism for the structures, in addition to GC magic, etc
17:08 plobsing_ yes. but that is more-or-less the separation I'd like to see.
17:09 NotFound plobsing_: I'm fine with a two layer approach, if the front layer is used.
17:09 whiteknight So long as Parrot passes packfiles around in PMC form, and embedders/extenders can use that form to pass them around, I don't really care how the internals look
17:09 plobsing_ I explicitly do not want the internals to have to deal with something that has design considerations for convenience of external uses.
17:09 NotFound imcc should not be 'internal'
17:09 whiteknight that's fine. Anything in src/packfile/* can assume the struct, everything else can pass an opaque PMC
17:10 plobsing_ runcores and ops need some pretty intimate details about running packfiles
17:10 NotFound plobsing_: fine with that.
17:10 whiteknight okay, those guys can access the guts too
17:10 plobsing_ you don't want to VTABLE_get_integer_keyed_int to find the next op do you?
17:10 dalek tracwiki: v1 | whiteknight++ | CompilerInterfaceDesign
17:10 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Compile​rInterfaceDesign?version=1&amp;action=diff
17:10 whiteknight but having access to packfile guts should be opt-in with a very limited guest list
17:10 cotto_work +1
17:11 plobsing_ agreed. and compilers (including IMCC eventually), should not be on that list.
17:11 NotFound And pir compilers should not be on that list.
17:11 whiteknight plobsing_: EXACTLY!
17:11 cotto_work PIRATE already isn't
17:11 cotto_work I like where this is going.
17:11 NotFound imcc is, now.
17:11 whiteknight if you look at src/main.c in the embed_api2 branch you see that idea: I pass IMCC a filename and return a PMC from it. Then, I pass that PMC into libparrot to execute
17:12 whiteknight of course the PMC in question is an UnManagedStruct with a Parrot_Packfile pointer, but I have acheived some level of abstraction
17:12 whiteknight it is possible to do in the general case
17:12 NotFound whiteknight: but to avoid bit roten we need much more.
17:13 plobsing_ to avoid bitrot, we need the external api to *not* reimplement the internal implementation
17:13 plobsing_ delegation is key
17:14 whiteknight right. The embedder shouldn't even have to be aware of what the PackFile PMC is: The embedder takes a PMC from a compiler and passes it to the execution engine. No questions asked
17:14 * plobsing_ must leave
17:14 plobsing_ left #parrot
17:14 NotFound We need to use it, mainly. Delegation is the way to make it doable.
17:16 whiteknight my thinking is this: A compiler takes code and returns a PackFile PMC. The embedding application can then attempt to execute that, or write it out to a .pbc file, or analyze it, or whatever
17:17 whiteknight If we try to do it the other way around, where the embedder calls the compiler, and the compiler calls libparrot, the compiler is going to need a pretty big API of it's own
17:20 NotFound The compiler may need to call libparrot, :immediate subs for example.
17:23 cotto_work It makes me really happy to see what the Rakudo hackers are building on top of Parrot.
17:27 atrodo cotto_work> ping
17:27 cotto_work atrodo: pong
17:27 dalek tracwiki: v1 | whiteknight++ | IMCCTasklist
17:27 dalek tracwiki: http://trac.parrot.org/parrot/wiki/IM​CCTasklist?version=1&amp;action=diff
17:27 dalek tracwiki: v2 | whiteknight++ | IMCCTasklist
17:27 dalek tracwiki: More steps.
17:27 dalek tracwiki: http://trac.parrot.org/parrot/wiki/IM​CCTasklist?version=2&amp;action=diff
17:27 atrodo cotto_work> Tonight is the Lorito braindump, right?
17:27 cotto_work yes
17:27 atrodo I'm anxious to see what comes of it
17:28 atrodo (I would tell you that it kept me up all night, but that would a lie.  The dreams last night, however...)
17:29 cotto_work I'm looking forward to it.
17:30 * PerlJam hopes atrodo is really eager to see what comes of it.
17:31 atrodo PerlJam> Yes
17:35 cotto_work I don't think we'll get a fully-formed spec out of the meeting, but we will get much closer to one .
17:35 atrodo cotto_work> I am celebrating proto-lorito month this month.  But with this coming up, I've not worked on it as much as I wanted.
17:36 atrodo Hopefully after tonight I can start more on it in a more concrete direction
17:54 M_o_C joined #parrot
17:56 M_o_C_ joined #parrot
18:00 M_o_C left #parrot
18:06 zarchne left #parrot
18:15 M_o_C_ left #parrot
18:16 M_o_C joined #parrot
18:25 ligne joined #parrot
18:33 smash left #parrot
18:50 davidfetter joined #parrot
19:04 mtk left #parrot
19:10 mtk joined #parrot
19:14 davidfetter left #parrot
19:29 cotto_work moritz: ping
19:30 rfw joined #parrot
19:31 fperrad left #parrot
19:33 dalek winxed: r706 | NotFound++ | trunk/winxedst1.winxed:
19:33 dalek winxed: refactor Function hyererchy and fix subid generation
19:33 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=706
19:34 moritz cotto_work: pong
19:35 cotto_work moritz: can you review the gci task to translate http://parrot.org/foundation into German?
19:36 cotto_work http://socghop.appspot.com/gci/task/show/google​/gci2010/parrot_perl_foundations/t129141648612
19:38 moritz cotto_work: done. It's fine.
19:38 cotto_work thanks
19:42 dngor left #parrot
19:44 Yuki`N joined #parrot
19:45 cotto_work hi Yuki`N
19:45 Yuki`N Hi.
19:46 Yuki`N I submitted my work to melange.
19:47 dngor joined #parrot
20:06 whiteknight This IMCC crap keeps getting uglier and uglier every time I look at it
20:06 cotto_work Yuki`N: approved
20:07 Yuki`N Thanks.
20:07 whiteknight compiling a .pir file causes :init and :immediate (and :postcomp, if that still exists) subs to trigger EXCEPT when we compile it through the load_bytecode op, in which case on the :load ones are triggered
20:08 whiteknight only the :load ones*
20:08 cotto_work Now we have 4 of the top 6 gci students contributing to Parrot.  This is kind of amazing.
20:09 whiteknight cotto_work: isn't it?
20:09 whiteknight I need to make more tasks!
20:09 cotto_work There's a handful if you look for the gci tag in our ticket queue.
20:10 whiteknight how do you view just the tickets with a particular tag?
20:11 cotto_work view tickets->custom query-> filter for keyword
20:11 dalek tracwiki: v2 | whiteknight++ | CompilerInterfaceDesign
20:11 dalek tracwiki: redo this page, Add handling of :load/:init. We should be able to tell the compiler to trigger one or the other. Remove literal list of method names, reduce to a list of concepts.
20:11 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Compile​rInterfaceDesign?version=2&amp;action=diff
20:11 cotto_work http://trac.parrot.org/parrot/query?col=id&​amp;col=summary&amp;col=status&amp;col=owne​r&amp;col=type&amp;col=priority&amp;col=mil​estone&amp;keywords=~gci&amp;order=priority
20:19 sorear let's add src/pmc/IMCC.pmc, and require all access to IMCC to go through that
20:19 sorear create an IMCC pmc and stash it in the compiler hash
20:19 sorear it has to implement VTABLE_invoke, obviously
20:20 cotto_work there'd be a lot of fakery involved, but that sounds like the kind of interface we'll want other compilers to use.
20:21 sorear of course IMCC.pmc will have almost no code
20:22 sorear it'll just call a bunch of C functions elsewhere
20:26 Yuki`N I was going to try for another 5% to the string PMC but all the methods that aren't covered are inaccessible from PIR.
20:26 moritz are they called at all?
20:27 cotto_work aloha, coverage?
20:27 aloha cotto_work: coverage is http://cv.perl6.cz or http://tapir2.ro.vutbr.cz/cover/cover-results/
20:27 sorear It shouldn't be possible to have a string PMC method be inaccessible
20:28 cotto_work Some of those VTABLE functions need to go away.
20:29 cotto_work You should be able to test unescape pretty easily
20:29 cotto_work share_ro and substr probably don't need to continue existing
20:30 cotto_work You could also make sure the exception conditions get hit.
20:30 * cotto_work goes afk for lunch
20:30 NotFound There is a ticket for the substr vtable
20:32 jan left #parrot
20:35 jan joined #parrot
20:39 whiteknight I think I'm going to have to start a pretty big refactor soonish
20:40 whiteknight I'm going to move all functionality from libparrot that explicitly uses IMCC, and move it all into a die/ folder
20:40 whiteknight so die/in_a_fire.c for example
20:41 whiteknight then we go through the list, piece by piece, either reimplementing items to not rely on IMCC or eliminating them entirely
20:41 whiteknight and when the file is empty, we rejoice
20:41 Yuki`N I'm not quite sure how to make the exception conditions get hit. :P
20:41 whiteknight Yuki`N: which conditions? line numbers?
20:41 Yuki`N Umm
20:42 whiteknight or what file/function are you in?
20:42 Yuki`N src/pmc/string.pmc
20:42 Yuki`N 675 and 735
20:42 aloha 1410
20:44 whiteknight for the one on 675, use a non-ascii literal in PIR with the trans method
20:44 whiteknight so $P0.trans(unicode:"whatever", ...)
20:44 whiteknight Of course now that I look at it, that method is stupidly named if it only accepts ASCII
20:45 whiteknight for the one on 735, do the same technique
20:45 whiteknight use unicode: at the beginning of the string to force it to be non-ASCII and that should trigger it
20:45 whiteknight (Again the function is poorly named)
20:45 Yuki`N Oh.
20:45 Yuki`N That's cool.
20:46 whiteknight very cool
20:46 whiteknight Thanks for the help, Yuki'N
20:46 Yuki`N And yes the unescape function is actually simpler than I though now that I look at what unescape actually does.
20:46 Yuki`N No problem.
20:46 bluescreen left #parrot
20:46 whiteknight yeah, it's deceptive
20:46 Yuki`N I assume I should catch the exception thrown.
20:46 Andy joined #parrot
20:49 whiteknight yeah
20:55 dukeleto Yuki`N++ # adding test coverage!
20:55 dukeleto Yuki`N: you should also add yourself to CREDITS in your next pull request
20:56 dukeleto karma Yuki`N
20:56 aloha Yuki`N has karma of 0.
20:56 Yuki`N xD k.
20:56 dukeleto Yuki`N: when you are in CREDITS, our bots keep track of all your ++'s
20:56 dukeleto Yuki`N: which is called "karma"
20:56 Yuki`N Ah.
21:03 perlite left #parrot
21:04 perlite joined #parrot
21:05 bluescreen joined #parrot
21:10 Yuki`N <Yuki`N> METHOD trans(STRING *src, PMC *table)
21:10 Yuki`N <Yuki`N> What PMC is `table' supposed to be?
21:12 whiteknight that's a really good question. Are there any other examples of the trans method being used in the test suite?
21:12 Yuki`N Hmm.
21:13 Yuki`N Looks like it's a FixedIntegerArray.
21:13 whiteknight weird
21:15 Yuki`N Are the .t files UTF-8?
21:16 whiteknight they might be
21:16 Yuki`N Just wondering; I realized I didn't actually need UTF-8 text.
21:17 whiteknight if you specify unicode:, the assembler will automatically setup the encoding
21:17 Yuki`N Yeah.
21:19 Yuki`N So there's already a ticket for substr?
21:19 dukeleto Yuki`N: take a look at trac.parrot.org
21:19 Yuki`N And how does MULTI INTVAL is_equal(PMC *value) work?
21:20 Yuki`N MULTI vs VTABLE.
21:20 dukeleto Yuki`N: MULTI means it is a multimethod
21:20 dukeleto Yuki`N: which means various versions of the function exist, depending on what the input argument types are
21:21 dukeleto Yuki`N: MULTI tells parrot this is not the only definition of the function, others for other input types could exist
21:21 Yuki`N Ah.
21:21 dukeleto Yuki`N: that is how I understand it, at least
21:21 whiteknight that's how it is
21:22 Yuki`N Well I see.
21:22 Yuki`N VTABLE INTVAL is_equal(PMC *value)
21:22 Yuki`N MULTI INTVAL is_equal(PMC *value)
21:22 Yuki`N The latter is not covered at all, although it's only a return;
21:23 whiteknight those two are in the same file?
21:23 Yuki`N Yeah.
21:23 whiteknight are there any other MULTIs for is_equal?
21:23 Yuki`N Nope.
21:23 whiteknight that's a bug. Delete the MULTI
21:23 Yuki`N The whole method?
21:23 whiteknight hold on, let me double-check
21:23 Yuki`N K.
21:24 whiteknight yeah, delete it. It's only 3 lines
21:24 whiteknight Good job finding that!
21:24 Yuki`N xD all in the name of test coverage.
21:25 whiteknight we can always increase coverage in two ways: add more tests or delete more code
21:25 Yuki`N Indeed.
21:25 whiteknight sometimes the second option is better :)
21:26 Yuki`N So I believe now the only uncovered code are the two VTABLE methods
21:26 Yuki`N void substr
21:26 whiteknight okay, it's time for me to pack up and go home. goodnight
21:26 Yuki`N and share_ro
21:27 Yuki`N Night.
21:27 whiteknight left #parrot
21:27 dukeleto Yuki`N: are you still working on the same task?
21:27 dukeleto Yuki`N: i need to give you a new task :)
21:27 dukeleto Yuki`N: do you want to work on tests for another subsystem?
21:28 Yuki`N Umm, perhaps. :P
21:28 Yuki`N I already more than covered the 5% from my last addition of tests.
21:28 Yuki`N I'm going for ~95% now I think.
21:28 dukeleto Yuki`N: that sounds great. I want you to get credit for that, though.
21:29 dukeleto Yuki`N: I can make a new task, so you get more GCI points, since you are doing much more work than that task requires. But if you don't care, that is fine with me :)
21:29 dukeleto Yuki`N: i am very excited that you are increasing our test coverage so much! This is awesome
21:29 dukeleto A GCI student just translated our README to Polish!
21:30 Yuki`N xD I saw that pull request.
21:30 Yuki`N If it's not too much trouble to make another task, sure.
21:30 Yuki`N And I'm open to increasing coverage for other PMCs too.
21:30 dukeleto Yuki`N: of course! I want you to get the credit you deserve
21:30 Yuki`N I mean, I took the trouble of learning PIR for one task.
21:30 Yuki`N :P
21:31 dukeleto Yuki`N: are there any subsystems that interest you? Anything that needs more test coverage is fine for you to work on
21:31 dukeleto Yuki`N: now that you know PIR, we really want you to work on more tasks! ;)
21:31 Yuki`N Not really, I'll look through the list in a bit.
21:31 dukeleto Yuki`N: would like to send a pull request for what you have now? I will create a new task right now.
21:32 Yuki`N I'm just checking to make sure I really did cover those methods
21:32 Yuki`N Once I typo'd eq_num into eq_str and I ended up re-covering eq_str.
21:33 cotto_work Yuki`N: you can always run the test under gdb and set a breakpoint
21:33 dukeleto Yuki`N: are you running "make cover" ?
21:33 Yuki`N Yeah.
21:33 dukeleto cotto_work: we have our REAME in Polish!
21:33 cotto_work Is it polished Polish?
21:33 dukeleto cotto_work: i only created the task last night and it is done already!
21:33 dukeleto tadzik: ping
21:34 dukeleto aloha msg tadzik can you take a look at this? https://github.com/parrot/parrot/pull/22
21:34 aloha dukeleto: OK. I'll deliver the message.
21:35 Yuki`N Hmm.
21:35 Yuki`N make library_tests failed.
21:36 M_o_C left #parrot
21:36 dukeleto Yuki`N: feel free to make a gist of the full error output and we can look at it
21:36 dukeleto Yuki`N: you only added tests, correct?
21:36 Yuki`N I only added tests.
21:36 dukeleto Yuki`N: ignore test failures that happen as part of "make cover"
21:36 Yuki`N Ah ok.
21:36 dukeleto Yuki`N: are these tests failing under "make cover" or "make test"
21:36 Yuki`N Make cover.
21:37 Yuki`N In the profiling stage.
21:37 dukeleto Yuki`N: our test coverage stuff makes some tests fail because stuff gets printed out and makes tests fail. You can ignore those.
21:37 Yuki`N Ah.
21:37 dukeleto Yuki`N: that is Less Than Awesome, but that is how it is right now.
21:38 Yuki`N src/pmc/string.pmc95.395.3 :D
21:38 dukeleto Yuki`N: awesome!
21:39 dukeleto Yuki`N: i have a new task for you, please do a "submit" action on the task you have now
21:39 dukeleto Yuki`N: http://socghop.appspot.com/gci/task/show/google​/gci2010/parrot_perl_foundations/t129193070805
21:40 kid51 joined #parrot
21:40 kid51 I have a colleague who can review the Polish translation of the README submitted earlier today.
21:41 kid51 I will not be around tonight.
21:41 Yuki`N dukeleto, sent a pull request, and requesting claim on that task.
21:41 kid51 Can someone email me or msg me as to what the next steps would be if colleague either approves or wants corrections?  Thanks.
21:41 dukeleto Yuki`N: i see. the old task is already closed. Good work!
21:41 dukeleto Yuki`N: claim that new task now! Before someone else does.
21:42 dukeleto kid51: what now?
21:42 Yuki`N Claimed.
21:42 dukeleto Yuki`N: approved.
21:43 dukeleto Yuki`N: have fun!
21:43 Yuki`N Submitted for review. :3
21:43 dukeleto Yuki`N: wow!
21:43 cotto_work Yuki`N: how responsive have other orgs been?  I'm wondering if we're doing something special to get so many contributions.
21:43 dukeleto cotto_work: it is because I am so awesome...
21:44 cotto_work dukeleto: quite possible
21:44 Yuki`N cotto_work, I've found that Parrot has had at least one mentor on 24/7.
21:44 Yuki`N And all the mentors are familiar with the subject matter of most of the tasks.
21:44 dukeleto Yuki`N: can you make that commit into a pull request?
21:44 Yuki`N I have already. :P
21:44 dukeleto Yuki`N: you are fast!
21:44 Yuki`N Indeed.
21:44 atrodo I agree, it's because of dukeleto
21:45 dukeleto Yuki`N: why did the is_equal MULTI get deleted?
21:45 Yuki`N [16:23:11] <@whiteknight> those two are in the same file?
21:45 Yuki`N [16:23:15] <Yuki`N> Yeah.
21:45 Yuki`N [16:23:28] <@whiteknight> are there any other MULTIs for is_equal?
21:45 Yuki`N [16:23:33] <Yuki`N> Nope.
21:45 Yuki`N [16:23:39] <@whiteknight> that's a bug. Delete the MULTI
21:45 mtk left #parrot
21:45 dukeleto Yuki`N: sounds good to me.
21:45 Yuki`N Yep.
21:46 dukeleto Yuki`N: i completed your task. You need a new task now!
21:46 dukeleto Yuki`N: do you have one in mind?
21:46 Yuki`N Indeed I do.
21:46 Yuki`N Let me look through the list.
21:46 dukeleto Yuki`N: go claim it! And let me know when you do.
21:46 atrodo Can students only have one task at a time?
21:46 Yuki`N Yeah.
21:47 Yuki`N dukeleto, the scalar pmc has some pretty dreadful test coverage.
21:47 Yuki`N Below 50%.
21:47 cotto_work technically they're also supposed to work on only tasks that they've claimed.
21:47 Yuki`N Technically.
21:47 Yuki`N I find that I'm usually waiting on mentors so I usually am working on like 3 tasks at once.
21:47 Yuki`N Time zones and the like.
21:48 cotto_work I'd like to kill scalar, but I haven't entirely convinced myself that it's a good idea.
21:49 Yuki`N Oh, so it's not a good candidate to improve coverage for?
21:50 dukeleto Yuki`N: you are very smart to work on things like that
21:50 Yuki`N Thankfully I've only had a task stolen from me once.
21:50 bluescreen left #parrot
21:50 Yuki`N And I hadn't started work on it at least.
21:50 dukeleto Yuki`N: heh :) Which PMCs have the lowest coverage, other than Scalar ?
21:51 Yuki`N socket has some pretty low coverage, but understandably so.
21:51 cotto_work I made a list of PMCs that would be good for gci students to work on.  I wish I could remember where I put it.
21:51 dukeleto Yuki`N: how about Complex PMC ? Would you like to work on that ?
21:51 dukeleto Yuki`N: that really needs to have 100% test coverage
21:51 Yuki`N Complex numbers?
21:52 dukeleto Yuki`N: yes. Also, the Integer PMC
21:52 Yuki`N I suppose I can.
21:52 dukeleto Yuki`N: and the Iterator PMC
21:52 Yuki`N Complex, Integer, and Iterator.
21:52 Yuki`N I'll probably tackle the Integer PMC first.
21:52 dukeleto Yuki`N: i will make tasks for them. Making an integer PMC task now.
21:52 Yuki`N Thanks!
21:52 cotto_work OrderedHash might be a good candidate
21:53 Yuki`N One task per PMC, I suppose?
21:53 cotto_work at least one task per pmc
21:54 cotto_work you just got two for one, didn't you? ;]
21:54 Yuki`N That is true. :3
21:54 Yuki`N Integer is about 55% right now.
21:55 Yuki`N Something similar to 75%, 85%, 90% seems like a fair graduation, if not an excess of tasks.
21:55 Yuki`N Perhaps only two tasks, but who knows.
21:57 dukeleto Yuki`N: http://socghop.appspot.com/gci/task/show/google​/gci2010/parrot_perl_foundations/t129193177076
21:57 dukeleto Yuki`N: that is for 10% increase in coverage of Integer PMC
21:57 dukeleto Yuki`N: i can give you as many tasks it takes to get Integer PMC to 100%
21:57 Yuki`N That's a generous amount. :P
21:57 dukeleto Yuki`N: Tasks need to get harder, or you won't have the appropriate amount of fun :)
21:58 Yuki`N My first suggestion was about a 20% increase. xD
21:58 Yuki`N I see >Currently, the Integer PMC is at 83% code coverage
21:58 Yuki`N ;P
21:59 Yuki`N PIR is fun, but at the same time a unique challenge.
21:59 dukeleto Yuki`N: it has 83% already? You sure?
21:59 Yuki`N No.
21:59 Yuki`N It's 55%
21:59 Yuki`N But the task says 83.
21:59 dukeleto Yuki`N: duh! My bad. I will fix that.
21:59 Yuki`N I like bytecode intermediate languages just because they blend an ASM feel with higher-level features.
22:00 Yuki`N Like MSIL is fun to write short programs in; unfortunately there is no real benefit to writing code in MSIL vs C#, unlike ASM vs C.
22:01 dukeleto Yuki`N: what kinds of assembly have you done before?
22:01 Yuki`N I've looked at and can kinda read x86 asm.
22:01 Yuki`N Tried learning SIMD extensions for some VideoLAN tasks but that failed horribly.
22:02 Yuki`N I'm rather good at MSIL. I've done some tasks for the Mono Project involving code analysis, and that helped a ton.
22:02 Yuki`N And of course now I'm familiar with the Parrot VM and PIR.
22:02 dukeleto Yuki`N: fixed the task info
22:03 dukeleto Yuki`N: that is awesome to hear! We have lots of tasks to keep you learning and having fun. Just ask me about stuff that you want to work on, if there isn't a task about it.
22:03 dukeleto Yuki`N: i just added tasks for the Iterator and Complex PMCs too
22:03 Yuki`N K.
22:03 Yuki`N Requesting claim on the Integer task.
22:06 dukeleto Yuki`N: approved.
22:15 kid51 left #parrot
22:16 Yuki`N How do I use gdb to run a PIR file, btw.
22:21 moritz gdb parrot
22:21 moritz run yourfile.pir
22:21 sorear moritz: gdb --args parrot yourfile.pir # best option ever
22:22 moritz sorear: I didn't know about that, thanks
22:22 Yuki`N And how would I bp at a specific pir line.
22:22 moritz I don't think you can't
22:22 moritz because gdb is not a PIR-level debugger
22:23 Yuki`N Oh.
22:23 Yuki`N I'm trying to trigger integer overflow.
22:23 Yuki`N And it's not working.
22:23 sorear $I0 = 1
22:23 sorear again:
22:23 sorear say $I0
22:23 sorear $I0 = $I0 * 2
22:23 sorear goto again
22:24 Yuki`N There we go.
22:25 dukeleto Yuki`N: there is something called parrot_debugger, but it may still have some bugs itself :)
22:25 Yuki`N Ah.
22:25 dukeleto Yuki`N: it can step through PIR, in theory
22:33 dmalcolm left #parrot
22:48 whiteknight joined #parrot
22:53 whiteknight heh. It looks like one of our GSoC students is a 4chaner
22:53 NotFound Integer registers are not Integer PMC
23:11 bluescreen joined #parrot
23:11 dukeleto whiteknight: what now?
23:14 dukeleto cotto_work: ping
23:36 nwellnhof joined #parrot
23:36 nwellnhof Yuki`N: have you seen my comment to your pull request?
23:38 whiteknight dukeleto: githubber nol888 (who opened a pullrequest with us a while ago) has a 4chanscraper project
23:39 dukeleto whiteknight: ah
23:40 * dukeleto is excited about the lorito hacking session tonight
23:42 whiteknight ah right, I forgot about the Lorito magic that is happening soon
23:43 dukeleto ~2ish hours until lorito meeting
23:43 nwellnhof is a lorito meeting scheduled?
23:45 nwellnhof in #ps?
23:45 whiteknight cotto, chromatic, and allison are having an in-person meeting
23:45 dukeleto nwellnhof: chromatic, cotto, allison and I will be talking about Lorito and creating an action plan, methinks.
23:47 allison nwellnhof: it's f2f, but we'll be on IRC too, and on a conf call if anyone wants to join by phone
23:54 sorear I have to leave before the meeting

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced