#parrot Parrot 2.2.0 Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Tasks: Fix compact_pool shenanigans | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs
Set by moderator on 16 March 2010.
00:16 Mokurai2 joined 00:18 payload joined
Austin I need a name: If I'm merging hashes, and the leftmost hash with a value takes precedence, that's the default behavior. What is it called if the rightmost value takes precedence? merge(%a, %b, :righmost_value_wins) ? 00:23
darbelo :the_other_way_around 00:26
cotto_work :rtl
darbelo :keep_right
chromatic :sane 00:27
cotto_work merge(%a, :this_one(%b)); 00:28
sorear :assigny
:last_wins
cotto_work merge(%a, %b, :priority('L')); 00:30
Austin Hmm.
darbelo :bikeshed
Austin That's hard to type, but very clear.
I like :priority.
Thanks. 00:31
cotto_work or :precedence. I'm not sure which one would make more.. EBIKESHED
Austin Since I've got places in the Close compiler that use both leftward and rightward merging, and since I just had a hard time figuring out what :use_last(1) meant - my original name for this - I reject your EBIKESHED. But thanks for playing. 00:42
sorear How do I go about debugging an error like this? pastie.org/874717 00:47
00:48 hiroyuk__ joined
Austin I dunno. I'd ask people on #parrot.. 00:48
Infinoid oh, hi #parrot!
Infinoid updates dalek's trac ticket logger 00:49
00:49 dalek joined
Infinoid Someone please create or close a bug. :) 00:51
Whiteknight working on it 00:52
TT #389
Infinoid msg bubaflub Thanks, applied (with some tweaks).
purl Message for bubaflub stored.
00:55 abqar joined
lucian hates uni assignments 01:12
allison: about pynie objects, how do you suggest to proceed? 01:13
allison: the core types that exist now have factory functions 01:15
01:31 hiroyu___ joined 01:44 chromatic joined 01:48 preflex joined 01:54 snarkyboojum joined
Austin ++ # Another passing testcase 01:57
davidfetter yay! 01:58
dalek kudo: 2189449 | jonathan++ | src/Perl6/Grammar.pm:
First cut of user defined operators. Works for infixes just fine, and the meta-op forms then also work, modulo some little tweaks we'll need on the lookup. postfixes don't work, but I'm too tired to work out why tonight.
02:03
Whiteknight chromatic: I ran out of hacking time tonight and got myself lost. No progress and nothing to commit (though I have a patch locally that's slowly growing into something nice, I think). I'll pick it up again tomorrow. Talk to you then 02:05
dalek rrot: r44990 | cotto++ | trunk/src/ops/pmc.ops:
[pmc] restart ADDRESS is brokenly equivalent to goto ADDRESS; use the goto form
02:16
02:30 atrodo joined 02:50 hercynium joined 02:55 chromatic joined
dalek kudo: c52d193 | (David Romano)++ | t/spectest.data:
Merge remote branch 'upstream'
03:00
kudo: d52d50d | (David Romano)++ | (3 files):
Merge remote branch 'upstream'
kudo: 27ff4c7 | (David Romano)++ | src/Perl6/Grammar.pm:
[Grammar] Comment for infix_postfix_meta_operator
kudo: a223dc0 | (David Romano)++ | docs/ROADMAP:
Merge remote branch 'upstream'
kudo: 2abcdcd | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Merge branch 'master' of git@github.com:rakudo/rakudo
cotto bacek_at_work, ping 03:03
03:20 theory joined
dalek rrot: r44991 | japhb++ | trunk/runtime/parrot/library/Config/JSON.pir:
[library] Config::JSON: switch from JSON language (old API, deprecated and removed) to data_json language (new API); change a load_bytecode of a .pir to .pbc
03:21
03:22 snarkyboojum joined 03:31 theory joined 03:35 janus joined 03:44 parthm joined
cotto clock? 03:46
purl cotto: LAX: Wed 8:46pm PDT / CHI: Wed 10:46pm CDT / NYC: Wed 11:46pm EDT / LON: Thu 3:46am GMT / BER: Thu 4:46am CET / IND: Thu 9:16am IST / TOK: Thu 12:46pm JST / SYD: Thu 2:46pm EST /
03:49 brooksbp_ joined 03:52 snarkyboojum_ joined 04:04 petdance joined
petdance ping Coke? 04:05
04:05 _2x2l joined
dalek izkost: 882df17 | sorear++ | (7 files):
Add P5SV as a base class for P5 data
04:32
izkost: ef0cf35 | sorear++ | build/src/pmc/Makefile.in:
Use explicit makefile dependencies for .pmc.dump

feeds files to it one at a time. As a perk, make -j will now perform PMC code generation in parallel.
sorear \\o/ dalek knows my name now 04:36
cotto It's a big day. 04:43
sorear how big 04:44
cotto <----------------------------------------->
that big
(not to scale)
If you have a pmc2c issue, feel free to gripe here next time. I love making fun... helping people with those. 04:49
sounds like you found a good fix though
sorear I have a hunch that it's processing files in keys %ARGS order rather than @ARGV order 04:53
or maybe that's make's fault
anyways, I've modified a group of unrelated PMCs into an inheritance heirarchy, and can't easily get them to build in order
couldn't 04:54
also, I did ask in here 04:55
4 hours ago
I guess everyone else was as stumped as me
cotto oh. That happens sometimes.
warnocking is a harsh mistress 04:58
dalek rrot: r44992 | petdance++ | trunk/config/auto/warnings.pm:
sort the options numerically so I can track changes better
04:59
rrot: r44993 | petdance++ | trunk/config/auto/warnings.pm:
fix some teeny spelling
dukeleto 'ello 05:07
sorear hello.
dukeleto sorear: i see that blizkost is getting more love. good to see 05:08
sorear yes 05:09
I think it's important to have this releasable by (not necessarily in) R*
people will laugh at a "usable release" that can't even access CPAN 05:10
I would, anyway :)
dukeleto sorear: i think when Blizkost can load Data::Dumper, that will be a huge milestone :)
sorear why? Blizkost'd Data::Dumper will still only be able to dump PMCs 05:12
er
dump SVs
if I'm writing in Parrot, I'd much rather have something that can dump PMCs
(now, PONIE Data::Dumper would be nice. But even I'm not crazy enough to resurrect *that*.) 05:13
dukeleto sorear: right now, or last I checked, Data::Dumper does not work because it has XS. right now it can't even dump SVs
sorear hmm, XS is a problem?
dukeleto sorear: yes :) 05:14
sorear my current goals are to get the code a bit more accessible (move as much logic as I can out of C) and support a larger cross section of the Perl data structure API
dukeleto sorear: read the TODO file in Blizkost
sorear: and/or leto.net/dukeleto.pl/2009/09/blizko...tests.html 05:15
sorear oh, that's almost certainly trivial 05:16
somebody forgot to use RTLD_GLOBAL
well
obvious, maybe not easy to fix 05:17
dukeleto sorear: trivial enough that no one has fixed it since September :)
sorear: i would love to hear how you would go about getting Data::Dumper/XS working
sorear: what exactly is RTLD_GLOBAL ? 05:18
sorear it's kinda like the difference between a lexical import and a package import
by default, libraries loaded at runtime do not have their symbols visible except via dlsym 05:19
which is why the XS code can't see the Perl API
dukeleto sorear: interesting 05:20
sorear now, having said this, I can't find where dlopen is even called
dukeleto sorear: yeah, an ack -a for dlopen shows nothing 05:22
sorear the library loading is done with .loadlib 05:29
bacek_at_work cotto, pong
sorear which... does not take a flags argument :(
loadlib opcode doesn't either 05:30
plobsing sorear: If you want a quick hack, using dlsym to get ahold of C's dlopen function might do the trick 05:31
dalek rrot: r44994 | Util++ | trunk/tools/dev/branch_status.pl:
[codingstd] Removed trailing whitespace
05:32
sorear plobsing: Yeah. (though it won't work on Win32...)
cotto bacek_at_work, what needs to happen for proper dynop support in opsc? 05:33
i.e. how much have you done already?
sorear (Does dynpmc work at all on windows? This Makefile seems to pretty deeply assume UNIX so semantics) 05:36
dukeleto: If I may ask, what is the point of using the Perl testsuite here? It's just being passed to eval and not exercising much of the binding layer? 05:41
dukeleto sorear: you are right. but if it exercises even 1% of the binding layer, then I think it still has some use 05:42
sorear: but if it exercises 0%, then I guess it is useless
sorear: it was mostly for moral support :) 05:44
bacek_at_work cotto, no idea. I didn't check dynops code handling in ops2c. 05:45
cotto ok 05:46
bacek_at_work cotto, but I don't expect much work there.
cotto that seems likely 05:47
05:48 parthm left
sorear Is there any good way to generate coverage metrics for a Parrot extension? 05:58
dukeleto sorear: are you wanting to generate coverage for Blizkost?
sorear yes 05:59
eventually.
dukeleto sorear: you can look at the 'cover' target in the Parrot Makefile 06:01
06:01 chromatic joined
dukeleto sorear: it shouldn't be hard to steal for Blizkost 06:01
sorear thanks. 06:02
06:16 fperrad joined
NotFound sorear: maybe someone forgot to link the XS loader. 06:44
dukeleto NotFound: what now? 06:45
purl now is the time for the Kwisatz Haderach to arise and conquer America on a sandworm army
dukeleto purl++
NotFound dukeleto: in order to load XS modules dynamically, the XS loader must be linked statically to the embedder program. 06:46
Here is an example: www.linuxjournal.com/article/2901?page=0,1 06:49
dalek rrot: r44995 | dukeleto++ | trunk/t/dynpmc/rational.t:
[t] Convert t/dynpmc/rational.t to PIR
06:53
sorear NotFound: no. The error makes obvious that that's not what's happening. Also, the XS loader is linked. 06:54
NotFound sorear: And initialized?
sorear yes
anyways, if we hadn't done that, the error would have been something like "Could not resolve method bootstrap via package DynaLoader" 06:56
the actual error we get, from that paste, is telltale of ld.so issues 06:57
give me a chance to add RTLD_GLOBAL
dukeleto stands back and waits for magic to happen 06:58
dalek TT #1517 created by dukeleto++: Comparing Rational PMC to Integer PMC with == blows up 07:05
TT #1517: trac.parrot.org/parrot/ticket/1517
cotto dukeleto, make sure that your dynpmcs are up-to-date. The makefile is nvb about dynpmc and dynop dependencies. 07:06
NotFound BTW blitzkhost doesn't build with a parrot built with c++ 07:08
sorear I'm not suprised at all
dalek rrot: r44996 | dukeleto++ | trunk/t/dynpmc/rational.t:
[t][TT #1517] Commented out test for comparing Rational PMC to Integer PMC via ==, which currently blows up
07:09
rrot: r44997 | cotto++ | trunk (4 files):
[profiling] enable generation of profiles that will always be identical given the same PIR
cotto nice to get some urls on those tickets
Infinoid++
07:11 uniejo joined
sorear so much for "accessing dlopen using the NCI" 07:16
Parrot VM: PANIC: vti is an unknown signature type.
sorear tries to find a compatible supporte done 07:17
plobsing sorear, if you wanted to add support for 'vti', you could use nci_thunk_gen 07:18
sorear where is the supported list?
plobsing src/nci/{core,extra}_thunks.nci 07:19
sorear the PDD isn't quite clear on the format of signatures - what order should I put the letters in?
void dlopen(char *, int)
plobsing that is vti
"${ret}@{args}"
sorear: what I am getting at with nci_thunk_gen, is that you can create a dynext library that, when loaded, adds support for other function signatures. 07:20
sorear oh 07:21
plobsing although creating a dynext library to assist with loading a dynext library seems a little circular
sorear: it's my 80% good enough solution to make NCI suck a little less
sorear heh 07:22
pti is supported
which is the real signature of dlopen
07:22 riffraff joined
sorear I used vti thinking that, since I didn't want the return value, I'd save some hassle... 07:23
... apparently ltrace can't see inside parrot 07:24
dlopen doesn't even work properly if you dynamically link libdl, hmm 07:28
sorear hacks parrot
Loaded Data::Dumper 07:36
Usage: Data::Dumper::Dumpxs(PACKAGE, VAL_ARY_REF, [NAME_ARY_REF]) at /usr/lib/perl/5.10/Data/Dumper.pm line 190.
this is after changing RTLD_LAZY to (RTLD_LAZY|RTLD_GLOBAL) in config/gen/platform/generic/dl.c and reinstalling 07:37
I am stumped on how to do this without hacking Parrot
any manual on UNIX dynamic linkers will tell you that RTLD_GLOBAL is evil and unhygenic and usually indicates a bug 07:40
cotto sleeeep
sorear and... there is a bug, namely a lot of CPAN modules forget to pass -lperl on XS link lines
nobody ever cares because, as long as your main application is linked *at compile or load time* to perl, it's effectively global by misdefault 07:41
so while we could globally change the Parrot load routine, it'd be pretty icky and mostly only needed for Blizkost
dalek rrot: r44998 | cotto++ | trunk/src/main.c:
[opts] make --hash-seed behave less surprisingly and fail when necessary
07:42
sorear normal extensions (that don't have extensions of their own, or do and link them correctly) will never be affected
how about I practice parrot hacking by adding a global argument to .loadlib and thread it all the way down to dlopen? 07:47
sorear pokes the parrot cabal 07:51
07:51 barney joined
Austin not "cabal" 07:51
brahmins
karma allison 07:52
purl allison has karma of 2151
Austin karma chromatic
purl chromatic has karma of 2638
Austin karma austin
purl austin has karma of 303
Austin See?
sorear it's a shame you guys got rid of lambdabot for karma :p
Austin Why? 07:53
(I don't know what lambdabot is...)
sorear lambdabot is the old karmabot according to the parrot wiki... or maybe it was the #perl6 wiki
probably the latter due to network considerations
anyways I wrote a significant part of it back in '07 and probably still have 1000ish karma from that. 07:54
anyways, I'd like to get a yay or nay from somebody on the last idea
Austin Ahh. 07:55
What's this in service of? 07:56
The global arg, I mean
sorear blizkost
purl blizkost is github.com/jnthn/blizkost/tree/master or the last Jonathan's project, an embedding of Perl 5 in Perl 6
Austin The global arg, I mean 07:57
sorear making blizkost work with xs modules
Austin What would it do?
sorear man 2 dlopen,
read the description of RTLD_GLOBAL
man 3 dlopen
Austin Why would I want to do that? 07:58
Would the arg be flags to pass to dlopen?
NotFound sorear: Parrot_load_lib has an initializer parameter that is curently unused.
sorear Austin: no, the arg would just be global, a bool 07:59
Austin What I'm hearing so far is "I cannot, or do not want to, explain what this arg would be for." So I'm thinking "nay" is probably the right vote.
sorear Austin: I've told you several times. It's for Blizkost. 08:00
Implementing it causes Blizkost to work.
Austin Then nay.
We don't need "make one particular thing work" opcodes.
We need "this is useful to potentially a bunch of people." 08:01
sorear this *is*
it's a CPAN to Parrot bridge
tell me that's not useful to a bunch of people
Austin "that's not useful to a bunch of people." 08:02
:)
My point is that passing a boolean to load_lib that is the "I'm hacking blizkost and so do something different" isn't very useful.
Passing something like "here are flags you should apply to your load call" *is* potentially generally useful. (For maybe small values of generally) 08:03
sorear Except for the minor fact that load call flags are different on every platform.
Austin That's something config can solve for you. 08:04
sorear no, because config configs Parrot
Austin And... ?
sorear how are extensions supposed to know what flags to pass? 08:05
Austin You need this before parrot is built?
sorear Parrot knows what flags are available, which is precisely why I want to put flag word building in Parrot
08:05 bacek joined
Austin Where would you be calling from? 08:06
sorear PIR
Austin Okay. So you're running in parrot.
You've got access to the configs.
sorear PIR doesn't have access to <dlfcn.h>
how?
Austin Look at all the constants defined in $_PARROT/runtime/include/*.pasm
sorear thank you 08:07
Austin Add a config step that parrot-pir-izes dlfcn.h
NotFound sorear: www.perlmonks.org/bare/index.pl?node_id=694711
sorear NotFound: yes, I've had it working for half an hour, but Austin is campaigning to keep that fix out of Parrot 08:08
because it "makes one thing work" 08:09
should I have told you to stop looking?
NotFound sorear: that page says nothing about changing parrot, just adding some lines to xs_init
sorear I'd rather keep my current solution, since it's more portable 08:12
that example will break on...
UNIX systems with non-dlopen library interfaces (Tru64)...
UNIX systems with non-.so library extensions (Darwin)... 08:13
systems where Perl is not generally installed under a short name (Debian)...
and there are other possible uses for RTLD_GLOBAL - it's necessary if you want to write an extension with a C API 08:14
NotFound sorear: yes, is an example, not a full working portable solution.
sorear shrug, I don't want to deal with the portability issues of this workaround unless getting it right to begin with is absolutely out of the question 08:19
NotFound sorear: I don't think that adding undesired features to parrot to solve other people's problem is "right" 08:23
08:31 payload joined 08:47 payload joined 08:50 AndyA joined 09:03 bacek joined
Austin Man, I hate it when I get a really good idea and it doesn't work. 09:05
Especially when I should have know it wouldn't...
Austin --
09:07 slavorg joined
dalek rrot: r44999 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
WIP: replace linked-list of cells with array. Build is broken. Badly
09:20
09:34 payload joined 09:36 he_ joined
bacek Yay! 09:48
bacek secured anniversary commit number - 45000 :)
dalek TT #1518 created by Austin_Hastings++: NQP-rx generates wrong twigil for contextual lookups 09:49
TT #1518: trac.parrot.org/parrot/ticket/1518
rrot: r45000 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Don't try to free not allocated positionals.
09:53
rrot: r45001 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Store new size on push_foo
rrot: r45002 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Add NOCELL type to distinguish not-filled cells
rrot: r45003 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Fix off-by-one error in CallContext.push_foo
rrot: r45004 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Reimplement CallContext.unshift_pmc
10:04 smash joined
smash hello everyone 10:04
dalek rrot: r45005 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Reimplement CallContext.unshift_pmc
10:09
rrot: r45006 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Fix mark_positional
10:25
10:35 riffraff joined
dalek kudo: a8d808f | masak++ | docs/ChangeLog:
[docs/ChangeLog] partial draft of the 2010.03 release
10:49
rrot: r45007 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Switch to sys_mem allocations for large amount of params
10:58
11:21 bacek joined
dalek rrot: r45008 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Update num_positional in CallContext.set_foo_keyed_int
11:30
rrot: r45009 | bacek++ | branches/pcc_megrecells/t/pmc/callcontext.t:
Remove outdated tests.
rrot: r45010 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Fix CallContext.clone
11:37 JimmyZ joined
dalek kudo: 5418e06 | masak++ | docs/ChangeLog:
[docs/ChangeLog] a bit more of ChangeLog draft progress
11:52
12:01 whiteknight joined
Austin ++ # MockFS works 12:02
whiteknight nice!
Austin++
I'll fire up the VM now and take a looksee 12:03
Austin You'll have to wait for the commit.
I'm clean-test'ing now
dalek rrot: r45011 | gerd++ | trunk/NEWS:
Add already a template for the news of version 2.3.0
whiteknight that's fine, it will take me a few minutes to get up and running anyway
what is MockFS anyway?
Austin And good morning, Whiteknight. I didn't see you come in.
MockFS is a mock filesystem.
I created a FileSystem class to wrap the various bits you need to do filesystem-y stuff 12:04
12:04 lucian joined
Austin Then I created MockFS so I could build a "pretend" FS and do operations against it in testing. 12:04
whiteknight oh nice
Austin Nicely evading the question of "what's the relative path to ..."
nopaste "Austin" at 68.39.12.202 pasted "Here's a testcase from MockFS" (10 lines) at nopaste.snit.ch/19992 12:05
Austin There's a bunch of features I don't support (umask, permissions, etc.) but the structure is there. For Close, it's mainly going to be "read a file, write a file" 12:07
Hmm...suddenly tests fail in places I haven't touched in a while... 12:09
whiteknight Parrot's IO system is mostly method-based anyway, so any type that supports the requisite methods should be usable for all IO operations
Austin scratches his head...
dalek kudo: d82c83e | moritz++ | t/spectest.data:
we pass S02-literals/subscript.t
Austin whiteknight: The problem is that it's inconsistent.
Here's a quiz: how do you get the contents of a file? 12:10
And how do you get the contents of a directory?
whiteknight Austin: of course it's shit-tacular, but in theory the support is there 12:11
Austin heh
Yeah.
File contents is FileHandle.open; FileHandle.readall. 12:12
Directory contents is ... OS.readdir
So FileSystem smooths a lot of that over. I have to return Handles, sometimes, but that's it. 12:14
whiteknight The OS and File PMCs are a point of particular dislike for me
Austin Heh
Yeah.
whiteknight but then again, so many things are of "particular dislike" for me that none of them are really special
coke_at_work who does the irc logs? moritz? 12:16
12:16 AndyA joined
Austin coke: yeah 12:16
Or, one of his systems, anyway.
coke_at_work msg moritz: there is a small bug on the irc log pages; "next day" doesn't show up when the day is yesterday. 12:17
purl Message for moritz stored.
lucian Austin: i can't find an up to date Close project page
Austin coke: Dalek got modified to append the urls, in case you're wondering about the extra lines in the irc logs 12:18
lucian: True. It's on hiatus while I've been working on Kakapo.
coke_at_work ... nope. not at all. =-)
petdance: pong 12:19
sorear - the build should JFW, if you have regenerated your makefiles. 12:20
Austin Ahh, my first namespace collision
Test::Builder, my old nemesis...we meet again...
coke_at_work sorear: yes, the makefile works with nmake on windows. 12:21
(on parrot, anyway)
sorear: ah. guessing from context you were talking about blizkost. 12:25
12:33 ruoso joined 12:39 payload joined
whiteknight I've been thinking about starting a new project to be another Perl6-like language 12:43
Austin Heh
dalek kudo: 240e2f0 | smashz++ | docs/release_guide.pod:
Testing commit.
12:44
kudo: c63e4b2 | smashz++ | (2 files):
Merge branch 'master' of github.com:rakudo/rakudo
lucian whiteknight: i find that to be a lack of imagination :P
whiteknight It would be AMP, "Absolute Minimal Perl", which would be like NQP syntax but extremely minimal semantics
Austin I was just thinking to myself: Whiteknight doesn't have enough to do.
whiteknight I'm becoming unhappy with parsing and execution speed of NQP
Austin How minimal would the semantics be?
whiteknight absolutely
purl Indubitably.
Austin Hmm...
Only parse the curly braces, make the user do everything else?
whiteknight no named lexical variables and therefore no nested lexical scopes. No autovivification 12:45
basicaly, yes.
lucian Austin: i'd very much like a high level language that maps to parrot's low level types
whiteknight: lisp!
whiteknight but it would be fast as all hell
Austin whiteknight: It's running on parrot. Fast isn't going to be part of the description.
whiteknight Austin: fast proportionally
Austin Heh
whiteknight closer to the raw execution speed of the VM 12:46
Austin lucian: I'd like to write one. I'm getting there. :)
lucian Austin: i'm actually thinking of writing cython-on-parrot
Austin Go for it.
lucian pynie first 12:47
and not enough time for both
although boostrapping pynie with a python-like language would be ideal
whiteknight NQPython 12:48
:)
lucian whiteknight: heh
12:49 allison joined
dalek kudo: 3be6916 | jonathan++ | src/Perl6/Grammar.pm:
Fix thinko, tweak comments. Custom prefixes and postfixes should now work.
12:49
whiteknight Austin: alternatively I would love to add a "minifying" or optimizing stage to the NQP compiler that turned off certain features if they are not needed by the user 12:50
If we don't need lexical scoping at the NQP layer, we can turn that off and make the parser run quicker
Austin Hmm...
whiteknight If we don't need annotations at the NQP layer, we can turn them off too
Austin that's either really ambitious, or totally insance. 12:51
*insane
lucian whiteknight: wouldn't it be better to make a slightly higher level pir?
whiteknight I understand the need for lexical scoping to support things like closures, but if your parser doesn't use closures, why build in support for them?
Austin That would be a slightly higher level parrot.
coke_at_work dukeleto: I have a fix for your bug.
Austin Which needs to happen, except everyone is looking the wrong way.
lucian Austin: no, PASM would remain the same
whiteknight lucian: could be, but if I could borrow an existing parser for my work it would be faster and easier
lucian whiteknight: right. it does seem a bit odd to me that .pir is a superset of pasm 12:52
whiteknight Austin: we have needs for languages at many levels. Kakapo really demonstrates the power of NQP, but if the goal is to write a fast parser, all that power is unnecessary and a performance drain
For thigns like the PLA test suite, I use full NQP and Kakapo, and it's awesome. For something like the Matrixy Parser, I want something much smaller and faster 12:53
because something like 95% of time in the MAtrixy test suite is spent in parsing and compilatin phases, and I use only the most basic NQP features 12:54
coke_at_work lucian: PIR is not a superset of PASM>
12:54 atrodo joined
whiteknight lucian: it isn't a superset anymore. It used to be, but the two have diverged 12:54
lucian cotto_work: oh. then i understood wrong. but it seemed to me that $S0 is the pasm part left over
to me, it would make more sense to be able to say int a = 2 in pir 12:55
and pmc b = new 'bla'
since it doesn't manipulate registers directly anyway
whiteknight lucian: I would love to see a new assembly-level language like PIR but with more simplified syntax 12:56
lucian whiteknight: but at the same abstraction level, i assume 12:57
whiteknight lucian: yes. PIR is really a very lousy language in a lot of ways
something that was faster to parse would be better. Something that exposed more of the capabilities of the underlying bytecode format would be good too 12:58
lucian whiteknight: would it compile to pasm or straight to bytecode?
whiteknight for instance, the ability to specify PMC aggregate literals in code without having to always build them at runtime would be a huge savings, and the PBC files already support it
lucian: ideally, straight to bytecode
lucian whiteknight: so code generators could target PASM and humans could write pir 2.0 12:59
whiteknight exactly
lucian whiteknight: let's write it! :) 13:00
whiteknight: actually, pir 2.0 might make nqp less useful
if not redundant
whiteknight I don't think so. Different tools for different purposes can coexist
13:01 luciabn joined
whiteknight Ideally, I don't think programmers should ever be writing PASM or PIR directly. I don't think in the long run that they should exist 13:01
13:01 lucian joined
whiteknight NQP should output bytecode directly 13:01
lucian whiteknight: does it output pasm now?
whiteknight it outputs PIR, which IMCC compiles into PBC 13:02
lucian oh
whiteknight The only problem we have is the bootstrapping step for "how do we compile NQP"?
Austin Yikes. Now my MockFS is more advanced than my actual FS. :(
whiteknight and what we need there is a stand-alone compiler, the PIR2.0 compiler in this case, that complies PIR2.0 to PBC with on simplicity and speed 13:03
lucian Austin: use a better actual fs? :)
Austin Use a better coder, I think...
lucian whiteknight: right. is the pir 1.0 compiler written in C?
whiteknight A PIR2.0 compiler that outputs faster PBC will make the generated NQP executable faster, which in turn will make parsing faster for all languages that use NQP 13:04
atrodo Whiteknight> So what about compiler authors that don't use NQP or any of the compiler tools?
whiteknight lucian: yes. compilers/imcc is the flex/bison implementation of IMCC
lucian: compilers/pirc is a proposed replacement, also written in flex/bison/C
lucian whiteknight: right, i'll have a look 13:05
whiteknight atrodo: They would be able to use this new PIR2.0 compiler to bootstrap, and we can provide a library to generate PBC on the fly from PIR ode
code
lucian still hates VDM-SL 13:06
dalek kudo: d537cea | jonathan++ | docs/ChangeLog:
Fill out ChangeLog - should cover most things.
13:07
atrodo Whiteknight> I'm just wondering about my project. I was thinking it would just output pir and pass it on to the pir compiler, but it sounds like that may not be the right thing to do 13:10
lucian atrodo: is it harder for you to output pasm? 13:11
allison whiteknight: even better is to not call it PIR2, but to call it something completely different
lucian allison: heh, i'm not good at naming things
allison (no baggage) 13:12
lucian allison: people not involved in parrot do however get the impression that there's a new language every month (i.e. lorito)
allison lucian: ah, pick a bird name out of a hat
lucian allison: peacock?
purl peacock is objecting to the "fractional" and "dotted" terms. wants "decimal" and "dotted-decimal"
lucian purl: thou shalt not speak unless spoken to 13:13
purl lucian: excuse me?
atrodo Not really, i can do either. My impressions were that PIR was the prefered way to produce bytecode and PASM was a lowerlevel tool
allison lucian: lorito's been talked about for a year, but doesn't exist yet, so it's kind of new and not new
lucian atrodo: i assume you may get better performance by targetting pasm
allison lucian: peacock is pretty good
lucian: raven, ibis 13:14
lucian: kite
lucian allison: kiwi
Austin Call it "RIP"
atrodo lucian> maybe
Austin Nobody'll know.
allison lucian: yah, kiwi is great
lucian allison: dodo :)
Austin decss
atrodo Then again, I've never really digged into it
allison lucian: heh :)
Austin You're dl count will be incredible.
*your 13:15
Stupid possessives.
lucian i can see the headlines: "PIR went the way of the dodo"
whiteknight what we call it is inconsequential, but you're right that PIR2.0 should not be the final name
it's just a working name
lucian Austin: i'm not a native speaker, it's probably why i never get confused by those 13:16
atrodo Puffbird? Toucan? Cockatoo? Flamingo? Oh, interesting one: Antthrush. (atrodo calms down now)
lucian pynie.antthrush hmm 13:17
whiteknight needs to find his lex/yacc book again if he's going to be writing a new parser
lucian allison: i don't entirely understand the need for lorito 13:18
Austin What's the better name: Parrot::Unix::STAT_IFMT or Parrot::Unix::Stat::S_IFMT ?
dalek kudo: 6dd31df | jonathan++ | docs/ChangeLog:
Re-instate masak++ ChangeLog entries that I somehow managed to lose.
lucian allison: is it so that the jit can optimize across bytecodes?
allison lucian: it's to make the JIT easier to write 13:19
lucian allison: to make it retargetable?
allison lucian: you can write JIT templates for a small number of ops in Lorito, and generate the rest from those templates
lucian: parrot has 1200-some opcodes, and writing JIT templates for all of them individually is daunting 13:20
13:20 fperrad joined
lucian allison: oh. that's a lot of opcodes 13:20
allison lucian: now, they're all written in heavily macroized C, so there's a chance that something like LLVM's C parser could help with generating the JIT templates automatically
lucian: aye, the sheer number of opcodes is the challenge of JITing Parrot, Lorito is intended to ease that pain 13:21
atrodo allison> so lorito would replace how the ops are written now? 13:22
lucian allison: a simple patching jit shouldn't be very hard to write i assume
allison atrodo: yes, most ops would be written in a language like PIR
atrodo: (we've been calling that language "Lorito") 13:23
atrodo: a small subset of ops would still be written in something low-level like C
atrodo allison> And those would be the basic, "atomic" ops? 13:24
dalek kudo: 855ecb5 | (Solomon Foster)++ | docs/ChangeLog:
Tweak changelog on metaops.
allison lucian: depends on your definition of "very hard" I suppose
allison atrodo: aye
atrodo interesting 13:25
allison lucian: you asked a question about objects yesterday?
lucian allison: uh, yes. don't have the backlog here, i'm in the uni lab 13:26
allison [20:13]\t<lucian>\t[#parrot] allison: about pynie objects, how do you suggest to proceed?
[20:15]\t<lucian>\t[#parrot] allison: the core types that exist now have factory functions
lucian wants something like ctrlproxy, but entirely transparent
allison: oh, right. well right now pynie's types are parrot PMCs 13:27
allison (twas after I dropped off IRC, but Chatzilla kept it for me)
lucian: aye, and I'd start there for objects too
lucian allison: however, all python objects inherit objcet
allison lucian: have class declarations create a Parrot 'Class' object
lucian allison: there's a problem with that, from what i've been told you can't subclass 'Class' 13:28
allison lucian: and have instantiations of those classes instantiate from it
lucian: not from PIR you can't, but you can subclass Class from C
lucian: and you don't even need to subclass it to get started
lucian: just use it straight 13:29
lucian allison: i need it for metaclasses
allison: at least in py3, a lot of things are implemented in terms of metaclasses
allison lucian: the semantics won't be quite right, but it'll be a step forward
lucian allison: hmm, true
allison lucian: Parrot 'Class'es are metaclasses
lucian allison: why isn't 'Class' an 'Object' as well?
allison lucian: well, Class is a PMC, which is an object in Parrot 13:30
lucian allison: yes, but it's not an 'Object'
allison: it's gonna make python metaclasses hard
allison lucian: the PMC named 'Object' is just one type of object
lucian: I realize the naming is confusing
lucian: think PMC == object
lucian allison: yes, PMCs should never be called objects
allison lucian: no, PMCs *are* objects 13:31
lucian allison: i understand the difference between PMCs and 'Object's
allison: PMCs are low level objects, 'Object' are higher level objects
allison lucian: really, we should have called PMCs "Object" and called the Object PMC something like "Instance" 13:32
lucian: the only difference between them is what language they're implemented in
lucian allison: 'InteropObject'
allison lucian: semantically, they're the same thing
lucian allison: right
allison: so we need python's object implemented in terms of 'Object' 13:33
allison lucian: the main thing is, we don't need to get Python's inheritance hierarchy right at the start 13:34
lucian: that will happen automatically if we implement Python classes in terms of Parrot's 'Class'
lucian: that is, the instance of a Class is an Object
Austin Whiteknight: ping
allison lucian: but it happens behind the scenes of calling 'new' on an existing Class object 13:35
dalek kudo: 4c251d4 | masak++ | docs/ChangeLog:
[docs/ChangeLog] fixed typo, removed dup
lucian allison: right. the object boostrapping bit is less clear to me than it should be 13:36
allison: writing some code might clear that up
allison lucian: that's a good approach 13:37
lucian: I think it's the levels of meta that make it trickier, implementing classes as objects on top of an object oriented VM 13:38
lucian allison: for some reason jython's meta-stuff didn't bother me at all 13:39
allison lucian: do they have a pretty clear separation between Java-level objects and Python-level objects? 13:40
lucian: as in, Java-level objects aren't full first-class objects within Python syntax?
lucian allison: not really, you can use java objects freely in python 13:41
allison: but they're handled specially i think
allison: since all python objects (including classes) are instances of java classes, plain java objects are outside the inheritance tree
allison lucian: makes sense in the Java context 13:42
lucian allison: this is somewhat what i was thinking for pynie 13:43
allison lucian: my perception of Python is that PyObject == PMC
lucian: that is, it's not "Object" at all 13:44
lucian allison: then how is interop achieved?
allison lucian: oh, I'm not saying reimplement PMCs
lucian: I'm saying, instead of trying to re-derive the Python hierarchy in the same way, adopt PMC as the base Pynie object type 13:45
lucian allison: i thought interop between OO languages was based on 'Object' 13:46
allison: i know what you mean, yes
allison: but i disagree with that. whether pynie's object is derived from 'Object' or a plain PMC, it has special behaviour 13:47
allison lucian: no, interop is base on PMC
purl okay, allison.
allison purl: forget interop
purl allison: I forgot interop
lucian allison: that's too low level for interop between ruby or python for example
allison lucian: indeed it does 13:48
lucian s/or/and/
allison lucian: PMCs are all the basic behaviors of all types
lucian: scalar access, keyed access, attribute access, method invocation, instantiation of an object, etc
coke_at_work (better performance by targeting pasm) I believe the current wisdom is "do not target pasm". 13:49
13:49 Mokurai1 joined
lucian allison: but that's too general for pynie's object to be a plain pmc 13:49
allison lucian: "indeed it does" have special behavior
13:50 fperrad joined
lucian allison: that came out wrong 13:50
coke_at_work is very happy to see python discussions going on (esp. since he hasn't spent any time on tcl in weeks)
lucian allison: i meant to say every type should inherit pynie's object
allison lucian: yes
13:50 bubaflub joined
allison lucian: and PyObject has behavior 13:50
13:50 patspam joined
coke_at_work seen dukeleto 13:50
purl dukeleto was last seen on #parrot 6 hours, 52 minutes and 24 seconds ago, saying: stands back and waits for magic to happen
allison lucian: but PyObject is not Parrot's Object
coke_at_work if someone wants to write a test, TT #1517 should be closable with that patch.
lucian allison: yes. so pynie's str would inherit PyObject and the 'string' PMC 13:51
allison lucian: it's not Parrot's Class either
lucian: aye
lucian: IIRC, Lua is a great example here
lucian: (the Lua Parrot implementation)
lucian allison: if we go for raw PMCs, it won't have anything to do with what's described in PDD 15
allison: which one is active? 13:52
allison: i'm curious what you mean, lua has no objects
allison lucian: but it has data types
lucian: (which are objects in Parrot)
lucian allison: so lua's string inherits the 'string' PMC 13:54
whiteknight Austin: pong
allison lucian: github.com/fperrad/lua
Austin Too late. I was wondering if you did anything to the bit ops
allison lucian: (I'm digging around myself, since I haven't looked at the language in a year or so) 13:56
lucian allison: github.com/fperrad/lua/blob/master/...string.pir 13:57
allison lucian: okay, IDRC 13:59
lucian moving to another machine 14:00
whiteknight Austin: any kakapo commits for me to look at?
I'm jonesing
Austin heh
coke_at_work kakapo 14:01
Austin Gimme a little bit.
coke_at_work kakapo?
purl kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. or See code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or gitorious.org/kakapo for source code.
allison lucian: ah-ha! github.com/fperrad/lua/blob/master/...string.pmc
14:02 payload joined 14:03 lucian joined
allison (repeating) lucian: ah-ha! github.com/fperrad/lua/blob/master/...string.pmc 14:04
lucian: I posted right after you dropped off 14:05
lucian: so, LuaString inherits from LuaAny
lucian: LuaAny is like PyObject
lucian: LuaString "provides" string, but doesn't inherit from Parrot's String PMC 14:07
Austin stupid namespaces...
14:12 lucian joined 14:15 lucian joined
Austin ++ # Another passing testcase. 14:15
allison lucian: ping 14:16
lucian allison: pong. moved to a new machine 14:17
allison lucian: just checking, I suspect some intermediate bits I posted dropped between the timeouts 14:18
lucian allison: quite possible
lucian really wants that transparent ctrlproxy
allison lucian: okay, try github.com/fperrad/lua/blob/master/...string.pmc 14:19
coke_at_work peruses a blog entry on NativeClient 14:21
lucian allison: oh, so it actually has a LuaAny type 14:22
14:22 clinton joined
lucian allison: wth is .pmc btw? 14:22
allison: looks like C, but it isn't 14:23
coke_at_work pmc2c takes .pmc and generates .c
does some rewriting/substitutions.
lucian coke_at_work: right, thanks 14:24
allison: is it advisable to have a language implementation depend on C bits? 14:25
allison lucian: .pmc is a PMC definition 14:28
lucian: yes, PMC and opcode extensions are one of the standard language implementation tools
lucian: this is the "canonical" way of adding core types to a language 14:29
coke_at_work I am hoping for tcl to eventually eliminate the need for PMCs and do it all via internal Object types. 14:30
dalek rrot: r45012 | gerd++ | trunk (2 files):
Add the generation of a bzip2 compressed tarball
coke_at_work (but that's more to reduce the complexity of the code so it's all in one language) 14:31
allison coke: makes sense 14:35
allison afk
dalek kudo: b4ed7c1 | masak++ | docs/ChangeLog:
[docs/ChangeLog] added/changed a few quotation marks
14:44
kudo: 0cf5765 | smashz++ | docs/announce/2010.03:
[RELEASE] Add annouce file.
14:50
14:55 Coke joined 14:56 Coke joined
dalek kudo: 14aeee8 | jonathan++ | docs/announce/2010.03:
Fix next release date.
14:56
kudo: a7ff5e8 | jonathan++ | docs/announce/2010.03:
Oops, last patch was wrong.
parrot: fa1081e | (David Fetter)++ | Makefile:
Removed awful hack. 9.0's pg_regress now uses the new CREATE OR
parrot: 5fa59cf | dukeleto++ | (5 files):
Get rid of Configure.nqp and friends
14:56 sri joined 14:57 Coke joined
lucian REALLY hates VDM 14:59
dalek rrot: r45013 | Util++ | trunk/docs/pdds/pdd30_install.pod:
[codingstd] Wrapped PDD30 to fit line length limit
15:03
kudo: f098309 | jonathan++ | docs/announce/2010.03:
Tweaks to the specifics in the release announcement.
15:08
kudo: f343af8 | masak++ | docs/announce/2010.03:
[announce] description of the hackathon
15:13
kudo: 6c84d73 | masak++ | docs/announce/2010.03:
[announce] removed redundant [1] footnote
NotFound whiteknight: no lexical variables, no lexical scopes.... that is winxed ;) 15:17
whiteknight NotFound: yes, I like winxed very much 15:18
15:18 Coke joined
whiteknight the only problem I have with it is that it is C++, and so can't really be incorporated into the parrot repo 15:19
Andy Coke, some time I have questions about config stuff
not right this minute, but later today maybe
dalek kudo: 807c57a | jonathan++ | docs/announce/2010.03:
Also mention the nice work on the series operator in the major items.
Coke Andy: sure. if you want to do email if I'm not here, that works, too.
Andy Email? that's crazy!
NotFound whiteknight: winxed stage2 compiled is pure pir. 15:20
particle wonders how coke feels about being a parrot config expert
whiteknight NotFound: do any benchmarking of the stage2 compiler against the stage1? 15:21
Coke particle: I was going to post a disclaimer about not being a PCE, but I guess I am now. ah well. 15:22
NotFound whiteknight: stage2 and stage1 are the same, the difference is that stage1 is built with stage0 and stage2 is stage1 compiled with himself. The speed difference is between stage0 and the others.
Compile time difference is huge, but the run speed of the generated the code is approximately the same. 15:24
dalek kudo: e4e058f | jonathan++ | docs/announce/2010.03:
Tweak series statement in announce thanks to colomon++.
15:25
15:26 kjeldahl joined
NotFound time make winxedst1.pbc - real 0m0.426s | time make winxedst2.pbc - real 0m11.904s 15:28
15:33 AndyA joined
NotFound Coke: you are not a PCE... you are *the* PCE. 15:33
15:34 Psyche^ joined
whiteknight in NQP, is it not possible to have a pointy block that takes no arguments? 15:35
Austin No. 15:36
You want an unpointy block.
{ foo; }
my &sub := { foo; };
lucian NotFound: winxed is really starting to look like a nqp alternative 15:47
15:47 payload joined
NotFound lucian: thanks 15:51
BTW, I've seen some people wondering how to pronounce "Winxed", and I wonder, how do you pronounce "nqp"? 15:55
Coke NotFound: en queue pee
like SQL. =-)
Coke ducks.
15:55 davidfetter joined
Austin This @#$##$%@*)# thing! 15:56
NotFound Coke: You'll laugh if you hear several ways people in Spain pronounce SQL X-)
Or SCSI 15:57
Austin Why? There's a bunch of people who pronounce "SQL" as "sequel"
NotFound Austin: the favourite sport in Spain is not football as many believe, is to make laugh of other spanianrd's English. 15:58
Austin Heh
NotFound (note: football --> the sport called 'soccer' in the USA) ;) 16:01
16:02 payload1 joined
lucian NotFound: the americans are wrong about that one, you shouldn't explain :) 16:02
NotFound lucian: many people better than me already tried :D 16:04
Austin What, not explaining?
NotFound Both ways.
purl both ways is mendel's goal
Austin Ojala si pueda convencer los Ingleses no explicame los detalles de criquet... 16:08
Yikes. 16:09
NotFound Is worse than baseball?
Austin Contextuals - more difficult than they need to be.
NotFound: I don't know - I've managed to avoid learning too much about baseball.
I think they're in the same family, so the tedium is comparable...
NotFound I also do, but is a lot easier in Spain. 16:10
Andy is installing the new icc 16:11
cotto_work Austin, did you have some code to create a capture in nqp or pir?
Austin cotto_work: I put it on the wiki, in the HLL page
cotto_work thanks 16:12
Austin trac.parrot.org/parrot/wiki/Creatin...h%20NQP-rx
cotto_work That's a lot less non-hairy than I was hoping for. 16:13
Austin Heh.
It's a demonstration, so there's some extra crap you don't need. You just need the &sub:= and the newclosure.
dukeleto hmm, seems like Parrot's test more does not support plan(0) 16:20
Test::More, even
Coke ... if you're doing plan(0), that seems horribly wrong. =-) 16:23
doesn't that imply "no_plan" in TAP?
dukeleto Coke: well, plan(0) is part of the TAP spec
Coke: no
Coke: no_plan means "i don't know how many tests I will run"
Austin I think it's "count them and output the plan at the end"
dukeleto Austin: nope 16:24
Austin Really?
Oh, well.
Goes to show what I know.
dukeleto Coke: i have to check for the existence of an external library. if it is not found, I don't want to run any tests
Coke if I try to plan 0 in p5, it dies.
dukeleto Coke: in Perl 5, that is plan => 0
Coke dukeleto: that's "skip_all".
dukeleto 1..0 is a valid plan in the TAP world
dalek rrot: r45014 | dukeleto++ | trunk/t/dynpmc/rational.t:
[t] Fix the Rational PMC tests on Parrots without GMP
16:25
dukeleto Coke: I am talking about from PIR
Coke yes. I'm trying to figure out what you think that should do based on p5. 16:26
dukeleto Coke: oh, i see skip_all in Test/More.pir now
Coke: i have tests for 1..0 in Tapir. It succeeds if and only if exactly 0 tests are run
Coke: seems like no Parrot tests uses skip_all. it is not in test_more.pir, but it is in Test/Builder.pir 16:27
Coke dukeleto: I wouldn't be surprised if we had no files that used it. should probably have one that tests it, though. 16:28
dukeleto Coke: i feel that plan(0) is more correct. We are not skipping any tests. We are running exactly 0 tests.
Coke: it is not exported by test_more.pir . lets see if I can fix that
Coke dukeleto: you are skipping the tests you would have run if the library was present.
... is how I would justify using it. =-) 16:29
dukeleto Coke: :)
Austin Stupid sort routine... 16:31
NotFound The only problem is that skipping all is a lot noisier.
lucian i'm curious about parrot's threading story 16:34
more specifically, how fine-grained the interpreter locks are 16:36
cotto_work It's a sad story. It needs someone to write a happy ending. 16:37
Austin sings, "Well, I - ain't never done nothing to .. no body.."
lucian cotto_work: so there's a GIL right now?
dukeleto Coke: i fail at trying to export skip_all from Test::Builder into Test::More . I am gonna make a ticket 16:38
Austin Well, that was not the low-impact change I was hoping it would be... 16:39
dukeleto Parot in the german press: www.heise.de/open/meldung/Version-2...57918.html
Austin msg whiteknight Here comes a commit... 16:40
purl Message for whiteknight stored.
whiteknight w00t
cotto_work I'm glad they were careful enough to get the version number right in spite of my announcement. 16:41
whiteknight I propose a new heuristic: If the recipient of a message acknowledges it within 5 seconds of the message having been left, purl should not private message that person to say they got a message
cotto_work msg whitenight good idea 16:42
purl Sorry, I've never seen whitenight before.
whiteknight and before anybody chimes in to ask a bunch of weird or unlikely "what if" scenarios, I would like to preemptively reply with a "find a way to make it work" 16:43
dalek kapo: 6ff2916 | austin++ | (34 files):
Got MockFS, FileSystem at least partially working.

Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
16:44
cotto_work That there's a big commit. 16:46
dalek tracwiki: v4 | cotto++ | TestingProfiling 16:48
tracwiki: trac.parrot.org/parrot/wiki/Testing...ction=diff
TT #1519 created by dukeleto++: plan(0) is not supported by Test::More/Test::Builder 16:56
TT #1519: trac.parrot.org/parrot/ticket/1519
whiteknight Austin++: All tests pass 16:57
purl Time to write more tests!
dalek rrot: r45015 | Util++ | trunk/t/codingstd/pdd_format.t:
[t] pdd_format.t - Changed to check the mandatory sections more thoroughly.

For example: when "Abstract" is required, "Abstracts" should not fulfill the requirement, but the old code passed. The new code correctly fails.
17:03 rblackwe_ joined
cotto_work question: How many of the runcores are worth preserving in the transition to an nqp-based ops compiler? 17:11
darbelo As many as you want to? 17:12
whiteknight cotto_work: as far as I am concerned, fast core and switch core are the only "normal" ones worth preserving, and the switch core might not be useful
gc debug core, debugger core, and profiling core are good too 17:13
tracing core
darbelo You need to consider compilers that can't build the cgoto core too.
That's why switch is there IIRC. 17:14
dalek kudo: 7a70cae | smashz++ | t/spectest.data:
[RELEASE] Comment itermitent test file.
17:17
Coke dukeleto: I am unsure that I would refer to that as 'the german press'. =-) 17:40
cotto_work It's German. He's at least half right.
particle cotto_work: is it difficult to emit those various runcores? they aren't complex 17:44
cotto_work I don't think so. I'm just lazy. 17:45
also, it'll most likely slow down the build given how slow nqp-rx is at the moment
particle false laziness. 17:46
i just got a ~25% build speedup on win-msvc, i don't mind a little regression :)
cotto_work nice. How? 17:47
purl it has been said that nice. How is it so far?
particle removing perl wrappers from around every cl call
coke++
cotto_work What about getting Rakudo to build against 2.2.0 with msvc? Do you have a patch that can be made into a 2.2.1 release? 17:48
particle turns out we don't need it, jnthn++ fixed that a week ago
cotto_work jnthn++
particle what i do need, is 670MB RAM to build rakudo's src/gen/core.pir
17:48 riffraff joined
particle that's disgusting. 17:49
darbelo And wrong. 17:55
17:55 lucian joined
darbelo Are we leaking memory again? 17:55
particle i imagine so, can you see a need to use 670MB during a compile? 17:57
tewk cotto_work, I would really like a tool that lets me build a runcore with some opcodes inlined like the switch core does. Futures and security runloops could use that. 18:01
Coke particle: it's several THOUSAND lines of nqp.
particle so, that's what, 100k per line?
Coke =-) 18:02
I'm just saying, it doesn't surprise me. that one file is pushing the limits of the toolchain atm.
particle yeah, i know, it doesn't surprise me either. but it doesn't bode well for hll users 18:03
dalek rrot: r45016 | Util++ | trunk/t/codingstd/pdd_format.t:
[t] pdd_format.t - Changed error message to report relative path, for editing
rrot: r45017 | Util++ | trunk/t/codingstd/pdd_format.t:
[t] pdd_format.t - Include pdd_template.pod when scanning
Coke nope. definitely needs fixing.
Coke my memory usage is > 1G on that file. 18:05
> 1500M ... 18:07
> 1600M ... 18:08
dalek kudo: 1e9aa08 | moritz++ | t/spectest.data:
we pass S13-overloading/operators.t, thanks to jnthn++
18:09
Coke whoops. that was 1600M on a parrot-nqp invocation, not the parrot invocation that builds core.pir 18:11
(though that too is now up past 1600M) 18:12
cotto_work ow 18:13
dalek rrot: r45018 | Util++ | trunk/t/codingstd/pdd_format.t:
[t] pdd_format.t - Removed duplicate info from error mesage
18:19
tracwiki: v10 | coke++ | tasksCoke 18:28
tracwiki: trac.parrot.org/parrot/wiki/tasksCo...ction=diff
japhb OK, >1600 MB to compile one NQP file is just crazy. Sounds like we need chromatic++'s Mad Leak Huntin' Skillz (tm) 18:37
18:52 eric_j joined
whiteknight is it that same leak from the string compactor? 18:56
18:58 bacek joined
bacek ~~ 18:58
19:00 estrabd_ joined
particle whiteknight: possibly. if so, that's one mighty leak. 19:06
19:10 estrabd joined 19:14 cotto joined
Coke TPF accepted into GSOC. 19:14
cotto_work now let's get us some students 19:15
lucian cotto_work: you rang? :)
cotto_work: well, pynie would fall under the PSF 19:16
darbelo starts thinking of a good proposal. 19:18
particle does a gsoc happy dance 19:20
whiteknight GSOC is the best
cotto_work I'm just in it for the shirt. 19:21
darbelo NFG strings sound like the most benefit to parrot, but RTEMS is seriously tempting the embeded developer in me...
whiteknight cotto_work: definitely! The shirts are the best! 19:22
Coke ... the embedded developer in me. That's TERRIBLE. 19:23
19:25 riffraff joined
darbelo English is my fourth language. 19:25
whiteknight Hell, english is barely my first
Andy hey Coke.
Coke Hio. 19:26
davidfetter darbelo, what are 1,2 & 3?
english is my 2nd language
darbelo Incredibly Rude Spanish, Very Rude Spanish and Moderately Rude Spanish.
Andy can we talk about config?
Coke hai.
Andy oops, gimme a min. 19:27
Coke NO NOW!
Andy OK
davidfetter would it be incredibly rude of me to point out the influence of portuguese on es_AR?
Coke (ok, I'll get coffee. =-)
Andy Whatever you say master.
Coke your journey to the dark side is now complete. 19:28
darbelo davidfetter: My portuguese repertoire is not fit for a publicly logged channel ;)
cotto_work Wait. We're on the dark side? 19:29
darbelo cotto_work: It varies acording to timezone ;)
cotto_work or does that only happen when you do what Coke says?
Util We must be; we have cookies!
(PMCs)
Andy Impressive?
Is it most impressive?
davidfetter darbelo, well, i learned much of my pt_BR from /Tropa de Elite/, an œvre not known for its delicacy 19:30
darbelo But a damm good movie.
davidfetter hrm. the more i think about it, the more i see it as a tragedy 19:31
i mean, from the officer's point of view, he has not actually gathered any evidence, only gone down the road of beating confessions out of suspects 19:32
and at the end, he executes someone extra-judicially. i can only think that he'll be doing so for sport within months
and not surprisingly, this is exactly how the actual militarized "police" forces behave 19:33
19:36 theory joined
Andy Coke: Is there a crash course in how Configure.pl works? 19:44
also, an aside, my build doesn't link under icc 11.1
but 10.1 isok
19:47 joeri joined
Andy hmm, how do I know if my box is 32 or 64 bit? 19:47
tewk file /usr/bin/bash 19:48
uname -a
purl Infobot 0.43.3 alpha (oznoid+#perl)
Andy oooh, thanks
19:49 iblechbot joined
Andy ICC wants to know if I want to download for IA-32 or Intel 64 19:50
but bash says /bin/bash: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
so I'd think I want the 64 right?
even though it's AMD? 19:51
19:51 bacek_ joined
bacek_ o hai 19:51
seen chromatic
purl chromatic was last seen on #parrot 19 hours, 23 minutes and 22 seconds ago, saying: :sane
tewk Andy, yes
bacek_ msg chromatic pcc_megrecells is faster than trunk.
purl Message for chromatic stored.
Andy that's all hardware stuff
cotto_work Andy, apparently Intel64 means x86_64 19:52
so yes
not to be confused with IA-64, which is Itanic
Andy bah, my compile fails with the 64, too 19:55
cotto_work bacek++
merge that sucker
It'll be nice to get a refactor that actually speeds things up a bit. 19:56
dalek rrot: r45019 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Speed-up CallContext.get_foo_keyed_int
19:58
rrot: r45020 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
More CallContext push_foo and get_foo_keyed_int optimizations.
rrot: r45021 | bacek++ | branches/pcc_megrecells/src/pmc/callcontext.pmc:
Fix copy-paste error.
bacek_ cotto_work, heh. Not pcc_hackatron branch by it self...
cotto_work right, but you can merge into the pcc_hackathon branch, then merge the hackathon branch into trunk 20:00
darbelo mergefest! 20:01
Coke (crash course) not that I am aware of.
but, in a nutshell:
the inputs are: command line args and perl5's config. a list of modules (all under config/) are run (in an order defined somewhere under lib/). at each step, parrot's config data is saved in an intermediate object. each step can pretty much peek or poke at whatever bits of the config it wants. at the end, the config information is rendered out in PASM & Perl. several of the steps also generate files, including the makefiles. 20:03
Andy Are there any config::* modules that need to be removed? 20:05
Coke very likely. I purged a few in the past six months. 20:07
Andy config/auto/warnings.pm is the one with the new warnings stuff you set up
Coke yes.
Andy but there's also icc going on in config/init/hints/linux.pm
Coke I thought some of that had been moved over; more should be, yes. 20:08
Andy ok
Coke I'd like to keep all the warnings in one file.
Andy not sure the difference between the two files
darbelo I only moved the warnings. The ccflags I left alone.
Andy ok 20:09
darbelo: Have we met? I don't recognize your nick or your name.
Coke it might make sense to move the warnings /setup/ into compiler-specific pm files, and have warnings.pm just do the probing.
Andy so warnings.pm IS probing?
Coke but linux.pm is the wrong place, either way.
Andy: absolutely.
purl Indubitably.
Coke it takes the list, invokes the compiler to figure out what's valid, and discards any that don't build cleanly. 20:10
Andy oh oh I see it.
darbelo Andy: I don't think I've met anyone on this channel ;)
Coke darbelo: Hi, I'm Coke.
Coke ducsk.
... ducks, even.
Andy So we can add stuff to warnings.pm with impunity and not worry about versions.
darbelo But I have met ducks in my time...
Andy: Yes. In theory ;) 20:11
Coke Andy: right.
otherwise we'd need to track when each compiler added each warning.
Andy yes, well aware. :-) 20:12
Coke if you run config with --verbose-step=auto:warnings (I think that's right), you'll see a metric F-ton of output.
darbelo s/:/::/ ?
Coke prolly.
dalek rrot: r45022 | bacek++ | branches/pcc_hackathon_6Mar10/src/pmc/sub.pmc:
Remove some hairy code in Sub.invoke which tryed to poke into bytecode.
20:14
rrot: r45023 | bacek++ | branches/pcc_hackathon_6Mar10 (2 files):
Merge branch 'pcc_mergecells_local' into pcc_returns
cotto_work what are you using to test speed? 20:18
whiteknight incoming 20:22
purl duck!
Andy Coke: It looks like it's not even trying to do the parm testing.
O
Rather, it DOES do the warning flag testing, but they never get used.
dalek rrot-linear-algebra: cc02185 | Whiteknight++ | t/ (6 files):
Rename Testcase.nqp to testlib/matrixtest.nqp. Update test files with new names of stuff.
rrot-linear-algebra: c2e9cdb | Whiteknight++ | src/pmc/complexmatrix2d.pmc:
add methods initialize_from_array and initialize_from_args to complexmatrix2d. Also add set_pmc_keyed_int and get_pmc_keyed_int vtables to it
20:23
rrot-linear-algebra: a3932b2 | Whiteknight++ | t/ (2 files):
many fixes for complexmatrix2d. Add String support set_pmc_keyed. Add tests for set_pmc_keyed with Float, Integer, and String arguments.
rrot-linear-algebra: 14fcb40 | Whiteknight++ | t/testlib/matrixtest.nqp:
add tests to verifiy autoresizing behavior, and also add a test for linear indexing
rrot-linear-algebra: 3f9568d | Whiteknight++ | (5 files):
several changes to pmcmatrix2d. Fix resize_matrix to not break things on resize. add initialize_from_array and initialize_from_args methods. Add transpose and mem_transpose methods and add incomplete support throughout for lazy transposing. Fix a bug in is_equal. add iterate_function_inplace and iterate_function_external methods. Fix some tests. Only one test fails now due to incomplete transpose support.
whiteknight ...and on that note, I'm out. Later 20:24
Coke Andy: hurm. I know it's working with gcc.
Andy stil poking around 20:25
Coke when you're done with config, config_lib.pasm contain a ccwarn that has your warnings?
*does
Andy If I figure why -Wdeclaration-after-statement is still getting through, I'll have it fixed, I assume.
nope
Coke does ccwarn have anything?
Andy no 20:26
Coke can you run it with the verbose output and nopaste it?
dukeleto looks like we are in Google Summer of Code this year
Andy to Configure?
paste? 20:28
purl hmmm... paste is (see: nopaste) or like glue but a little safer to sniff. or nopaste.snit.ch:8001/ or scsys.co.uk:8001/ anywhere shadowpaste is or mmm, sticky paste or You there! Eating the paste. or <see> 2 girls, 1 paste or App::Nopaste or toxic for bots and humans
nopaste "Andy" at 12.47.12.130 pasted "my config run" (287 lines) at nopaste.snit.ch/19994 20:29
Andy hahahha, the -Wdeclaration-after-statement is making it think that EVERY attempted flag fails 20:30
because that one makes it fail.
dalek rrot: r45024 | petdance++ | trunk/config/auto/warnings.pm:
sorted the warnings, and added a link to docs
Coke urk? 20:31
rrot: r45025 | petdance++ | trunk/config/auto/warnings.pm:
Added more options we want
nopaste "cotto" at 131.107.0.112 pasted "frequency of op usage during build and make test" (843 lines) at nopaste.snit.ch/19995
Coke if that one properly failed, it should get dropped, and then proceed to the next one.
Andy but that one never got tested
-Wdeclaration-after-statement is never tested
Coke oh, did it just get inserted in linux.pm?
Andy perhaps
Coke that might do it. 20:32
Andy but it doesn't exist in linux.pm
ack -w -- Wdeclaration-after-statement
Coke wonders if the datastructure in warnings.pm is bleeding gcc entries into icc. 20:33
Andy yeah smells like it
Even if you delete that line from linux.pm, it STILL shows up as a compiler option 20:34
Coke that's only in one line in warnings.pm, and that looks kosher to me.
can you add Dumper of $self->{'warnings'}{$compiler} at line 280 or so? 20:37
Andy in? 20:38
purl IN EXCELSIS DEO
Andy in warnings.pm?
Coke ya. though I suspect it's not there, since it's present in the args before you get that far.
ah. it's probably in my $ccflags = $conf->data->get('ccflags'); 20:39
Andy yup not there
AHA
THAT would do it.
from perl -V
cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
Coke GAH.
we shouldn't be pulling in perl's cc flags, should we?
Andy yeah, you can't assume the same ccflags
YAY I FOUND A BUG! 20:40
davidfetter where?
Andy but damn, we do that a lot.
dalek kapo: 517c700 | austin++ | setup.nqp:
Release prep.
Andy ack conf.*get.*ccflags
kapo: 4ea9a17 | austin++ | :
review: gitorious.org/kakapo/kakapo/commit/...bf0fc1e7aa
Andy I blank out $ccflags and things are much nicer.
Coke conf->get->ccflags gets /our/ ccflags, I think. 20:42
(unless get has magic to default to the perl5 value if ours is undef) 20:43
Andy it also has to check for the warning "ignoring option...."
Coke just add "ignoring" to the regex at the bottom there. 20:44
particle cotto: can you nopaste an op frequency for a parrot build only, parrot test only, rakudo build only, and rakudo spectest only? i think the comparison would be interesting. is that something easily scriptable?
Andy Coke, which "There" where? 20:45
oh, i see
particle coke: there's a way to track where all the config flags came from...
Coke particle: yup. it's insanely verbose. =-)
particle kid51 wrote a neat module, there's a config flag i think
yes, but you can track a single config var i think 20:46
over its history during the process
Coke (--verbose=2)
particle that must be a shortcut for a bundle of settings... lemme see
Andy So really in valid_warning() we should use ccflags of the Parrot build config so far 20:47
Coke Andy: we are. 20:48
... intending to.
Andy so we're pulling the Perl 5 ccflags somewhere else and anointing them as good?
Coke I was under the impression that's what that 'get' was doing.
where we is "something before warnings.pm", I think so, yes.
Andy Already icc has found a "assigned but never used" that GCC hasn't found. 20:49
so this is all good good good
AND using these wrong flags could well explain why my new icc 11.1 build fails, but 10.1 doesn't, because 11.1 is more picky about the erroneous shit we're passing. 20:50
particle $ perl Configure.pl --configure_trace
Coke excellent.
cotto_work fun fact: 448 opcode functions are run zero times during make test
Andy cotto_work: That's good news. They'll be well-rested. 20:51
particle cotto: they are run through the parser, though
cotto_work particle, you mean that they're parsed? of couse
particle that was a fun tricky test i wrote
t/op/01-parse_ops.t 20:52
in fact, i bet that can be updated to use pmc constants now 20:53
cotto_work I see what you did there. 20:54
particle then we'll have made sure every op parses.
(imcc hacks)++
lucian allison: ping 20:56
particle so what is considered a pmc constant by imcc? 20:59
do we have something yet? i see we're still using keys, so a namespace is still probably considered a key constant.... 21:00
Andy so what is that .configure_trace.sto ?
particle you can use Parrot::Configure::Trace to get info out of it 21:02
Andy Coke: Are you digging to find "something before warnings.pm"? Am I duplicating your effort? 21:03
particle what attr are you looking for?
Coke Andy: nope. I'm at dayjob.
Andy you and me both. :-)
particle ah, ccflags
dalek rrot: r45026 | petdance++ | trunk/config/auto/warnings.pm:
Add "ignoring option" to the regex for invalid options
rrot: r45027 | petdance++ | trunk/config/init/hints.pm:
updated the long-neglected copyright date
Andy We're using the Perl 5 ccflags, which is not appropriate.
nopaste "particle" at 98.232.31.142 pasted "example of Parrot::Configure::Trace script and results" (319 lines) at nopaste.snit.ch/19996 21:05
Andy what's the diff between $conf->data and $conf->options?
nopaste "coke" at 72.228.52.192 pasted "has to be one of these config modules" (14 lines) at nopaste.snit.ch/19997
particle better would be to use ->diff_data_c 21:06
Coke options == command line args.
(i think)
Andy seems to me that if we pass in cc , we know we should not use ccflags or ccwarn 21:07
Coke Andy: check config/init/defaeults
(defaults)
Andy I am
Coke line 96 is the culprit, I think. 21:08
Andy yes
but
what do we change it to?
let me make my patch and see what you think
nopaste Someone at 12.47.12.130 pasted "+ my $cc_option = $conf->optio" (15 lines) at nopaste.snit.ch/19998 21:11
Andy running a build. 21:12
darbelo +1
purl 1
Andy boooy is icc slow on the ops 21:13
dalek rrot: r45028 | jkeenan++ | trunk/src (2 files):
[codingstd] Make two files pass linelength.t.
21:20
Andy Do we aggregate release notes anywhere/ 21:26
nopaste "cotto" at 131.107.0.112 pasted "op usage during build and make test with +1 for each op" (1326 lines) at nopaste.snit.ch/19999
cotto_work Andy, NEWS?
Andy yay, so happy 21:27
is there a "make clean-only-the-C-files"? 21:28
cotto_work what do you want to do?
Andy only get rid of .o files, basically
lucian Andy: is icc worth bothering with? 21:29
Andy lucian: Be more specific.
F
or
m
e
For me it is, because I use each different compiler like a different lint.
lucian Andy: oh. which ones do you have so far? 21:30
Andy gcc and icc and sun
lucian Andy: clang?
purl clang is an entirely new C compiler
lucian purl: shut up
purl ;-(
lucian porposes to make purl deaf to anything but direct addressing
cotto_work Andy, it looks like no, but it'd be trivial to add one that nukes $(O_FILES)
Andy sure, I just didn't want to bother digging into makefiles if I didn't need to 21:36
and
r
eal
ly
,
it'snot that big a deal
dalek rrot: r45029 | petdance++ | trunk/config/auto/warnings.pm:
added another variant on "ignoring option"
Andy I wonder what it is that is doing that.
rrot: r45030 | petdance++ | trunk (2 files):
Don't carry over ccflags and ccwarn from Perl 5 if we specify cc
rrot: r45031 | petdance++ | trunk/src/debug.c:
removed unused variables. Thanks, ICC!
cotto_work status 21:37
purl Since Tue Feb 16 10:19:41 2010, there have been 6465 modifications and 3351 questions. I have been awake for 30 days, 11 hours, 17 minutes, 28 seconds this session, and currently reference 830603 factoids. Addressing is in optional mode.
dukeleto skynet? 21:40
purl skynet is on line, and helping me learn new tricks or img105.imageshack.us/img105/4651/whosbowlla0.jpg
dalek rrot: r45032 | petdance++ | trunk/src/debug.c:
consting local vars
21:52
Andy GOOD GOSH AM I AWESOME OR WHAT
cotto_work what you need to do is use git-svn and drop a boatload of commits all at once 21:54
Andy why? 21:55
oh wait, here's another
oh, look, I think I foud another bug, too. 21:57
look at Parrot_io_socket() in src/io/socket_api.c
new_socket is never used. 21:58
japhb Anyone remember how to change the list of load_bytecode search directories from within PIR? 22:02
Andy Coke: Thanks so much for your work on the config stuff. Gives me so much to work with. 22:07
dalek rrot: r45033 | petdance++ | trunk/src/runcore/cores.c:
removed unused var n_pics
22:09
rrot: r45034 | petdance++ | trunk/src/io/socket_api.c:
Add a comment about potential bug
Austin_away It's 2 or 3rd sub-entry behind the iglobals lib dirs array
dalek rrot: r45035 | petdance++ | trunk/src/pmc/exception.pmc:
localizing cur_ctx
Austin_away japhb: ^^
japhb Austin_away, yeah, I'm finding it in src/library.c
Austin_away get-interp[ lib-paths == 7] [ 2 or 3 ]
japhb Nodnod, thx 22:10
Reading the source, I was worried the arrays were fixed length, but that's just for the top level.
There's a lot of commented out code in this file. 22:11
Oh, NM, brain fart
Austin_away I'm wrong. It's 1. 22:12
include, library, dynext, lang, extensions
So 5 interp = getinterp ; lib_paths = interp[7] ; library_paths = lib_paths[1] ; push library_paths, '/opt/parrot/lib' 22:14
davidfetter wow, the colors :)
Austin_away bows.
darbelo We don't have cute PIR :MACRO_NAMES for those? 22:15
Austin Sure. But I don't do pir.
japhb darbelo, can't use PIR macro names from NQP. Which SUCKS.
Austin Heh.
darbelo Indeed.
Austin You said pir, not nqp.
Had I but known... 22:16
japhb Austin, PIR is just desugared NQP, as far as I'm concerned. ;-)
Austin I'd have worked in a Kakapo plug...
Hey, japhb, you're a smart guy.
I'll ask you this.
japhb Austin, you are unfortunately talking to the one person who *can't* use Kakapo.
Austin There's a Program class.
japhb (Well, unless you manage to get it in core) 22:17
Austin It gets extended by some code.
NQPrx doesn't support :main.
japhb yeah, annoying that
Austin What's the sugariest way to trigger some parent-class method from not-in-an-init-block source code in the child file.
Right now, I'm using 5 Opcode::get_root_global(pir::get_namespace__P().get_name).MAIN; 22:19
I'd like to get it closer to 0 bytes.
japhb heh
japhb thinking
purl thinking is see `made of meat`
Austin The kicker is needing to go through the proto-object to get to the method. 22:23
japhb I've got a couple proto-ideas, but I need to see the context. repo link?
Austin code.google.com/p/kakapo-parrot/wiki/UnitTest 22:24
That's context.
The repo is at kakapo?
hmm
kakapo?
purl hmmm... kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. or See code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or gitorious.org/kakapo for source code.
dalek rrot: r45036 | petdance++ | trunk/src/io/api.c:
consting locals
22:25
rrot: r45037 | petdance++ | trunk/compilers/imcc/symreg.c:
removed unused var i in int_overflows()
rrot: r45038 | Util++ | trunk/t/codingstd/c_parens.t:
[t] c_parens.t - Fixed lurking sort bug - s/cmp/<=>/
Austin Hmm 22:26
I could defined a sub in Testcase that does the lifting, and then export it so that it shows up when the user does use(Testcase). 22:27
That works.
japhb A decent idea
That gets you to 0.
I was still thinking about golfing. 22:28
Austin Well, it doesn't get me to 0.
The user still has to say TEST_MAIN() or whatever.
MAIN()
japhb (And slowly, since I've got distractions on this end)
Austin But 6 is very much less than the other.
22:32 kid51 joined
japhb You know, looking at this template, the top INIT block seems unnecessary, except a single load_bytecode. 22:34
Austin Is there an env hash from nqp?
japhb It appears to be just for embedding a copy of Kakapo inside another project, yes?
Austin It's to load the library from a standalone file. 22:35
japhb I get ENV as: pir::root_new__PP(< parrot Env >)
Austin So I can say "t/TestFoo.nqp" and have it self-load
Which is about like my $env
japhb Right, but the normal case is that Kakapo is installed into Parrot, right? 22:36
Austin For me, no.
japhb Sure, while you're working. 22:37
I'm saying, the *users* of Kakapo.
Austin :)
japhb Like, well, P-L-A, for example.
Austin There's two so far, myself and Whiteknight.
I think he's got it installed.
kid51 tewk ping
Austin So he gets to do what? load_bytecode(kakapo) ?
japhb Yeah, I think it would go like: 22:38
Wait, let me gist this.
gist.github.com/337002 22:39
Austin sings, "Why can't we give ourselves one more chance..." 22:40
Heh. That definitely won't work.
22:40 fperrad joined
Austin Testcase is defined by the library. 22:40
japhb Ah, duh, the class reference 22:41
japhb clearly not at full power
Austin What does load-language do that I thought it needed to be in there?
Oh. 22:42
Yeah, for compiled bytecode files.
japhb I have no idea why you're using that, actually.
Austin Because kakapo *also* works as a stand-alone runtime.
:)
just link with krt0
(well, pbc_merge)
darbelo That's... a good way to find parrot bugs. 22:43
japhb heh
Austin Heh.
I already found 'em, darbelo. Got a bunch of karma from cotto, too.
cotto_work I don't trust that cotto guy. 22:44
Austin Yeah, he's got shifty keys...
japhb Austin, so you're saying what's at that gist now is the minimum? 22:45
22:45 snarkyboojum joined
darbelo Austin: You haven't found them all. 22:45
Austin It's a little less than the minimum.
The init block has to split, to get the lib loaded before the class decl.
japhb Why?
Austin, reload -- I already made that change. ;-) 22:46
Austin Oh, sorry.
japhb np
Austin Yeah, that looks pretty good.
(For everyone but me. :-( 22:47
japhb Does UnitTest::Assertions require UnitTest::Testcase? 22:48
Austin Yeah, but it doesn't (re) export it.
japhb Oh sure, I just wondered if they could be reversed. 22:49
Austin Yeah.
japhb Well, hmm, there's no reason the call to MAIN() couldn't go inside the INIT block, just to cut down on visual noise, right?
Austin I'm not sure that's true. Give me a moment to think about it. 22:50
Okay, yeah. For a testcase template (but definitely *not* for the general case) you could move it up. 22:51
japhb updates the gist 22:52
Austin Here's a q: that shebang with just the program name, does that actually work for anyone? 22:53
japhb Hmmm, you could wrap UnitTest::* into UnitTest::All (like Ovid's Perl 5 Test::Most sort of thing), and have UnitTest::All not only do all the exports, but call MAIN() for you. 22:54
Yes, it's a path search.
Though I think #!/usr/bin/env parrot-nqp would be better for that
Austin Doesn't work for me.
which parrot-nqp returns /usr/local/bin/parrot-nqp, but #! parrot-nqp fails.
japhb What about with no space? 22:55
darbelo #!/usr/bin/env parrot-nqp
japhb Yeah, darbelo, that's what I've started using recently,
Austin bad interpreter 22:56
japhb because it doesn't export my concept of filesystem layout to everyone. :-)
Austin, huh. Well, the env version is more 'standard' anyway
gist refreshed again. 22:57
Just showing what the golfing help could do.
s/help/helper module/
Austin > In practice, env must not be a script, because the #! mechanism usually accepts only binary executables
dalek rrot: r45039 | petdance++ | trunk/config/auto/warnings.pm:
removed the ICC compiler options that silence many of the warnings.
22:58
rrot: r45040 | petdance++ | trunk/compilers/imcc/instructions.c:
Remove conflict between loop variables in and out of a scope
rrot: r45041 | petdance++ | trunk/src/pmc/scheduler.pmc:
consting
22:58 Whiteknight joined
darbelo petdance++ # Magical consting robot 22:58
Austin Except that it is a binary.. 22:59
darbelo Austin: If env turns ut to be a script... Go get a real operating system.
It'll cut down on your overall grief. 23:00
Andy darbelo: Thanks.
darbelo finally make the Andy -> petdance connection.
Andy I don't understand Parrot at all, but I understand C internals and project handling. 23:01
darbelo Keeping variable properly const-ed isn't something we care about most of the time. It's good to see someone clean that up every once in a while. 23:03
japhb goes back to hacking Plumage ...
Whiteknight Andy: There isn't much to understand. Parrot is a large pile of mistakes, and some of the wonderful fixes we're slowly making for them :) 23:04
Austin Okay, exec(2) doesn't path search...
So env it is.
Andy darbelo: That's what us cage cleaners are for.
japhb Austin, I may have been remembering what happens when Perl 5 is called on a script that doesn't have 'perl' in the shebang line 23:06
er, perl5, I should say.
Here it is: 'If the #! line does not contain the word "perl", the program named after the #! is executed instead of the Perl interpreter. This is slightly bizarre, but it helps people on machines that don't do #!, because they can tell a program that their SHELL is /usr/bin/perl, and Perl will then dispatch the program to the correct interpreter for them.'
Once again: Perl 5 compensating for platform stupidity. 23:07
cotto_work That sounds like a really fun platform. 23:08
Austin I have a hard time imagining a scenario where that is valuable.
japhb Clearly someone wanted it.
Austin It sounds like somebody had a lot of time, and didn't want to work on any perl bugs...
darbelo Here's a nickel kid...
japhb heh
Austin Wow! 23:10
darbelo is one of those condescending unix users.
davidfetter heh
Austin It's amazing what you can accomplish when you drop your wireless keyboard on the floor...
japhb darbelo, do you have the beard to match?
Austin: Write Shakespeare? Solve the Halting Problem?
Austin Darbelo only _thinks_ he's one of those condescending unix users..
darbelo Yep, I just lack the suspenders. 23:11
Austin japhb: It's more like a little bit of line noise in each of several windows...
But since I'm doing NQP, it's sometimes an improvement...
japhb actually knows someone who both *is* and *looks* exactly like a classic Unix guru -- it's a bit unnerving. Thankfully, not condescending. 23:12
Come to think of it, I know *two*. One of them is a bit condescending, actually. ;-) 23:13
dalek rrot: r45042 | petdance++ | trunk/compilers/imcc/pbc.c:
removed unused var cur_name. Thanks, ICC!
23:14
rrot: r45043 | petdance++ | trunk/src/embed.c:
Changed an internal i variable to be j, so as to avoid shadow conflict
rrot: r45044 | petdance++ | trunk/config/auto/warnings.pm:
Turn off a noisy ICC warning
rrot: r45045 | petdance++ | trunk/src/hll.c:
properly localize some vars to avoid shadow declarations
Andy boy, is this behind.
dalek rrot: r45046 | petdance++ | trunk/config/auto/warnings.pm:
disabling more annoying warnings, plus notes about them
japhb Andy, what is the 'shadow conflict' referred to in r45043?
Andy int i; if ( ... ) { int i; } 23:16
japhb Ah!
Andy it's not a conflict, but potentially confusing.
japhb Variable redeclaration in enclosed scope.
Andy yeah
What both gcc and icc refer to as shadowing a previous declaration.
japhb OK, just didn't know the term
nod
Andy ok, gotta go grab some grub. 23:17
23:26 payload joined 23:27 payload joined
dalek rrot: r45047 | petdance++ | trunk/src/oo.c:
Renamed a local to stop shadowing. Changed a check of a PMC to use the proper PMC_IS_NULL.
23:31
23:32 payload1 joined
Coke Andy: you're quite welcome. 23:42
23:46 Psyche^ joined
Coke msg kid51 - would '.' be sufficient there in place of cwd() ? 23:46
purl Message for kid51 stored.
Coke msg kid51 (r45048, that is) 23:47
purl Message for kid51 stored.
dalek rrot: r45048 | jkeenan++ | trunk (3 files):
[buildtests] t/tools/ops2pm/05-renum_op_map_file.t was failing since r.

lib/Parrot/OpsRenumber was problem. Moving this assignment to lib/Parrot/Ops2pm/Base.pm (a) improves flexibility, (b) places assignment in same location as similar values, (c) enables test to pass once again.
23:48
kid51 Coke: Will investigate. Your reason for this approach is ...? 23:49
Coke to avoid sticking the build path anywhere else.
actually, nevermind. once we actually add a build path that isn't ".", it'll have to change either way. 23:50
no point in changing it twice when once will do. =-)
kid51 Test still passes with '.'; running 'make test' 23:51
Coke: I tried a naive approach to TT #1516: simply having a command-line option override the build_dir setting in config::init::defaults. 23:52
dalek rrot-plumage: 4f17f7d | japhb++ | (8 files):
Reduce use of src/lib/ when referring to .pbc's
23:53
Coke I imagine there is a TON of code that assumes '.'
kid51 It didn't work. Build failed at miniparrot, something like "Can't find -lparrot"
Coke: Probably, though I've generally been averse to it in the stuff I've written.
Coke I'd throw what you have so far into a branch, we can hack on it until it works.
kid51 K
darbelo dukeleto: ping 23:59
dukeleto darbelo: pong (but gotta run in a minute)