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