Parrot 3.1.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Get GSoC ideas on wiki. Merge/review tewk/select. Evaluate attribute_defs, rip out in branch
Set by moderator on 1 March 2011.
00:02 hercynium joined, benabik joined
dalek rrot/opsc_llvm: d48658a | bacek++ | t/library/llvm/01-opaque.t:
Start building "proper" test-suite for LLVM bindings.

Create standalone 01-opaque.t
00:06
rrot/opsc_llvm: 0ee0370 | bacek++ | t/library/llvm/02-type.t:
Add initial LLVM::Type tests
rrot/opsc_llvm: 1882abc | bacek++ | runtime/parrot/library/LLVM/Builder.pm:
Wrap undef in Builder.DESTROY
rrot/opsc_llvm: e2d43dc | bacek++ | t/library/llvm/06-builder.t:
Initial test for LLVM::Builder.
rrot/opsc_llvm: bd5ab75 | bacek++ | t/library/llvm/02-type.t:
Add test for pointer types creation.
rrot/opsc_llvm: aca3fe8 | bacek++ | / (2 files):
Add sortcut for creating c strings type
rrot/opsc_llvm: cc86324 | bacek++ | / (2 files):
Wrap constants into Value and add test for it
rrot/opsc_llvm: c2f3abc | bacek++ | t/library/llvm/04-value.t:
Add test for LLVM::Value
rrot/opsc_llvm: 3719383 | bacek++ | t/library/llvm/03-constant.t:
Remove copy-pasted comment
cotto_work bacek++ 00:08
kid51 ~~ 00:12
00:23 kid51 is now known as kid51_at_dinner 00:48 plobsing_ left 00:51 plobsing joined
dalek rrot: 792a139 | (Gerd Pokorra)++ | NEWS:
add more news
01:05
01:19 plobsing left 01:25 kid51_at_dinner left
cotto_work goes home 01:27
01:40 woosley joined
dalek rrot/opsc_llvm: 9ccd048 | bacek++ | t/library/llvm (2 files):
Rename old test
01:45
01:49 plobsing joined 01:52 davidfetter left 01:54 nwellnhof left 01:58 cotto joined 02:01 kid51 joined
kid51 I'm still unable to configure in opsc_llvm branch 02:02
$ perl Configure.pl --cc=gcc --no-line-directives --ccflags="'llvm-config --cflags'" --ldflags="-lLLVM -lpthread -lrt" --libs="-lLLVM -lpthread -lrt" --verbose-step=inter::progs
Fails at step inter::progs with: gcc 'llvm-config --cflags' -I./include -c test_26230.c; gcc: llvm-config --cflags: No such file or directory; Compilation failed with 'gcc' 02:03
moderator Parrot 3.1.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Get more GSoC ideas on wiki; close tickets; stable 3.2 release; assess status of roadmap goals for 3/15 meeting. 02:04
cotto ~~ 02:05
02:12 whiteknight left 02:18 mtk left 02:21 hercynium left 02:25 mtk joined 02:50 jsut_ left
bacek_at_work kid51, do you have llvm-config on your box? 02:55
kid51 $ llvm-config --version 02:57
2.2
bacek_at_work kid51, it should be backticks in Configure.pl :) 02:58
nopaste "kid51" at 192.168.1.3 pasted "with backticks" (24 lines) at nopaste.snit.ch/36314 03:02
kid51 okay, I thought the backticks were merely mangled single quotes 03:03
but, as you can see, I only got a little bit farther 03:04
bacek_at_work yes
let me check
kid51, can you replace -lLLVM with -lLLVM-2.2 in Configure.pl? 03:05
03:06 ShaneC left
kid51 Same, except: /usr/bin/ld: cannot find -lLLVM-2.2 03:06
03:09 cotto left
bacek_at_work kid51, which version of llvm do you have? 03:10
kid51 see above: 2.2
bacek_at_work hmmm.
what is output of llvm-config --libs 03:11
?
nopaste "kid51" at 192.168.1.3 pasted "llvm 2.2: output of 'llvm-config --libs'" (1 line) at nopaste.snit.ch/36315
sorear bacek_at_work: what is the end goal of opsc_llvm? 03:12
bacek_at_work sorear, I'll probably reduce scope of this branch to pure LLVM bindings.
Next one will be "generate LLVM from ops" and "JIT Subs" 03:13
kid51, can you try: perl Configure.pl --ccflags="`llvm-config --cflags`" --ldflags="`llvm-config --ldflags`" --libs="`llvm-config --libs`"
kid51 bacek_at_work: I installed LLVM only because someone wanted a config step to probe for it. Have never used it myself.
bacek_at_work kid51, fair enough :)
sorear bacek_at_work: what do we gain by jitting subs? 03:14
kid51 In fact, IIRC, I myself wrote the config probe, strictly following LLVM documentation.
03:14 cotto joined
bacek_at_work sorear, avoid DO_OP loop and a lot of register load/store 03:14
kid51 perl Configure.pl --ccflags="`llvm-config --cflags`" --ldflags="`llvm-config --ldflags`" --libs="`llvm-config --libs`" --verbose-step=inter::progs
plobsing sorear: we align the VM PC with the hardware PC in most cases, allowing for out-of-order super-scalar machines to actually work 03:15
kid51 I am now getting a *vast* amount of output
sorear bacek_at_work: will the jit require NQP? 03:16
bacek_at_work plobsing, hey! I've got a question for you. How I can replace ManagedStruct with Ptr/PtrBuf in LLVM::to_array
sorear, no.
sorear, I'll pre-generate all required info in opsc 03:17
sorear is there going to be another LLVM binding, not based on NQP clases?
nopaste "kid51" at 192.168.1.3 pasted "llvm mucho mas" (34729 lines) at nopaste.snit.ch/36316
bacek_at_work sorear, what for?
sorear bacek_at_work: generating code for subs 03:18
surely that requires calling llvm functions
plobsing bacek_at_work: how are you using the ManagedStruct?
bacek_at_work sorear, yes. All 5-6 of them :)
plobsing, setup it up to store array of pointers. Set pointers. 03:19
kid51 That last command picked up a lot of code meant for other platforms: sparc, powerpc, etgc
etc
bacek_at_work plobsing, to pass something like C<foo**> to LLVM.
kid51, yes. And a lot of .o files...
sorear bacek_at_work: so, the runloop side of opsc_llvm only uses a small subset of the C API, and op bodies are stored as (say) bitcode? 03:20
bacek_at_work sorear, exactly
sorear winxed will love this :p 03:22
bacek_at_work why winxed?
plobsing bacek_at_work: you describe the contents of a buffer using StructView. in this case, it would be a struct of just a pointer.
bacek_at_work kid51, what is output of "ls /usr/lib/llvm/lib/*so" ? 03:23
sorear because PCT-based languages have seemed in the past to have much bigger problems than slow runloops
plobsing there is a method on StructView to allocate single instances as well as arrays
bacek_at_work plobsing, thanks. Will look at it.
sorear I suppose this change will give the most benefit to HLLs that use I and N registers and operations extensively 03:24
03:24 ShaneC joined
bacek_at_work sorear, yeah...Our PCC is freaking slow. 03:24
sorear, and PCT generates a _lot_ of subs.
plobsing my understanding is that it is the exception handlers that are really hampering NQP 03:25
bacek_at_work plobsing, they are stomping GC to almost death. 2 GCable per pop_eh 03:26
plobsing, what is "best way" of translating: "foo *ptr; bar(&ptr)" with Ptr/StructView? 03:27
e.g. passing-pointer-to-result into function
nopaste "kid51" at 192.168.1.3 pasted "ls /usr/lib/llvm/lib/*so" (1 line) at nopaste.snit.ch/36327 03:29
plobsing (1) create description of resultspace in StructView (2) allocate a resultspace (3) pass resultspace to NCI using 'p' signature type
bacek_at_work plobsing, ok. I'll try 03:30
kid51 must sleep
03:30 kid51 left
plobsing you'll need 2 structviews if you want to dereference 'ptr' afterwards. SV1 is just a void* struct, SV2 is a foo struct. 03:31
otherwise all you'll be able to do with ptr is pass it around. I assume you want to look inside of it. 03:32
bacek_at_work plobsing, no actually. check src/dynpmc/llvm_engine.pmc. init(). This is what I want to implement in pir/nqp 03:33
sorear, hmm. I think it's possible to use LLVM for inlining of const-subs-invoke. Not so easy but possible. 03:34
sorear, I just have to convert src/call/pcc.c into llvm bitcode :) 03:35
sorear Why is rand a dynop? 03:48
The actual implementation is statically linked
A dynamically loaded wrapper doesn't seem to buy much
plobsing that's a fair point. but if you're going to improve rand, the last thing I'd be worrying about is whether it is a dynop or not. 03:56
it uses a hand-rolled PRNG and its entropy is poor 03:57
I'd bet my libc's rand() behaves better. 03:58
both in terms of randomness as well as efficiency.
and then there's the question: is rand really an op? isn't it more of a function? you might want to take a reference to it and pass it around. it is that kind of thing. 04:00
sorear basically all of our current ops can act like functions 04:28
04:29 JimmyZ joined
plobsing many of them can, and should be functions. but it has been easier to expose them as ops in stead of using NCI. 04:34
I may be a little biased as to where that line should be drawn. 04:35
sorear which are faster? 04:42
plobsing ops are faster, certainly, but they are inflexible and inconvenient to use from HLLs. 04:43
and if you are just going to wrap individual ops in functions (as Rakudo does), you are better off using NCI. 04:44
cotto ~~ 05:02
05:16 JimmyZ left 05:17 cottoo joined, cotto left 05:19 cottoo is now known as cotto 05:26 cotto left 05:56 theory left
dalek rrot: 862450c | cotto++ | docs/ (2 files):
add initial version of non-newbie developer docs
06:34
06:38 fperrad joined 06:46 woosley1 joined 06:47 woosley1 left 06:49 woosley left 07:00 rurban_ joined 07:02 rurban left, rurban_ is now known as rurban
sorear Why is the initial call to Parrot_util_srand made in src/string/api.c ? 07:19
bacek_at_work to initialize hash seed? 07:39
08:10 woosley joined
Tene argh, I really want to work on improving the exceptions system, but it's a little ways down my priority list right now. 08:24
I wish I had a few forks of myself I could dedicate to that stuff. :(
Really, we should be able to statically associate a single exceptionhandler with a range in bytecode, and then there's no need to push/pop, etc. 08:27
When I last looked into doing that, it was definitely doable.
And that's just performance, not even getting into the improvements we could make 08:28
08:37 luben left 08:49 bacek joined 09:28 contingencyplan left 09:29 dodathome joined 09:47 JimmyZ joined 09:56 woosley left 10:05 mtk left 10:12 mtk joined
dalek rrot/opsc_llvm: 1c4d8a9 | bacek++ | / (2 files):
Add Type.refine_to for gnerating recursive types (e.g. struct)
10:33
10:39 JimmyZ left 11:10 Hackbinary left 11:16 ShaneC left 11:38 dodathome left
dalek rrot: 40602f0 | mikehh++ | MANIFEST:
re-generate MANIFEST
11:50
11:54 allison joined, ircanetsss joined
ircanetsss hello everyone 11:54
pleased help me
i built rakudo with msvc on windows, works fine but LWP::Simple module doesn't work 11:55
it returns empty string or crashes
bacek seen fperrad 11:58
aloha fperrad was last seen in #parrot 5 hours 19 mins ago joining the channel.
bacek ircanetsss, fperrad is "LPW man". And his primary platform is Win*. I think he can help you 11:59
ircanetsss thanks 12:05
12:24 jrt4 joined
dalek rrot: eb7ea9a | mikehh++ | docs/project/protips.pod:
fix codetest failure - line length
12:27
rrot: a0eb3f2 | mikehh++ | docs/index/developer.json:
add missing comma
rrot: eef2df4 | mikehh++ | docs/project/protips.pod:
the various pod tools require =head1 to be upper case (at least NAME)
ircanetsss > use v6;
_block78
> use LWP::Simple;
P
> my $html = LWP::Simple.get("google.com/");
Nominal type check failed for parameter '$resp'; expected Str but got Failure instead
>
help me ;(
12:32 jrt4 left
ircanetsss tadzik: 12:32
and there are no IO;:Socket 12:35
? 12:39
moritz ircanetsss: can you try if it works with the patch in github.com/rakudo/rakudo/pull/20 ? 12:40
ircanetsss how to use IO::Socket::INET from rakudo 12:51
?
moritz just as LWP::Simple does 12:52
ircanetsss but in insta
akudo-star-2011.01\\install\\lib\\parrot\\3.0.0\\languages\\perl6\\lib
there nothing
moritz ircanetsss: it's built-in, you don't need a 'use' line for it 12:54
12:55 bubo joined 12:56 bubo left
ircanetsss it's crazy ( 13:03
moritz so? 13:04
13:07 ircanetsss left 13:12 kid51 joined, whiteknight joined
kid51 Darwin/PPC: commit 792a13988 make test PASS (this is after the GC-switchback) 13:13
Coke sorear: I don't know of any HLLs that are /able/ to use I and N registers extensively. 13:20
dalek rrot: 6e92567 | dukeleto++ | docs/project/protips.pod:
Put a =cut before __END__ in the new parrot protips pod
13:24
Coke wonders if anyone has any clues on #1886
13:25 kid51 left
moritz really has to teach the IR clogs that in #parrot, #1886 really means TT #1886 13:26
jnthn Rakudo is walking the road towards being able to use I and N registers in some cases. But it's a long road.
13:32 lucian joined
dukeleto ~~ 13:35
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#11863) fulltest) at 3_1_0-754-geef2df4 - Kubuntu 10.10 amd64 (g++-4.5) 13:38
hi dukeleto, missed that one
Coke: re TT #1886, where is the parsing done? 13:49
13:55 lucian left
dukeleto mikehh: it doesn't produce any error, just looks funky :) 13:55
mikehh: when there is a missing =cut 13:56
mikehh dukeleto: yeah, I'll try and remember that :-} 13:57
dukeleto: just got my google teeshirt from GCI 14:03
twas just delivered to my front door by FeDEx 14:05
moritz oh, *that's* what that package contains
my wife told me by e-mail that a fedex package arrived from the USA 14:06
and I had no idea what it might be
atrodo I just got mine past couple days. Confused me as well until I opened it
moritz I didn't even know there would be t-shirts 14:07
whiteknight I haven't gotten mine yet. I also haven't checked my mail in a few days
moritz and since I only approved two tasks, I didn't think of myself as a GCI participant 14:08
mikehh I was doin' general mentoring in regard to testing and so on 14:09
I think if you get approved as a mentor they send out the teeshirts - got one from GSOC as well 14:10
moritz this year is the last where I could participate in GSOC as a student 14:11
mikehh hee, passed that stage many, many years ago 14:15
course thay didn't have anything like GSOC when I was a student 14:16
dukeleto moritz: one can never have enough nerdy t-shirts 14:18
mikehh: awesome. you deserve it!
moritz dukeleto: I'm not complaining at all :-) 14:19
14:22 alin joined
Coke mikehh: it's using parrot-nqp, the main grammar is in src/Partcl 14:30
mikehh Coke: just pulled it, will see what I can see 14:34
Coke At a guess, the HLL::Compiler is getting amnesia. :P 14:47
14:59 rurban_ joined, jsut joined 15:01 rurban left, rurban_ is now known as rurban 15:08 M_o_C joined 15:13 M_o_C left 15:22 Hackbinary joined
NotFound Coke: winxed can use as many I and N register as you want. 15:33
15:38 contingencyplan joined 15:49 cotto joined 15:50 theory joined 15:51 cotto left 15:53 cotto joined
cotto wonders if his wireless issues are over 15:54
15:54 theory left
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#11871) fulltest) at 3_1_0-755-g6e92567 - Kubuntu 10.10 amd64 (g++-4.5 with --optimize) 16:06
16:13 Patterner left
Coke NotFound: I think you woudl agree that winxed is not a typical HLL. But it is an excellent counterpoint. 16:14
anything using parrot lexicals can't use IN registers, e.g. 16:15
NotFound Coke: that depends on the definition. I just need to add some .HLL and it gets typical. 16:16
Coke: anything using *only* parrot lexicals. 16:17
Coke you can't have an I as a lexical, e.g. 16:18
unless I am living in the past, which is quite possible.
NotFound Coke: but you can have I that are not lexicals, as winxed does, and allowing lexicals for other things.
16:19 Psyche^ joined, Psyche^ is now known as Patterner
Coke Speaking of "standard" HLL usage, be nice if someone fixed #1886. ;) 16:20
cotto_work ~~ 16:21
NotFound Looking at #2044, it seems that you cannot inherit from a PMC that have a parent that cannot be instantiated directly, because mro needs to instantiate it. 16:31
16:34 lucian joined
cotto_work btw, contributions to docs/project/protips.pod (including a better name) are encouraged 16:45
17:04 dodathome joined 17:05 tcurtis left, ShaneC joined 17:12 alin_ joined 17:13 alin_ left 17:16 alin left 17:19 dngor left 17:27 dngor joined 17:38 hudnix left 17:39 alin joined
cotto_work Has anyone gotten the gdb pretty printing to work? 17:39
17:40 theory joined 17:41 alin left
Coke mini rant: HLL::Compiler::eval's location in source is not immediately obvious. 17:41
HLL::Compiler::eval (file "<unknown file>" line 151)
There's a question: why is my backtrace so bereft of data. 17:51
17:51 theory left
nopaste "Coke" at 192.168.1.3 pasted "where's all the file and line information?" (12 lines) at nopaste.snit.ch/36530 17:52
17:53 mtk left 17:56 plobsing left 17:59 mtk joined
dukeleto ~.~ 18:07
18:09 contingencyplan left 18:11 plobsing joined 18:12 mtk left 18:14 mtk joined 18:15 tcurtis joined 18:21 mtk left
cotto_work spam ticket (2046) nuked 18:22
18:23 mtk joined, sigue joined 18:26 mtk left 18:28 dodathome left 18:31 mtk joined 18:33 contingencyplan joined 18:34 tcurtis left 18:55 theory joined 19:14 tcurtis joined 19:15 plobsing left 19:33 particle left 19:34 plobsing_ joined 19:40 fperrad left 19:48 ambs joined 19:49 particle joined 19:55 lucian_ joined 19:56 confound left 19:59 lucian left 20:10 confound joined 20:16 petdance joined 20:19 confound left
dalek rrot/opsc_llvm: 1b329c0 | bacek++ | / (2 files):
Let's use good bits from statically typed languages.

1. Add types to Builder method arguments. 2. Also change $name parameter to be named and optional for consistency.
20:30
bacek Good morning, humans
tadzik o/ 20:32
jnthn o/ bacek 20:33
20:49 theory left 20:51 petdance left
mikehh bacek: built and tested on amd64, looks good (except manifest_tests) ran on 2.7 21:01
bacek mikehh, wow. even t/library/llvm/99-example.t?
21:03 ambs left
mikehh bacek: nope - let me check 21:03
21:04 ambs joined
mikehh bacek: yes tested ok 21:05
bacek hooray! :) 21:07
mikehh bacek: didn't see it in the tests, ran prove on it, ok 21:08
21:14 nwellnhof joined
nwellnhof ~ 21:14
21:26 theory joined 21:29 tcurtis left 21:34 tcurtis joined 21:44 cognominal left 21:50 petdance joined 21:55 theory left 21:57 theory joined 21:59 cognominal joined 22:00 lucian_ left
dalek tracwiki: v8 | jkeenan++ | GSoc2011 22:12
tracwiki: trac.parrot.org/parrot/wiki/GSoc201...ction=diff
rrot: fe42cbc | jkeenan++ | / (3 files):
cotto requested better name for this document. Done.
22:21
22:22 davidfetter joined 22:25 theory left 22:26 ambs left 22:30 tcurtis left 22:34 lucian joined 22:41 davidfetter left
mikehh kid51: you also need to change the reference in docs/index/developer.json - will do it later if you haven't got around to it 22:46
msg kid51, you also need to change the reference in docs/index/developer.json - will do it later if you haven't got around to it 22:48
aloha OK. I'll deliver the message.
22:49 petdance left
cotto_work mikehh: I still think there's a more descriptive name. I'll plan on updating it and adding more tips tonight. 22:50
ShaneC i'm working on a pir class, but i'm going to need access to some c calls, what is the proper way to do that? 22:51
wrap them in a dynamic pmc?
cotto_work ShaneC: how about nci? 22:52
ShaneC wasn't sure if that was what i was looking for, will check out the docs
cotto_work it should do what you're looking for and not involve any significant C coding
ShaneC if i need platform specific branches, is there a way to handle that in pir? 22:53
mikehh cotto_work: let me think about it :-}
cotto_work ShaneC: you can detect some things via interp[.IGLOBALS_CONFIG_HASH] 22:56
ShaneC cotto_work: thanks 22:58
23:00 rurban_ joined 23:02 rurban left, rurban_ is now known as rurban
Tene ShaneC: No need to wrap in a dynpmc or anything in many cases; look at the loadlib, dlfunc, and dlvar ops. 23:09
23:11 cosimo joined 23:18 davidfetter joined 23:22 theory joined 23:24 tcurtis joined 23:31 petdance joined 23:45 nwellnhof left
dalek sella: 5352fcd | Whiteknight++ | / (14 files):
start refactor of tap_harness. Refactor MockObject.Controller and subclass it to provide ordered behavior. Add tests
23:49
sella: 098ab4b | Whiteknight++ | / (3 files):
+cleanup, doc, and test
sella: 92fec0b | Whiteknight++ | s (4 files):
Break with/will logic out of Expectation into proper subclasses so we can see the logic better and maybe supply custom logic
sella: 7624fe9 | Whiteknight++ | / (4 files):
[get|set]_attribute -> get, set for brevity. Add with() and will() methods to Expectation so the user can add custom behaviors
23:56 tcurtis left 23:58 kid51 joined