www.parrot.org | Parrot 1.6.0 "half-pie" released: The JIT is dead! | Testing priorities: Exception and MultiSub
Set by moderator on 20 September 2009.
jrtayloriv What attribute of the match object $/ is the actual text that was matched stored in? 00:09
And can I use that to set the :value of a PAST::Val .... for instance, if it is $/.text that holds the text, can I just do --> my $past := PAST::Val.new(:value($/.text)) 00:11
dalek ose: r137 | Austin++ | wiki/nutshell (2 files):
Added nutshell/
00:12
ose: r138 | Austin++ | trunk:
Added extern link to nutshell wiki
cnum-dynpmcs: r183 | darbelo++ | trunk/Configure.pl:
Exterminate Configure.pl
jrtayloriv nm -- I found it. 00:15
dalek ose: r139 | Austin++ | trunk:
Wiki edits
00:17
ose: r140 | Austin++ | wiki/nutshell:
Wiki edits
00:20 TiMBuS joined
dalek ose: r141 | Austin++ | wiki/CianToc.wiki:
Created wiki page through web user interface.
00:26
ose: r142 | Austin++ | wiki/CianIntroduction.wiki:
Created wiki page through web user interface.
00:31
ose: r143 | Austin++ | wiki/CianIntroduction.wiki:
Edited wiki page through web user interface.
ose: r144 | Austin++ | wiki/CianLanguageBasics.wiki:
Created wiki page through web user interface.
00:36 ash_ joined
dalek ose: r145 | Austin++ | wiki/CianLanguageBasics.wiki:
Edited wiki page through web user interface.
00:38
ose: r146 | Austin++ | wiki/CianToc.wiki:
Edited wiki page through web user interface.
ose: r147 | Austin++ | wiki/CianTypes.wiki:
Created wiki page through web user interface.
ose: r148 | Austin++ | wiki/CianLiterals.wiki:
Created wiki page through web user interface.
Austin_away For the edification of anyone who gets here via Google, jrtayloriv's answer is: the stringification of the $/ or $<subrule> produces the text. So: $past.value(~ $/); 00:42
dalek ose: r149 | Austin++ | wiki/CianTypeConversions.wiki:
Created wiki page through web user interface.
ose: r150 | Austin++ | wiki/CianExpressionsAndOperators.wiki:
Created wiki page through web user interface.
00:47 szabgab joined
jrtayloriv Austin_away, Thanks -- I thought I had figured it out, but I was wrong :) ... this is very frustrating ... I'm definitely going to work on the PCT/AST docs once I figure this out. 00:47
Austin Forgot that I was "away". Sorry. 00:48
Did that get you what you needed?
jrtayloriv Austin, Yes, for now. I'm about 15% sure about what exactly I'm doing here ... mostly voodoo/magic/randomly-try-things-and-watch-what-happens programming at this point ... so I'm sure I'll have plenty of other questions for you :) 00:50
Austin :)
00:59 darbelo left 01:07 particle joined
ash_ so, has anyone done any messing around with the llvm and parrot for JIT stuff? I have been really interested in the llvm and also parrot so I was wondering if I could help in any way 01:10
jrtayloriv Austin, Are you familiar with Lisp or Scheme at all? 01:12
Austin Parentheses, lists, programs-are-data. That's about it.
But it should be really easy to parse, no? 01:13
rule sexp { <.paren> <ident> <arg_expr>* }
jrtayloriv Austin, extremely easy, from what I understand. The grammar was really simple.
Austin :) 01:14
jrtayloriv The grammar is done, I'm just having problems with the actions file. Trying to figure out what the best way to define the primitive procedures is.
Austin ash_: Look on Planet Parrot for WhiteKnight's blog posts. He and Cotto have been looking at llvm
jrtayloriv: What kind of procedures? The builtins?
ash_ yeah, i saw his blog post 01:15
cotto Austin, i haven't been doing much actual looking
jrtayloriv For instance, the 'lambda' procedure needs to be defined in the initial environment in a certain way, but you can change the symbol 'lambda' to point to any procedure (or value) that you wish at any later point.
Austin Really? Did I confuse you with someone else?
jrtayloriv: What happens to the lambda (original) after that? 01:16
jrtayloriv poof!
Austin Okay. That's pretty simple then.
jrtayloriv Would I just create a symbol hash that points to the standard subs, and then 'include' it somehow? 01:17
Austin No.
Too complex.
Just define the subs in the 'builtins.pir' (or collect them from individual .pir) and include them in your compiler
To override a sub, just store to the global in the appropriate namespace. 01:18
jrtayloriv Oh! Didn't even notice 'builtins/' there. Thanks :) 01:19
Austin Look at nopaste.org/p/agTSIRQNJ and nopaste.org/p/asBA7Nr2x 01:21
(It's a mistake on my part, but it illustrates the point.) 01:22
You see the second one - the generated code - treats the "say" function as a global variable and generates a "get_global" opcode to fetch it.
You can replace a sub by generating a "set_global", I think. 01:23
Just make sure you've got the right data type. :)
jrtayloriv is studying the code now ..
dalek rrot: r41440 | jkeenan++ | branches/auto_frames_refactor (2 files):
Further refactoring to improve testability. Statement coverage up to 93%, which, given that we can't directly test the C code, is as about as good as we're going to do.
01:28
ash_ so... if you were to write a C extension to parrot so you can expose some functions to parrot's PIR code, is there a guide to doing that? or where should I start 01:38
Austin NCI, I think you want. But you might want to look at the dynamic pmc stuff (dynpmc) under src/dynpmc 01:39
jrtayloriv: It occurs to me that the lisp guys are always capturing and renaming stuff. You may want to actually make your subs be lexical variables, so you can create closures with renamed subs. (It's the difference between "this lexical var holds a sub" and "this sub is lexically renamed") 01:41
01:43 ash_ joined
ash_ umm, sorry i don't know if anyone awnsered my question, my computer just froze and I had to restart it 01:43
jrtayloriv Austin, That's why I was going to do a symbol hash. Basically use symbol names as keys, so I can map them to either constant values, pointers to lists, or pointers to anonymous subs.
Austin nopaste.org/p/aIV2QOifob
Sure, but namespaces are already symbol hashes. It's what they do. 01:44
That nopaste is a program that swaps sub names.
parrot /usr/local/lib/parrot/1.6.0-devel/languages/nqp/nqp.pbc faketree.nqp 01:45
jrtayloriv Austin, I see. find_lex '$name' is what I was after.
Austin Probably not.
That loads the name PBC - a string, containing "foo" - into a register.
You probably want the sequence - $P0 = find_lex '$name'; $S0 = $P0; $P1 = get_global $S0 01:46
Here's a warning for you: That program *requires* the "class Test;" up above. NQP generates different code if there's no namespace references involved. (You should generate the right code yourself directly, but NQP is "optimizing" for the local-reference case.) 01:48
Is the phemer (?) source code browseable on line? 01:49
ash_ PMC's can call C functions directly correct? 01:51
jrtayloriv Austin, Not yet. In another day or two, I'll post it up, once it can a few basic things like procedure calls, bind variables, construct lists, and evaluate string and numeric constants. 01:52
Austin PMC's are implemented as a set of C functions. So a PMC can provide a vtable (opcode) function or a named method that calls whatever C functions you want.
jr: Don't be shy. Publish early. :) 01:53
jrtayloriv Austin, I'm just way to tired today (>4 hours of sleep last night) to take in information very well. I'll probably get a lot more done tomorrow.
Austin s'ok
jrtayloriv Austin, OK -- I'll post up the grammar tomorrow at least ... the only thing that actions.pm does at this point is eval string constants.
Austin ash_ : The difference is between "core" PMCs - those that ship with Parrot's core - and others.
Jr: Ok. But it's easier to make suggestions if I can look at the code, or at least at the grammar. 01:54
One thing you should answer is the lexical functions issue. If it's not needed, you really don't want it. But if you must have it, best to know early. 01:55
jrtayloriv Austin, Understood. Here is the grammar, if you want to have a look -- pastebin.com/d4ffaba2 ... I'll post up actions.pm tomorrow after I've added some basic functionality to it. 01:56
ash_ So, wait, whats the difference? Sorry Austin you kinda of lost me with that last statement, core PMC's can be opt codes where as other PMC's are not? 01:57
Austin Jr: Tomorrow, put it in a VC repository like google code or gitorious
jrtayloriv Will do.
Austin ash_ : No. All PMC's can do all PMC-like things. But some of them are always available - because the ship with parrot - and others are only available if the user has compiled and installed your stuff. 01:58
nopaste "kid51" at 70.85.31.226 pasted "Squeeze a bit more test coverage out of auto::frames" (180 lines) at nopaste.snit.ch/18040
ash_ Austin: got ya, thanks
are there any restrictions on calling C++ from within a PMC? 01:59
kid51 msg darbelo In auto_frames_refactor branch, have squeezed a bit more test coverage out of auto::frames. Cf. nopaste.snit.ch/18040 and thenceforward.net/parrot/coverage/c...s-pm.html. Will apply in day or two.
purl Message for darbelo stored.
kid51 must sleep 02:00
purl $kid51->sleep(8 * 3600);
Austin Boy, opening OOo 3 is a considerable pain 02:03
ash_ whats OOo 3 02:08
jrtayloriv bedtime for me -- good night #parrot
Austin OpenOffice.org - a freely-available replacement for Microsoft Office. 02:09
Good night, JrTaylorIV
(Or is that J.R. ?)
ash_ ah, I use Pages or Google Docs, mostly google docs though, i change computers a lot, its very nice having everything in 1 spot 02:10
Austin :)
I'm still painfully shy of that, remembering things like the dead-user lockouts, and the fact that Google is a search engine. :-S
ash_ lol, yeah gmail has adds related to your email content, thats odd and umm not that comforting 02:12
Austin Well, that was foul. 02:13
I went downstairs to get something to drink, and there sitting on the countertop was the glass of milk I poured 2 hours ago, before getting distracted and winding up here. :( 02:14
If you ever need some infotaining reading, check out "The Frozen Water Trade." 02:15
ash_ i get distracted all the time, plus i am almost always on the internet so it happens a lot 02:16
02:18 skv_ joined 02:21 payload joined 02:26 petdance joined
dukeleto 'ello 02:34
i am just learning that in PIR, $I1 is different than $I01 . is that tested/spec'ed anywhere? 02:39
Austin Hello, duke.
I hadn't realized that difference, but I'm not too surprised. 02:40
I wonder if $I0x01 is supported?
dukeleto Austin: read the "register type" section on coolnamehere.com/parrot/learn/02-va...types.html 02:41
Austin FYI: $I0x01 is not supported.
dukeleto if we don't already, that behavior needs tests and to be described in a PDD somewhere
Austin: are you meaning x as in $I001 or a literal 'x' ?
02:41 janus joined
Austin Duke: I was wondering if it just looked for '$' + '[ S P I N ]' + any-numeric-regex 02:42
But apparently it just looks for \\d+
:(
dukeleto Austin: gotcha 02:43
Austin You can modify the section on using $ variables to quote me (Austin Hastings) as saying "A short chunk of code is less than 6 lines, including comments." 02:44
dukeleto sadly, you can not refer to registers by their octal number :(
Austin You can, but you have to be consistent.
dukeleto Austin: modify which section where?
Austin $I8 = 0 ; print $I011; that won't work.
"That makes register variables ideal for short chunks of code." 02:45
That section.
purl that section is fundamentally crass.
dukeleto Austin: that is not my blog
Austin Oh. Too bad.
So I shouldn't, solely on the basis of that blog, start calling you Brian? 02:46
dukeleto he is a nice guy that will definitely take patches, tho
Austin: that would be a good assumption
Austin: are you on the twitterwebs?
Austin No. 02:47
I'm frankly not sure I'm smart enough to use IRC.
dukeleto meh
Austin dukeleto, do you know of a good explanation of parrot namespaces anywhere? 02:51
ash_ is there a C function for turning a C str into a PMC Str? 02:52
Austin ash_: Of course there is.
ash_ happen to know which header file its in?
Austin Actually, there is probably a C str -> Parrot-str -> PMC sequence.
But I don't know what they are.
Have a look at the "box" opcode. 02:53
ash_ k, well, ima dig through the header files
02:54 rg joined
Austin pmc.ops 02:54
Never mind.
~/parrot/src/string/api.c 02:55
Parrot_str_new - make a Parrot string from a specified C string. 02:56
Plus pmc_new, plus set_string
= profit!
dukeleto Austin: what are you looking to know about namespaces? the tests are a good start, but incomplete
Austin dukeleto: nothing. But I want to steal good explanatory ideas for a document. 02:57
ash_ in includes/parrot/string_funcs.h there is a macro "string_from_literal" that returns a parrot string 02:58
Austin That's probably a call to _str_new under the hood. Then you need to pmc-ify it?
dukeleto Austin: docs/pdds/pdd21_namespaces.pod 02:59
Austin dukeleto: yeah, I had that, lies and all. :-S 03:00
dukeleto Austin: the test are the closest to the truth that you are going to get :)
s/test/tests/
Austin: which lies did you find? 03:01
Austin: they should become TODO tests
sometimes writing a todo test is hard/impossible, but creating a TT makes sure it doesn't slip through the cracks 03:02
ash_ pmc2c is the way to compile a pmc right?
or can parrot run them dynamically? 03:03
03:06 rhr joined
dukeleto ash_: pmc2c takes the pseudocode that PMC's are written in and converts them to pure C, to be compiled 03:13
ash_: does that answer your question?
ash_ yeah
can you convert them into a C++ ?
dukeleto ash_: i doubt it. what are you trying to do? 03:14
ash_ link to a C++ library
dukeleto you want to call functions in a c++ library from parrot? 03:16
03:16 darbelo joined
ash_ well, more I want to create objects from the C++ library in parrot and hide them in a parrot class, if that makes sense 03:16
specifically the llvm-jit 03:17
dalek ose: r151 | Austin++ | wiki/CianIntroduction.wiki:
Edited wiki page through web user interface.
darbelo ash_: It might not be exactly related but I wrapped the IBM decNumber library as a set of PMCs for GSoC 03:18
purl: decnum-dynpmcs? 03:19
purl decnum-dynpmcs is code.google.com/p/decnum-dynpmcs/ or a 2009 GSoC porject or a set of 'big' decimal arithmetic types for parrot.
ash_ i'll look into that, thanks
thats a C library, right? 03:20
darbelo Yes.
Basically, if the C/C++ thing you want to wrap can be hidden behind an object-like wrapper PMCs are the way to go.
ash_ the problem is I need them to be C++ files for me call things and have them exported as extern "C" 03:21
darbelo If what you really want is to just call functions from a library NCI is better. 03:22
Wait. Parrot has to call c++, or c++ has to call parrot? 03:23
ash_ parrot has to call C++ 03:24
the problem is the C++ library doesn't have C bindings, so i can't directly call it from C 03:25
03:25 Austin joined
Austin Well, /that/ was irritating. 03:25
ash_ if i am not mistaken NCI only works with C librares
darbelo Hmm. I know parrot builds fine with c++ compilers, and uses ICU internally, so it can link with c++ code, but I'm not sure it's callable from PMCs. 03:27
dukeleto ash_: is that stated in the docs somewhere?
Austin Probably not - name mangling depends on both platform and compiler vendor.
ash_ pdd16_native_call.pod.html states NCI is for C libraries, i can try it with a C++ library though
Austin But if you make your C++ function into a C function, it should work. 03:28
ash_ oh, parrot already adds extern "C" to your functions, so I can call C++ from within the function no problem 03:29
my bad >< 03:30
pmc2c does mangle some of my C++ code however, wonder why... 03:31
darbelo pmc2c is not very smart. 03:33
It checks that every '{' has a matching '}', mangles VTABLEs and METHODs in to C and breaks at unexpected input. 03:34
Boy, was the first month of SoC *fun* 03:35
ash_: how are you calling pmc2c?
ash_ perl /path/to/pmc2c.pl LLVM_Wrapper.pmc --dump followed by perl /path/to/pmc2c.pl LLVM_Wrapper.pmc -c 03:36
ash_ doesn't know if i am doing this right, but trial and error usually gets me somewhere 03:37
darbelo Is it exploding?
ash_ well, no, but i looked at the C and one of my functions is missing and I don't know why 03:38
darbelo Just one? odd. I've had pmc2c misparse, get stuck and emit 'empty' VTABLEs before, but that was an all or nothing deal. 03:39
can you nopaste you .pmc?
purl: nopaste?
purl nopaste is probably at nopaste.snit.ch/ (ask TonyC for new channels) or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl
darbelo nopaste.snit.ch/parrot wil save tou some milliseconds. 03:40
You might also want to add an --include option to pmc2c 03:41
ash_ gist.github.com/192495
am i doing that right? when i run the pmc2c -c on it it removes my call_llvm function completely 03:44
dukeleto there also the awesome tools/dev/nopaste.pl . that will save you many hours 03:45
ash_ i'll look into that one, haven't used nopaste that much, i normally just put things in gists 03:46
Austin ash: If this is an issue, why not just make your pmc call some C++ in a different file?
dukeleto purl, nopaste is also trac.parrot.org/parrot/browser/tru...nopaste.pl 03:47
purl okay, dukeleto.
ash_ Austin: cause that makes to much sense
Austin Okay.
darbelo ash_: Tip: pmc2c only works if the name you declare on your pmclass line matches the filename.
ash_ darbelo i know, it gives you an error message otherwise
03:48 Zak joined
ash_ lol I am going to put them in a different file and include that one, like Austin suggests 03:48
darbelo For now I'd reccomend you build some c++ code that exports some functions as extern "C" and call that from your pmc 03:49
ash_ yup, that makes sense, i am doing that now
darbelo Also, if you want pmc2c to preserve ypur functions put them above the pmclass line. 03:57
only VTABLEs and METHODs are allowed inside the pmclass {} block. 03:58
ash_ but when you generate a template pmc it has some that don't ahve vtable or method
darbelo what did you use to generate them? 03:59
ash_ tools/dev/gen_class.pl
says in the docs that it can be used to generate a template PMC class 04:00
darbelo Hmm. Haven't used that before. Let me check.
ash_ docs.parrot.org/parrot/latest/html/...ss.pl.html
darbelo Just checked it, those are actually VTABLEs. 04:06
ash_ oh, ummm how do you add vtables then? ?
darbelo The set of vtables a PMC has is fixed. You can't add them. That is, you can provide an implementation for one that's already defined, but not define a new one. 04:08
If there isn't a suitable VTABLE you'll have to use a METHOD 04:09
ash_ alright, i'll reference your code maybe that can help
darbelo Most vtables correspond to the syntactic constructs of pir, I made an arithmetic type so I implemented the add, mul, etc VTABLES. 04:10
for +, *, etc
My pmcs also provide a fused-multiply-add operation, which doesn't really map to any vtable. I made that a method. 04:11
ash_ that makes more sense now 04:14
darbelo Also, any (per-object) setup you need to do, like allocate buffers, set default values should be done in the init() VTABLE 04:15
and teardown code should go into the destroy() VTABLE. 04:16
dalek ose: r152 | Austin++ | wiki/CianIntroduction.wiki:
Edited wiki page through web user interface.
04:17
darbelo But with destroy() you'll have to tell parrot that you require "active destruction"
The standard way to do that is to have "PObj_active_destroy_SET(SELF);" in your init() VTABLE 04:19
ash_ how do you compile the C file?
darbelo With a veeeeeery long comand line. 04:20
ash_ hmm, time to steal your make file :P
mind?
darbelo That varies from platform to platform. 04:21
What you actually want is the one in cfg/src/pmc/Makefile.in
ash_ i might mimic your config setup 04:22
darbelo You'll have to run it through the tools/dev/gen_makefile.pl script or similar.
perl /path/to/parrot/src_or_instdir/tools/dev/gen_makefile.pl /path/to/Makefile.in /path/to/Makefile 04:24
everyting you see as @foo@ in the .in is replaced for the parrot_config entry for foo. 04:25
You can get a similar template out of the create_language script if you pass it the --with-pmc flag or similar. 04:26
But there might be some install-dir/build-dir confision there IIRC.
It depends if you are using an installed parrot or want to work out of a svn checkout. 04:27
ash_ so, you generated your cfg/src/pmc/Makefile.in with gen_makefile.pl? 04:29
darbelo It was a long time ago (in parrot development time) and quite a few details have changed. I've also edited the heck out of my makefiles since. 04:30
I'll give a look at what it's generating now. 04:31
ash_ hmm there is a tool/build/dynpmc.pl but i don't see a list of params for it
darbelo I think that's old and possibly deprecated. 04:34
ash_ k
darbelo I think rakudo still uses it FWIW. 04:35
Hmm. The 'supported' way this days is to have build pmcs via makefile. 04:37
nopaste "darbelo" at 190.3.143.132 pasted "This could be a starting point" (118 lines) at nopaste.snit.ch/18041 04:42
darbelo Oh wait, I didn't put in a linker line. 04:43
04:47 flh joined
nopaste "darbelo" at 190.3.143.132 pasted "This could be a better starting point" (54 lines) at nopaste.snit.ch/18042 04:47
darbelo There, nopaste.snit.ch/18042 has a bare-bones makefile.in skeleton for pmc-building.
The variables point to the installed location of files. So you'll need to make install-dev. 04:48
but I can whip up a version that points to the binaries built in your parrot checkout if you don't want to install anything. 04:49
ash_ i did make install for parrot (and perl6) 04:51
darbelo then that makefile.in should get you going. 04:53
You'll have to put some thought into the linking stage, but on most platform parrot uses c++ to perform linking, so it'll probably work. 04:55
Also, a parrot built with c++ could provide better defaults for @cc@ there. 04:56
ash_ i added a cxx and cxxflags 05:02
darbelo Hmm. That cxxflags will override the configure probe, I'm not sure it's a good idea. 05:04
I think the magical incantation this days is "perl Configure.pl --cxx=g++ --cc=g++ --link=g++ --ld=g++" 05:05
You override the compiler(s) and linker(s), but let Configure.pl figure out the right flags for your platform. 05:06
05:15 chromatic joined
darbelo We *really* need to make this stuff simpler for newcomers. 05:16
ash_ i wouldn't complain
:P
so for your makefile.in how woud i run that through the parrot configure? 05:19
darbelo Once your parrot is Configured and install-dev'ed you run 05:23
05:23 Austin joined
darbelo perl "whatever you put on --prefix here"/lib/1.6.0-devel/tools/dev/gen_makefile.pl Makefile.in Makefile 05:25
if you didn't specify a --prefix to Configure.pl that would be
perl /usr/local/lib/1.6.0-devel/tools/dev/gen_makefile.pl Makefile.in Makefile
It's become parrot tradition to encapsulate that sort of thing into a Configure script for your project. 05:26
decnum-dynpmcs recently (under 24 hours ago) migrated from a Configure.pl to a Configure.pir 05:27
parrot-plumage has a Configure.nqp, rakudo has Configure.pl, etc. 05:28
The usual sequence is "run configure script"; make; make install
ash_ when i run the make file i get Makefile:43: *** missing separator. Stop. 05:33
darbelo Ouch, I copied that out of an xterm. Tabs probably got turned into spaces. 05:36
lines 43, 46 and 49 should begin with a tab. 05:37
like:
<tab>$(CC) $(CC_OUT)your_pmc$(O) $(INCLUDES) $(CFLAGS) your_pmc.c
ash_ kk, i need to learn makefiles better >< 05:38
darbelo I can teach you to hate them if you want to. 05:39
The alternative is to pick a particular make, learn it and forget about portability. 05:41
Austin_away Learn HP's make.
Austin Every other make is compatible with HP make, because it has the fewest features.
darbelo What the one in hp-ux?
Austin Yeah 05:42
darbelo that's ancient.
Austin See?
darbelo but illustrates the point nicely.
Austin No features => no portability problems.
darbelo Austin++
Austin Everything you try in any other make will work.
05:42 dukeleto joined
chromatic That argues for Windows make. 05:42
darbelo Ew. 05:43
Austin No. Nmake has quite a few features, most of which are inspired by the C preprocessor and do not appear anyplace else.
darbelo grew up on BSD make.
chromatic Use only those features which work *reliably*.
Austin They work every time I use them. :-| 05:44
darbelo I thought you were arguing *for* nmake...
Austin For portability, it's HP or perl.
And we know why perl is a bad idea. 05:45
I hate expense reports.
darbelo Or, do what most linux people do: use GNU make everywhere!
Austin I could be failing to get Close to work, but instead I'm stuck adding up fractional numbers. 05:46
You know, forget health care. Why aren't electricity and water free? 05:47
Talk about some stuff that everybody has to have.
I paid for the house. If electric and water were free, it would be down to cable, cell phone, and food. 05:48
I could get a job working for sandwiches, get free wifi, and use skype. 0 expenses. 05:49
Then I wouldn't have to do expense reports.
darbelo just noticed the Close blog. 06:08
06:18 fperrad joined 06:33 iblechbot joined 06:37 uniejo joined
kyle_l5l what does the opcode 'le' do? 06:46
treed less than or equal?
treed guesses
moritz in perl le is 'less than or equal' for strings
kyle_l5l makes sense.
06:50 masak joined 06:55 particle joined 06:58 particle1 joined
nopaste "kyle_l5l" at 72.230.232.130 pasted "thread globals test" (29 lines) at nopaste.snit.ch/18044 07:10
kyle_l5l why isn't that doing what I want? 07:11
(or is that Not Implemented Yet) 07:14
chromatic You didn't share that global between interpreters. 07:15
07:22 donaldh joined
kyle_l5l how do I do that? 07:26
chromatic I'm not sure. 07:27
There *is* a concurrency PDD in docs/pdds though.
dalek rrot: r41441 | chromatic++ | trunk/src/gc/gc_private.h:
[GC] Increased initial sizes of GC pools to:

   * accommodate initial STRING/PMC counts for starting Parrot
Note that the code still has too many magic numbers and assumptions, will require editing when PMC/STRING sizes change, may require tuning when the number of PMCs/STRINGs created change, and assumes 4k pages and 32-bit machines. Better constant declarations which respect platform-specific probes welcome. Even so, this improves Rakudo's startup time by 2.046% and likely improves further performance, due to larger (even though they grow) arenas.
07:29
kyle_l5l yeah, doesn't say how to share though
chromatic I just saw that.
I can't find anything that calls VTABLE_share, which is how you do it from C. 07:32
That code may have gone away with STM.
kyle_l5l ahh, ok 07:33
chromatic I could add a couple of experimental ops for that if you really need them. 07:34
kyle_l5l that would be useful 07:35
chromatic What's the context of your need? 07:37
kyle_l5l I'm just trying to poke around at parrot threads, and would be happy to share a pmc. 07:38
looks like in the last parrot revision that has stm, there's a sharedref.pmc 07:39
chromatic If you send a message to the mailing list asking for some design comments, I'll work on some ideas and implement whatever (though likely experimental) ops we agree on there. 07:47
kyle_l5l alright 07:49
chromatic Anything I do right now would be experimental, but I don't want to commit to any design without getting a little more input -- even with experimental ops. Thus, we'll bat around your use case a bit and see what happens. 07:50
kyle_l5l Sure. I've been mucking around with getting threads+HLLs working, and I just assumed that sharing PMCs was already there. I would be happy to do what I can. 07:53
darbelo There's a lot of people asking for stuff to play with. Looks like parrot usage is on the raise. 07:55
jonathan kyle_l5l: I'm happy that you're working on threads + HLLs. :-) 08:08
kyle_l5l it's been a....learning experience.
jonathan :-)
moritz speaking of which, did anybody review and apply these patches already? 08:10
(the threads + HLL patches, forgot ticket number) 08:11
if not it might be worth sending a mail to parrot-dev asking for review
or ask in next #ps (just missed one, d'oh)
darbelo If you have the TT# I can give them a look. But I'm not the best person for this, given I don't know how threading on parrot is even supposed to work. 08:13
moritz looking...
kyle_l5l no, no updates to uhm, #757 08:14
moritz trac.parrot.org/parrot/ticket/757
right
mikehh chromatic: I had some problems with the --maintainer config option two days ago when bacek modified imcc.y 08:17
chromatic What happened? 08:18
purl We don't know what happened, so tell everyone nothing happened.
mikehh chromatic: it changed imcparser.h and .c files - it kept giving me an svn diff with them and I wanted to do a codetest commit 08:21
darbelo moritz: They *look* sane, but I'm not sure about the change in pmc.c 08:22
mikehh I think I have a different version of bison (2.3 as opposed to bacek 2.4) 08:23
chromatic That'd do it.
mikehh it's ok now though
darbelo Nobody calls visit_pmc_later(). Ever. 08:27
mikehh All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r41441 - Ubuntu 9.04 amd64
darbelo One less callback to care about! 08:28
Austin Namespaces question: If I have a namespace N containing a sub S1, and at runtime I load a pbc file containing another namespace N with sub S2, what happens? Are any and all references to namespace N the same object? Does that object get updated to have two subs, or does a new one get created? Are they versioned, the way classes are? 08:29
chromatic They should be the same object, provided they're in the same HLL. 08:30
Austin So the load-bytecode just adds a new key S2 with a link to the new sub, and anyplace the N namespace is in a register or whatever it appears? 08:31
chromatic I won't promise that's what it does, but I believe that's the intent. 08:32
Austin Intent is fine.
Thanks.
nopaste "darbelo" at 190.3.143.132 pasted "Obliterate the visit_pmc_later callback." (101 lines) at nopaste.snit.ch/18045
darbelo chromatic: Would you consider nopaste.snit.ch/18045 to be in the general vincinity of 'sane'? 08:33
chromatic Provided no HLL uses it.... 08:34
darbelo I'll check for that. But I doubt they do. 08:35
Directly touching pmc_freeze code is likely to cause acute segfaultitis. 08:39
Austin Chromatic: I noticed that if you call a function in PIR as 07$P0 = "subname"()00 then it it doesn't "load" the "address" of the sub. Instead, it somehow memoizes or remembers it. Whereas if you do a get_*object and call indirect, you can replace the sub with another sub. Is the first behavior a "lexical" behavior, subject to changing if a new closure of the sub is taken, or is it somehow... 08:40
...compiled in, with IMCC binding the subid or some such?
Okay, that's weird.
Chromatic: I noticed that if you call a function in PIR as 07$P0 = "subname"() then it it doesn't "load" the "address" of the sub. Instead, it somehow memoizes or remembers it. Whereas if you do a get_*object and call indirect, you can replace the sub with another sub. Is the first behavior a "lexical" behavior, subject to changing if a new closure of the sub is taken, or is it somehow...
...compiled in, with IMCC binding the subid or some such?
(%O, not %C00) 08:41
chromatic I believe it's IMCC binding. 08:42
Austin Ouch.
chromatic Perl 5 does the same thing. 08:43
Austin Am I correct that there is no way for a non-sub to have a value at load-time? 08:46
Change that. ... no way for a visible symbol that is not a sub ... 08:47
purl Austin: that doesn't look right
chromatic How about a .const ?
Austin Are those visible?
Or does IMCC eat them? 08:48
(By visible, I mean can some outsider get at them)
chromatic Not without inspecting the PBC, I think.
Austin Yeah.
But my understanding is that the only "globals" are PMCs, and all PMCs (except *subs) require some kind of init code to run, and so none of them have values when loaded. 08:50
chromatic We don't have any good static initialization for value PMCs.
Austin Do we have any? 08:51
chromatic Not on purpose.
Austin I'm assuming not, and that I have to generate an :init sub to sneak it in.
chromatic I agree. 08:52
Austin <whew>
:)
darbelo ok. partcl is slow. I'll have to remember that next time. 08:58
... and needs ICU. 08:59
... but survives the surgery. 09:03
Incoming !
dalek rrot: r41442 | darbelo++ | trunk (3 files):
Remove the unused visit_pmc_later callback from the visit_info structure.
a: 749ea27 | fperrad++ | config/makefiles/root.in:
rename target smoke to smolder
09:14
a: 33e5a9b | fperrad++ | config/makefiles/root.in:
refactor with curl (instead of LWP)
09:18 fperrad joined 09:31 bacek joined
bacek o hai 09:32
Austin ohai, bacek 09:38
bacek aloha Austin
09:45 chromatic joined
mikehh All tests PASS (pre/post-config, test, fulltest) at r41442 - Ubuntu 9.04 amd64 09:46
10:38 payload joined 10:46 TimToady joined 10:47 quek joined 11:32 tetragon joined
dalek kudo: 722f82c | masak++ | src/parser/actions.pm:
[actions.pm] construct twigilled variables right

turned into $1bar. The <twigil> subrule was called with a postfix:<?>, turning its submatch into an array. The colonpair action method now takes this into account. This is a first step towards fixing #67846. Rakudo still doesn't conform to the semantics explained in L<S06/Attributive parameters>, but now it at least has a chance.
11:50
11:56 bacek joined 11:57 bluescreen joined
bacek seen pmichaud 12:04
purl pmichaud was last seen on #parrot 1 days, 8 hours, 22 minutes and 45 seconds ago, saying: (assuming the fresh checkout exhibits the same problem) [Sep 23 03:34:27 2009]
12:09 bacek_ joined
bacek_ msg pmichaud I want to introduce new POST::Macro node to handle various .const, .lex and other stuff. Without it I will have to reparse POST::Op for emitting PBC from POST. 12:10
purl Message for pmichaud stored.
12:11 eiro_ joined, whiteknight joined
whiteknight good morning 12:12
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
bacek_ whiteknight: you have to learn it. It's evening already. I told you many times :) 12:13
whiteknight I'm just so confused when I wake up
jrtayloriv morning whiteknight 12:16
whiteknight hello jrtayloriv 12:17
whiteknight has been too busy this week to hack on Parrot 12:29
and that makes me sad
jrtayloriv no fun :( 12:32
whiteknight irclogs? 12:33
purl irclogs is, like, irclog.perlgeek.de/parrot/today or see also: infrared clogs
12:34 ruoso joined
jrtayloriv I haven't been able to hack on Parrot due to knowledge shortage ... about halfway through my GC book now, though, so hopefully I'll be able to start shortly after I'm done with that in a week or so. 12:34
Took a trip to university land so I could get access to ACM papers, and got bucketloads of awesome GC papers to read too! 12:35
whiteknight awesome. Let me know if you find any particularly good papers
I had a stack of them, but can't find it anymore
bacek jrtayloriv: If you want I can create "gc-encapsulate" branch with my sketch idea about GC encapsulation. 12:36
dalek rtcl: r744 | coke++ | trunk/config/makefiles/root.in:
Fix smolder target for partcl on windows/gmake.
12:37
jrtayloriv whiteknight, One that I found that was interesting recently, was a paper talking about the generational hypothesis, and how it's false ... talks about "renewal older first" gc 12:38
It is called "An Experimental Study of Renewal-Older-First Garbage Collection" 12:39
whiteknight that would be quite an interesting idea, if generational wasn't really a win
12:41 mj41_ joined, ttbot joined
jrtayloriv whiteknight, they're saying it's a win over other types of GC, they're just saying that doing generational where you don't always collect youngest-first can be a win over generational systems that do always do youngest-first 12:43
whiteknight so instead of a strict old/new generation system, instead use like a partitioning system where we focus effort on different partitions? 12:44
jrtayloriv "A pure renewal-older-first collector divides the heap into two generations, and always collects the older generation. Instead of grouping objects according to their actual age, however, the ROF algorithm groups objects according to their renewal age, which is defined as the time that has passed since the object was last classified as reachable by a collection within its generation, or as its actual age if it has never been conside 12:45
red for collection.
(quote)
After each collection, therefore, the objects in the older generation that survived the collection are considered to be the youngest objects. We implement this by dividing the heap into steps that contain objects of similar age, and relabel the steps following each collection ... 12:46
12:47 he joined 12:50 iblechbot joined
jrtayloriv whiteknight, and basically, they *do* youngest first, in the sense that they keep a "nursery" around which *is* collected most frequently, but other than that, it's not always youngest first. 12:51
whiteknight oh okay, so it's always youngest first except it's not 12:52
makes perfect sense
whiteknight just has to read the paper, methinks :)
jrtayloriv I guess it would have been more clear to say that it is youngest first, but that you don't always try to collect younger objects before older ones. Sorry about not being clear -- I meant you don't always assume that younger --> collected first. 12:54
But anyway, yeah -- the paper would be more clear than I'm being :) 12:55
... especially since I'm only about halfway through a 15 year old book on GC, and haven't even finished the chapter on generational systems yet ;) 12:56
fperrad seen Coke 13:12
purl Coke was last seen on #parrot 1 days, 9 hours, 56 minutes and 53 seconds ago, saying: sighs. [Sep 23 03:07:33 2009]
he Hmm, www.parrot.org appears to be stuck somehow; it accepts connections but does not respond to http protocol requests. 13:13
moritz looks at slashdot, maybe they mentioned parrot :-) 13:14
he ...and finally ends up closing the connection. 13:16
who admins the web server? 13:17
moritz the hosting company, I think 13:18
13:22 jsut_ joined
he So nobody who is on here, then, I guess. 13:26
dalek a: 45ed019 | fperrad++ | t/lua-TestMore:
update submodule lua-TestMore
13:37
13:41 ash_ joined 13:51 Austin_away joined 13:59 particle joined 14:07 whiteknight_ joined 14:22 theory joined 14:25 whiteknight_ joined
ash_ whiteknight: I have been playing with the llvm in a pmc in parrot, just wanted to let you know. Have you been doing much with it yet? 14:28
14:34 Psyche^ joined
moritz parrot's Configure.pl still detects libgmp, but pmichaud++ told me the BigInt PMC was gone... 14:36
is there any good reason to still detect it? 14:37
pmichaud I suspect people didn't want to rip out the detection code. But I'm waaaaay beyond my solid knowledgebase here -- my musings are more speculations than knowledge of actual facts :) 14:38
ash_ can anyone access parrot.org? its not pulling up for me at the moment 14:41
moritz ash_: we've had similar complaints here earlier (and it didn't work for me either) 14:42
ash_ moritz: as log as I am not the only one, anyone we should contact about that? 14:44
moritz ash_: I think coke and allison know how to contact our hosting company - not sure if anybody else does
pmichaud particle does 14:45
moritz let's hilight particle then :-)
particle looking... 14:50
particle mails support@osuosl.org 14:52
pmichaud++ moritz++ ash_++
dukeleto yes, the parrot website seems to be hanging 14:53
14:53 kjeldahl joined
particle it's slow as heck, but responding 14:55
15:01 Austin joined 15:02 JimmyZ joined 15:05 jrtayloriv joined
cotto_w0rk hi 15:06
pmichaud I'm thinking it might be clogged intertubes 15:12
I'm having trouble reaching gmail this morning
diakopter gmail flaky today
dalek rrot: r41443 | fperrad++ | trunk/tools/dev/gen_makefile.pl:
[languages] allows extra configuration from language
15:18
15:18 pmichaud joined 15:26 pmichaud joined 15:31 ruoso joined 15:34 kyle_l5l joined 15:38 tokuhirom____ joined 15:41 Austin joined, whoppix joined 15:43 mokurai joined 15:45 zerhash joined
Andy I didn't mean for my task for cpplint.py to rile everyone so. 16:03
particle scan.coverity.com/report/Coverity_W...t_2009.pdf 16:07
nice to see parrot here
ash_ is the cpplint.py your using the one from Google's style guide?
16:07 darbelo joined
Andy The ticket I wrote also mentions the Google style guide. 16:09
whiteknight Andy: did people get riled up about it? 16:11
Andy seemed to frm the comments I saw go bu
by
whiteknight apparently hasn't been paying enough attention
Andy trac.parrot.org/parrot/ticket/1059 16:12
Maybe I read too much riledness into the comments at first.
pmichaud trac.parrot.org slow 16:13
particle re parrot.org: There was a site crawling it from over 30 ips on the trac instance. I 16:16
went ahead and blocked all of them as it was killing the VM.
pmichaud I used to have that problem with Yahoo! crawler 16:17
NotFound Maybe it lacks an adequate robots.txt ?
pmichaud on my site, all pages have explicit robot controls (more) 16:18
but it was more than that -- Yahoo's crawler would end up crawling the home page some 300 to 500 times per day
particle yikes 16:19
i need to be able to view coverity reports 16:20
msg chromatic i need to be able to view coverity reports 16:21
purl Message for chromatic stored.
Andy why chromatic?
whiteknight I think somewhere along the line I was given a login, but never used it
Andy I can hook you up with the Coverity guy
whiteknight you gots da' hookup?
particle previously, c said, 'give me your info and i'll set you up'
whiteknight "whatchou need? I gots it" 16:22
particle but if you'll be my new sugardaddy i'll love you forever
Andy send to me and I'll forward it.
Don't you love me forever anyway, Jerry?
particle what info is needed?
YES.
Andy just a uname and email I assume
pmichaud for those who are interested in my experience with yahoo's crawler: www.pmichaud.com/pipermail/pmwiki-u...24894.html
particle particle and particle@parrot.org
pmichaud (yes, it's 2006. I haven't looked recently)
particle it'd be nice to get parrot to coverity rung 3 16:26
it'd be extra nice to beat perl there
Andy particle: sent
whiteknight where does one go to log into coverity?
16:26 Austin joined
whiteknight nvermind, I found my email 16:26
dukelet0 Andy: i don't think anybody is riled, just not seeing how to use cpplint.py effectively. If you gave an example of it being of use to Parrot, those arguments would dissolve 16:27
Andy dukelet0: I'm not seeing how to use it, either. I haven't even looked.
It was a to-do.
Now I can't find my Coverity credentials 16:30
whiteknight strangely enough, my coverity login name is "andrew" 16:32
as if there are no other andrews around
Andy and I think mine is andy
whiteknight it would be much easier for me to remember "whiteknight" instead. But beggars can't be choosers 16:34
Andy as if there are no other white knights around.
dalek kudo: 8e34da7 | pmichaud++ | src/setting/IO.pm:
Add the IO.t method for testing that a filehandle is opened to a tty. (hv2++)
16:35
ash_ whiteknight: have you been working on the llvm stuff? 16:36
16:36 flh joined
whiteknight ash_: not a bit. Been very busy in $reallife these last two weeks 16:36
darbelo ash_: So, did your pmc build? 16:37
ash_ whiteknight: well, i have been playing with a PMC that call to the llvm so you can load it as a dynpmc
whiteknight yeah, I saw your comment earlier. I would love to see that 16:38
ash_ yah, that makefile you gave me helped but i ended up just manually making a bunch of changes (had to make it link to the llvm-libs and what have you) so its not really being generated automattically
whiteknight ash_: is your code visible anywhere?
ash_ its mostly the sample from the llvm-jit examples in their trunk gist.github.com/192495 wrapped in a single function in a PMC, thats almost it, i'll update that one to show you my actual code, one sec 16:39
i had to compile parrot with --cc=g++ and then after i used pmc2c on that pmc i changed a few things around in the C and changed the C file to a cpp file 16:40
blog.fallingsnow.net/2008/05/23/sim...with-llvm/ has a good example of how to convert C code into llvm-opt code that you can load at runtime into your JIT so you don't have to write as much C++ for manually making functions 16:41
darbelo sounds like you've been busy. 16:42
ash_ although one thing i want to check is whether llvm.org/doxygen/classllvm_1_1Modul...fb903ec4c0 allows for multi-methods, the doc explains that it finds a function based on the prototype you pass it, but if its given the wrong prototype it tries to change it to the right prototype, which could mean that llvm-jit methods are multi-methods but i can't say for sure, it could just be overriding the old func 16:44
new one too, i wanted to test that out
darbelo: i couldn't sleep last night so i just messed with it till it worked 16:45
eventually it did
if you bash it enough times with a hammer anyway
so, for the jit system did you guys want to translate pasm to llvm-ir? or could you just use the llvm to compile the fastcore into llvm-opt code then have it optimize that with the jit? 16:48
darbelo We're ummm... researching. 16:49
ash_ then it would be like how perl6 has its entire code in a C string and it just loads that into the parrot lib when you start it, you could have the runcore in effectively a C string thats loaded into the llvm-jit when you start parrot
i am sure there are parts of this that I am missing though 16:51
darbelo I guess I'm not really the best person to discuss this. My only JIT work was to rip the old one out. 16:53
But you just gave me a pretty evil idea. 16:56
ash_ i am in a similar boat, i have just read a bunch of the documentation for the llvm and saw how others are doing it (macruby, unladen swallow which is a fork of python where they are integrating the llvm)
whiteknight ash_: I think what we're planning is to compile the fastcore functions to LLVM-IR at build-time 16:57
darbelo I don't have LLVM on my platform, but we are also evaluating other alternatives.
kjeldahl Just got the bugfixes and kubuntu-desktop seems to install fine again. Hopefully my desktop will be back when I arrive at the office tomorrow. Thank you for helping out.
Oops: Sorry, wrong channel.
ash_ darbelo: yeah i have seen a lot about libjit recently, i tried looking into it more but the download link on www.gnu.org/software/dotgnu/libjit-...jit_1.html is dead 16:58
darbelo I'll see which work here and try to whip up a prototype.
ash_ didn't mono switch to libjit recently? 17:00
whiteknight the portable version did
I don't know if that was recent
and I don't know if "regular" mono did
I guess I hadn't really realized that the LLVM API was only C++ 17:01
17:01 joeri joined
ash_ yeah, llvm doesn't have pure C bindings currently, it can work with C but you have to do all that fancy stuff invovled with mixing C and C++ 17:01
making sure you use the right extern and all that, compiling it with the right linkings 17:02
whiteknight I wonder what it would take to create some pure-C bindings 17:03
I'm sure it would take a huge effort
darbelo A glue layer of extern "C" functions that call c++ would be easier. 17:04
NotFound What right externs? Manually name mangling?
darbelo Ew. I hope not.
NotFound There is no other way to use C++ functions from C if the C++ code does not use extern "C" 17:05
ash_ there are some llvm-c bindings actually, i just checked, don't know if they are complete though (llvm-c/ is the C bindings llvm/ is the C++ ones) 17:07
might be able to use the llvm-c stuff instead of the C++ ones, not sure, i can read into it more 17:10
whiteknight ash_: you have a link to the LLVM C bindings stuff? I would be interested to read it too 17:14
dalek cnum-dynpmcs: r184 | darbelo++ | trunk/cfg/Makefile.in:
Actually use the STAGING_DIR variable in the makefiles.
17:16
ash_ llvm.org/docs/FAQ.html#langirgen mentions it, llvm.org/docs/doxygen/html/Core_8cpp-source.html has some info
still looking for more documentation on the llvm-c stuff, i just found it a few minutes ago
whiteknight llvm.org/docs/doxygen/html/Core_8h-source.html 17:18
ash_ oops, time for class, lost track of time, whiteknight i am going to keep looking into this to see if maybe you can link to the llvm without C++ 17:20
i'll let you know if i find much, talk to you later 17:21
whiteknight awesome 17:23
whiteknight has to go now. Giving a tutorial at work about unit testing and TDD 17:26
darbelo TDD++
17:30 mberends joined
dalek cnum-dynpmcs: r185 | darbelo++ | trunk/cfg/Makefile.in:
There's nothing in the build/directory we want to save, so 'make clean' removes

Further make targets recreate it if needed.
17:34
17:35 chromatic joined
dalek rrot: r41444 | NotFound++ | trunk/t/op/annotate.t:
[t] use getinterp instead of new 'ParrotInterpreter' to get annotations, TT #1060
17:35
17:51 theory joined
dalek cnum-dynpmcs: r186 | darbelo++ | trunk/build:
We don't need to version an empty directory. Really.
17:51
rrot: r41445 | NotFound++ | trunk/tools/build/nativecall.pl:
[nci] use char** instead of void** in type B parameters, this simplify the code and avoid strict-aliasing warnings
17:58
17:59 TimToady joined
dalek rrot: r41446 | mikehh++ | trunk/config/gen/makefiles/root.in:
add tests to make fulltest and clean up make cover
18:02
cotto_work I'm amazed that the gdb hackers are using cvs. 18:04
darbelo There's still quite a few some people using CVS out there. 18:05
chromatic OpenBSD has a project to reimplement CVS. 18:06
NotFound Tell them to do it with PIR 18:07
dukeleto chromatic: oh my.
chromatic: link?
purl or "Link is ... like ... this pointy eared goblin that walks around in midi-music land with a letter opener attacking circles and things and wooing princesses but not bannon, you know?" or preaction is Error.
darbelo dukeleto: It's mostly done even. I use it to update my ports and source trees.
OpenCVS
But the web pages don't say much about it. 18:08
dukeleto using cvs for a ports system makes sense, i guess. I say this grudgingly.
darbelo As far as I can tell the core devs mail each other patches until enough people say 'ok' then it goes into the tree. 18:09
18:10 theory joined
cotto_work I guess it does the job for them, but why? 18:10
cotto_work put it out of his mind and gets back to "work". 18:11
which at this point legitimately includes reading Chromatic's blog
s/C/c/
darbelo legitimately? cotto++ 18:12
cotto_work It'd be a dream job if it weren't a 12 month contract.
18:20 coke joined
coke msg mikehh the comment you added to the makefile reflects the status from the previous revision, not your fix. 18:20
purl Message for mikehh stored.
coke msg mikehh (just document the way it is now, not the way you fixed it from.)
purl Message for mikehh stored.
18:21 iblechbot joined
coke msg mikehh you might also be interested in TT#1061 18:26
purl Message for mikehh stored.
dalek TT #1061 created by coke++: Lists of test files duplicated. 18:27
18:33 whiteknight joined
mikehh coke: re TT #1061 - I looked at that but look at standard_tests in DefaultTests.pm for example 18:38
coke: I also couldn't figgure out how to get that into fulltest and cover 18:39
coke: some of the configure tests use those arrays 18:41
18:43 japhb joined 18:45 jan joined
dalek TT #1062 created by NotFound++: Type safe mark alive 18:46
chromatic +1 on the patch in TT #1062. 18:50
18:56 Austin joined
pmichaud +1 also 19:02
19:05 zerhash joined
darbelo msg japhb My attempt at teaching gitorius to dalek failed with ENOTUITS. 19:12
purl Message for japhb stored.
cotto_work NotFound++ 19:19
(and "why didn't we do that sooner?" to the patch) 19:21
NotFound I asked for objections, not for applauses ;) 19:22
whiteknight I object for not letting us applaud you 19:23
Actually, I had thought about doing that exact same thing a while back and didn't. That makes me mad at myself
darbelo I object to not committing that right now.
pmichaud I object to anyone who objects 19:24
cotto_work I applaud your asking.
NotFound Ok, I'll commit it
mikehh is an objection a PMC object?
NotFound Is an ion encapsulated 19:25
japhb darbelo, no worries. If you get it before someone else does, great. If not, that's OK too. :-)
cotto_work purl, Ok, I'll commit it is NO YOU FOOL! YOU'LL KILL US ALL!
purl OK, cotto_work.
cotto_work purl, Ok, I'll commit it. is NO YOU FOOL! YOU'LL KILL US ALL!
purl OK, cotto_work.
japhb cotto_work, shouldn't that be ... is <reply>... ? 19:26
cotto_work no purl, Ok, I'll commit it is <reply>NO YOU FOOL! YOU'LL KILL US ALL!
purl okay, cotto_work.
cotto_work no purl, Ok, I'll commit it. is <reply>NO YOU FOOL! YOU'LL KILL US ALL!
purl okay, cotto_work.
cotto_work japhb++
NotFound Ok, I'll commit it
not_purl NO YOU FOOL! YOU'LL KILL US ALL! 19:27
japhb Odd, I wonder why that didn't trigger
cotto_work kicks purl
purl kicks cotto_work
darbelo shoots purl 19:28
purl sticks a finger in darbelo's gun barrel
japhb is testing purl ...
I'll commit it
hmmm 19:29
purl, foo is <reply>NO YOU FOOL! YOU'LL KILL US ALL!
purl ...but foo is <reply>bar...
japhb purl, foob is <reply>NO YOU FOOL! YOU'LL KILL US ALL!
purl OK, japhb.
japhb foob
???
darbelo foob?
purl NO YOU FOOL! YOU'LL KILL US ALL!
darbelo Ok, I'll commit it 19:30
japhb huh. Change of purl config somewhen?
purl japhb: that doesn't look right
darbelo Ok, I'll commit it?
dalek rrot: r41447 | NotFound++ | trunk (39 files):
[gc] add new mark_... _alive functions, use it in a lot of mark vtable functions, and some cleanup related, TT #1062
japhb "I'll commit it"?
cotto_work The bot is hopeless.
japhb sigh
japhb adds that as item 78642 on his list of things to do before the sun goes red giant. 19:31
dukeleto purl, commit? 19:36
purl well, commit is 8d063cd8450e59ea1c611a2f4f5a21059a2804f1
dukeleto even purl uses git nowadays ;)
whiteknight one thing we definitely are going to need here in the next few days is a major overhaul of the GC-related documentation and PDD09
consider how much of the API has changed recently 19:37
jrtayloriv whiteknight, I'd be interested in working on that. I've been really busy lately, but should be able to at least get some documentation written/edited. I already did a bit when I was working on gc-refactor. 19:46
whiteknight yeah, I'm sure a lot of the big points are still fine. Just needs some lovin' 19:47
jrtayloriv whiteknight, Definitely. I'll take a look at it later tonight -- doing a Linux install for a friend right now, so that's going to take up most of my day.
whiteknight yeah
chromatic 202 current Coverity defects. 19:53
Lots in PCC.
19:54 bacek joined
moritz 6 19:55
sorry
darbelo The PCC refactor needs to happen *now*
moritz well, it doesn't seem very simple... 19:56
19:56 particle joined
darbelo It's likely to be very difficult. But the biggest blocker so far has been tuit shortage. 19:58
I don't doubt that if allison had the time it could land for the next release. 19:59
We need to kidnap the architect :) 20:01
cotto_work s/kidnap/clone/ 20:03
darbelo Sure, with cloning tecnology, after you kidnap the first one you can make as many as you want. 20:04
cotto_work but yeah, having a very important branch that only allison can work on isn't helping 20:05
whiteknight I don't think that only allison can work on it 20:06
if we put together a little strike team, I think a group of us could fix it up pretty quickly
darbelo The plan for it is in her head. We'd be driving half-blind in rough roads. 20:08
NotFound A problem is that the branch is old, lots of branch merges had happened.
whiteknight darbelo: her plan for it is implemented in code in the branch. Primary development is over, it's all fixing test failures now 20:09
cotto_work whiteknight, I think you're right.
20:09 mokurai joined
whiteknight NotFound: if we can make it work as-is in that branch, we can forward-port it to current trunk. 20:09
darbelo Oh, my bad then.
cotto_work wishes for git
NotFound whiteknight: I can't 20:10
whiteknight so I say we do this: copy the pcc_arg_unify branch to a pcc_arg_for_serious branch, and we can work on it there without stepping on allison's toes
cotto_work whiteknight, where did you get "for serious"?
NotFound I think allison already has the intention to do it
mikehh All tests PASS (pre/post-config, smoke, fulltest) at r41447 - Ubuntu 9.04 amd64 20:11
cotto_work intention != tuits
whiteknight cotto_work: I don't know, it sounded better then "pcc_arg_unify2"
cotto_work I had a housemate who used to say that.
whiteknight if we get that branch working and mergable, that's a good thing
NotFound whiteknight: 2.0, is the norm these days ;)
cotto_work v. yes
whiteknight allison doing a code review is faster then allison doing deep debugging
pmichaud also, jonathan++ will be blocking on that branch very soon (like, within a week or two) 20:12
whiteknight I say that's the new plan: create a copy of the branch and everybody who is blocking on it can get their coding asses in there to fix it 20:13
cotto_work let's storm the castle!
NotFound Uh, I confused myself. I think allison talked about taking a diff of the branch, apply to trunk, and start a nwe branch with that.
whiteknight 2-5 dedicated coders could knock that out
because personally I'm getting tired of not just doing it myself, considering how much is waiting for it 20:15
20:15 bluescreen joined, allison_ joined
cotto_work I can't currently commit code written at work, but I've got the tuits and there's nothing preventing me from reading it. 20:15
speak of the architect...
hi allison_ 20:16
allison chromatic pinged me
whiteknight allison: I'm trying to put together a strike team to storm the pcc_arg_unify castle
allison I'll be home Saturday
20:16 Austin joined
allison I'm going to do a fresh branch, pull in the changes 20:17
NotFound allison: Have you seen TT #1062 ?
whiteknight is the branch still failing tests?
dukeleto just did an inter-library loan for the newest edition of the dragon book. exciting! 20:19
NotFound dukeleto: Do you mean the D&D manual? ;) 20:20
whiteknight dukeleto: I own a copy. one of my favorite books! 20:22
diakopter whiteknight: 3rd edition?
purl 3rd edition is going to print in the near future
whiteknight diakopter: second I thought. the one with the purple dragon
I couldn't get a copy of the red-dragon one, too expensive and hard to find 20:23
dukeleto it is the 2007 edition, whatever that is 20:24
mikehh partcl r744 builds on parrot r41447 - make test PASS (smolder #28015) - ubuntu 9.04 amd64
dukeleto i hope to learn some good spells ;)
whiteknight it's a great introduction to a lot of topics. Like parsing and lexing it's great for 20:25
allison whiteknight: having in person conversation with chromatic
whiteknight it has some sections on VMs, GC, op dispatch, etc, but nothing that you couldn't learn from the Parrot source code
NotFound Without guns?
dukeleto lulz
allison whiteknight: so, here's the plan, anybody who's interested have a look at the code in the next few days 20:26
whiteknight allison: yes, I'm jealous
allison whiteknight: while I'm on the plane, I'll write up a high-level description of how the new PCC is *supposed* to work
whiteknight allison: we have a lot of talented developers around here who seem to think they have no choice but to wait it out
allison whiteknight: (understanding that seems to be the biggest blocker for people getting involved)
whiteknight my intention is to focus that energy into fixing it
allison: that would be wonderful and perfect 20:27
pmichaud whiteknight++ allison++
allison whiteknight: I'll prepare a list of tasks that need to be done, so they can be distributed
pmichaud \\o/
NotFound Great
whiteknight you hear hat guys? light your torches and sharpen your pitchforks! We storm the castle at dawn!
well, localtime(dawn) 20:28
NotFound Hooray!
allison dawn saturday :)
pmichaud prepares his catapults and trebuchets
whiteknight localtime(saturday.dawn)
whenever. All need is a reason to grab the pitchfork
allison but, like I said, feel free to take a look at the code in the meantime
a trac diff on the changes in the branch will reveal what you need to see 20:29
pmichaud "A riot is an ugly thing. But it's about time that we had one!!!" -- line from "Young Frankenstein"
allison (it's a pure branch, no updates from trunk)
NotFound allison: I tooka look, but looking at code pre context refactoring give me headaches ;)
whiteknight yeah, that's the part I worry about the most: the Sub, Context, and Continuations refactors that all landed 20:30
I think we can account for all of it, but it will require some effort
allison whiteknight: that's why I'm starting with a fresh branch
it's not that big a deal, just a few new functions added, and a lot of function names changed 20:31
whiteknight if the conflicts list gets too large, feel free to commit it and we can get more hands helping to resolve things
one thing we do have is hands
NotFound And foots, to kick if required ;) 20:32
dukeleto can kick like a horse 20:33
cotto_work ✌
allison I have to go catch a flight, will be back online this evening after I speak at a Python user group
whiteknight NotFound: I have a bag of karma for you if you can type legibly with your foot
allison++
allison (this is my last planned trip until December)
NotFound rakudo spectest PASS with r41447, amd64
whiteknight (allison is online for like 5 minutes and solves everybody's problems. Hooray!) 20:34
bacek good morning 20:35
purl And good moroning to you, bacek.
NotFound whiteknight: with a pen, or a keyboard? 20:37
darbelo NotFound: It's easier if you use both :)
cotto_work NotFound, with a keyboard. Also, you have to upload a video of it to youtube
darbelo Grab the pen with your foot, and tap the keyboard with the pen. 20:38
bacek pmichaud: ping
NotFound I suppose a carpet keyboard doesn't count as valid 20:39
dukeleto bacek: howdy
bacek dukeleto: good-good 20:40
whiteknight one thing that I really don't understand well enough, because I don't do a lot of raw PASM, are the set_args and get_results opcodes 20:42
get_params and set_returns too
nopaste "darbelo" at 200.49.154.173 pasted "compensation for japhb++" (53 lines) at nopaste.snit.ch/18052
NotFound whiteknight: black magic here
chromatic Hey, allison solved everyone's problem with some sage advice from Coach chromatic. 20:43
whiteknight chromatic++
is that your title now? Coach?
chromatic Sure, why not?
darbelo I had you as the guru type
Or maybe a sage.
chromatic Someone needs to keep in mind the question "What could we do better to sustain this project over the long term?" 20:44
Someone else needs to keep in mind the question "What is the most important thing to work on right now to achieve our long term goals?"
That's a visionary. (I prefer that term over "architect".) 20:45
NotFound Bank robbery?
purl Bank robbery is punishable by 20 years in Federal prison
bacek botsnack
purl :)
whiteknight the role of architect/visionary is a good thing, I think. I worry when I see people descending into an "us versus her" though
chromatic Exactly.
whiteknight so I don't want to "wait for allison to finish", I want to "all help allison finish" 20:46
chromatic She (and I believe the project) needs someone who's capable of and willing to consider the pragmatic, practical sustainability questions without stepping on the vision role.
whiteknight agreed
chromatic I told her I'm willing to ask the process questions and remind people that our goals in the short term have to lead us to the longer term goals. 20:47
Mostly we need to be able to discuss ideas and choose from alternatives while keeping both axes in mind. 20:48
japhb darbelo, go ahead and commit those Glue.pir diffs ... thanks! 20:49
20:50 jan joined 20:52 cotto_w0rk joined 20:55 kjeldahl joined
darbelo I forgot I was a committer. :) 20:55
dalek rrot: r41448 | NotFound++ | trunk (4 files):
[examples] drop Mysql from parrot repo, now in ļæ½code.google.com/p/parrot-mysql/
20:56
whiteknight Do we want to have a separately hosted project for every single library wrapper? I thought we were looking at a unified solution of sorts 20:57
darbelo whiteknight: We can have it both ways. 20:58
plumage is a central tool to pull together separately-hosted projects. 20:59
purl: plumage?
purl well, plumage is the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth. or git://gitorious.org/parrot-plumage/parrot-plumage.git or see trac.parrot.org/parrot/wiki/ModuleEcosystem
NotFound And having some little projects is good for easy testing of plumage, I hope
whiteknight that's fine too, so long as there is a plan
moritz no plan; done_testing; # ;-) 21:00
21:00 PacoLinux joined
darbelo moritz++ 21:00
whiteknight okay, it's time for me to go home. later 21:02
NotFound BTW I have a problem with mysql prepared statements. They need a C struct to set paraameters, there is no way to dynamicaly create it, and has a lot of private fields. That's a problem for NCI.
21:06 particle1 joined
moritz is that something a small C wrapper could "solve"? 21:08
NotFound moritz: yes, but then is no longer a pure NCI wrapper
moritz that's why I wrote "solve", not solve ;-) 21:09
21:09 bluescreen joined 21:16 bacek joined
dalek kudo: f2acdbb | moritz++ | src/setting/Operators.pm:
implement some more use cases of infix:<...>

   * we'd need multi slices for the signature, and don't have 'em
   * I've hit at least three Rakudo bugs which I've worked around
   * infix:<...> has rather sophisticated cases, which I tried to cover
   at least partially without too much code duplication
21:16
bacek hi again
purl oh, you're back!
21:20 joeri left 21:36 ruoso joined 21:41 bacek joined
dalek kudo: c394d6d | moritz++ | src/setting/Operators.pm:
forgot to remove debugging output, moritz--
21:41
rrot: r41449 | bacek++ | trunk/src (10 files):
[core] Use more Parrot_gc_mark_PMC_alive function.
21:44
bacek just finished reading irclog 21:45
Any one interested in "pcc_arg_unify" synced with trunk? 21:46
moritz bacek: only a new branch, afaict
darbelo Everyone, actually.
The plan is take all modifications made in branch and apply them to a fresh branch from trunk. 21:47
Why? Will you awesome git-fu make that a snap? 21:48
dalek rrot: r41450 | bacek++ | branches/pcc_arg_unify_2_0:
New pcc_arg_unify branch synced with trunk
21:51
bacek darbelo: git-fu is awesome, but sometime it's failing... 22:15
darbelo bacek++ # We reward failure too. 22:16
;)
ttbot Parrot trunk/ r41451 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/104322.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 22:18
dalek rrot: r41451 | bacek++ | trunk (30 files):
Merge branch 'pcc_arg_unify_local' into pcc_arg_unify_2_0_local

Conflicts:
  \tinclude/parrot/call.h
  \tinclude/parrot/interpreter.h
  \tlib/Parrot/Pmc2c/PCCMETHOD.pm
  \tsrc/call/pcc.c
  \tsrc/debug.c
  \tsrc/exceptions.c
  \tsrc/extend.c
  \tsrc/gc/alloc_register.c
  \tsrc/interp/inter_cb.c
  \tsrc/ops/core.ops
  \tsrc/ops/pic.ops
  \tsrc/packfile.c
  \tsrc/pmc/callsignature.pmc
  \tsrc/pmc/cpointer.pmc
  \tsrc/pmc/object.pmc
  \ttools/build/nativecall.pl
22:19
purl tools/build/nativecall.pl is supposed to be run manually, right?
darbelo bacek: did you just break trunk? 22:20
bacek OH SHIT.
darbelo: can you revert last commit please? 22:22
moritz I can do that if you want 22:23
bacek nm
I did it.
moritz ok 22:24
chromatic Speaking of trunk, where are we with the "Remove strstart"?
dalek kudo: a33b90c | moritz++ | src/setting/Operators.pm:
magic, eager 'a'...'z' and 'z'...'a' series
kudo: bac4abd | moritz++ | build/gen_setting_pm.pl:
add a vim modeline to gen_setting.pm which prevents accidental editing
darbelo A bit short of tuits on that front. 22:26
dalek rrot: r41452 | bacek++ | trunk (30 files):
Revert "Merge branch 'pcc_arg_unify_local' into pcc_arg_unify_2_0_local"
darbelo Looking at my notes: ~120 out of ~200 uses are inside src/string/ and src/gc 22:28
moritz one usage in rakudo (src/pmc/perl6str.pmc) 22:29
darbelo most of it is bookkeeping that can be removed along with the struct member.
Yes, rakudo has one use, partcl none.
didn't check cardinal 22:30
lua had none as far as I recall
moritz cardinal: 0
polyglotbot OUTPUT[Parrot VM: Can't stat languages/cardinal/cardinal.pbc, code 2.␤main: Packfile loading failed␤]
Tene polyglotbot hasn't worked properly in ages
If anyone is interested, I can help them get access to feather3. 22:31
darbelo Biggest offender in strstart abuse is still pmc_freeze
chromatic pmc_freeze, okay. What do we need there? 22:32
22:37 Austin joined
dalek rrot: r41453 | bacek++ | branches/pcc_arg_unify_2_0 (30 files):
Sync branch with trunk and pcc_arg_unify branch.

Conflicts:
   include/parrot/call.h
   include/parrot/interpreter.h
   lib/Parrot/Pmc2c/PCCMETHOD.pm
   src/call/pcc.c
   src/debug.c
   src/exceptions.c
   src/extend.c
   src/gc/alloc_register.c
   src/interp/inter_cb.c
   src/ops/core.ops
   src/ops/pic.ops
   src/packfile.c
   src/pmc/callsignature.pmc
   src/pmc/cpointer.pmc
   src/pmc/object.pmc
   tools/build/nativecall.pl
22:41
purl well, tools/build/nativecall.pl is supposed to be run manually, right? 22:42
22:43 darbelo joined
darbelo Gah. Power outage. 22:43
Okay I'm backlogged now. 22:45
pmc_freeze.c plays at increasing strstart to 'consume' the items at the start of the string. 22:46
That's the biggest piece of ugly there. 22:47
I think I got rid of most of *that* abuse, but there's still trickery hiding in that file. 22:49
Next biggest target is src/io which plays with buffers a lot. But I guess we can move most of it to abuse Buffer_bufstart() instead of strstart. 22:52
CAVEAT: A big part of that code is behind #ifdefs for platforms I can't test. 22:53
22:56 kid51 joined 23:00 tetragon joined
darbelo Maybe I should start opening tickets for the stuff I can't test. 23:03
dalek rrot: r41454 | bacek++ | branches/pcc_arg_unify_2_0 (2 files):
Add more Context API functions for new Context fields
23:06
rrot: r41455 | bacek++ | branches/pcc_arg_unify_2_0 (6 files):
Fix some merge errors
23:39 Zak joined
Ryan52 is allison on vacation or something? 23:46
chromatic Traveling for work.
dalek rrot: r41456 | jkeenan++ | trunk (70 files):
Merge auto_frames_refactor branch into trunk. Refactors config/auto/frames.pm to improve testability and test coverage. No change in functionality.
23:47
darbelo kid51++
testability++
kid51 darbelo: Thanks!
As promised, I left the C untouched. 23:48
Ryan52 chromatic: ah. thanks.
kid51 But I notice that that 'svn merge' -- perhaps due to an updated version of SVN on my server -- brought in a lot of "Property changes on" lines.
I myself modified only two files. 23:49
darbelo Merges are now tracked in properties, anything that saw alterations (on the branch or on trunk) since the branch point gets it's properties twiddeld at merge time. 23:50
svn:mergeinfo is the culprit
dalek rrot: r41457 | jkeenan++ | branches/auto_frames_refactor:
Branch has been merged into trunk and is no longer needed at HEAD.
purl i already had it that way, dalek. 23:51
diakopter purl: ignore dalek
purl diakopter: huh?
diakopter twss.
darbelo purl: die in a fire 23:52
purl HALP
kid51 darbelo: Thanks. That was probably my first merge since a Subversion upgrade.
darbelo And that code looks a lot better than what I wrote^Wcargo-culted in the first place. 23:54
23:56 patspam joined 23:57 Austin joined