Parrot 2.10.1 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Parrot Developer Summit 2300 UTC today | Please test rakudo with bleeding edge parrot!
Set by moderator on 5 December 2010.
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.
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.
Matt221 cotto_work: nope, just trying to get some tasks done for GCI on the embed_api2 branch
00:01 whiteknight joined
whiteknight can't tell if spam coming to the mailing list is getting more clever, or less clever 00:03
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
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.
(him being Matt221)
00:12 hercynium left 00:27 kid51 is now known as kid51_at_dinner 00:33 bluescreen left 00:48 Hunger joined 00:53 bluescreen joined
Coke we have some ubuntu users in here, yes? 00:57
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
00:58 kid51_at_dinner is now known as kid51
cotto_work Coke: yes 00:58
Coke whiteknight: last you heard from me, it was broken on os x. ;)
kid51 Coke: me but only at $job
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?
kid51 Of course, there's always a chance that a branch will build on 10.4 but not on 10.5 or 10.6.
Coke or do I just get to wait for the next point release?
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?
kid51 Coke: On my $job box, where I passively hit the Install Updates button, I get kernel updates every month or so.
Coke kid51: hokay. 01:00
danke.
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'
Coke make: *** [runtime/parrot/library/PCT/PAST.pbc] Segmentation fault 01:01
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 nopaste.snit.ch/26827
Coke lots of warnings, too. (and that's not with --cage) 01:04
01:04 Yuki`N joined, Hunger left
Coke I wonder if kid51's is failing the same way but just happens to finish on src/install_config.o 01:05
(I'm getting that warning also)
01:05 Hunger joined
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
Date: Mon Dec 6 19:26:12 2010 -0500
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 tapir2.ro.vutbr.cz/cover/cover-results/
kid51 Yuki`N: Can't say for sure, but probably gcov
Coke what revision does it suggest?
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.
Yuki`N I see.
That's good to know.
Coke kid51: no clue.
01:09 theory left
Coke kid51: because that's what's in .parrot_current_sha1 01:10
uh... is that file generated? 01:12
I just did an ack -Qa for that file, and it doesn't ever seem to be set anywhere.
ah, lib/Parrot/SHA1.pm ... 01:13
um. why are we caching that value? 01:16
that means if we ever do a git up, we MUST do a realclean to catch the latest version. 01:17
s/git up/git pull/
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.
rebuilding embed_api2 branch... 01:20
cotto_work: want me to open a ticket about not caching that file?
cotto_work Coke: sure. 01:21
nopaste "coke" at 192.168.1.3 pasted "embed_api build failure on OSX" (1020 lines) at nopaste.snit.ch/26828 01:22
01:24 kid51_ joined
cotto_work dukeleto: ping 01:26
01:27 kid51 left
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
so I did not, in fact, realclean first. I still contend I shouldn't have had to.
(that embed_api2 build had a manually realclean in front, though.) 01:30
01:32 lucian left 01:33 theory joined 01:34 theory left
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.
Coke why do that? doesn't git give you an easy way to get the latest sha1? 01:36
01:36 theory joined
dalek TT #1884 created by coke++: don't cache .parrot_current_git_describe 01:39
TT #1884: trac.parrot.org/parrot/ticket/1884
01:44 whiteknight left
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:52
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:56
fbrito Yuki`N: take a look at docs.parrot.org/parrot/devel/html/index.html (PIR Book) 01:58
Yuki`N: it helped me a lot :)
Yuki`N So each PMC has a set of "vtable" functions 02:03
And depending on which PIR opcode is called, the appropriate function is used?
plobsing some opcodes invoke vtables, yes. others do more mundane things like copy pointers between registers. 02:14
Yuki`N example being, how do I choose between is_equal, is_equal_num, and is_equal_string? 02:16
cmp $I0, $P0, 1 vs cmp $I0, $P0, "1"?
02:16 Matt221 left
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:20
dalek rrot/tt532_headerizer_refactor: 3129b83 | jkeenan++ | / (2 files):
Refactor some code from within Parrot::Headerizer::Object into internal method

test setup code with a subroutine.
02:30
03:00 fbrito left
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
Not even any .pmc files.
kid51_ runs 'make cover' for the first time! 03:12
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:14
Yuki`N I *think* so. 03:15
I'm not quite sure how the online coverage tool works, because it has data for the .pmc files. 03:16
plobsing it should just be running make cover 03:17
Yuki`N Weird. 03:19
plobsing aloha, coverage?
aloha plobsing: coverage is cv.perl6.cz or tapir2.ro.vutbr.cz/cover/cover-results/
plobsing Yuki`N: examining the vutbr.cz site, the script to run the coverage appears to be tapir2.ro.vutbr.cz/cover/script/makecover.sh.txt 03:20
Yuki`N It does appear to only call make cover.
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
I think I've increased the string.pmc coverage by ~5%.
kid51_ Yuki`N: How would running make cover shed light on missing Perl modules? 03:22
Wouldn't a simple 'make test' do that?
Yuki`N ...true.
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
kid51_ Yuki`N: I've done a lot of coverage testing on the configuration and build tools. 03:25
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.
kid51_ Fortunately, that does *not* appear to be the case here.
Unfortunately, 'make cover' is set up to produce .html output by default. 03:27
Which doesn't help everybody.
This is a useful overview of the coverage: 03:36
cover -summary 2>/dev/null | grep '^src\\/' | grep -v creating
kid51_ must sleep 03:37
03:37 kid51_ left
dukeleto waves from PDX.pm 03:43
Yuki`N Whoo.
string.pmc is now at 87.6% coverage. 03:44
I think I can up that a bit though./
dukeleto Yuki`N: awesome!
Yuki`N: also, welcome!
Yuki`N xD hi. 03:45
Wow silly copypaste typo 03:46
In the sub testing cmp_num I actually used cmp_str.
I was wondering why cmp_num wasn't shown as covered.
dukeleto Yuki`N: what exactly is your question? 03:51
Yuki`N: i am not sure i understand 03:53
cotto_work: i am not sure i understand your question about .parrot_current_rev 03:55
Yuki`N: are you working in a github fork? 04:00
Yuki`N dukeleto, yes, but I haven't committed yet. 04:04
My question resolved itself.
Coverage up to 91% :) 04:06
dukeleto Yuki`N: awesome!
Yuki`N: i can make you another task for another 5% if you want
Yuki`N: you only need to get it to 88% for this task :)
Yuki`N Ah.
Well, I think I can bump it up another 3% if I figure out how to call methods from PIR 04:07
e.g. METHOD is_integer(STRING *src) {
dukeleto Yuki`N: awesome! Some methods might not be callable from PIR, but I am not sure which aren't and which are
Yuki`N: that is part of the fun :) 04:08
Yuki`N xD
Indeed.
dukeleto Yuki`N: what is your name on github?
Yuki`N github.com/nol888/parrot/commits/master 04:09
nol888
dukeleto Yuki`N: are you ready to send a pull request?
Yuki`N I may go for the extra 2%, but as it stands I can send a pull request. 04:10
dukeleto Yuki`N: does "make fulltest" pass for you? 04:13
Yuki`N It does.
The only 'not ok' tests have comments after them.
So I'm assuming that means ignore result.
dukeleto Yuki`N: they are probably "TODO" tests, which are allowed to fail 04:14
Yuki`N: awesome, send your pull request and I will check it out
Yuki`N Sent.
Also claiming the task on Melange.
dukeleto, If no PIR opcode calls a VTABLE method, can I still call it via callmethod? 04:21
dukeleto Yuki`N: that is a great question 04:23
Yuki`N: want to try and see? :) 04:24
Yuki`N: i don't know off the top of my head
Yuki`N I'll try, lol.
dukeleto Yuki`N++
Yuki`N What's a return continuation? 04:26
04:26 adu joined
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.
dukeleto Yuki`N: and you can pass it around to other things
Yuki`N Oh, I see.
Is it ok for me to just use callmethodcc? 04:30
dukeleto Yuki`N: in your string tests?
plobsing Yuki`N: you should use the syntax sugar PIR provides for function and method calls 04:31
$N0 = $P0.'method-name'($S0, $I0)
Yuki`N Oh that's nice. 04:32
Does it work for VTABLE functions as well? 04:34
dalek rrot: 19648f1 | plobsing++ | / (2 files):
eliminate static numbering of ops

static numbers for ops has no meaning. also, opsc generates number automatically now, rendering these completely unecessary.
also eliminate a nasty cast (op_func_t* => void** => (void*)() => op_func_t*)
04:35
rrot: 1660edd | plobsing++ | / (2 files):
eliminate op documentation mentioning defunct CORE_OPS_*
plobsing Yuki`N: vtables and methods are distinct. you can't call vtables using the method call mechanism.
Yuki`N Oh.
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.
dukeleto, can you accept my claim to the melange task? www.google-melange.com/gci/task/sho...9176557195 04:38
cotto ~~ 04:55
dukeleto, ping
adu Yuki`N: so there are opcodes that are never used? 05:00
Yuki`N No, there are vtable functions that are never used.
dalek rrot: 352fa3c | plobsing++ | src/nci/framebuilder.pod:
add some documentation about pluggable framebuilder subsystem
05:01
rrot: 1ebb549 | plobsing++ | MANIFEST:
mk_manifest_and_skip
05:14 simcop2387 left
Yuki`N dukeleto, unfortunately there's no simple way to cover the rest of the code in string.pmc 05:15
05:19 Yuki`N left 05:37 Kapace joined 06:22 bluescreen left 06:33 p_l|dmp is now known as p_l|backup 06:45 allison left 06:46 fperrad joined
Kapace Hello, Im am a Google Code-In student and I have claimed this task: socghop.appspot.com/gci/task/show/g...9182043556 06:57
this is what I have so far, if anyone could take a quick look: dpaste.com/284704/ 06:58
sorear Is load_bytecode "xxx.pir" deprecated yet? 06:59
cotto Kapace, I don't see anything obviously wrong with it, though you should be loading the .pbc file, not the .pir. 07:01
Kapace ok, brand new to parrot. whats a pbc file? compiled pir? 07:02
cotto yes
Kapace so, it doesn't do the automatic loading like python does with pyc files? 07:03
sorear Parrot is a multi-language system 07:04
If you load the .pir, you require the PIR compiler to be loaded
Yes, it will use the PBC if available, but it has to hit the PIR compiler first
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
But eventually it's going to be separated out
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.
Kapace sorry if I'm being reluctant to go for this, but it goes against my python nature 07:07
ok, i guess that makes sense
sorear In Python you have 1 compiler
cotto we go both with and against many natures
Kapace i think that makes parrot a very interesting project
cotto I'm excited to see where we can take it. 07:08
p_l|backup PIR is th txtual representation while PBC files contain compiled bytecode, right? 07:13
*the textual
bacek_at_work p_l|backup, nope. PASM is textual representation. PIR is little bit higher. 07:14
but yes, PBC is Parrot ByteCode
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?
(on parrot, that is)
cotto p_l|backup, not yet. 07:19
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
well, in nqp-rx which compiles down to pir
07:27 simcop2387 joined
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:27
(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.
We have some major performance (and other) issues to overcome before we can call it production ready. 07:29
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:31
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:32
07:35 theory left
Kapace should MappedByteArray have a method returning the filesize, or should I find that using other utility functions in the parrot library? 07:35
cotto Kapace, you can use elements $P0 07:36
that will return the number of bytes in the array 07:37
Kapace ah, didn't see that
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
Kapace, use print
Kapace awesome, thanks
nopaste "cotto" at 192.168.1.3 pasted "suggested changes in md5sum" (13 lines) at nopaste.snit.ch/26832 07:43
cotto Kapace, ^
not quite complete, but it should be doable from there 07:44
Kapace ah, yes thanks
cotto nice work so far 07:45
nopaste "cotto" at 192.168.1.3 pasted "your program at work" (8 lines) at nopaste.snit.ch/26833 07:46
Kapace :D 07:47
cotto claim accepted, btw. You may now begin work. 07:49
07:50 adu left
Kapace haha 07:50
sorear why only the first 4 bytes? 07:51
Kapace because my test_data only had 4 bytes at the time, and I didn't know how to get filesize 07:52
its fixed now of course
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
so i started to read it, and it describes the algorithm..
and I may have gotten carried away :P 07:54
07:54 TypeNameHere_____ left
cotto If you want to implement it knowing that we already have a working and tested version, that's fine too. 07:54
Kapace I would, but I'm a little rushed to get as many tasks done before the contest ends ;) 07:56
cotto your call 07:57
07:57 allison joined
Kapace how's it looking now: dpaste.com/284738/ (action: dpaste.com/284739/ ) 07:58
cotto Google likes us better than these guys: www.loritomgt.com/
Take that, nonsensical artist management people. 07:59
Kapace lol: "This web site is best viewed
with a resolution of
1024 X 768"
cotto It's a highly competitive world out there. 08:00
Kapace, nice work 08:01
stick it on melange and I'll give you a pass.
Kapace awesome, thanks: socghop.appspot.com/gci/task/show/g...9182043556 08:04
cotto done 08:06
Kapace great, I look forward to doing more parrot tasks :D
cotto me too 08:07
rfw oh dear god that website 08:09
Kapace rfw, oh hey rfw
rfw hey Kapace
Kapace melange giving you trouble?
rfw no, loritomgt.com is though
my eyes hurt
Kapace oh lol
rfw well, melange is always giving me trouble 08:10
so i selectively ignore that
Kapace cotto, it /is/ slow... i doubt its the MappedByteArray though 08:12
sorear more boys from Brazil? 08:13
Kapace but I'll compare with normal file 08:14
cotto sleeps, only about an hour late 08:15
Kapace good night!
cotto, quickly made a normal file io test and its still slow.. 08:23
details: dpaste.com/284749/ (main_m is MappedByteArray, main_nfio is normal file io) 08:25
08:42 contingencyplan left 08:54 jsut_ joined 09:00 jsut left
NotFound That program is using MappedByteArray to build a string, it doesn't exercise it's byte addressing ability. 09:15
09:24 rfw left 09:31 lucian joined
bacek aloha, humans 10:15
dalek rrot: ffa881f | (Gerd Pokorra)++ | t/pmc/string.t:
Merge branch 'master' of github.com/nol888/parrot into nol888-master
11:13
11:32 fbrito joined 11:39 fbrito left 12:00 zby left 12:03 bluescreen joined
dalek rrot: b1b79f3 | (Gerd Pokorra)++ | t/pmc/string.t:
remove whitespace
12:10
12:43 smash joined
smash hello everyone 12:43
tadzik hello smash 12:51
12:59 Kovensky left 13:09 Kovensky joined 13:19 lucian left
Coke HULK 13:33
ENOPURL.
aloha, HULK is <reply>HULK SMASH!
aloha Coke: Okay.
Coke aloha, hulk?
aloha Coke: HULK SMASH!
Coke close enough.
~~ smash.
13:36 whiteknight joined 13:38 p_l|backup left
whiteknight good morning, #parrot 13:43
14:35 bluescreen left 14:39 bluescreen joined
whiteknight src/packfile.c:Parrot_load_bytecode() is evil 15:02
not only does it load bytecode, but it also helpfully loads .pir and .pasm files too apparently
15:05 AzureStone left 15:10 AzureSto_ joined
cotto whiteknight, I approved the md5 task. I hope you don't mind. 15:11
whiteknight fine by me
I just assigned you a new RFC, I hope you don't mind :)
cotto fine by me 15:13
dalek TT #1885 created by whiteknight++: Parrot_load_bytecode should only load bytecode 15:15
TT #1885: trac.parrot.org/parrot/ticket/1885
rrot: 7842d27 | cotto++ | examples/pir/md5sum.pir:
add md5sum tool using MappedByteArray from Kapace++'s gci task
cotto yuck 15:16
whiteknight yuck? 15:17
Coke I posted a suggestion on the #1885.
cotto referring to the behavior mentioned in that ticket 15:18
whiteknight I want to start putting together an RFC for a standard interface for compiler objects 15:19
then I want to move IMCC over to the new interface 15:20
cotto a fire-based interface, perhaps? 15:22
whiteknight I think a compiler should have .compile_string, .compile_file, .eval_string, .eval_file, .validate_string, and .validate_file methods 15:23
.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.
whiteknight so .validate_ would parse the input to see if it parsed okay, or would do magic-number and header checking, etc
Coke: what do you mean?
Coke I mean, don't change the behavior of existing functions. 15:25
whiteknight Coke: even if they are stupid and misleadingly-named?
Coke yes.
particle that's what deprecation is for. 15:26
whiteknight particle: this would have to happen after a deprecation boundary, yes
Coke whiteknight: you can't deprecate something /in place/
you need to have the alternative in place ahead of time so people can switch.
whiteknight we have the alternative in place right now: the PIR compreg
people can use that, and they should use that 15:27
load_bytecode is being abused for this behavior, and the abuse should stop
Coke gives up.
whiteknight Coke: I'm not sure what other kind of alternative you think we need
15:27 Coke left
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.
whiteknight Notfound: so maybe we don't need that part 15:32
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
but that may be a little bit too magical and error-prone
.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
I'm trying to borrow existing interfaces and names from HLLCompiler as much as I can and still keep it general
NotFound A name for the role may also be nice. 15:35
whiteknight yeah. I was thinking does "compiler" is the most straightforward 15:36
NotFound WinxedCompiler isa HLLCompiler -> false
whiteknight Of course
if we create one standard interface, everybody is going to need to change a little bit
NotFound Yes, and "does" should be the way to declare we implement that interface. 15:37
whiteknight right
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:38
15:39 Patterner left, Psyche^ joined
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
15:39 Psyche^ is now known as Patterner
cotto <3 15:41
15:42 dmalcolm joined
NotFound Maybe we can do a proof of concept with a Class, and later convert to a PMC if needed. 15:43
whiteknight NotFound: that's fine too, but creates a bootstrapping 15:47
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
NotFound For the proof of concept phase is not a problem. 15:49
whiteknight how is that not a problem? 15:53
actually, nevermind. We could work around that if you really want
we could override VTABLE_invoke on the new compiler object to continue with the old behavior too 15:54
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.
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:57
whiteknight I've been staring at this code and I think it would be pretty easy 15:58
I need to add an API function to handle compiler registration, but that's trivial
actually, I could set up a GCI task to do that (if bluescreen hasn't already done it)
bluescreen its done whiteknight 15:59
sorry
whiteknight :)
Yes, it is done, though I suspect there is a bug in it 16:00
16:00 theory joined
whiteknight parameter "type" is a Parrot_String, but later you cast it to a char* 16:00
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
the bigger task is to break IMCC out of libparrot, and have IMCC register itself like any other compiler would
that would make libparrot much smaller 16:02
and we can do that almost 100% if we add the new compiler interface PMC and use the new embedding API
NotFound Just don't put that hash in the interpreter. The library can store in in its namespace.
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
Perl6's eval("code", :lang(<foo>)) requires that
dalek tracwiki: v3 | whiteknight++ | APIFuncRenaming 16:04
tracwiki: trac.parrot.org/parrot/wiki/APIFunc...ction=diff
NotFound whiteknight: a library for loading and registering compiler, with its namespace inside ['parrot'] 16:05
The benefit is to get out of the interpreter parts that are not always needed. 16:06
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
there are other things we should cut out first. Open an RFC
16:07 AzureStone joined
NotFound I think the interpreter struct is already too bloated. 16:07
whiteknight no argument 16:08
cotto_work ~~
16:09 AzureSto_ left
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/*
(main.c, pbc_merge.c, pbc_dump.c, etc)
chromatic gave that idea a +1 a while back, but want to get more opinions before I jump on it 16:11
NotFound +1
cotto_work The only thing I'm not sure about is the name src/frontends/
whiteknight see, this is why I ask first :)
NotFound src/exe ? 16:12
cotto_work src/fe?
whiteknight I'm fine with whatever, but I would like to visually separate things that go in libparrot from things which do not
cotto_work absolutely
I could get used to whatever name you feel like using.
whiteknight you don't think src/fe is too obscure?
16:13 contingencyplan joined
cotto_work should it be under src ? 16:13
NotFound fe is faith in Spanish ;)
cotto_work we have compilers/ now
particle spell it out
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
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
particle nobody knows what fe/ is
cotto_work whiteknight: I mean that it should be under the root of the repo, not under src
NotFound An atom of iron.
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:15
cotto_work: so like frontends/* instead of src/frontends/*? 16:16
cotto_work yes
particle don't make the dir plural
whiteknight okay, that works fine for me. Subfolders under there?
particle: okay
particle src/pmcs/, src/gcs/ ...
cotto_work compilers/
whiteknight frontend/parrot, frontend/pbc_merge, frontend/pbc_dump? 16:17
NotFound All .c files are under src, except the ones in compilers/imcc
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/
(I'm not arguing for either name, just pointing out a parallel)
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
cotto_work I'd say "frontends", but the person implementing gets the most votes.
particle it'd be easier to fight for one over the other if our dirs were consistent in case 16:22
but they're not... quite.
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/
cotto_work Is it too late now? 16:24
particle it'd be pretty hard, but not impossible. 16:25
16:25 plobsing_ joined
particle it requires updates to things outside the repo, like websites and such 16:25
i'm not sure it's worth it.
16:25 Andy left
plobsing_ ≁≁ 16:27
whiteknight good morning plobsing_
I just aloha'd you an msg to your non-underscored username 16:28
plobsing_ reads logs
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.
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?
cotto_work there's some stuff in imcc
compilers/imcc/pbc.c for one
whiteknight I am having a hard time figing out where exactly pmc_freeze.c fits in
plobsing_ packdump.c, iirc, only implements stuff for pbc dump. I'd like to see that move out of libparrot eventually. 16:31
cotto_work: ah, but imcc/pbc.c only really makes pseudo-sense in the context of imcc
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
plobsing_ pseudo-sense because nothing in imcc truly makes any sense
cotto_work I got that. Nice wording.
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:32
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
whiteknight right
so we can be ginger about it for now
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
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)
whiteknight plobsing: that would be very nice, though I suspect it would be the hardest to accomplish. Especially for the PIR compreg 16:51
we can definitely give it a shot though
plobsing_ I didn't say all compilers need to implement it.
whiteknight ok
plobsing_ PIR implementation could be "throw new ['NotOnYourLifeException']" 16:52
dalek tracwiki: v178 | whiteknight++ | WikiStart 16:54
tracwiki: trac.parrot.org/parrot/wiki/WikiSta...ction=diff
whiteknight plosbing: is there a way to generate a .pbc file from PIR code? 16:55
pmichaud is suggesting in TT #1885 that there isn't
plobsing_ There is, but you can't readily get at it from PIR.
NotFound The idea, for me, is to provide a standarized way to do common things, not to force compiler doing anything we can imagine.
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?
plobsing_ new method on PIR compreg in anticipation of compiler API
whiteknight the PIR compreg is currently an NCI PMC pointing to a function in IMCC
plobsing_ compile-to-file should be part of compiler role as well
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
though that's probably way out in the long term
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:58
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
or, we should be able to do all those things
plobsing_ oh wait, we already have that. Eval.get_string()
whiteknight and that does...? 17:00
plobsing_ gives you a string containing the packfile
whiteknight and don't tell me it returns the stringified packfile
damnit
plobsing_ i could tell you otherwise, but I'd be lying
whiteknight a pity that lies would be so sweet 17:01
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.
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
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.
cotto_work NotFound: that's exactly what I want to do. 17:06
only have one implementation of packfiles (the PMCs) so that it can't bitrot without horribly breaking everything
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)
whiteknight plobsing: I don't see why we can't have a single implementation 17:07
a Packfile structure wrapped inside a PackFile PMC. The get_pointer/set_pointer VTABLEs let us get at the underlying implementation 17:08
the PMC provides nice methods and a nice storage mechanism for the structures, in addition to GC magic, etc
plobsing_ yes. but that is more-or-less the separation I'd like to see.
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
plobsing_ I explicitly do not want the internals to have to deal with something that has design considerations for convenience of external uses.
NotFound imcc should not be 'internal'
whiteknight that's fine. Anything in src/packfile/* can assume the struct, everything else can pass an opaque PMC
plobsing_ runcores and ops need some pretty intimate details about running packfiles 17:10
NotFound plobsing_: fine with that.
whiteknight okay, those guys can access the guts too
plobsing_ you don't want to VTABLE_get_integer_keyed_int to find the next op do you?
dalek tracwiki: v1 | whiteknight++ | CompilerInterfaceDesign
tracwiki: trac.parrot.org/parrot/wiki/Compile...ction=diff
whiteknight but having access to packfile guts should be opt-in with a very limited guest list
cotto_work +1
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.
whiteknight plobsing_: EXACTLY!
cotto_work PIRATE already isn't
I like where this is going.
NotFound imcc is, now.
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
of course the PMC in question is an UnManagedStruct with a Parrot_Packfile pointer, but I have acheived some level of abstraction 17:12
it is possible to do in the general case
NotFound whiteknight: but to avoid bit roten we need much more.
plobsing_ to avoid bitrot, we need the external api to *not* reimplement the internal implementation 17:13
delegation is key
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
NotFound We need to use it, mainly. Delegation is the way to make it doable. 17:14
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:16
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:17
NotFound The compiler may need to call libparrot, :immediate subs for example. 17:20
cotto_work It makes me really happy to see what the Rakudo hackers are building on top of Parrot. 17:23
atrodo cotto_work> ping 17:27
cotto_work atrodo: pong
dalek tracwiki: v1 | whiteknight++ | IMCCTasklist
tracwiki: trac.parrot.org/parrot/wiki/IMCCTas...ction=diff
tracwiki: v2 | whiteknight++ | IMCCTasklist
tracwiki: More steps.
tracwiki: trac.parrot.org/parrot/wiki/IMCCTas...ction=diff
atrodo cotto_work> Tonight is the Lorito braindump, right?
cotto_work yes
atrodo I'm anxious to see what comes of it
(I would tell you that it kept me up all night, but that would a lie. The dreams last night, however...) 17:28
cotto_work I'm looking forward to it. 17:29
PerlJam hopes atrodo is really eager to see what comes of it. 17:30
atrodo PerlJam> Yes 17:31
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.
Hopefully after tonight I can start more on it in a more concrete direction 17:36
17:54 M_o_C joined 17:56 M_o_C_ joined 18:00 M_o_C left 18:06 zarchne left 18:15 M_o_C_ left 18:16 M_o_C joined 18:25 ligne joined 18:33 smash left 18:50 davidfetter joined 19:04 mtk left 19:10 mtk joined 19:14 davidfetter left
cotto_work moritz: ping 19:29
19:30 rfw joined 19:31 fperrad left
dalek nxed: r706 | NotFound++ | trunk/winxedst1.winxed:
refactor Function hyererchy and fix subid generation
19:33
moritz cotto_work: pong 19:34
cotto_work moritz: can you review the gci task to translate parrot.org/foundation into German? 19:35
socghop.appspot.com/gci/task/show/g...9141648612 19:36
moritz cotto_work: done. It's fine. 19:38
cotto_work thanks
19:42 dngor left 19:44 Yuki`N joined
cotto_work hi Yuki`N 19:45
Yuki`N Hi.
I submitted my work to melange. 19:46
19:47 dngor joined
whiteknight This IMCC crap keeps getting uglier and uglier every time I look at it 20:06
cotto_work Yuki`N: approved
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
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.
whiteknight cotto_work: isn't it? 20:09
I need to make more tasks!
cotto_work There's a handful if you look for the gci tag in our ticket queue.
whiteknight how do you view just the tickets with a particular tag? 20:10
cotto_work view tickets->custom query-> filter for keyword 20:11
dalek tracwiki: v2 | whiteknight++ | CompilerInterfaceDesign
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.
tracwiki: trac.parrot.org/parrot/wiki/Compile...ction=diff
cotto_work trac.parrot.org/parrot/query?col=id...r=priority
sorear let's add src/pmc/IMCC.pmc, and require all access to IMCC to go through that 20:19
create an IMCC pmc and stash it in the compiler hash
it has to implement VTABLE_invoke, obviously
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:20
sorear of course IMCC.pmc will have almost no code 20:21
it'll just call a bunch of C functions elsewhere 20:22
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?
cotto_work aloha, coverage? 20:27
aloha cotto_work: coverage is cv.perl6.cz or tapir2.ro.vutbr.cz/cover/cover-results/
sorear It shouldn't be possible to have a string PMC method be inaccessible
cotto_work Some of those VTABLE functions need to go away. 20:28
You should be able to test unescape pretty easily 20:29
share_ro and substr probably don't need to continue existing
You could also make sure the exception conditions get hit. 20:30
cotto_work goes afk for lunch
NotFound There is a ticket for the substr vtable
20:32 jan left 20:35 jan joined
whiteknight I think I'm going to have to start a pretty big refactor soonish 20:39
I'm going to move all functionality from libparrot that explicitly uses IMCC, and move it all into a die/ folder 20:40
so die/in_a_fire.c for example
then we go through the list, piece by piece, either reimplementing items to not rely on IMCC or eliminating them entirely 20:41
and when the file is empty, we rejoice
Yuki`N I'm not quite sure how to make the exception conditions get hit. :P
whiteknight Yuki`N: which conditions? line numbers?
Yuki`N Umm
whiteknight or what file/function are you in? 20:42
Yuki`N src/pmc/string.pmc
675 and 735
aloha 1410
whiteknight for the one on 675, use a non-ascii literal in PIR with the trans method 20:44
so $P0.trans(unicode:"whatever", ...)
Of course now that I look at it, that method is stupidly named if it only accepts ASCII
for the one on 735, do the same technique 20:45
use unicode: at the beginning of the string to force it to be non-ASCII and that should trigger it
(Again the function is poorly named)
Yuki`N Oh.
That's cool.
whiteknight very cool 20:46
Thanks for the help, Yuki'N
Yuki`N And yes the unescape function is actually simpler than I though now that I look at what unescape actually does.
No problem.
20:46 bluescreen left
whiteknight yeah, it's deceptive 20:46
Yuki`N I assume I should catch the exception thrown.
20:46 Andy joined
whiteknight yeah 20:49
dukeleto Yuki`N++ # adding test coverage! 20:55
Yuki`N: you should also add yourself to CREDITS in your next pull request
karma Yuki`N 20:56
aloha Yuki`N has karma of 0.
Yuki`N xD k.
dukeleto Yuki`N: when you are in CREDITS, our bots keep track of all your ++'s
Yuki`N: which is called "karma"
Yuki`N Ah.
21:03 perlite left 21:04 perlite joined 21:05 bluescreen joined
Yuki`N <Yuki`N> METHOD trans(STRING *src, PMC *table) 21:10
<Yuki`N> What PMC is `table' supposed to be?
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.
Looks like it's a FixedIntegerArray. 21:13
whiteknight weird
Yuki`N Are the .t files UTF-8? 21:15
whiteknight they might be 21:16
Yuki`N Just wondering; I realized I didn't actually need UTF-8 text.
whiteknight if you specify unicode:, the assembler will automatically setup the encoding 21:17
Yuki`N Yeah.
So there's already a ticket for substr? 21:19
dukeleto Yuki`N: take a look at trac.parrot.org
Yuki`N And how does MULTI INTVAL is_equal(PMC *value) work?
MULTI vs VTABLE. 21:20
dukeleto Yuki`N: MULTI means it is a multimethod
Yuki`N: which means various versions of the function exist, depending on what the input argument types are
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.
dukeleto Yuki`N: that is how I understand it, at least
whiteknight that's how it is
Yuki`N Well I see. 21:22
VTABLE INTVAL is_equal(PMC *value)
MULTI INTVAL is_equal(PMC *value)
The latter is not covered at all, although it's only a return;
whiteknight those two are in the same file? 21:23
Yuki`N Yeah.
whiteknight are there any other MULTIs for is_equal?
Yuki`N Nope.
whiteknight that's a bug. Delete the MULTI
Yuki`N The whole method?
whiteknight hold on, let me double-check
Yuki`N K.
whiteknight yeah, delete it. It's only 3 lines 21:24
Good job finding that!
Yuki`N xD all in the name of test coverage.
whiteknight we can always increase coverage in two ways: add more tests or delete more code 21:25
Yuki`N Indeed.
whiteknight sometimes the second option is better :)
Yuki`N So I believe now the only uncovered code are the two VTABLE methods 21:26
void substr
whiteknight okay, it's time for me to pack up and go home. goodnight
Yuki`N and share_ro
Night. 21:27
21:27 whiteknight left
dukeleto Yuki`N: are you still working on the same task? 21:27
Yuki`N: i need to give you a new task :)
Yuki`N: do you want to work on tests for another subsystem?
Yuki`N Umm, perhaps. :P 21:28
I already more than covered the 5% from my last addition of tests.
I'm going for ~95% now I think.
dukeleto Yuki`N: that sounds great. I want you to get credit for that, though.
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
Yuki`N: i am very excited that you are increasing our test coverage so much! This is awesome
A GCI student just translated our README to Polish!
Yuki`N xD I saw that pull request. 21:30
If it's not too much trouble to make another task, sure.
And I'm open to increasing coverage for other PMCs too.
dukeleto Yuki`N: of course! I want you to get the credit you deserve
Yuki`N I mean, I took the trouble of learning PIR for one task.
:P
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
Yuki`N: now that you know PIR, we really want you to work on more tasks! ;)
Yuki`N Not really, I'll look through the list in a bit.
dukeleto Yuki`N: would like to send a pull request for what you have now? I will create a new task right now.
Yuki`N I'm just checking to make sure I really did cover those methods 21:32
Once I typo'd eq_num into eq_str and I ended up re-covering eq_str.
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" ?
Yuki`N Yeah.
dukeleto cotto_work: we have our REAME in Polish!
cotto_work Is it polished Polish?
dukeleto cotto_work: i only created the task last night and it is done already!
tadzik: ping
aloha msg tadzik can you take a look at this? github.com/parrot/parrot/pull/22 21:34
aloha dukeleto: OK. I'll deliver the message.
Yuki`N Hmm. 21:35
make library_tests failed.
21:36 M_o_C left
dukeleto Yuki`N: feel free to make a gist of the full error output and we can look at it 21:36
Yuki`N: you only added tests, correct?
Yuki`N I only added tests.
dukeleto Yuki`N: ignore test failures that happen as part of "make cover"
Yuki`N Ah ok.
dukeleto Yuki`N: are these tests failing under "make cover" or "make test"
Yuki`N Make cover.
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.
Yuki`N Ah.
dukeleto Yuki`N: that is Less Than Awesome, but that is how it is right now.
Yuki`N src/pmc/string.pmc\t95.3\t95.3 :D 21:38
dukeleto Yuki`N: awesome!
Yuki`N: i have a new task for you, please do a "submit" action on the task you have now 21:39
Yuki`N: socghop.appspot.com/gci/task/show/g...9193070805
21:40 kid51 joined
kid51 I have a colleague who can review the Polish translation of the README submitted earlier today. 21:40
I will not be around tonight. 21:41
Yuki`N dukeleto, sent a pull request, and requesting claim on that task.
kid51 Can someone email me or msg me as to what the next steps would be if colleague either approves or wants corrections? Thanks.
dukeleto Yuki`N: i see. the old task is already closed. Good work!
Yuki`N: claim that new task now! Before someone else does.
kid51: what now? 21:42
Yuki`N Claimed.
dukeleto Yuki`N: approved.
Yuki`N: have fun! 21:43
Yuki`N Submitted for review. :3
dukeleto Yuki`N: wow!
cotto_work Yuki`N: how responsive have other orgs been? I'm wondering if we're doing something special to get so many contributions.
dukeleto cotto_work: it is because I am so awesome...
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.
And all the mentors are familiar with the subject matter of most of the tasks.
dukeleto Yuki`N: can you make that commit into a pull request?
Yuki`N I have already. :P
dukeleto Yuki`N: you are fast!
Yuki`N Indeed.
atrodo I agree, it's because of dukeleto
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?
[16:23:15] <Yuki`N> Yeah.
[16:23:28] <@whiteknight> are there any other MULTIs for is_equal?
[16:23:33] <Yuki`N> Nope.
[16:23:39] <@whiteknight> that's a bug. Delete the MULTI
21:45 mtk left
dukeleto Yuki`N: sounds good to me. 21:45
Yuki`N Yep.
dukeleto Yuki`N: i completed your task. You need a new task now! 21:46
Yuki`N: do you have one in mind?
Yuki`N Indeed I do.
Let me look through the list.
dukeleto Yuki`N: go claim it! And let me know when you do.
atrodo Can students only have one task at a time?
Yuki`N Yeah.
dukeleto, the scalar pmc has some pretty dreadful test coverage. 21:47
Below 50%.
cotto_work technically they're also supposed to work on only tasks that they've claimed.
Yuki`N Technically.
I find that I'm usually waiting on mentors so I usually am working on like 3 tasks at once.
Time zones and the like.
cotto_work I'd like to kill scalar, but I haven't entirely convinced myself that it's a good idea. 21:48
Yuki`N Oh, so it's not a good candidate to improve coverage for? 21:49
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
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 ?
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.
dukeleto Yuki`N: how about Complex PMC ? Would you like to work on that ?
Yuki`N: that really needs to have 100% test coverage
Yuki`N Complex numbers?
dukeleto Yuki`N: yes. Also, the Integer PMC 21:52
Yuki`N I suppose I can.
dukeleto Yuki`N: and the Iterator PMC
Yuki`N Complex, Integer, and Iterator.
I'll probably tackle the Integer PMC first.
dukeleto Yuki`N: i will make tasks for them. Making an integer PMC task now.
Yuki`N Thanks!
cotto_work OrderedHash might be a good candidate
Yuki`N One task per PMC, I suppose? 21:53
cotto_work at least one task per pmc
you just got two for one, didn't you? ;] 21:54
Yuki`N That is true. :3
Integer is about 55% right now.
Something similar to 75%, 85%, 90% seems like a fair graduation, if not an excess of tasks. 21:55
Perhaps only two tasks, but who knows.
dukeleto Yuki`N: socghop.appspot.com/gci/task/show/g...9193177076 21:57
Yuki`N: that is for 10% increase in coverage of Integer PMC
Yuki`N: i can give you as many tasks it takes to get Integer PMC to 100%
Yuki`N That's a generous amount. :P
dukeleto Yuki`N: Tasks need to get harder, or you won't have the appropriate amount of fun :)
Yuki`N My first suggestion was about a 20% increase. xD 21:58
I see >Currently, the Integer PMC is at 83% code coverage
;P
PIR is fun, but at the same time a unique challenge. 21:59
dukeleto Yuki`N: it has 83% already? You sure?
Yuki`N No.
It's 55%
But the task says 83.
dukeleto Yuki`N: duh! My bad. I will fix that.
Yuki`N I like bytecode intermediate languages just because they blend an ASM feel with higher-level features.
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:00
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.
Tried learning SIMD extensions for some VideoLAN tasks but that failed horribly.
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
And of course now I'm familiar with the Parrot VM and PIR.
dukeleto Yuki`N: fixed the task info
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
Yuki`N: i just added tasks for the Iterator and Complex PMCs too
Yuki`N K.
Requesting claim on the Integer task.
dukeleto Yuki`N: approved. 22:06
22:15 kid51 left
Yuki`N How do I use gdb to run a PIR file, btw. 22:16
moritz gdb parrot 22:21
run yourfile.pir
sorear moritz: gdb --args parrot yourfile.pir # best option ever
moritz sorear: I didn't know about that, thanks 22:22
Yuki`N And how would I bp at a specific pir line.
moritz I don't think you can't
because gdb is not a PIR-level debugger
Yuki`N Oh. 22:23
I'm trying to trigger integer overflow.
And it's not working.
sorear $I0 = 1
again:
say $I0
$I0 = $I0 * 2
goto again
Yuki`N There we go. 22:24
dukeleto Yuki`N: there is something called parrot_debugger, but it may still have some bugs itself :) 22:25
Yuki`N Ah.
dukeleto Yuki`N: it can step through PIR, in theory
22:33 dmalcolm left 22:48 whiteknight joined
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
dukeleto whiteknight: what now? 23:11
cotto_work: ping 23:14
23:36 nwellnhof joined
nwellnhof Yuki`N: have you seen my comment to your pull request? 23:36
whiteknight dukeleto: githubber nol888 (who opened a pullrequest with us a while ago) has a 4chanscraper project 23:38
dukeleto whiteknight: ah 23:39
dukeleto is excited about the lorito hacking session tonight 23:40
whiteknight ah right, I forgot about the Lorito magic that is happening soon 23:42
dukeleto ~2ish hours until lorito meeting 23:43
nwellnhof is a lorito meeting scheduled?
in #ps? 23:45
whiteknight cotto, chromatic, and allison are having an in-person meeting
dukeleto nwellnhof: chromatic, cotto, allison and I will be talking about Lorito and creating an action plan, methinks.
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:47
sorear I have to leave before the meeting 23:54