Camelia, the Perl 6 bug

IRC log for #parrot, 2010-12-15

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 Yuki`N Ugh.
00:00 Yuki`N Another perl-test one.
00:00 dukeleto Yuki`N: if you can convert Perl tests to PIR tests, feel free.
00:00 dukeleto Yuki`N: some tests need to be in Perl, but many can be converted to PIR
00:01 ok22 left #parrot
00:01 cotto_work the perl tests shouldn't be much harder to modify than the pir ones.  Just copy/paste for new tests and make sure to update the plan.
00:03 dukeleto cotto_work: Yuki`N prefers C and PIR tasks
00:03 dukeleto cotto_work: Yuki`N likes a challenge
00:03 Yuki`N I like PIR tests though
00:03 Yuki`N No need to switch constantly between perl and PIR
00:04 Yuki`N Plus the test harness is nicer
00:04 Yuki`N Well, Test::More is nicer in PIR than in Perl.
00:05 cotto_work dukeleto: how's the vacation?
00:06 dukeleto cotto_work: having fun. Saw a whole lot of manatees today
00:11 Yuki`N Oh god.
00:11 Yuki`N That's a lot of todo failures.
00:11 Yuki`N ;-;
00:15 pukku joined #parrot
00:16 dukeleto atrodo: i just read your blog post, nice work
00:17 dukeleto atrodo: i think you are conflating MOP and Lorito. There is no "Lorito MOP". There *will be* a reimplementation of an improved version of our MOP written in Lorito
00:17 mikehh kid51: ping
00:17 kid51 mikehh pong
00:19 mikehh kid51: I was just updatinh html_cleanup branch and I am getting a failure in t/postconfigure/05-trace.t - Failed test:  7
00:19 kid51 Try: make realclean; then: perl Configure.pl --test=build
00:22 Yuki`N Oh I see.
00:22 Yuki`N BigInt strings don't work properly.
00:22 pukku left #parrot
00:23 mikehh I thought I had done thaty, but I think I re-generated MANIFEST after
00:23 dukeleto Yuki`N: are they broke?
00:24 Yuki`N Yes.
00:24 Yuki`N They are absolutely broke.
00:24 Yuki`N All trailing zeros disappear.
00:24 Yuki`N So 40000 -> 4
00:24 Yuki`N etc
00:24 Yuki`N Oh, I mean BigNum.
00:24 Yuki`N Sorry.
00:26 dalek Some 'mikehh' person just gave me a 526636 byte commit packet.  They need to be more careful in the future.
00:28 hercynium joined #parrot
00:28 dukeleto Yuki`N: that sounds like a horrific bug
00:28 Yuki`N And apparently decimals work great.
00:28 mikehh hmmnn, I just updated html_cleanup branch
00:30 cotto_work mikehh uses Huge Commit Message on Outlook
00:30 cotto_work It's super effective!
00:30 cotto_work Outlook has fainted.
00:31 lucian left #parrot
00:35 mikehh hey I just merged master into html_cleanup, fixed a couple of conflicts, re-generated MANIFEST, tested, then pushed it
00:35 Yuki`N xD
00:35 cotto_work mikehh: no worries.
00:36 Yuki`N http://socghop.appspot.com/gci/task/show/google​/gci2010/parrot_perl_foundations/t129228510453 can someone approve?
00:36 mikehh should I have done something different?
00:36 cotto_work Yuki`N: done
00:36 mikehh or maybe differently
00:36 Yuki`N thanks.
00:37 cotto_work mikehh: unless dukeleto knows of a different way, don't worry about it.
00:37 * dukeleto knows many ways to do nothing
00:38 dukeleto mikehh: you did it correctly :)
00:38 cotto_work I find it more amusing than anything else when outlook faints
00:43 Yuki`N t/codingstd/pod_description.t (Wstat: 512 Tests: 1 Failed: 0)
00:43 Yuki`N Parse errors: Bad plan.  You planned 2 tests but ran 1.
00:43 Yuki`N t/codingstd/pod_syntax.t     (Wstat: 512 Tests: 1 Failed: 0)
00:43 Yuki`N Parse errors: Bad plan.  You planned 2 tests but ran 1.
00:43 Yuki`N just fyi
00:46 kid51 is now known as kid51_at_dinner
00:47 Yuki`N also, some of these bignum c functions aren't used in the PMC class at all.
00:47 Yuki`N Hence 100% coverage is impossible. :<
00:52 cotto_work You assume that deleting code isn't an option.
00:52 cotto_work It's actually more of a passtime.
01:18 Yuki`N cotto_work, well perhaps you can look over the bignum class. :/
01:19 muixirt left #parrot
01:24 cotto_work Yuki`N: sure
01:27 Yuki`N I think I found another bug.
01:27 Yuki`N Again in the i_ functions.
01:28 kid51_at_dinner is now known as kid51
01:29 cotto_work chromatic: ping
01:32 chromatic pong
01:32 cotto_work chromatic: is there a strategy for getting nice backtraces from CPS code?
01:32 nopaste "Yuki`N" at 192.168.1.3 pasted "possible bug" (10 lines) at http://nopaste.snit.ch/27127
01:32 chromatic Seems straightforward to me; you walk the pointers.
01:33 chromatic Is it more difficult than that?
01:33 plobsing if you've fully tailcall optimized, you won't necessarily get an intuitive backtrace
01:34 chromatic Oh right, the Guido Conundrum.
01:35 chromatic In the case where you have a tail-recursive algorithm (such as optimizing recursion into iteration), I've seen a strategy where you keep a counter of how many tail recursions you've performed.
01:36 plobsing strategies I can see are (a) not tailcall optimize, (b) shut up and deal, or (c) maintain a separate stack for backtraces
01:36 whiteknight cotto_work: src/debug.c has some stuff
01:36 chromatic I've most often seen (b).
01:36 plobsing I'm a big fan of b
01:36 whiteknight in the embed_api2 branch I had to rewrite one of the functions to take an arbitrary context PMC
01:37 chromatic I'm trying to think of control flow scenarios besides within-a-function recursion where (c) is tricky.
01:37 whiteknight the new function takes a context PMC and a current sub (if available), and returns a STRING
01:38 plobsing chromatic: are you saying (c) is tricky within a function, or that (c) is tricky on arbitrary control flow?
01:39 chromatic It may be tricky with arbitrary control flow.
01:40 Yuki`N If I set a bignum to 2
01:40 Yuki`N And then call `mul P0, 2.5'
01:40 Yuki`N It gives me 6.25
01:40 Yuki`N What.
01:41 cotto_work Yuki`N: welcome to "mountain bike" programming.
01:41 plobsing it can be done. you need to build management of the backtrace-stack into whatever genrates the tailcalls.
01:41 plobsing Yuki`N: 25% error isn't too bad :p
01:42 chromatic Yeah, but do you need it if all of your tailcalls are ... well, tail calls.
01:42 chromatic How many backtraces do you know of where you need to know where you returned FROM?
01:42 chromatic outside of INTERCAL that is
01:43 plobsing whuh? now I'm confused.
01:44 chromatic No, I'm confused.
01:44 chromatic Ignore all that, I wrote two lines of code and figured out that I was wrong.
01:46 plobsing we could ask scheme people how their backtraces work. they've been dealing with tco'd code for forever now.
01:46 chromatic True.
01:51 cotto_work chromatic: do you recall why we decided to have string be PMCs but retain separate registers?
01:51 cotto_work in M0
01:52 cotto_work emphasis on "separate registers"
01:53 hercynium left #parrot
01:53 chromatic left #parrot
01:54 * plobsing suspects STRING* => PMC* could be made to work in current parrot without too much effort (leaving IMCC to paper-over the discrepancy)
02:03 Carter joined #parrot
02:07 atrodo cotto_work> pong
02:07 * atrodo enjoys being popular while I'm away
02:10 whiteknight plobsing: any more papering over in IMCC is going to create a fire hazard
02:11 atrodo can't we only hope?
02:20 plobsing whiteknight: I'm pointing out the weak point. But mostly it would only need to convert $S0 => $P0 and 'string' => 'pmc'
02:20 plobsing that can be done in the (relatively simple) lexer
02:22 atrodo dukeleto> When you say it that way, that sounds reasonable.  But the notes I saw made it sound like security, register allocation and most of lorito would explicitly depend on the new MOP, which is concerning to me
02:23 fbrito joined #parrot
02:24 plobsing atrodo: those are all things that have been lumped in with lorito in the past (a la Py3k circa y2k)
02:25 plobsing lorito would be impossible if it actually encompased all of those things however
02:26 Yuki`N plobsing, lol, i guess not. :P
02:26 Yuki`N Up to 73%.
02:26 Yuki`N Not bad.
02:27 Yuki`N I'm a little fazed by the amount of error that the BigNum class has. ;-;
02:27 Yuki`N Between bad stringifying and odd calculations.
02:28 whiteknight left #parrot
02:30 cotto atrodo, do you have the tuits to do a review of yalp?  Your pov as a Lorito prototyper would be especially interesting.
02:30 atrodo yalp?
02:30 cotto alternate lorito implementation prototype by tcurtis
02:31 cotto https://github.com/ekiru/yalp-asm
02:31 atrodo oh, right
02:31 atrodo sure, I'll look at it now
02:32 cotto thanks
02:33 plobsing do we have a good way to implement superclass method calls in parrot?
02:33 fbrito tadzik: ping
02:33 cotto plobsing, kakapo did something like that
02:36 Kapace fperrad, you rang? (from yesterday or something?)
02:37 plobsing http://kakapo-parrot.googlecode.com/svn/trunk/  is empty. what gives?
02:37 cotto It's on gitorious
02:38 plobsing ddg & goog don't seem to think so. or is gitorious not indexed?
02:38 cotto http://gitorious.org/kakapo/kakapo
02:38 cotto http://www.google.com/search?hl=en&am​p;q=kakapo+git&amp;aq=f&amp;aqi=p-p1g​3g-v6&amp;aql=&amp;oq=&amp;gs_rfai=
02:39 cotto nice to know there's another ddg user around
02:39 atrodo cotto> I also use ddg.  That and blekko
02:58 fbrito am I the only one having problems with "make cover"? I am probably missing something
02:59 kid51 State your problems.
03:01 fbrito http://pastebin.com/nXJVMPaY
03:01 fbrito take a look on the last lines
03:02 fbrito it only generated the testing coverage for like 7 files
03:03 kid51 fbrito:  Side point:  You can use our tools/dev/nopaste.pl to paste.  It produces more compact, plain-text-y output than pastebin.com
03:03 fbrito ah, thank you :)
03:04 kid51 This web page output is a bit unwieldy, IMHO.
03:04 fbrito I used to use pastie.org, but it has a limit of 100kb per paste
03:05 kid51 Well, what do you get when you browse your own disk:  /home/brito/gci/working/par​rot/cover_db/coverage.html
03:07 nopaste "fbrito" at 192.168.1.3 pasted "cover_db ls" (13 lines) at http://nopaste.snit.ch/27128
03:07 fbrito oh, interesting
03:08 fbrito I get the same as this: http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-07-7717682/c_cover/ but only with 7 files
03:08 Yuki`N fbrito, I ran into the same problem a while back.
03:08 Yuki`N You need some perl modules.
03:08 Yuki`N make sure tests aren't failing.
03:09 kid51 fbrito:  say:  perldoc Devel::Cover
03:10 kid51 If no output, install Devel::Cover from CPAN
03:10 Yuki`N the i_divide VTABLE method for BigNum has this as the body: bignum_div_bignum_float(INTERP, SELF, VTABLE_get_integer(INTERP, value), SELF);
03:10 Yuki`N It's calling the float div function, but truncating the float to an int. I'm confused.
03:10 kid51 disclosure:  I only ran 'make cover' for the first time this week ... probably in response to an earlier post by fbrito.
03:11 fbrito I installed it yesterday (Devel::Cover)
03:11 kid51 and do you have:  man gcov
03:12 fbrito yes, I do
03:12 fbrito and also gcov2perl
03:13 kid51 ok, so it looks like you have prereqs
03:13 kid51 Are you trying this in master?
03:14 Yuki`N Run make test, see if they all pass.
03:14 fbrito make fulltest is passing
03:14 fbrito but I have only tried on my branch. let me try again on master
03:15 kid51 In passing, I notice something puzzling about our 'cover' target.
03:15 kid51 It includes as its first sub-target 'cover.dummy', whose text is:
03:16 kid51 $(PERL) Configure.pl --ccflags="$(CC_FLAGS) $(COVER_FLAGS)" \
03:16 kid51 --linkflags="$(COVER_FLAGS)" --ldflags="$(COVER_FLAGS)"
03:16 kid51 ... from which you might infer:  I can type 'make cover' and that will initiate *both* configuration and build (with coverage)
03:16 kid51 ... but that would be false.
03:17 kid51 You need to have run Configure.pl to get a Makefile which contains this (or any other) 'make' target.
03:17 kid51 So our 'make cover' in effect requires you to reconfigure.
03:18 kid51 Since Configure.pl is largely Perl 5 code, there's no great benefit to trying to get coverage stats about it *in the same program in which we try to get coverage stats about PMCs and C code*
03:20 kid51 Same thing for cover-codingstd, cover-manifest, cover-distro, cover-perl
03:20 Yuki`N cotto, floor divide in the bignum class doesn't work for some reason. :/
03:20 kid51 Leave the coverage of the Perl 5 components to me! ;-)
03:20 Carter left #parrot
03:26 bacek joined #parrot
03:30 kid51 fbrito: I was successfully able to run 'make cover'
03:31 kid51 And, after completion, I was able to get a plain-text version of the output with:
03:31 kid51 cover -report=text 2>errors_coverage.txt 1> coverage.txt
03:31 fbrito I am running it again on master
03:31 kid51 (but I think I'll write a less comprehensive coverage target which runs more quickly and is therefore of better use to people trying to increase code coverage.)
03:31 fbrito but thank you for your help :)
03:32 fbrito what is the best way to get a list of all perl modules installed?
03:32 kid51 To learn more about Devel::Cover, consult links in the perldoc or google for Paul Johnson
03:34 kid51 fbrito:  I believe http://search.cpan.org/~coke/Task-Parrot-0.01/ is supposed to give you all the Perl 5 modules you'll need for Parrot.
03:34 kid51 But consult more with Coke about that.
03:35 kid51 As for getting a list of *all* perl modules installed ... I don't know.  That's better asked in perlmonks.org
03:36 kid51 Also:  http://search.cpan.org/~smpet​ers/Bundle-Parrot-Smoke-0.01/  for submitting Smolder reports
03:39 atrodo cotto> ping
03:42 Yuki`N I have the feeling that even though I covered all the VTABLE functions for BigNum I'm not going to get full coverage.
03:48 rfw could someone approve http://www.google-melange.com/gci/task/show/goog​le/gci2010/parrot_perl_foundations/t129228633715 for me
03:49 plobsing perldoc perllocal # lists all perl modules installed on a machine
03:54 kid51 rfw: approved
03:54 rfw thanks
03:54 rfw now to figure out how to actually do this
03:54 Yuki`N Lol.
03:54 Yuki`N I'm the expansion of test coverage master.
03:54 rfw lol
03:55 kid51 Perhaps the two of you could collaborate on a parrot-dev post about how you go about expanding coverage
03:56 rfw 0 [main] pbc_to_exe 15036 C:\Users\Tony\Documents\google-code-in\​parrot\parrot-goddammit\pbc_to_exe.exe: *** fatal error - unable to remap \\?\C:\Users\Tony\Documents\google-code-in\parro​t\parrot-goddammit\runtime\parrot\dynext\os.dll to same address as parent: 0x210000 != 0xCA0000
03:56 rfw dang cygwin
03:58 * kid51 must sleep
03:58 kid51 left #parrot
04:01 Yuki`N Lol I
04:01 Yuki`N Am running in a Linux VM. :3
04:09 fbrito Yuki`N: can you please tell me what do you see when you type "perldoc perllocal"?
04:11 Yuki`N [nlum@yukiko parrot]$ perldoc perllocal
04:11 Yuki`N No documentation found for "perllocal".
04:11 Yuki`N lol
04:15 fbrito whaaaat?! no modules?! lol
04:15 plobsing Yuki`N: many distros strip that as "unecessary garbage"
04:16 fbrito Yuki`N: I am still having problems with "make cover", so I would like to see which modules you have installed
04:17 plobsing you could write a short script to iterate @INC and then treewalk the paths
04:17 Yuki`N nopaste?
04:17 Yuki`N Where is that again?
04:18 nopaste "Yuki`N" at 192.168.1.3 pasted "Installed Perl Packages" (42 lines) at http://nopaste.snit.ch/27129
04:18 Yuki`N Here.
04:18 Yuki`N You figure it out yourself. xD
04:20 fbrito ahha, very nice :D thank you
04:20 atrodo cotto> unping.  I'll catch you tomorrow
04:24 fbrito I probably installed modules as sudo or something like that :(
04:33 Yuki`N 26% up for the BigNum class.
04:34 Yuki`N Hopefully it'll go past 90 tomorrow.
04:34 Yuki`N left #parrot
04:38 rfw hm how do you run a single test?
04:38 fbrito you can use "cover t/pmc/complex.t" for example
04:38 fbrito ops
04:38 fbrito lol
04:38 fbrito i mean "prove"
04:39 rfw oh
04:39 rfw ah i see
04:39 rfw thanks fbrito
04:39 fbrito some nice params are "-v" for verbosity and "-f" for failures
04:39 rfw and to check coverage?
04:40 fbrito "make cover" should generate something like this: http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-07-7717682/c_cover/
04:40 rfw ah okay
04:40 fbrito I don't know if its possible to do that for just 1 file
04:40 fbrito "make cover" takes really long
04:40 rfw huh it's recompiling parrot
04:40 rfw yeah i can see why it would
04:40 rfw lol
04:41 fbrito it has to recompile with some testing flags
04:41 fbrito and then run all tests
04:41 fbrito (btw, I am having problems with that right now. "make cover" is only showing 7 files for me, instead of all source files)
04:43 fbrito (and when I ran it for the first time, after waiting really long, it said that there were some perl modules missing, so I had to install them)
04:46 rfw mine's still running
04:47 fbrito it takes really long
04:52 rfw and now it tells me i'm missing gcov2perl
04:55 fbrito see? ahhahahha
04:55 fbrito its so sad :(
05:09 fbrito rfw: and? were you able to run "make cover"?
05:09 rfw still trying to find gcov2perl
05:09 rfw lol
05:10 fbrito are you on windows? :s
05:10 rfw no
05:10 rfw linux
05:11 rfw i installed Devel::Cover from cpan
05:11 rfw but i don't have a gcov2perl
05:11 ascent left #parrot
05:11 fbrito if you are on Ubuntu/Debian, try installing "libdevel-cover-perl"
05:11 rfw i already did
05:12 rfw also i'm on arch lol
05:12 cotto atrodo, pong
05:15 cotto hi bacek
05:25 Kulag left #parrot
05:26 fbrito rfw: any progress?
05:26 rfw i think i'll write the tests first
05:26 rfw instead of messing around with cover
05:27 fbrito you can always look them here: http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-07-7717682/c_cover/
05:27 fbrito hm
05:27 fbrito http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-14-c3f2c98/c_cover/ is more up to date
05:28 rfw ahaha did i just put semicolons everywhere
05:28 fbrito hahahah
05:29 Kulag joined #parrot
05:29 rurban_ joined #parrot
05:29 rfw ohi Kulag
05:31 fbrito rfw: I will play a little bit with Makefile to see if it is possible to remove procedures in "make cover" that we won't need
05:32 rurban left #parrot
05:32 rurban_ is now known as rurban
05:33 Kulag rfw: Don't tell me you have that on a script. :P
05:33 rfw Kulag: would you like me to
05:33 Kulag Not particularly.
05:38 fbrito rfw: yes, it worked :)
05:39 rfw still trying to figure out how to write tests
05:39 fbrito rfw: on line 3761 of Makefile you can remove dirs that you won't need to see the cover result
05:40 fbrito and after that there are the methods that it run. you will only need cover-dummy, cover-src and cover-run
05:40 fbrito that will speed "make cover" up a loooot
05:41 rfw yay i managed to write a test
05:42 rfw i get how to do this now :D
05:44 fbrito it is really interesting
05:44 fbrito (writing tests)
05:49 fbrito1 joined #parrot
05:52 fbrito left #parrot
06:08 fbrito1 rfw: do you have a US visa (document)? :o
06:10 fbrito1 is now known as fbrito
06:24 fbrito I have to say that I still didn't understand how those i_* functions works. When i_add is called?
06:24 fbrito when is*
06:26 cotto $I0 += 3
06:26 cotto i in in-place
06:26 fbrito Ahhh, so simple :)
06:33 fbrito Thank you :)
06:34 cotto you're welcome
06:34 cotto I like making Parrot less mysterious.
06:35 cotto there's enough innate mystery already
06:36 cotto and inane mystery too
06:57 rfw fbrito: no but i could probably get one
06:57 rfw lol
06:58 fbrito in the black market? hahah
06:58 rfw hurr >_>
07:00 cotto don't get yourself in trouble
07:00 fbrito just kidding :)
07:01 cotto that's what they all say
07:01 cotto ;]
07:01 rfw cotto: is there no multiply for bigint, float
07:02 fbrito that and "I am innocent"
07:03 cotto all kinds of awesome
07:09 fbrito rfw: hm, did you notice there is a 1-month gap between GCI's end (10th January) and Grand Prize Winners announce (14th February)?
07:09 rfw fbrito: yeah i wonder why
07:10 fbrito I think they will "investigate" the tasks we did (searching for cheaters?), or something like that
07:11 cotto It only makes sense.  gci is a very new program.
07:12 cotto I wonder how it'll work out for jumpyshoes.
07:15 sorear jumpyshoes?
07:15 fbrito I think he is doing just fine
07:16 cotto sorear, http://www.google-melange.com/gci/student_ra​nking/show_details/google/gci2010/jumpyshoes
07:17 fbrito only weird thing is that sometimes he does a lot of work before actually claiming the tasks and then he claims lots of tasks in a really short period of time
07:17 fbrito like if you click on the "Completed on" column you will see that he got 6 tasks (24 points) in 20 minutes
07:17 cotto I'm sure he's contributing.
07:17 rfw yeah
07:17 rfw jumpyshoes takes a whole bunch of tasks
07:17 rfw does them
07:17 rfw and makes dark_shikari approve them in 20 minutes
07:17 rfw lol
07:17 fbrito ahahha
07:18 rfw it's because x264 takes a week
07:18 rfw before commiting anything to the repo
07:18 rfw so he has to wait a week before getting all the stuff
07:18 rfw so yeah cotto he's legit :p
07:18 fbrito his moves really scares me
07:18 rfw yeah
07:18 rfw poor nolan
07:19 rfw he thought he was second then suddenly, jumpyshoes
07:19 rfw beat him by 22 points too
07:20 * rfw waits for make cover
07:21 fbrito rfw: did you try to clean the Makefile?
07:21 fbrito it helped me a lot
07:21 rfw mm not yet
07:21 rfw i'm just doing it normally for n--did something just segfault
07:23 rfw oh
07:23 rfw arck
07:23 rfw cannot open graph phile
07:23 rfw file*
07:24 cotto Mmmmm.  philes.
07:26 fbrito BBS jargon? :P
07:28 rfw arrrgh forgot to make clean
07:28 rfw time to run make cover again :(
07:28 rfw i was wondering why i was missing graph files
07:30 fbrito on README it says something about running tests in parallel... does it really improve the performance?
07:31 fbrito s/it says/there is/
07:38 sorear fbrito: how many CPUs do you have?
07:38 fbrito 2 :(
07:38 sorear then running tests in parallel will double performance
07:38 fbrito interesting
07:38 sorear testing is what is known in the jargon as an "embarrassingly parallel" problem
07:39 sorear like raytracing and brute-force codebreaking
07:39 sorear the kind of problem that will go a million times faster if you throw a million CPUs at it
07:39 rfw wow did i just DECREASE the coverage of bigint.pmc
07:39 fbrito HAHAHA
07:39 fbrito no way
07:39 rfw it went from 78 77.17
07:40 rfw +to
07:40 rfw either that or i did something wrong
07:40 fbrito sorear: hm, interesting. I have only tried brute-force 2 or 3 times (WEP breaking)
07:40 rfw fbrito: stealing your neighbor's internet? :D
07:40 fbrito rfw: did you remove any test or added new functions?
07:41 rfw i added new functions
07:41 rfw >_>
07:41 fbrito I have managed to improve Complex coverage from 76% to 93.3% :)
07:41 fbrito tadzik: ping
07:51 bacek left #parrot
07:51 fbrito (and here comes the sun)
07:55 fbrito1 joined #parrot
07:57 cotto http://reparrot.blogspot.com/2010/12/no​tes-from-lorito-braindump-contexts.html
07:58 cotto 'night
08:00 fbrito left #parrot
08:03 bacek joined #parrot
08:04 theory left #parrot
08:06 sorear bacek is back!
08:18 cosimo joined #parrot
08:29 rfw i can't figure out how the hell my coverage decreased
08:34 fbrito1 you wrote new functions, right?
08:35 fbrito1 did you also write new tests? :D
08:36 rfw i wrote new tests
08:37 rfw do you have to write new functions?
08:37 fbrito1 no, I didn't
08:37 rfw hm odd
08:38 fbrito1 wait
08:38 rfw i've written 4 new tests
08:38 fbrito1 I have written new test functions (on t/...) but I didn't touch on the source files (src/...)
08:38 rfw same
08:38 rfw but
08:38 rfw make cover tells me i only have ~75% coverage
08:39 fbrito1 did you also notice that you have to "call" the new function, right?
08:39 rfw yes
08:39 rfw i also changed plan to 40
08:39 fbrito1 and change the "plan(x)" on the top of the file
08:39 rfw from 36
08:39 rfw yeah
08:39 fbrito1 ah, ok :D
08:39 rfw so i really don't know what's wrong
08:40 fbrito1 how much it decreased?
08:40 rfw like, 3%
08:41 fbrito1 that's really weird
08:41 fbrito1 are you checking on .c or on .pmc file?
08:41 rfw both
08:43 fbrito1 it would be nice if you still have the old files on cover_db folder, so you could check which lines are not covered anymore
08:43 fbrito1 if you still had*
08:43 fbrito1 is now known as fbrito
08:44 fbrito have you already pushed it to your github fork? I am really curious to see what happened :D
08:44 rfw not yet
08:46 fbrito I can have a look if you push it or paste a diff somewhere
08:51 fbrito we should really learn how to run "make cover" on just 1 file... I am starting to get tired of waiting the whole process :P
08:51 rfw i think you can just run gcov manualy
08:51 rfw http://pastebin.com/JtjaeH36
08:51 rfw this is all i did ._.
08:52 fbrito :o
08:55 wagle left #parrot
08:58 wagle joined #parrot
08:58 fbrito rfw: I can't understand how this decreased the test coverage
08:59 rfw fbrito: now you know how i'm confused :D
08:59 fbrito have you ran "make cover" on master and then on your branch again?
09:00 fbrito or you could check from here: http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-07-7717682/c_cover/
09:00 fbrito i mean: http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-14-c3f2c98/c_cover/
09:12 fbrito how can I run gcov manualy?
09:12 rfw gcov sourcefile.c
09:12 rfw i think
09:12 rfw but you have to do some testy stuff beforehan
09:15 rfw oh man my laptop is heavy
09:19 rfw yeah fbrito i have honestly no idea why nothing is happening with code coverage
09:24 sorear did you remember to save before testing?
09:24 sorear that always gets me
09:31 rfw sorear: yes
09:32 fbrito how to regenerate the manifest file?
09:32 rfw fbrito: isn't there a tool for that
09:32 rfw tools/dev/mk_manifest_and_skip.pl
09:34 fbrito hm, I will take a look. thank you
09:34 sorear fbrito: you don't
09:35 sorear the manifest is a source file
09:35 sorear you edit it, and stuff is generated from it
09:35 sorear not the other way around
09:35 fbrito ah
09:35 sorear the manifest can probably die soon
09:36 sorear it was only really *needed* back when we were using CPAN to distribute Parrot
09:37 fbrito ah, I see
09:37 sorear opbots names
09:39 fbrito rfw: I had a task to increase testing coverage in 10%, but I was able to increase it in 20%. do you think I should ask them to create another task, or would that be wrong?
09:40 * moritz thinks that giving double points for double work would be fine
09:42 rfw left #parrot
09:44 fbrito moritz: true... but asking to Parrot to create a task *just to me* make me fell weird
09:46 moritz fbrito: see it as a workaround for a limitation in the point system
09:51 cotto left #parrot
10:01 perlite left #parrot
10:01 perlite joined #parrot
10:14 fbrito left #parrot
10:14 fbrito joined #parrot
10:26 fbrito tadzik: ping
10:44 redicaps joined #parrot
10:52 fbrito tadzik: ping
10:57 fbrito1 joined #parrot
11:01 fbrito left #parrot
11:04 dalek parrot: 7a4629e | fperrad++ | / (2 files):
11:04 dalek parrot: [LWP] refactor protocol http with a buffered socket emulation
11:04 dalek parrot: review: https://github.com/parrot/parrot/commit/7a4629ecca
11:06 fbrito1 left #parrot
11:54 tadzik o/
12:03 redicaps1 joined #parrot
12:03 cognominal left #parrot
12:05 cognominal joined #parrot
12:06 redicaps left #parrot
12:06 tadzik ...why am I assigned to http://www.google-melange.com/gci/task/show/goog​le/gci2010/parrot_perl_foundations/t129186887930 ?
12:27 mtk joined #parrot
13:23 bacek left #parrot
13:29 rurban_ joined #parrot
13:29 dalek TT #1893 created by jkeenan++: Define a 'quickcover' make target
13:29 dalek TT #1893: http://trac.parrot.org/parrot/ticket/1893
13:32 rurban left #parrot
13:32 rurban_ is now known as rurban
13:39 whiteknight joined #parrot
13:55 whiteknight good morning, #parrot
13:55 mikehh hi there whiteknight
13:56 whiteknight good morning mikehh, how are you today?
13:57 mikehh whiteknight: passable, passable, actually doing quite good
13:58 mikehh hoiw's the release oriented stuff going?
13:59 mikehh merged latest master into html_cleanup, just need to  set up indexes
14:00 whiteknight yeah, I saw some work on that last night, it looks good
14:00 whiteknight I would really like to see that merged soon
14:02 whiteknight I should really send out an email to the list today about the release. I'll work on that now
14:24 particle left #parrot
14:26 whiteknight I think we should have turned the release into a GCI task
14:28 dalek parrot: 04e8af1 | Whiteknight++ | DEPRECATED.pod:
14:28 dalek parrot: remove GzipHandle from DEPRECATED.pod. It is not experimental after a vote at #ps on November 20, 2010
14:28 dalek parrot: review: https://github.com/parrot/parrot/commit/04e8af1f64
14:29 particle joined #parrot
14:36 tadzik the mainly exciting thing about 3.0 will be the new GC?
14:36 whiteknight if we get a new GC
14:36 tadzik mhm
14:36 whiteknight that project needs volunteers right now
14:37 moritz I thought we already had a new-ish gc in master?
14:37 whiteknight no, just a cleanup of the old one. No algorithmic differences
14:37 tadzik whiteknight: what is to be done?
14:37 whiteknight tadzik: Good question. bacek was working on a system, but he didn't like it and was thinking about a new algorithm
14:38 tadzik ah
14:38 whiteknight so he has the old one partially implemented which we could try to complete, and he has a new algorithm written out that we could try to implement
14:38 whiteknight After 2.11 maybe we need to put together a task force and get into that code
14:48 moritz https://github.com/parrot/parrot/commit/​ca5bd395b16a0a877bb72e6627ef430609188724 is the getpid function exposed to PIR? if yes, how?
14:50 plobsing $P0 = getinterp; $I0 = $P0.getpid();
14:51 moritz hm
14:51 moritz that method is deprecated :(
14:52 plobsing it is *experimental*
14:52 plobsing we have too many similar but distinct notions of "this might go away", some of which we lump together in DEPRECATED.pod
14:52 plobsing deprecated, experimental, internal
14:53 moritz hm, ok
14:53 redicaps1 left #parrot
14:54 moritz I'll let my macos x minions test that :-)
14:59 JimmyZ joined #parrot
14:59 davidfetter left #parrot
15:03 plobsing \o/ Ωη;)XD stage0 emits syntactically valid winxed code for all bootstrap files! 450 lines of ometa => 20_000 lines of PIR oO
15:03 JimmyZ left #parrot
15:11 whiteknight wow
15:11 whiteknight wow that it works, and wow that there is so much output
15:12 whiteknight we *really* need gsoc_past_optimization to try and pare that down
15:12 plobsing how would PAST help?
15:12 plobsing it is implemented mostly in itself. it compiles down to winxed, which doesn't make use of PAST.
15:13 plobsing and works is such a strong term
15:13 plobsing not all syntactically valid winxed is actually runnable. the winxed parser is *very* lax and admits many strings that generate invalid PIR or cause the emitter to choke.
15:15 Coke isparrotfastyet.com dies with a JS error in IE8.
15:16 Coke looks like it's in the flot jquery plugin.
15:17 whiteknight plobsing: ah, that's true. I forget that Winxed is not PAST-based
15:17 whiteknight PIRATE would convert PIR to PAST, which could then be optimized
15:18 plobsing whiteknight: I doubt very much that PIRATE would be able to infer sufficient information to make a significant dent.
15:19 plobsing I can see it doing roughly 3 optimizations - register-allocation and op-selection-optimization
15:19 plobsing and maybe something else
15:20 plobsing I do think that the naive OMeta optimizer can do better. function () { return; } is just silly.
15:21 atrodo Coke> Thanks, I'll take a quick look at that
15:22 dalek parrot: 2a7f952 | mikehh++ | runtime/parrot/library/LWP/Protocol.pir:
15:22 dalek parrot: fix codetest failure - trailing whitespace
15:22 dalek parrot: review: https://github.com/parrot/parrot/commit/2a7f952665
15:25 whiteknight plobsing: gsoc_past_optimizations is just a framework, if we wrote more optimizations it would have the power to affect more change. Of course you are right, the OMeta optimizer is probably best in this case, at least at the macro- level
15:26 plobsing whiteknight: I'm saying that the information has either been erased or obfuscated by the time things get to the PIR level. A PIR-level static optimizer is of little utility.
15:26 whiteknight ok
15:27 plobsing the effort that would go into such an optimizer would be better spent making a packfile optimizer, which could be hinted with runtime information, and used for both AOT, JIT, and profile-guided optimizations
15:28 plobsing and by both, I mean all three of
15:28 dmalcolm joined #parrot
15:29 atrodo Coke> Yep, it was broken.  I've added the JS it needs.  Thanks
15:33 whiteknight plobsing: good point. We need working and sane packfiles first
15:33 plobsing yep. all roads lead to packfiles.
15:34 whiteknight We need to fix the PackFile PMCs first to work as they previously did
15:35 whiteknight then we need a better API for them. Then we can redo the internals to make them more clean and workable
15:35 whiteknight Finally we start adding fancy new features
15:36 atrodo Fancy!
15:36 plobsing whiteknight: I dissagree with the outside-in approach. I prefer inside-out. Make packfile PMCs suitable to internals, switch internals over to packfile PMCs, iterate API.
15:37 whiteknight plobsing: Packfile PMCs represent an API that users are relying on now. To change that requires a deprecation cycle.
15:38 plobsing they are experimental
15:38 whiteknight they still are? Well that changes things
15:38 plobsing and they should remain so indefinitely. they are too critical to internals.
15:39 plobsing or will be, once the internals uses them
15:39 plobsing we can provide a user-friendly, supported API as a layer over top
15:39 whiteknight okay, yes, that does change things. We can do the internals now and fore-go the API
15:40 Patterner left #parrot
15:40 whiteknight one thing we will want to do early-on is make sure nobody outside src/packfile/ and a select few other subsystems is accessing those structures directly
15:40 whiteknight if we limit the amount of code that needs to change when we modify the internals, we are doing ourselves a great service
15:41 dalek TT #1817 closed by moritz++: Cannot get the PID on Mac OS X
15:41 dalek TT #1817: http://trac.parrot.org/parrot/ticket/1817
15:42 Kristaba joined #parrot
15:43 Kristaba Hi everyone
15:43 whiteknight good morning Kristaba
15:44 Kristaba whiteknight: In France, it's afternoon now :p
15:45 whiteknight Kristaba: Good afternoon
15:45 Kristaba No problem, just kidding ^^
15:46 whiteknight So what are you up to this afternoon? Any good GCI tasks?
15:49 Kristaba I worked on the Apertium project, and now I see a french translation task to Parrot, so I propose to do it ;)
15:50 Psyche^ joined #parrot
15:50 Psyche^ is now known as Patterner
16:00 cosimo left #parrot
16:00 cosimo joined #parrot
16:17 whiteknight .NET's native call interface won't let me expose variadic functions directly
16:18 whiteknight so I can't just expose Parrot_api_call_sub, I need to provide explicit overloads for each combination I want to call
16:19 plobsing varargs suck. but we won't get rid of them because we hate our embedders.
16:19 whiteknight I guess an alternative is to create a Parrot_api_call_sub_array function that takes an array of parameters and array of pointers for returns
16:20 whiteknight that would get around the need for varargs, though the implementation might get a little messy
16:20 plobsing I did that, submitted a patch, but it got rejected.
16:21 whiteknight plobsing: I would love to see that patch. It got rejected at a time when I wasn't working on this new embedding API, and when I wasn't acting like Product Manager
16:22 * plobsing searches for ticket
16:23 plobsing http://trac.parrot.org/parrot/ticket/1477
16:23 plobsing allison provides an explanation of the "approved" way of doing things
16:24 Coke atrodo++
16:24 plobsing hmmm... my patch isn't there
16:24 whiteknight ah, okay. I see what she is saying
16:25 whiteknight I can expose that functionality through the embedding API pretty easily, and then use it from C#
16:25 plobsing I'm not a big fan of that approach. An array would be a lot more intuitive.
16:26 whiteknight plobsing: in the ticket description you did say we could calculate a "Parrot-ish" aggregate, and that's what a CallSignature is
16:26 whiteknight Arrays would be fine too
16:27 whiteknight it would be easy to provide an array-based frontend over that kind of mechanism. I could easily add an API function that takes arrays and uses them to create a CallSignature internally
16:28 whiteknight the flattening approach might be nice too
16:28 whiteknight I'll have to see what works best and put together a nice interface for it
16:30 plobsing is there a git-grep-commits ?
16:30 theory joined #parrot
16:31 whiteknight i have no idea
16:31 rurban left #parrot
16:35 fbrito joined #parrot
16:39 plobsing whiteknight: my patch was in the tt1477 svn branch. the issue was also discussed on parrot-dev (http://groups.google.com/group/parrot-de​v/browse_thread/thread/b0e5fdfa1dc84f64)
16:41 whiteknight plobsing: is your issue that you don't like the underlying mechanism of using CallSignature PMCs, or whatever they are called now? Or, is your issue that the Parrot_ext_call interface we expose is too ugly for embedders to use?
16:43 plobsing my issue is that embedders have an ugly interface, and that varargs gets an optimized path through PCC
16:43 plobsing if varargs got translated to callcontext too, I'd be happy with a wrapper that made a callcontext from an array
16:43 plobsing but if that is too slow for varargs, it is too slow for array
16:44 plobsing and anywhere you are using varargs, you could *easily* be using an array in stead
16:45 plobsing also, I do have irrational hate towards varargs, due to its repeated assaults on my sanity
16:46 whiteknight in PCC, everything is translated to CallContext
16:46 whiteknight and varargs is no faster than any other approach
16:47 whiteknight Okay, so here is what I am going to do. I'm going to rip out the current Parrot_api_call_sub routine, which uses varargs. I'm going to replace it with an invoke routine that takes a CallContext
16:48 whiteknight Then we will have routines for creating a CallContext, populating args in it, and pulling returns from it
16:49 whiteknight From there, we can add any other interfaces that people want to see: an array-based one, a varargs-based one, etc
16:50 plobsing whiteknight: hmm... things have changed in pcc since last I looked. used to be things used indirection unless it was calling from varargs.
16:51 whiteknight no, after the last big round of refactors everything is CallContext now
16:51 whiteknight much cleaner
16:51 whiteknight so, since that is the basic unit of a call, the basic interface should use a CallContext PMC
16:51 plobsing you may want to look at Parrot_pcc_build_call_from_varargs for your pretty callcontext wrappers
16:52 whiteknight that's what Parrot_ext_call uses, I think
16:56 Andy joined #parrot
16:58 whiteknight In terms of the embedding API, I'm really trying to keep everything high-level and PMC-based where possible
16:59 whiteknight so I don't want to expose a million little variants on the same operations unless specifically necessary
16:59 whiteknight I think this exposes plenty of power, even if the embedder has to write some extra code to get down to the little details
17:00 whiteknight and it helps insulate libparrot, so devs can make changes to the internals without breaking user code
17:02 NotFound PIR is an assembler, even if a higher level than most assemblers. I don't find such amount of lines unusual.
17:03 whiteknight NotFound: I'm not talking about PIR. I'm talking about embedding libparrot from C
17:04 whiteknight or, in my most recent case, embedding libparrot from C#
17:05 plobsing whiteknight: my one concern about using CallContext is: does PARROT_ARG_CALL_SIG flag nest properly?
17:05 plobsing can I pass a callcontext which delegates to yet another callcontext?
17:07 NotFound whiteknight: is a comment about what you and plobsine were talking apropos winxed pir output,
17:09 plobsing NotFound: it is kinda big. but it's not winxed's fault. 0.5k LOC ometa => 5k LOC winxed => 20k LOC PIR.
17:09 plobsing 4x isn't that bad
17:10 plobsing 5k LOC does stress the compiler a bit though
17:10 sjn left #parrot
17:10 NotFound And BTW winxed does optimizations that can hardly be doable at PIR level, such as knowing when prefef functions usages can be evaluated at compile time.
17:10 * plobsing hates to think how long it would take pirate to compile 20k of PIR
17:11 plobsing NotFound: isn't that constant-propagation?
17:11 whiteknight plobsing: I'm not sure what you mean by CallContext nesting properly
17:12 plobsing If I'm an embedder, and I expose "full parrot PCC" to users, they should reasonably expect to be able to pass that on to their users.
17:12 cotto joined #parrot
17:13 NotFound plobsing: mostly that, yes,
17:13 cotto ~~
17:14 plobsing CallContext{ CallContext { CallContext { CallContext { ... } | ARG_CALL_SIG } | ARG_CALL_SIG } | ARG_CALL_SIG
17:14 plobsing should use the inner-most callcontext (because each flags the next-inner one as its "true" callcontext)
17:15 plobsing that's what I mean by "nesting properly"
17:17 NotFound plobsing: about the ometa part, parser generators usually emit lots of code.
17:17 plobsing that's what they're for after all :p
17:17 NotFound Yeah
17:18 NotFound Better than handcode and debug a lot of repetitive code and tables.
17:20 plobsing NotFound: btw, my bootstrap efforts have flushed out some new winxed bugs.
17:21 NotFound plobsing: that's the problem of being an advanced user ;)
17:22 NotFound Mmmm... constant in void context, never thought about that,
17:22 plobsing yes, that's the one I'm more concerned about
17:23 plobsing they're a result of the way the optimizer works, and eliminating them would be tricky
17:23 NotFound The null one I was aware of. Also in funtion args. Should be easy to fix.
17:24 NotFound plobsing: no problem, I'll fix it.
17:27 NotFound "Now Rakudo has switched to ParrotInterpreter.getpid(), and works like a charm"
17:27 NotFound Uh... the getpid method is experimental.
17:29 NotFound I thought rakudo was going to call Parrot_getpid from C.
17:29 plobsing and? is there anything that says users aren't allowed to make informed decisions about using experimental features?
17:29 NotFound If the method is going to be used, it should be blessed.
17:29 whiteknight NotFound: bless it
17:30 NotFound ok
17:32 whiteknight Parrot_getpid in C is experimental too. Bless that also
17:37 NotFound whiteknight: if we make the method the official way, we can keep the C level as an internal detail subject to change for a now.
17:39 whiteknight okay, that's fine by me too. I would really like to close 2 tickets if possible
17:50 fbrito Complex PMC is going to be deprecated? :o
17:50 whiteknight fbrito: yes. We're going to move it out of core into it's own project
17:52 mtk left #parrot
17:53 mtk joined #parrot
17:53 fbrito ah, ok :D
17:53 fbrito I am still waiting tadzik review my GCI work that increased Complex test coverage in 20%
18:00 mtk left #parrot
18:00 whiteknight fbrito: deprecations take a long time. 3 months at least
18:02 plobsing and at least some of those tests will help the newly spawned project
18:03 fbrito ah, good to know
18:05 mtk joined #parrot
18:07 kapace_school joined #parrot
18:10 kapace_school how do you check what the current code coverage of a PMC is?
18:12 cotto_work kapace_school: pick the latest results at http://tapir2.ro.vutbr.cz/cover/cover-results/ and look for the .pmc file.
18:12 whiteknight cotto_work: how often is that updated?
18:12 fbrito kapace_school: those are the last ones: http://tapir2.ro.vutbr.cz/cover/cover-res​ults/2010-12/2010-12-15-04e8af1/c_cover/
18:12 fbrito from today
18:13 cotto_work whiteknight: looks pretty frequent
18:13 fbrito kapace_school: you can also generate them your own running "make cover", but it takes quite long to run (and you will have to install some dependencies first)
18:14 dalek parrot: c257faa | fperrad++ | / (3 files):
18:14 dalek parrot: [socket] put the buffer in Socket PMC,
18:14 dalek parrot: that allows readline() & read(n)
18:14 dalek parrot: review: https://github.com/parrot/parrot/commit/c257faa1fe
18:15 kapace_school fbrito: ok, yeah i need to do that if i want to do the code coverage tasks
18:15 whiteknight fperrad++
18:16 fbrito kapace_school: if you really take them, let me know. I can probably help you with them
18:17 kapace_school fbrito: ah, thanks
18:17 kapace_school which dependencies do I need?
18:18 fbrito kapace_school: are you on ubuntu/debian-based distro?
18:19 kapace_school fbrito: yes
18:20 fbrito kapace_school: I had to install "libdevel-cover-perl" package
18:23 fbrito and I think I also had to install a CPAN module, but I am not sure... running "make cover" will tell you if you miss anything
18:23 kapace_school right, this isn't in the documentation somewhere?
18:24 whiteknight documentation?
18:24 * whiteknight writes a new GCI task to document make cover
18:25 * kapace_school claims it :P
18:26 whiteknight :)
18:28 NotFound The coverage report is updated twice a day
18:28 bluescreen left #parrot
18:28 NotFound (if the revision it picks builds fine)
18:29 bluescreen joined #parrot
18:31 whiteknight Do we have any French-speaking developers?
18:32 NotFound Thinking better about Parrot_getpid, the function is so simple that there is no good reason to keep as experimental. Let's bless it.
18:32 moritz +1
18:32 whiteknight +1
18:32 moritz whiteknight: fperrad maybe?
18:32 whiteknight +A BAJILLION
18:32 moritz (just guessing based on the name)
18:32 whiteknight moritz: ah, good idea
18:33 moritz je parle un petit peux francais aussi
18:33 NotFound I can read French, but I'm unable to judge quality.
18:33 whiteknight fperrad: ping
18:34 NotFound (I'm also unable to judge English quality but I write some docs using it, sigh)
18:35 Kristaba moritz: -peux +peu*
18:36 Kristaba ('peux' is the verb 'pouvoir', not the adverb ^^)
18:36 NotFound Je peux parler un peu.
18:37 Kristaba :p
18:37 plobsing google translate rearranges the verb so that moritz' sentence means the same thing
18:37 plobsing manglage for the win
18:38 theory left #parrot
18:38 NotFound Ils sont fous, ces googles.
18:40 Coke I question the need for the readme translations and ponder a button on docs.parrot.org that just takes you to google translate for that page.
18:41 plobsing Coke: have you ever tried google translate?
18:41 Kristaba plobsing: +1
18:41 Coke ¿Qué es el loro?
18:41 plobsing I speak enough french to know it does a splendidly horrid job. (at least last time I checked)
18:42 plobsing the german => english is pretty bad too
18:42 whiteknight Coke: there may be no "need" for it
18:43 Coke plobsing: yes. I find it's quality enough to get the gist across, usually.
18:43 Coke GAH its
18:43 plobsing my hovercraft is full of eels
18:44 Kristaba Read a human-written document is more easy (and really less tiring) than a google translation ;)
18:44 kapace_school fbrito: ok, I make'd cover, but I don't see src/eventhandler in the coverage report...
18:44 kapace_school erm, i don't see any /pmc/ in the report
18:44 Coke i'm more concerned about the lack of quality control and maintenance cost of the translations.
18:45 Coke we can't even keep our code or english docs up to date.
18:45 whiteknight Coke: in general, no. But README does not change much
18:45 NotFound Coke: so I am
18:45 kapace_school it says "t/pmc/eventhandler.t ................ ok" in the test log...
18:45 Coke note: let's at least use locales instead of languages on the README extensions.
18:46 Kristaba Coke: I'm asking the same question... The README documents maintenance will be very complicated
18:47 whiteknight Many other open source projects maintain translations of both user interface messages and documentation
18:47 whiteknight it's not undoable, but we need to be open to it and search for best practices
18:48 whiteknight This GCI translation work is, if nothing else, a testbed for figuring out how we want to go about handling this
18:49 Coke I'd rather spend tuits on code, but fair enough.
18:49 whiteknight We don't pick what tasks the students take. They pick
18:49 whiteknight the tuits aren't fungible for us to spend wherever we want them
18:49 Coke whiteknight: ? those tasks are coming from you and dukeleto, no?
18:49 whiteknight We create the tasks, yes. We have several dozen of them. Students pick which to take
18:50 whiteknight we have many code-related tasks in the queue that nobody is taking
18:50 zaur joined #parrot
18:50 Coke whiteknight: I understand how that works in the general case, thanks. Our job is to encourage people to work on things that will help the project.
18:50 whiteknight and if we don't offer the translation tasks at all, other projects will and the students will go there instead
18:50 fbrito kapace_school: sorry... I was away
18:50 Kristaba About that... Someone know when cotto come back? My translation is already finished :o
18:51 zaur Hi all
18:51 whiteknight Kristaba: cotto probably can't evaluate it. We need to find a French speaking developer to proof-read it
18:51 whiteknight hello zaur
18:51 zaur i would like to help parrot project
18:52 whiteknight zaur: Awesome! What are you interested in doing?
18:52 zaur i could translate from english to russian
18:52 gg411 joined #parrot
18:52 whiteknight zaur: Okay, are you a GCI student?
18:53 * Coke pings someone he knows who is french-canadian...
18:53 cotto_work I'm not reliable to review anything but English.
18:53 fbrito kapace_school: have you run "make cover"?
18:54 kapace_school fbrito: yes, I ran make cover
18:54 kapace_school and no errors, but the report doesn't have any /pmc/'s
18:54 zaur GCI ??
18:54 NotFound plobsing: hash literals in void context are not possible, the open bracket is parsed as begin of block. You need it for some reason?
18:54 Kristaba cotto_work: Ok :)
18:54 cotto_work atrodo: ping
18:55 whiteknight zaur: GCI is a program where students perform tasks, like translations
18:56 fbrito kapace_school: hm, I have the same problem on my environment (Ubuntu 10.10) :(. actually, I am running make covre on a Ubuntu 9.10 virtual machine
18:56 Coke whiteknight: I have a french speaker who's willing to check it, as it's only one file.
18:56 plobsing NotFound: ATM, not really. my patch works around my immediate issues.
18:56 Coke where's the translation at?
18:56 zaur whiteknight no)
18:56 NotFound plobsing: I'm about to commit a more complet fix.
18:57 Coke Kristaba: URL to the translation?
18:57 plobsing NotFound: but hash literals in void ctx are possible: ({ 'a': 'b'};
18:57 whiteknight cotto_work: did we have a Russian translation submission?
18:57 NotFound plobsing: oh, yes, don't figured that.
18:57 whiteknight Coke: https://github.com/Kristaba/parrot/blob/764e225c​9bfb188528eddc7a257d9c01e1f28359/README.francais
18:57 Kristaba Thank you whiteknight and Coke ;)
18:57 NotFound Also, I may provide a void casting pseudofunc some day.
18:58 kapace_school fbrito: yeah, I'm on ubuntu 10.10 live
18:58 fbrito kapace_school: when I run make cover on my box, it only generates the report for 7 files
18:58 kapace_school oh, thats worse than mine, it does most, just not the pmc ones :(
18:59 Coke comment: "the license blurb has to have been translated officially somewhere. I recommend you use that."
19:00 cotto_work whiteknight: we do seem to have a Russian translation
19:00 fbrito kapace_school: are you testing on master or on your modified branch? is make test passing?
19:00 kapace_school fbrito: master, make test passes i think
19:02 fbrito kapace_school: hm, that's weird. if you want you can work on the task and when you think you have finished it I can run the "make cover" for you
19:02 cotto_work can someone review the iterator test coverage increase?  The pull request is at https://github.com/parrot/parrot/pull/33 .
19:02 fbrito wait, that's actually complex pmc :)
19:02 fbrito the GCI task title is wrong
19:03 cotto_work ah
19:03 theory joined #parrot
19:03 kapace_school fbrito: nvm, it fails
19:04 fbrito kapace_school: are you aware of the "prove" command? you can test single .t files with it (also check -vf params)
19:04 kapace_school ah useful
19:04 kapace_school http://dpaste.org/tSZ0/ <-- failure
19:04 plobsing NotFound: I also have a fix for the nulls problem. Should I post it, or do you already have somethign in the works?
19:05 NotFound plobsing: I was about to start looking at it, please post it.
19:05 kapace_school can i skip or ignore the io tests?
19:06 fbrito kapace_school: try running prove t/pmc/io.t -vf
19:06 dalek winxed: r717 | NotFound++ | trunk/winxedst1.winxed:
19:06 dalek winxed: fix code generation for several types of expressions when used in void context,
19:06 dalek winxed: Issue 8, plobsing++
19:06 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=717
19:07 kapace_school fbrito: want the output, confuses me :|
19:07 fbrito kapace_school: also make sure you are working on the parrot master branch, and not on an old tree... as far as I remember, all tests are passing on master
19:08 nopaste "plobsing" at 192.168.1.3 pasted "[winxed] nulls in arrays" (17 lines) at http://nopaste.snit.ch/27160
19:08 plobsing NotFound: ^^
19:08 kapace_school fbrito: i did git clone https://github.com/parrot/parrot.git today.. no modifications
19:09 adu joined #parrot
19:09 adu does anyone here know about the c99 module?
19:09 NotFound plobsing: looks fine, thanks.
19:09 kapace_school im on a live system, maybe thats the problem
19:09 kapace_school ill try at home
19:10 adu http://pastebin.com/DiRLxcL3
19:10 adu i have no idea where this c99_group library is supposed to be
19:11 fbrito kapace_school: yes, that may be a problem. let me know if you still have problems on your home environment :D
19:11 kapace_school ok thanks for your help fbrito
19:11 kapace_school and good job on GCI!
19:12 fperrad whiteknight pong
19:12 plobsing adu: c99_group.{so,dll} dynlib should be created under dynext/ by the makefile
19:12 kapace_school left #parrot
19:12 whiteknight fperrad: we had a GCI student submit a french translation of README. We were looking for people to review it
19:12 whiteknight Somebody suggested you might speak french
19:13 fperrad yes, it's my native language
19:13 plobsing adu: have you run 'perl Configure.pl; make'? or just 'parrot c99.pir'?
19:14 adu yes, I had to change NQP=parrot-nqp.pbc to get it configured
19:15 adu then that pastebin was for "make"
19:15 Coke fperrad: I did just have a french canadian friend of mine review it, but another pair of eyes wouldn't hoit.
19:15 whiteknight adu: c99 is very old. Can probably be fixed with some effort. What are you planning to use it for>?
19:16 adu plobsing: should I run parrot c99.pir?
19:16 adu whiteknight: experiments
19:16 plobsing adu: no. but that is the result you would get if you had.
19:16 plobsing I was hoping the makefile wasn't borked
19:16 plobsing it is
19:16 plobsing it never got updated after it left the nest.
19:16 adu it is
19:17 adu well I can hack away at it, but i have no idea what I'm doing
19:17 plobsing if you want to fix it, it is generated from files in config/makefiles/
19:18 plobsing 2 things you might want to fix: c99.pbc depends on $(C99_GROUP), $(C99_GROUP) is mis-named $(C_GROUP)
19:19 adu ok
19:19 adu I don't see any rules for that in the makefile
19:20 plobsing lines 36 and 46 stick out to me
19:20 plobsing of root.in
19:21 adu plobsing: right
19:21 plobsing > du -h stage1.pbc
19:21 plobsing 1.1M stage1.pbc
19:21 plobsing \o/
19:21 adu but neither of those build c99_group.bundle
19:21 plobsing .bundle? what OS uses that for their shared object extension?
19:22 adu macosx
19:22 plobsing I thought it used .dynext
19:22 adu its actually .dylib on macosx, but the configure script chooses .bundle for some reason
19:22 plobsing or dynlib
19:22 adu don't know why
19:22 bacek joined #parrot
19:22 adu its ok, because all the libs in parrot/runtime/dynext are named .bundle too
19:23 plobsing thats... weird
19:23 adu technically speaking .bundle is used for directories which contain lots of shared libraries
19:23 adu and .dylib is for the shared libraries themselves
19:25 plobsing that's all parrot-configure's business, and I'm no expert on the subject
19:25 adu anyways i'm not worried about it
19:25 adu what I'm worried about is what files are supposed to be compiled into c99_group?
19:26 adu I don't see any .c files anywhere
19:26 plobsing by convention, x_group libraries are libraries of all PMC classes for language or package x.
19:26 adu so would that be stuff in C99.pm?
19:27 plobsing probably not
19:27 plobsing look for *.pmc files
19:27 plobsing if the dependancies worked properly, the appropriate .c files should get generated properly
19:28 adu c99_PGE.pir?
19:29 plobsing nope. that's a PIR (script) file
19:29 rfw joined #parrot
19:29 plobsing there appear to be no PMCs in c99. c99_group will not exist until there are some.
19:30 plobsing if c99 doesn't need the PMCs, you should comment out that line
19:30 adu ok
19:31 adu also, I know nothing about Perl6Grammar language, so I was thinking of writing a language frontend to Parrot, but I've already written it in Haskell, do you know of any other languages written in Haskell?
19:32 plobsing adu: that target parrot, or in general?
19:32 adu yeah, well I've already written the lexer and parser
19:32 adu but I have yet to write the compiler, which I plan on writing to target Parrot
19:33 adu I'm just wondering if there are any "gotchas" in writing in something OTHER than Perl6Grammar
19:33 plobsing I think pugs toyed with the idea of targetting parrot at one point, but beyond that, I am not aware of any Haskell-impelemted frontends
19:33 adu i see
19:33 plobsing adu: I am currently working on a self-hosing OMeta implementation on parrot
19:33 adu well, pir is just text, that shouldn't be too hard
19:33 adu what's OMeta?
19:34 plobsing that makes no use of perl6
19:34 adu the language I'm working on is Go
19:35 adu I know Go is supposed to be systems, not dynamic, but I think its logical
19:35 plobsing OMeta is a "parasitic" language for stream processing (sort of like list processing)
19:35 adu parasitic? how so?
19:36 plobsing the designer refers to it as "parasitic" because it never exists in isolation. it always sits inside of another language (the "host" language)
19:36 adu lol
19:36 adu sounds like Scala
19:37 NotFound plobsing: that fix doesn't work for me, I'm testing another way.
19:37 adu plobsing: have you heard of Go?
19:37 plobsing sort of like scala, in the sense that it is has a very functional feel to it
19:37 NotFound adu: you mean golang?
19:37 plobsing adu: I have. I am unimpressed given the big names behind it.
19:37 adu NotFound: yes
19:38 NotFound adu: I refuse to call it "Go" because of http://code.google.com/p/go/issues/detail?id=9
19:39 adu plobsing: I am very impressed with the literal syntax, so much so that I'm thinking of switching from JSON to GoSON
19:39 plobsing the world doesn't need "Yet another sop to programmers that want to think they are programming in assembly when they really shouldn't be"
19:39 adu plobsing: but my biggest peeve about it is that all the builtins are lowercase (but global) and the only way to define your own globals is to make them uppercase
19:40 adu plobsing: i.e. if you wanted to define your own int128 type, you can't... you have to define Int128 and pretend the i is lowercase
19:41 adu sop?
19:41 plobsing http://www.thefreedictionary.com/SOP
19:42 adu standard operating procedure?
19:43 plobsing n. Something yielded to placate or soothe.
19:45 adu NotFound: I know of at least 3 D programming languages, and you don't see Digital budging
19:46 plobsing adu: I'm lost. what does your goog-go implementation for parrot in haskell have anything to do with an ancient c99 implementation for parrot in perl 6?
19:46 NotFound adu: I have no problem with that, I never name none of them.
19:46 adu not much
19:47 fbrito tadzik: ping
19:47 adu plobsing: as I said, the only reason I'm interested in the c99 module is "experiments"
19:48 plobsing adu: my advice is that you not base your insights about parrot on something that hasn't been touched in 2 years (during which time parrot has changed significantly)
19:48 adu ok
19:48 adu then f*** c99
19:48 adu :)
19:48 plobsing the valid only reason to look at c99 would be to revive it
19:49 plobsing and, while interesting, would probably not be that rewarding
19:49 adu i mean i like c, so its one of those things that "would be nice"
19:49 adu but as i said, i know nothing about P6G
19:50 plobsing P6G is pretty self-explanatory for people familiar with yacc and its ilk
19:50 adu if i were to revive c99 then it would end up being written in Haskell (which already has C99 lexer and parser libraries)
19:50 adu and I don't think Parrot people want that
19:51 dalek winxed: r718 | NotFound++ | trunk/winxedst1.winxed:
19:51 dalek winxed: fix code generated for null values in array and hash expressions, Issue 9,
19:51 dalek winxed: plobsing++
19:51 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=718
19:51 adu i might as well start a new project called c99hs or something
19:51 plobsing adu: why would we not want that?
19:51 plobsing parrot isn't *just* about perl 6
19:51 adu i dunno, seems like every Parrot language is written in P6G
19:51 zaur left #parrot
19:52 plobsing adu: that was the first tool written for compilers on parrot. it was the only available tool for a long time.
19:52 plobsing there are a number of efforts to change that (monoculture is dangerous)
19:52 plobsing adu: although we do have preference for self-hosted implementations
19:52 adu well, then here I go, er uhm i mean here I c99!
19:53 adu lol
19:53 NotFound adu: when I started writing winxed the situation were like you describe, but I didn't care.
19:53 adu plobsing: by self-hosting do you mean a go-compiler in go, or a c99-compiler in c99?
19:54 adu or do you mean no dependancies on Haskell?
19:54 plobsing both. the reason is that a self-hosted compiler to parrot is by definition parrot-hosted
19:55 plobsing a direct Haskell -> parrot compiler would not be parrot-hosted (we have no haskell implementation yet, interested?)
19:55 plobsing however, a Haskell -> parrot compiler could be used to bootstrap a parrot-hosted implementation
19:56 adu right, but Haskell is incredibly complex
19:56 adu perhaps a GHCCore -> parrot compiler would be easier
19:57 adu GHCCore is basically Haskell minus syntax sugar
19:57 plobsing bootstrapping examples I know of are: winxed (which bootstraps off of C++), and my ometa implementation (which bootstraps off of node.js)
19:57 adu interesting
19:57 plobsing adu: is that like STG?
19:57 adu i think STG is the runtime library for Haskell
19:58 gg411 left #parrot
19:58 TimToady Perl 6 is not intended to be a monoculture :P
19:58 plobsing (IIUC) STG is GHC's VM abstraction
19:58 adu ah, ok
19:59 AndChat| joined #parrot
19:59 plobsing also TLA OMGWTFBBQ
19:59 adu anyways, I'm not sure if writing a Haskell compiler, just so I can write C99/Go compilers would be worthwhile
19:59 plobsing adu: it's not a requirement. just a preference.
19:59 TimToady phone?
20:00 NotFound There is more than one way to write parsers ;)
20:01 adu but once C99 is a hosted language, then parsers can be written in lex/yacc for Go...
20:01 adu that is certainly an option
20:01 adu anyways, thanks for the culture
20:02 adu i mean what's wrong with "apt-get install ghc"?
20:02 plobsing ubuntu packages are perpetually 6 months out of date. that's what.
20:02 adu o yeah
20:03 adu i've noticed that
20:04 adu TimToady: phone?
20:07 AndChat| left #parrot
20:07 atrodo cotto_work> pong
20:08 cotto_work atrodo: My writeup of the context-related parts of the braindump is at http://reparrot.blogspot.com/2010/12/no​tes-from-lorito-braindump-contexts.html .
20:08 atrodo cotto_work> Saw that.  Read it once.  Probably going to read it again
20:08 adu what is lorito?
20:08 cotto_work I have between one and three more of those coming up.
20:09 adu COW is evil
20:09 cotto_work http://trac.parrot.org/parrot/wiki/Lorito
20:09 cotto_work unfortunately you'll have to dig around a bit to get a complete-ish picture
20:10 cotto_work adu: what do you mean?
20:11 hercynium joined #parrot
20:14 atrodo cotto_work> I looked at yalp last night.  Looks neat, but it's only a parser at this point
20:14 Coke http://tartley.com/?p=1267
20:15 cotto_work atrodo: ok.
20:16 adu cotto_work: http://www.gotw.ca/publications/optimizations.htm
20:17 adu cotto_work: what does the trac page mean by "pretty much"?
20:18 cotto_work PIR will be be reimplemented in M0 (a.k.a. Lorito ops).  We expect full compatibility for existing PIR code, but we won't know if it's possible until we get there.
20:22 Coke whiteknight: You probably want to close #1580.
20:25 fbrito tadzik: ping
20:29 adu cotto_work: so M0 is going to be a minimal VM kinda like microcode for Parrot?
20:29 perlite left #parrot
20:30 adu cotto_work: have you considered using another VM without changes? like LLVM or MMIX?
20:31 plobsing LLVM is a target under consideration (although the nomenclature about it being a VM is a bit misleading. it's more of a compiler kit)
20:31 perlite joined #parrot
20:32 dalek parrot: c8c15cc | NotFound++ | t/pmc/namespace.t:
20:32 dalek parrot: some more test for exception conditions in Namespace PMC methods
20:32 dalek parrot: review: https://github.com/parrot/parrot/commit/c8c15cc77d
20:33 PerlJam adu: MMIX?  Like Knuth's thing?
20:33 cotto_work adu: Yes.  Microcode is a fairly good analogy to understand M0.
20:34 adu PerlJam: yes, that thing
20:34 adu MMIX has a beautiful microcode format: 32-bits separated out into (8, 8, 8, 8).
20:34 PerlJam adu: This is the first time I've ever seen someone suggest it to be used for something "serious"
20:35 adu why not?
20:37 whiteknight Exactly what it is, is not nearly as important as the fact that it's better than PIR
20:37 whiteknight I would lean towards LLVM code over anything like MMIX
20:37 adu doesn't LLVM have a variety of representations? like bytecode/assembly?
20:38 whiteknight that I am aware of, it has an assembly language and a bytecode
20:38 theory left #parrot
20:38 adu also, one downside of MMIX is that it requires a 64-bit memory model
20:39 atrodo that's a big downside
20:40 adu Knuth's simulator for it works on 32-bit
20:40 whiteknight LLVM assembly language makes the most sense if we're planning to use LLVM for our JIT engine
20:41 dalek TT #1580 closed by whiteknight++: gziphandle PMC
20:41 dalek TT #1580: http://trac.parrot.org/parrot/ticket/1580
20:41 adu yes
20:41 atrodo But then we're tied to LLVM and cannot use anything else
20:41 whiteknight although in reality, we don't want to use any particular assembly language. Far better is to add an abstraction which can be easily translated to any other assembly language we want
20:41 whiteknight we doing want to tie to LLVM, but we want to be able to quickly and efficiently translate to it
20:41 adu perhaps you could reimplement LLVMAsm in PIR!
20:42 plobsing PIR operates at a higher level than LLVM. Explicit pointers are something we'd like to avoid exposing to users (except when they ask really nice for them).
20:43 whiteknight PIR is something we would like to avoid exposing to users
20:43 plobsing layers upon layers...
20:43 whiteknight turtles all the way down
20:43 plobsing I *do* like turtles
20:43 atrodo whiteknight++
20:43 NotFound One Logo to rule them all
20:44 atrodo All your basic are belong to us
20:44 NotFound May the Fortran be with you.
20:45 adu Fortran is amazing, its practically the oldest programming language in the universe
20:48 rfw how does fdiv in pir work?
20:49 rfw does it floor divide if i put it into an Integer or something?
20:50 PerlJam fortran is the oldest programming language still in use, isn't it?
20:52 atrodo That's what wikipedia says
20:52 adu PerlJam: I think it's a tie between Fortran and Lisp
20:53 adu iirc, there are some lambda papers from before Fortran
20:54 NotFound A paper is not a language in use.
20:55 adu true
20:55 adu in that case Fortran wins
20:55 NotFound Well, maybe if you have an origami-made computer...
20:55 plobsing the Fortran still in use hardly resembles the original FORTRAN II
20:55 adu 1975 was the first lambda paper n/m
20:55 plobsing i'd argue they are different languages
20:57 * adu wants an origami computer
20:57 plobsing is origami turing-complete?
20:57 adu yes... it better me
20:57 Coke PIR is not something I would like to avoid exposing to users, but YMVV.
20:57 Coke (YMMV)
20:57 adu if not, then let it fear my scissors!
20:58 atrodo Coke> I agree.  It's a better option to expose than pasm
20:58 Coke (having written an insane amount of handrolled PIR, I am probably not a reliable source)
20:58 adu atrodo: why?
20:59 cotto_work atrodo: It's better than bf too.  That doesn't make it a good idea.
20:59 atrodo adu> I like the magic at that level
20:59 atrodo cotto_work> touche
20:59 adu atrodo: magic? i thought PIR was magick-less
20:59 cotto_work M0 will be magic-less.  PIR has plenty of magic.
21:00 * cotto_work goes off to hunt the wild sandwich
21:00 dalek parrot: aaf8008 | NotFound++ | / (3 files):
21:00 dalek parrot: remove experimental status from Parrot_getpid function and ParrotInterpreter getpid method, TT #1564
21:00 dalek parrot: review: https://github.com/parrot/parrot/commit/aaf80082aa
21:00 adu so M0 has no malloc/argument polymorphism or anything?
21:01 plobsing polymorphism is a form of magic
21:03 NotFound Any sufficiently advanced polymorphism is indistinguishable from magic.
21:06 adu any sufficiently advanced magic is indistinguishable from technology
21:07 adu left #parrot
21:10 NotFound plobsing: what's the winxed file you talked about with whiteknight? ometa-base.winxed ?
21:11 plobsing stage1.winxed
21:11 plobsing it's the catenation of all the winxed sources
21:11 NotFound It is in the repo, or must be generated?
21:12 plobsing generated
21:13 NotFound Executing Ωη.coda.winxed on the bootstrap dir is enough?
21:13 plobsing no. that's the coda (thing that comes at the end)
21:14 whiteknight PIR is PASM. We aren't trying to get rid of one and keep the other
21:14 whiteknight and I don't want to get rid of PIR and expose lower-level Lorito to the users either
21:14 plobsing NotFound: run make in src/bootstrap (recently moved to just src/)
21:14 whiteknight Users should not be programming anything in assembly language. Not our assembly language, not any assembly language
21:14 plobsing the default target builds stage1 (because I haven't gotten past there yet)
21:14 whiteknight C programmers have known this for several decades
21:15 whiteknight PIR is assembly language in the same way that MASM and HLA are assembly languages
21:15 whiteknight PIR is no different from PASM and is not an alternative to it
21:15 NotFound Ah, yes, no bootstrap dir now.
21:15 nopaste "plobsing" at 192.168.1.3 pasted "[Ωη] stage1.winxed (indented)" (6145 lines) at http://nopaste.snit.ch/27164
21:15 whiteknight syntactical bullshit on top of the same underlying deathtrap
21:16 whiteknight If we get rid of PIR, the replacement will be *higher* level, not lower
21:16 whiteknight at least in terms of the user experience
21:16 plobsing gnu indent is a godsend for this kind of C-like-language generation
21:17 dalek TT #1564 closed by NotFound++: expose a getpid library function for Rakudo $*PID and other languages
21:17 dalek TT #1564: http://trac.parrot.org/parrot/ticket/1564
21:18 NotFound plobsing: what should I install to build it? rhino?
21:18 plobsing node.js
21:18 plobsing also git submodule init
21:19 plobsing (to fetch OMeta/JS)
21:19 Coke PIR Ain't PASM.
21:19 plobsing PAP ain't PIR
21:20 sorear whiteknight++ # Parrot# is awesome
21:22 fbrito tadzik: ping
21:22 whiteknight sorear: thanks! Much nicer to implement on top of the new API
21:23 whiteknight Coke: PIR is PASM with a preprocessor. It's all the same thing. The same exact units of execution. The same exact level of abstraction. All the same operations. Same operands.
21:23 whiteknight a few syntactic niceties for the coder, but it's the same thing
21:24 whiteknight Whether I write $P0 = foo $P1, or foo $P0, $P1 is an organization change, not a language change
21:25 theory joined #parrot
21:25 plobsing whiteknight: that's not quite true. at first it was, and it intended to stay that way. but our wholesale adoption of PIR and abandonment of PASM led to several discrepancies being introduces without being identified until much later.
21:25 whiteknight plobsing: all those discrepancies are things that IMCC does at lex and parse time
21:25 whiteknight and those thigns are typically only turned off because IMCC enters into different modes
21:26 plobsing whiteknight: not quite. all those nice "declarative" syntaxes for things don't work from PASM and never should.
21:26 plobsing the problem is that we don't have imperative syntax for accomplishing the same leading to "you can't get there from here"
21:26 whiteknight plobsing: right, that's just a readability enhancement, not a change in the conceptual language
21:27 whiteknight and if anything, PASM isn't a thing because it's not complete. It's just a mode in IMCC
21:27 whiteknight it's a subset of PIR
21:29 NotFound plobsing: looks like I should change 'node' to 'nodejs' in the Makefile to work with the ubuntu package
21:29 whiteknight I'm dispelling the argument that without PIR we would be stuck with PASM
21:29 whiteknight I say we bundle the two of them up with tape and throw them both out the window
21:30 whiteknight left #parrot
21:30 Coke *sigh*
21:30 plobsing NotFound: yes, sorry. I'm not really good with this whole configuration thing.
21:34 NotFound plobsing: stage1.winxed lacks a newline before eof
21:35 plobsing NotFound: is that a problem?
21:35 NotFound plobsing: not for winxed, but it may fool some tool.
21:36 plobsing it will have a newline at the end of the file once I implement the coda
21:38 NotFound In a quick look, generated pir looks good, I don't see obvious targets for optimizations.
21:39 plobsing yeah, it looks pretty sweet. other than the massive amount and depth of closures generated
21:39 plobsing (closures are serialized *very* inefficiently in PBC ATM)
21:40 plobsing | Sub1 | Sub2 -> Sub1 | Sub3 -> Sub1 | Sub2 and Sub3 each store their own complete copy of Sub1
21:41 plobsing as depth of these trees increases, this becomes quite costly
21:42 NotFound Having code that makes deep use of them may motivate someone to improve it.
21:43 plobsing nqp and rakudo already do that.
21:43 plobsing the result was we spent a lot of time making those deserializations really fast
21:43 NotFound But nqp generated pir is harder to read ;)
21:44 plobsing in stead of addressing the underlying problem
21:44 plobsing NotFound: that's why we had no idea what the problem was
21:45 NotFound stage1.winxed has 448 lines, You didn't said soemthing about 4.000?
21:45 plobsing run gnu indent
21:45 plobsing many of those lines are *very* long
21:45 plobsing and impossible to read
21:46 plobsing indent does a decent job, although it mangles some of it (eg: ===)
21:46 NotFound Oh, the last line has 66244 characters :o
21:46 NotFound 66224
21:47 plobsing how much can you get done in a single line of winxed? depends on how long the line is.
21:47 NotFound That's the beauty of free-format languages ;)
21:56 Yuki`N joined #parrot
22:00 rfw how do i test set_pmc?
22:02 plobsing IIRC, setref and deref make use of them
22:08 Yuki`N Protip: grep -r set_pmc src/ops
22:08 fperrad left #parrot
22:09 NotFound I like the trick ecmascript 5 is going to use for the "use strict" pragma: a string in void context. Maybe I can use that trick for some winxed thing.
22:10 plobsing it is cute. However, you aren't bound by strict backwards compatability yet. You can add whatever syntax you like for a while yet.
22:11 plobsing and you just got strings working in void context today, so arguably, they aren't even backwards compatible yet
22:11 NotFound plobsing: yes, but I prefer to borrow familiar looking ways when possible.
22:12 sorear NotFound: "going to use"?  It's already in the published standard
22:13 sorear Yuki`N: grep -r wastes a lot of time if you have object files or generated .c files lying around
22:13 NotFound sorear: yeah, but until web programmers get used to it, decades may pass.
22:13 sorear Yuki`N: you're better off using git-grep or ack
22:14 plobsing we even have an explicit tool to search the ops in tools/dev
22:18 Yuki`N Lol really.
22:18 Coke plobsing: yah, that always seemed like a waste to me.
22:20 plobsing what's the point of good tools if nobody knows about them, can't remember about them when they could use it, or could just cook something up on the spot quickly to replace it?
22:22 Yuki`N There's a bunch of unused C functions in the BigNum PMC.
22:22 Yuki`N What do I do?
22:22 Yuki`N It's technically impossible to cover them.
22:24 plobsing do I hear a chainsaw?
22:24 NotFound Yuki`N: that's one of the points of improving coverage: identifying unused code.
22:25 Yuki`N Ah.
22:26 NotFound My first contributions to parrot were code deletions X-)
22:26 Yuki`N I'll submit a pull request without the code deletions.
22:26 Yuki`N Up exactly 30%, from 59.9% to 89.9%
22:27 rfw how do i test the i_ functions?
22:27 rfw like i_add
22:28 Yuki`N P0 = new ['Integer']
22:28 Yuki`N $P0 = 0
22:28 Yuki`N add $P0, 5
22:28 Yuki`N That's i_add
22:28 Yuki`N There should be a $ in the first line; I'm still in PASM mode.
22:29 NotFound Better use .local instead of PIR registers.
22:29 Kristaba left #parrot
22:31 Tene left #parrot
22:31 Yuki`N True.
22:31 Yuki`N https://github.com/parrot/parrot/pull/35 my pull request
22:31 Tene joined #parrot
22:34 Yuki`N I wonder why stringifying BigNums is such a broken thing. ;-;
22:38 sorear because nobody uses BigNum
22:39 NotFound Yuki`N: usually uncovered by tests => no one has used it => lots of undiscovered bugs
22:39 Yuki`N Oh.
22:39 sorear also, BigNum is only semi-randomly present in Parrot
22:39 sorear so nobody *can* rely on it
22:39 NotFound This week I fixed a segfault bug in Namespace, no less.
22:40 sorear (it depends on whether the End User installed libgmp-dev before Parrot, which is something HLL devs can't control at all)
22:40 Tene left #parrot
22:41 plobsing plumage would be able to take care of these things
22:42 plobsing HLLs put a dependancy on BigNum, then plumage tries to get it, BigNum fails to build informing user of how and why.
22:42 NotFound Yuki`N: we looks for slaves^h^h^h^h^h^hvolunteers to improve coverage because of that.
22:49 NotFound Talking about plumage: "Failed to parse metadata file 'metdata/winxed.json': Invalid character in ASCII string"
22:50 dalek winxed: r719 | NotFound++ | trunk/ (3 files):
22:50 dalek winxed: update installable files
22:50 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=719
22:51 NotFound plumage fails to set ut8 encoding for reading json files.
22:52 plobsing seriously?
22:52 NotFound And my name is Julián, with aacute
22:52 NotFound plobsing: yes, I've seen it right now with parrot master
22:53 plobsing looks like Ωη;)XD isn't getting into current plumage then
22:53 NotFound Probably the changes in charset/encoding handling broke it recently.
23:01 Yuki`N left #parrot
23:07 Tene joined #parrot
23:22 cotto_work I love that gists can be used as git repos.
23:24 cotto_work Tene: ping
23:25 Tene cotto_work: pong
23:25 cotto_work Tene: do you know about how Scheme people get nice backtraces with tailcall optimization?
23:26 Tene cotto_work: I know absolutely nothing about scheme implementations.  All I've ever done with scheme is write a Parrot compiler for it.
23:26 cotto_work ok
23:26 Tene Sorry. :)
23:26 cotto_work np
23:28 Kapace_ fbrito: at home now, brand new clone of master, make test -> passes. make cover... make test now fails
23:29 rfw left #parrot
23:29 dmalcolm left #parrot
23:29 particle left #parrot
23:29 Coke left #parrot
23:29 ingy left #parrot
23:29 ttbot left #parrot
23:29 slavorg left #parrot
23:29 edenc left #parrot
23:29 perlite left #parrot
23:29 hercynium left #parrot
23:29 bacek left #parrot
23:29 cosimo left #parrot
23:29 cognominal left #parrot
23:29 wagle left #parrot
23:29 Kulag left #parrot
23:29 jsut_ left #parrot
23:29 TonyC left #parrot
23:29 nopaste left #parrot
23:29 spinclad left #parrot
23:29 cotto_work left #parrot
23:29 frodwith left #parrot
23:29 dukeleto left #parrot
23:29 treed left #parrot
23:29 Maddingue left #parrot
23:29 jnthn left #parrot
23:29 athomason left #parrot
23:29 sri left #parrot
23:29 mikegrb left #parrot
23:29 Tene left #parrot
23:29 theory left #parrot
23:29 mtk left #parrot
23:29 mikehh left #parrot
23:29 dip left #parrot
23:29 Kapace_ left #parrot
23:29 preflex left #parrot
23:29 pmichaud left #parrot
23:29 atrodo left #parrot
23:29 janus left #parrot
23:29 szabgab left #parrot
23:29 szbalint left #parrot
23:29 jasonmay left #parrot
23:29 PacoLinux left #parrot
23:29 PerlJam left #parrot
23:29 moritz left #parrot
23:29 mj41 left #parrot
23:29 zostay left #parrot
23:29 knewt left #parrot
23:29 cxreg left #parrot
23:29 cotto left #parrot
23:29 fbrito left #parrot
23:29 Khisanth left #parrot
23:29 slavorgn left #parrot
23:29 he_ left #parrot
23:29 sorear left #parrot
23:29 Util left #parrot
23:29 tadzik left #parrot
23:29 krunen left #parrot
23:29 TimToady left #parrot
23:29 TiMBuS left #parrot
23:29 dalek left #parrot
23:29 p6eval left #parrot
23:29 Kapace left #parrot
23:29 Hunger left #parrot
23:29 jhelwig left #parrot
23:29 NotFound left #parrot
23:29 arnsholt left #parrot
23:29 GeJ left #parrot
23:29 rblackwe left #parrot
23:29 autark left #parrot
23:29 elmex left #parrot
23:34 bluescreen left #parrot
23:36 bluescreen joined #parrot
23:36 Tene joined #parrot
23:36 theory joined #parrot
23:36 perlite joined #parrot
23:36 hercynium joined #parrot
23:36 rfw joined #parrot
23:36 bacek joined #parrot
23:36 mtk joined #parrot
23:36 cotto joined #parrot
23:36 fbrito joined #parrot
23:36 cosimo joined #parrot
23:36 dmalcolm joined #parrot
23:36 particle joined #parrot
23:36 cognominal joined #parrot
23:36 wagle joined #parrot
23:36 Kulag joined #parrot
23:36 mikehh joined #parrot
23:36 Coke joined #parrot
23:36 jsut_ joined #parrot
23:36 dip joined #parrot
23:36 Khisanth joined #parrot
23:36 Kapace_ joined #parrot
23:36 TonyC joined #parrot
23:36 nopaste joined #parrot
23:36 ingy joined #parrot
23:36 slavorgn joined #parrot
23:36 preflex joined #parrot
23:36 he_ joined #parrot
23:36 pmichaud joined #parrot
23:36 ttbot joined #parrot
23:36 slavorg joined #parrot
23:36 sorear joined #parrot
23:36 Util joined #parrot
23:36 edenc joined #parrot
23:36 atrodo joined #parrot
23:36 tadzik joined #parrot
23:36 krunen joined #parrot
23:36 spinclad joined #parrot
23:36 janus joined #parrot
23:36 szabgab joined #parrot
23:36 TimToady joined #parrot
23:36 szbalint joined #parrot
23:36 jasonmay joined #parrot
23:36 cotto_work joined #parrot
23:36 TiMBuS joined #parrot
23:36 dalek joined #parrot
23:36 p6eval joined #parrot
23:36 PacoLinux joined #parrot
23:36 Kapace joined #parrot
23:36 Hunger joined #parrot
23:36 jhelwig joined #parrot
23:36 PerlJam joined #parrot
23:36 moritz joined #parrot
23:36 frodwith joined #parrot
23:36 mj41 joined #parrot
23:36 treed joined #parrot
23:36 zostay joined #parrot
23:36 NotFound joined #parrot
23:36 arnsholt joined #parrot
23:36 GeJ joined #parrot
23:36 rblackwe joined #parrot
23:36 autark joined #parrot
23:36 dukeleto joined #parrot
23:36 elmex joined #parrot
23:36 Maddingue joined #parrot
23:36 jnthn joined #parrot
23:36 knewt joined #parrot
23:36 cxreg joined #parrot
23:36 sri joined #parrot
23:36 athomason joined #parrot
23:36 mikegrb joined #parrot
23:38 whiteknight joined #parrot
23:42 sjn joined #parrot
23:45 NotFound Tene: But if you are saving some reference to the object you want to optimize out to in order to preserve it, what's the point?
23:46 Tene NotFound: If the backtrace includes that information, then the information obviously is saved somewhere.
23:47 rfw left #parrot
23:49 NotFound Maybe it only saves references up to some maximum value.
23:50 Tene Given that I don't know what information is actually presented in the backtrace, I can't really guess further. :)
23:52 Kapace_ whiteknight: I need some help, make test passes fine on clean master clone. make cover; make test now fails.
23:52 Kapace_ http://dpaste.com/287166/ failure, I can't figure out why these pass fine on first make test, but not after make cover
23:57 kid51 joined #parrot

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

Parrot | source cross referenced