Parrot 2.1.1 Released! | parrot.org/ | Tasks: PCC deprecations branch, HLL subclassing and MMD branch
Set by moderator on 19 February 2010.
00:03 tetragon joined
Whiteknight doing that kind of stuff from NQP is key. 00:03
especially if we want to have any hope of supplanting PIR one day 00:04
darbelo You, PIR hater, you. 00:06
Austin Hmm...Parrot_range_rand needs fixing. 00:07
Whiteknight pmichaud: i would like to start building a PBC compilation library, with the ultimate goal of using it as a backend to PCT one day. would like your ideas on interface and design to reach that goal
Austin: no,your application needs to lower its expectations 00:08
Austin Well, I was kind of expecting it to behave as documented.
Apparently, I forgot where I was for a moment...
Whiteknight foolish
Austin slaps himself..
Whiteknight whats the problem? 00:09
purl well, the problem is that WikiDoc doesn't use Pod formatting codes, and I don't like to have two sets of formatting codes.
cotto_work a pbc compilation library could help with direct past to pbc generation
s/could/would/
Whiteknight cotto_work, thats the idea
dalek TT #1479 created by Austin_Hastings++: Improve random-ness of Parrot_range_rand 00:19
Austin Should it be Array.uniq or Array.unique ? 00:20
(Or uniquify, I guess.)
00:23 kid51 joined 00:25 lucian_ joined
Whiteknight unique 00:28
Austin I went with distinct 00:29
The SQL got me.
Whiteknight no pain in spelling it out
ok
darbelo Coke: ping 00:31
dukeleto Whiteknight: i like your 2nd reply to Jon Gentle, he has some interesting ideas 00:34
Whiteknight I support good ideas, and lambast bad ones on my blog :) 00:36
dukeleto Whiteknight: duly noted ;) 00:40
davidfetter or in my case, dully ;) 00:41
dukeleto davidfetter: there you go, always causing trouble :) 00:43
davidfetter heh
darbelo purl: msg Coke See nopaste.snit.ch/19772 for the last build problem with Sun cc on rm_cflags. 00:44
purl Message for coke stored.
darbelo purl: msg Coke Once that's solved feel free to merge back to trunk, you won't break any builds. 00:49
purl Message for coke stored.
dalek kudo/master: 5d38786 | jonathan++ | src/core/Mu.pm:
Add back default .perl.
00:53
kudo/master: 88f57f6 | jonathan++ | t/spectest.data:
We pass three more spectests now (deferal related stuff).
kudo/master: 1cdb0d8 | jonathan++ | src/ (4 files):
Get deferal stuff back in place, to the degree we had it in alpha.
00:53 bacek joined 01:16 cotto joined
Whiteknight Austin: have a suggestion to improve Parrot_range_rand? 01:21
Whiteknight has to find it in the codebase
Austin It's in dyn*/math 01:22
Add one, then limit?
random * (max - min + 1) ; if result > max { result--; } 01:23
But check the definition of the drand code- it may be possible to change the range to 0.9999 01:24
Whiteknight we could just change the documentation of Parrot_range_rand to say it goes from [x to y)
Austin Except for when it occasionally doesn't? 01:25
Whiteknight when that happens, we open a ticket, try it out a few times, and inevitably close it as WORKSFORME
:)
Austin :)
whiteknight--
You have a future in tech support. 01:26
Whiteknight Parrot_range_rand has this documentation: "Returns a C<FLOATVAL> in the interval C<[0.0, 1.0)>." 01:27
so it seems that it should never reach 1.0, if the docs are to be believed
Austin Okay. 01:28
You mean some other function than range_rand. Fload_rand maybe?
*Float
range_rand says [from, to]
Whiteknight yeah, I see that 01:29
Austin So if float_rand is [0, 1)
then no problem.
Just make sure the range is inclusive.
Whiteknight no, the _drand48 docs say it's [0.0, 1.0)
Austin 1 + (max - min)
Add one.
Because 0.9999 in C is 0. 01:30
Whiteknight that would create a small bias towards (max - 1)
small, but so long as we're fixing it, we should do it right
Austin So range_rand(0,1) would return 0 + (double)(1 - 0) * rand = 0 + 1.0*random = 0 + 0.999 = 0 always 01:31
No bias. It's a fencepost error.
The drand48/float_rand function returns a range excluding the max.
Whiteknight www.opengroup.org/onlinepubs/007908...and48.html 01:32
that page says it's inclusive of max
are you seeing documentation that disagrees? 01:33
Austin Nope. I was trusting the your earlier remark. 01:34
Whiteknight okay, this is what I am following then 01:35
While I'm looking at it, I think we could improve Parrot_uint_rand to output a 64-bit integer on 64-bit systems 01:37
...but that's another issue for another time
this whole file smells of "quickly implemented"
Austin Heh.
Looking at the _erand48 code in utils.c, I tend to agree with 1.0)
The max value for a short is 65535, and they are dividing by 65536.0 01:38
So it's going to be 0.999 all the way.
My suggestion then is to add 1 to the (max-min) range computed in Parrot_range_rand, before multiplying by float_rand. 01:40
Whiteknight fixed 01:41
Austin Thus a range request of [2,4] would produce 2 + (1 + 4-2)*rand, or 2 + 3*rand, or 2 + [0, 3), aka [2, 4]
Whiteknight r44467 01:42
Austin w00t
Whiteknight w00t indeed
Austin FWIW, this isn't tested exhaustively in the unsort testcase. :)
Whiteknight Austin: improved tests always appreciated :) 01:44
you have a commit bit now, right?
Austin yeah
Whiteknight rock that sucker
Austin It's a kakapo thing.
ttbot Parrot trunk/ r44467 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/215159.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ )
Whiteknight what test harness does distutils use? Does it use Tapir? 01:46
Austin IDK 01:49
No, distutils just assumes you have a t/ dir with a harness executable, etc.
Whiteknight without a t/harness, it looks like it searches for tapir, and then it falls back to using prove in some capacity 01:50
dukeleto: ping 01:51
looks like I have to isntall tapir, and distutils will use it
Coke darbelo: pong 01:52
austin: tcl has been using dynops for years. 01:53
Austin coke: how do you make it work? 01:54
dalek rrot: r44467 | whiteknight++ | trunk/src/utils.c:
fix Parrot_range_rand to alleviate the bias on the upper limit. Austin++ for the catch. Also, a few small doc updates
Whiteknight purl msg dukeleto: I think Tapir needs some love. It doesn't run tests for me on my system (can't find GetOpt::Obj), when it's installed it isn't chmod +x, and when I run the installed version it can't find lib/Tapir/parser.pbc 01:55
purl Message for dukeleto stored.
Coke .loadlib 'tcl_ops' 01:56
You could probably do it with the loadlib opcode if you put it into an :immediate block.
Austin So you're not doing it *from* tcl?
Coke no. 01:57
partcl is written in pir.
Austin Right. I was trying to get it working from nqp.
Coke welp, partcl is broken today, but the .sub '' :anon :immediate; loadlib 'tcl_ops' ; .end might work. 02:01
then you can put it in a sub of some kind. 02:02
Austin :)
Thanks.
I got it working with dlfunc.
Whiteknight what does the NQP error "rtype not set" mean? 02:14
It's on this line: "if $len >= $max_length"
actually, maybe it's this line: "my $len := pir::length__i_s($_);" 02:16
Austin Really? 02:18
Usually I get it when I'm assigning instead of calling.
Whiteknight no, nevermind, I don't think the line number reported is happening in my code
Austin laugh
I find that doing $foo.method := 1 instead of $foo.method(1) gives me the rtype error. 02:19
(I had to blog it so I could remember it.)
Austin sings, "Sometimes I live in the country. Sometimes I live in town. Sometime I take a fool notion .. to jump in the river and drown!" 02:24
Whiteknight okay, in NQP, I write "$i = pir::length__i_s($filename)" 02:25
Austin :=
Whiteknight and the error I get is "The opcode 'length_i_p' (length<2>) was not found." 02:26
Austin pir::length__IS
Whiteknight I meant :=
Austin Tho I think you can use lowercase, if you want.
Whiteknight this line gives me the "rtype not set" error: "pir::exit__I(1);" 02:30
so why is that?
Austin I disbelieve.
Whiteknight I comment out that line, error goes away 02:31
Austin Okay. I believe.
You declared a return type.
Just do pir::exit(1)
Whiteknight no other way to tell, since the super-helpful error message doesn't have a line number
Austin or maybe pir::exit__vI(1)
What are you doing in nqp, if I may ask?
dalek kapo: 9604856 | austin++ | (3 files):
Converted all of the array code (but 'new') to methods.
02:32
Whiteknight Austin: I'm trying to update the test harness for Parrot-Data-Structures 02:56
it has been long-neglected 02:57
Austin ahh
Whiteknight I'm also just trying to get my feet wet with NQP, I haven't used it nearly as much as I should have
I want to rewrite much of the test suite in it
chromatic Meh.
Whiteknight right now I fake it with a shit-ton of Q:PIR{} blocks
Meh?
purl well, Meh is 'unexciting or unappealing' or www.youtube.com/watch?v=zSDj7bjAv2s
chromatic Oh, the PDS test suite. Un-meh. 02:58
Whiteknight chromatic: yeah, I wouldn't dare with the Parrot suite
but PDS is safe 02:59
Coke I == Integer, not integer, no?
seems like vi would be better.
Whiteknight I use PIR for benchmarks to keep a little bit more control, but for tests NQP is fine
vi is never better
Coke ah, no, I is int register, but i can also be an int constant. 03:00
Whiteknight ...and on that note I'm off to bed. Goodnight 03:02
dalek rrot-data-structures: eceb4bf | Whiteknight++ | t/harness:
some aesthetic improvements to the output of the test harness. FPQ still fails a does test that I can't quite explain. FPQ2 and FPQ3 are still aborting early with a floating point exception.
03:04
kid51 me has bedtime reading: Whiteknight's recent blog posts 03:06
Since they're all over my head, I expect to get to sleep really quickly ;-)
03:10 theory joined, cotto joined
dalek kapo: 7104cf8 | austin++ | src/ (12 files):
More Array functions! Plus got rid of ::empty.
03:38
04:00 janus joined
dalek rrot: r44468 | mikehh++ | trunk/src/utils.c:
can not modify a const
04:07
rrot: r44469 | tene++ | branches/exceptions_refactor/src/ops/core.ops:
Allow subclasses of Exception to be thrown
04:24
04:59 AndChat| joined 05:25 desertm4x_ joined
dalek rrot: r44470 | mikehh++ | trunk/src/utils.c:
range needs to be [from .. (to - 1)] not [0 .. (to - from + 1)]
05:29
05:39 cotto joined 06:45 JimmyZ joined
dalek kudo/master: e79112d | duff++ | t/spectest.data:
Add S06-multi/unpackability.t to spectest.data
07:09
07:22 bacek joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32386), fulltest) at r44470 - Ubuntu 9.10 amd64 (gcc with --optimize) 07:34
dalek rrot: r44471 | mikehh++ | trunk/src/utils.c:
the range must be [from .. to] inclusive - the removed test would double up on (to - 1)
07:40
rrot: r44472 | mikehh++ | trunk (2 files):
change some of the tests so that [from..to] does not overlap [0..((to - from) + 1)] and update copyright on previous commit
07:56
purl dalek: that doesn't look right
08:05 fperrad joined 08:10 iblechbot joined 08:36 eternaleye joined
fperrad msg darbelo have you seen r44453 ? 08:40
purl Message for darbelo stored.
09:13 bacek joined
mj41 msg NotFound pbc_disassemble.exe hanging on some taptinder windows clients at nopaste.snit.ch/19753 09:23
purl Message for notfound stored.
09:28 barney joined 09:30 AndyA joined, yoyo joined 09:38 pdcawley joined 09:59 uniejo joined 10:00 wagle joined 10:02 cosimo joined
uniejo $ echo ".HLL 'test1'" | ./parrot -E - # Revision 44472 10:17
Segmentation fault
purl (Core dumped)
10:18 jhelwig joined
moritz uniejo: open a track ticket 10:18
uniejo moritz: Do you have a link 10:19
moritz uniejo: trac.parrot.org/parrot/newticket (you might need to create an account first)
10:30 gaz joined 10:41 lucian joined
dalek TT #1480 created by uniejo++: Preprocessing using parrot -E fails 10:46
11:23 payload joined 12:16 bluescreen joined 12:37 payload joined 12:55 whiteknight joined
whiteknight good morning #parrot 12:57
13:15 Austin joined, wknight8111 joined, payload joined 13:16 ruoso joined
Austin Good morning, Whiteknight. Are you done bouncing? 13:17
whiteknight Austin: yeah, done. 13:19
I brought my personal computer in to work today, so I switched over to that
if I can't get home because of the weather, I'm staying the night at my parent's hous 13:20
Austin Man, you're hardcore.
I left the baby at home, but I'm taking my laptop to shelter...
whiteknight my wife took the baby with her, and will likewise be staying with her 'rents if she can't get home 13:21
Austin Ahhh
whiteknight it's a weird situation where we both work very close to where our Parents live, and very far away from where we live
Austin Hmm. I think I've found another nqp bug 13:22
whiteknight "undocumented feature"
did those improvements to Parrot_range_rand that I made yesterday actually fix the issue? 13:24
nopaste "Austin" at 68.37.46.53 pasted "Potential nqp-rx parse error" (13 lines) at nopaste.snit.ch/19775
Austin I don't know. I saw some commits from mikehh that seemed to indicate there were testing problems. 13:25
whiteknight well, let me run some tests now, see what I get
mikehh I first had a problem building and then after I fixed that I found I was getting intermittent failures with the math.t test 13:29
whiteknight damnit. Let me look 13:30
mikehh then I found it was returning 0..20 or something rather than 5..25, fixed that and then modified the test so that it wouldn't hapopen again
s/hapopen/happen/ 13:31
Austin zounds!
whiteknight all coretests successful here
mikehh they should be now 13:32
whiteknight mikehh++
Austin FYI: The is.. opcode (forexample: islt) will store a condition into an integer. 13:33
whiteknight I positively hate all the comparison opcodes we have 13:34
of course, I positively hate many of our opcodes
Austin :)
Did you get a chance to read my idea from yesterday morning, or were you part of the irc droppage? 13:35
whiteknight Austin: a refresher might be appreciated :)
Austin Unify vtable and methods.
whiteknight how so?
Austin Put them all in one big table. 13:36
whiteknight a table with variable length?
Austin Nope.
Create an interned string type (what I think you've referred to a constant strings)
Assign a sequential number to all method names. 13:37
Every method call is either (1) a vtable call; (2) a call to a method with a name known at load-time, in which case it can be num-ified; (3) a name known only at run time, which has to be looked up in the enumerator or, if not found, dispatched to the _AUTOLOAD or whatever mechanism. 13:38
The "vtable" is simply the low NNN methods. We can manage that based on frequency of use or necessity.
whiteknight I'm not sure how that improves on anything we currently have 13:39
Austin It means that vtable calls and method calls with fixed names take the same time.
(Modulo argument packaging)
whiteknight but it sounds like VTABLE management becomes sigificantly more expensive 13:40
Austin No, why would it?
$object -> vtable [ x ]
whiteknight at the moment, VTABLEs are a fixed-length structure, and we store all the VTABLEs in a large array, which we index by type number
Austin Right. 13:41
whiteknight so making VTABLEs different lengths with numbers of methods in it makes that all harder
Austin I'd replace that with a pointer to the table.
And the vtables would be the same length.
whiteknight so then how do you re-implement Parrot_pmc_new, which takes a type number?
we keep another mapping around?
Austin $interp -> new( type_number )
whiteknight right. internally, how do we go from type_number to VTABLE*? 13:42
Austin Why would you want to? Call the class, let it set the vtable.
whiteknight I'm missing some important details in my mind 13:43
Austin I think part of it may be too much internals knowledge.
whiteknight yeah, I'm damaged goods like that 13:44
Austin The way to create a new object is to ask the class for one.
So you need to lookup the class, then ask it.
whiteknight Austin: okay, so how do we look up the class?
Austin I'm glad you asked. :)
whiteknight I'm becoming less and less so
:)
Austin Pretend you're in pir or nqp: you go to the namespace and ask it for the class. 13:45
You use the name to get the namespace, natch.
If you want some subsystem to cache that info, then the caching is an internal problem - let the subsystem deal with it.
So, the pcc system will probably hold on to the RPA and Hash class pointers. 13:46
etc.
whiteknight So to create a new PMC, I have to lookup the NameSpace in some global cache, ask that for the Class, and ask the Class for a new object?
Austin Isn't that what you do now? 13:47
whiteknight We can't cache class pointers, because HLLs can override default types at runtime
Austin: internally, no. We use type numbers
Parrot_pmc_new(interp, enum_class_ResizablePMCArray)
Austin And what do you do with them?
Sounds like someone is holding a cache ... 13:48
whiteknight and then we lookup the vtable as interp->vtables[x]
Austin That would change.
whiteknight each type has an idx number which is put into an enum list at compile time
Austin: internally it's a huge performance win to do it that way
the idea of assinging built-in methods an integer index and using that index for fast lookups of staticly-given names is an interesting one 13:49
...assuming we can get around the problems of ducktyping and other introspective nonsense 13:50
Austin That's not a problem.
whiteknight foo."bar"() may not always point to the same method for the same class
Austin Right.
It will always point to the same method for the same class. It may get replaced if an object does a local override.
Each class needs a different table, just like now. 13:51
Dog.bark() and Tree.bark() would be in the "bark" slot, but different tables. DogTree.bark() would get set up my the MRO to point to one or the other. 13:52
*by the
*ever* class would have a "bark" slot, but most of them would point to the default "try-to-AUTOLOAD-this-or-throw-a-method-not-found-exception" method. 13:53
The win here is replacing code with data.
whiteknight So we're paying a cost in a huge amount of extra storage for every class, because every class has a slot for every method, but defaults on most of them? 13:54
Austin Build a method that throws the appropriate error, fill in all the slots with it, and eliminate a bunch of conditional logic.
Right.
whiteknight that sounds like a huge memory expenditure
Austin Per class?
purl Per class is "with 'Role::Foo'"
whiteknight yeah, how many classes do you think an average program running in an HLL on top of Parrot needs to be aware of? 13:55
Austin Maybe 1000 ?
whiteknight VTABLEs are already 2k
Austin I bet we could reduce that. 13:56
whiteknight I've been trying like hell
Austin So double it.
4k methods @ 8 bytes per pointer = ... 32k per table.
* 1k classes = 32m
whiteknight A better idea, I think, would be to let the class object do that caching itself. Store it in an array in the class, not in the vtable
we're asking the class anyway, it can look things up, cache them, and update caches when ducktyped 13:57
Austin My point is not to ask the class.
Just *pointer()!
Actually: (*pointer)()
whiteknight We're also looking into adding callsite caching with PIC. Method pointers for each callsite only need to be looked up once per class, and the class can cache to support multiple callsites 13:58
Austin I think we could shrink that 32m number with some smart opcodes (call-method-below-1k, call-method-below-2k, etc.)
This would eliminate that.
whiteknight It's definitely an interesting idea, but I'm not sure that there's a performance win to be had at all, much less one commeasurate with the development effort expenditure 13:59
Austin I'm pretty sure that $object -> methods [ x ] is a performance win over callmethodcc. 14:01
My approach lets us make the caching standard, and puts it in the class (which will probably leave it set to the default). 14:02
But yeah, it'd take a lot of work to implement. 14:03
:)
whiteknight Austin: it's a performance win over callmethodcc as it exists now. 14:05
add in some aggressive caching, both call-site and class-side caching, and I don't think there's a win anymore
Austin ok 14:06
whiteknight imagine a callmethodcc call that takes an extra parameter, which is a cache object. We can create the cache object at compile time and store it in the constants table.
callmethodcc, if it has the cache object, looks up the method in there. 14:07
I say"if it has a cache object" because for places where the optimizer is guaranteed to know the type in advance, we can forget all this nonsense and inline a direct call 14:08
Austin So callmethodcc looks in the cache and sees if the invocant object has dispatched the particular method before. And if so it calls the subref it has. And if not is does the lookup? 14:09
*not it does
whiteknight Austin: basically, yes. But it can be cheap because we can lookup based on object type number (for a constant method name)
if the method name is variable, bets are off anyway 14:10
so something like find_method_p_sc would do aggressive cachin, find_method_p_s wouldn't 14:11
14:13 iblechbot joined
Austin Well, this is gonna hurt. 14:21
whiteknight ?
Austin Replacing all the squillions of references to @array.elements with .elems
No chances for error there... 14:22
whiteknight add an elements method to array that outputs a backtrace to stderr 14:24
then run the program
Austin Heh
Nah, I'm perling out all the .elements -> .elems
It's the case where that WASN'T a method call I'm worried about.
whiteknight that's cool too
why "elems" as opposed to "elements"? a little verbosity is rarely a bad hing 14:25
thing*
Austin P6 14:27
S32::Containers
"elems"
our Int method elems (@array: ) is export 14:28
Like 'exists'. 14:29
Except that 'exists' bothers me more.
%hash.exists('foo')
No!
%hash.contains('foo')
Coke I was going to ask why you were going all P6-y here, but this is to make parrot objects looks slightly more p6-like for nqp, yes? 14:32
Austin If only I could add methods to the null pmc
Coke: yeah. Kakapo
Coke Austin: you can't just shove methods into the null namespace?
14:32 bacek joined
Coke (I mean, it would freak me out, but It might work.) 14:32
Austin No. Stupid parrot checks for null access.
:) 14:33
I wonder if there's a way to hllmap the nullpmc?
Tene *blink* *shudder*
Austin Oooh. Only 5 failures...
Tene That's kinda creepy.
Austin What?
PerlJam Austin: if you have a commit bit to the pugs repo, you can always adjust the spec to your liking ;) 14:34
Tene hllmap nullpmc
Austin Weren't you one of the guys telling me how we had to have nullpmc different from undef so people could differentiate between exists-but-not-set and not-exists?
PerlJam: ;)
Coke Austin: I imagine hll mapping null is going to fail. 14:35
Austin Yeah. Discrimination, patently.
Coke I suspect things like isnull are checking for the PMCNULL singleton.
rather than "isa 'null'"
Austin Lazy coding 14:36
Hey, I wouldn't mind if the hllmap was to another singleton.
I just want to put methods on it.
method exists() { 0; }
unless %hash<key>.exists { say("No such key"); } 14:37
git-- 14:42
I'm the only person working on my private branch. I'm only using one computer. So how can I get push rejected, not fast-forward? 14:43
purl, tapir?
purl tapir is being written to be testable from the ground up, unlike nqpTAP or github.com/leto/tapir or a TAP Harness written in PIR
dalek kapo: 323b693 | austin++ | (2 files):
More Array functions! Plus got rid of ::empty.
14:44
kapo: e96df4c | austin++ | (10 files):
Added more methods. Yay. Also, test cases. Yaaaay. Now with less bugs!
kapo: 85fc81b | austin++ | (16 files):
Replaced .elements with .elems in Array, Hash.
Austin Does anyone have mod_parrot running publicly 14:46
?
14:57 kurahaupo joined 15:04 parthm joined 15:08 parthm left
dalek kapo: c1d92a2 | austin++ | (3 files):
Added class name support to Mock
15:11
kapo: 90201f8 | austin++ | :
review: gitorious.org/kakapo/kakapo/commit/...adf3e2915c
15:15 theory joined 15:21 Ryan52 joined
Coke a yahoo address! how quaint! =-) 15:22
whiteknight yahoo email? what's that? Let me look it up on Alta Vista 15:27
NotFound Austin: pmcnull is basically a replacement for NULL that throw in a controlated way when used instead of segfaulting the VM. 15:41
15:44 lucian joined
szbalint it could be worse, it could be @aol.com 15:44
whiteknight or @earthlink.com 15:46
15:47 Psyche^ joined
wagle @me.com 15:51
(@narcissist.com)? 15:52
NotFound What is supposed to do the -E option? Generating pasm? 15:54
Austin You guys are just jealous because I change jobs more often than I change ISPs. 16:00
Speaking of jobs, I hope there's some work this year. 16:01
NotFound Jobs, steve?
Austin_away It's one o'clock and time for lunch ... dum de dum de dum 16:03
whiteknight one o'clock? it's 11 here 16:05
and you're deinitely not two time-zones away
16:06 patspam joined
dukeleto 'ello 16:18
msg whiteknight i will check into those tapir issues. thanks for the notification 16:20
purl Message for whiteknight stored.
dalek kudo/master: 37e2865 | pmichaud++ | docs/ROADMAP:
Refactor ROADMAP with recent accomplishments and task estimates.
16:25
16:26 Myhrlin joined
whiteknight dukeleto: no problem. I was trying to pretty-up the test output for PDA. I ended up making modifications to the built-in harness, but I would much rather use Tapir if possible 16:27
dalek kudo/master: 1926c29 | pmichaud++ | docs/ROADMAP:
Update difficulty estimate for lexical classes and roles (jnthn++).
16:31
kudo/master: a21f056 | pmichaud++ | docs/ROADMAP:
More difficulty estimate updates from jnthn++ .
16:36
kudo/master: b06dfe5 | pmichaud++ | docs/ROADMAP:
More ROADMAP tweaks.
kudo/master: 1d4a471 | (Solomon Foster)++ | src/core/Array.pm:
Simple port of Array.delete from alpha.
kudo/master: 2c553a5 | (Solomon Foster)++ | src/core/operators.pm:
Change the signature of undefine to accept Mu too -- otherwise you cannot undefine something twice at the moment.
purl dalek: that doesn't look right
dukeleto whiteknight: that GetOpt::Obj error is odd. did namespaces change format again? 16:40
whiteknight not that I am aware of
dukeleto whiteknight: do you have a link for the changes that you had to make?
whiteknight Are you seeing it too?
dukeleto: it was all just aesthetic stuff
github.com/Whiteknight/parrot-data-...11c32eedd5 16:41
dukeleto whiteknight: oh. i thought you said tapir was broken? don't you have a commitbit on tapir?
whiteknight I do have a commit bit, but I don't have a lot of time to fix it and I wanted to make sure you were aware
dukeleto whiteknight: gotcha. so did you only make aesthetic changes to the output? or are there bugs ? custom output formats are definitely on my TODO list 16:42
Coke question. we now have .mak files scattered throughout the repo. 16:43
dukeleto whiteknight: also, you are always free to push to a branch in the tapir repo if you want me to take a look at something
Coke if I need to make one of these a template that is transformed by the config process (like root.in), then is it preferred to put the .in with the root.in, or keep it in the same directory as the generated .mak?
(I lean towards the latter, but can be convinced of the former.) 16:44
whiteknight dukeleto: I only made changes to the test harness for PDS. I didn't touch Tapir
dukeleto whiteknight: gotcha. i will look into providing an easy way to customize the output format, or just make the default format not so ugly :) 16:49
whiteknight I think the Tapir output format is decent. I know because I made some changes there earlier :) 16:50
The harness in PDS was based on a very very old version of Tapir and was showing it's age
dalek kudo/master: c9e1981 | pmichaud++ | docs/ROADMAP:
Update s/// roadmap items based on comments from PerlJam++ .
16:59
kudo/master: a725daa | pmichaud++ | src/core/ (2 files):
Merge branch 'master' of git@github.com:rakudo/rakudo
17:01 gaz joined 17:11 davidfetter joined 17:12 cosimo joined 17:19 parthm joined 17:43 parthm left
dalek m-dynpmcs: af0834f | darbelo++ | (2 files):
Pull in changes from trunk.
17:52
18:07 payload joined
darbelo Coke: reping. 18:15
kthakore hi folks 18:17
cotto_work hi kthakore 18:20
18:24 Whiteknight joined 18:50 kurahaupo joined
dukeleto kthakore: how is SDL coming along? 18:51
18:51 kurahaupo joined
kthakore dukeleto: coming 18:55
cotto_work: hi
purl privet, kthakore.
Coke darbelo: repong. 18:56
kthakore dukeleto: chromatic told me to go ahead with the redesign
dukeleto: so I am scheduling in a hack schedule for it
dukeleto: need to learn some pir then I am going to start laying out the ground work 18:57
darbelo Coke: Dis you see my purl-msgs? rm_cflags looks pretty much done from a non-gcc standpoint.
kthakore dukeleto: today went away to squashing bugs in perl5 SDL and a new game for CEbiT
Coke did see that, yes. two bits left: 1) get it warnigns clean on gcc.
kthakore dukeleto: so that is how it is going 18:58
:)
dukeleto kthakore: ok, let me know if you need PIR help
Coke 2) put back the optimize hackery (to disable optimization on certain files in certain cases.)
kthakore dukeleto: will do
dukeleto: HELP!
darbelo Well, warning cleanup can be achieved in trunk.
dukeleto does anybody know if anybody has tried making a GTK binding for parrot? 18:59
18:59 payload joined
kthakore dukeleto: I saw some on the google 18:59
dukeleto: I was looking for ways to do callbacks
dukeleto: gtk popuped up 19:00
dukeleto kthakore: have you looked at examples/tutorial ? it give nice and simple PIR examples
kthakore will do 19:01
dukeleto: frankly this week was super busy
so I just hacked PIR with out reading
Austin helped me a lot in it
19:02 davidfetter joined, chromatic joined
kthakore hi chromatic 19:02
19:03 bacek joined
dukeleto kthakore: learning by fire, nothing wrong with that 19:03
kthakore dukeleto: hey! that is how I learned perl 19:04
;)
dukeleto: I find it faster to get started
dalek kudo/master: 0bcb821 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 204 files, 24339 (68.2% of 35695) pass, 0 fail
19:06
Coke darbelo: it can, but i'm trying to make sure when I merge back that it's as good as it was before I started.
darbelo Cool. So, what's your plan for the optimize hackery? 19:07
Coke basically the same thing I did for the warnings. 19:08
break out the optimize flags into CC_OPT, have a @optimize::path/to/file.c@ setup explicitly for the few files that need it.
dalek kudo/master: 64305d7 | (Solomon Foster)++ | src/core/Any-list.pm:
Add Any.kv to provide .kv for Positionals and scalars, as well as a proto sub for kv.
19:12
kudo/master: 9f11da6 | (Solomon Foster)++ | src/core/Enum.pm:
Enum.kv should return a Parcel, not a list.
19:15 preflex joined 19:18 clinton joined
Coke who owns src/nci_extra_thunks ? 19:19
19:19 AndyA joined 19:20 AndyA joined
Coke AndyA: how's the back? 19:21
dukeleto Coke: sounds like something plobsing or japhb would know about
AndyA Back's fine, thanks :)
Coke dukeleto: eh. I'll just silence the warnings. they can fix them later. 19:25
uh... why do we have src/extra_nci_thunks.c and src/nci/extra_thunks.c ? 19:28
which are nearly identical?
japhb Coke, dunno, that's all plobsing's work 19:34
Coke gcc warning questions: what flags control: 19:44
warning: assignment discards qualifiers from pointer target type
DOH. nevermind. 19:45
no, mind. I though it'd be -cast-qual, but that's not covering it. 19:46
darbelo Coke: Sprinkle 'const' on your variable declarations.
Coke can't.
this is generated code.
darbelo Ouch. 19:47
dukeleto sprinkles 'const' on his yogurt 19:48
NotFound Coke: silent the warnings isn't a solution, most times it'll fail in c++ build. 19:49
Coke NotFound: this is in IMCC's generated code. it would have broken teh build already.
(like 4 years ago) 19:50
also would like to silence logical '&&' with non-zero constant wi 19:51
ll always evaluate as true
NotFound Ah, yes, no problem. Flex and bison developers takes care in that case. 19:53
chromatic They take *some* care. 19:55
Coke chromatic: any idea how I can kill these last warnings? 19:57
nopaste "coke" at 65.91.151.194 pasted "few remaining build warnings." (13 lines) at nopaste.snit.ch/19777 19:58
Coke I mean, I guess we could just with NO warnings on imcparser.c and imclexer.c 19:59
(but that seems like overkill)
NotFound The isSOUBROUTINE problem is easy. Just kill the warn unused result qualifier.
Coke if you do that in trunk, I can just merge that in. =-)
;)
NotFound That qualifier is used when you never must ignore the result, which obviously isn't the case. 20:00
Coke: ok
chromatic Coke, I've tried to remove those. I think it's "File a bug with flex/bison."
nopaste "coke" at 65.91.151.194 pasted "all remaining build warnings in rm_cflags branch (gcc)" (13 lines) at nopaste.snit.ch/19778
Coke chromatic: i'm not trying to clean the file, just get gcc to not warn on them. 20:01
chromatic Can you disable specific flags on specific files for a -DNDEBUG build? 20:02
Coke looks like compilers/imcc/symreg.c:1007 doesn't need ANY cast.
chromatic: assume that's set by some kind of Configure.pl option, yes.
bacek morning
Coke *assuming
cotto_work hi bacek 20:03
bacek cotto_work, aloha. What happened to ops_pct?
cotto_work still waiting for tuits, either mine or pmichaud's 20:04
it builds but doesn't pass any tests due to pct changesw
pmichaud I did look at ops_pct
cotto_work any findings?
pmichaud my suggestion would be to rewrite it in terms of the new nqp :)
I don't know of anything that changed in pct that would cause it to stop working, though. 20:05
bacek pmichaud, good suggestion :)
pmichaud cotto_work: did you want me to see if I could get it to compile+run again, or ... ?
bacek compilers/opsc/t/01-parse.t .. Method '!cursor_start' not found for invocant of class 'String'
Coke chromatic: emit_open() takes a (void *), but is only ever called with a NULL or a (void*) of a const char * const ... why not just make emit_open take the right type?
chromatic Coke, reading the code. 20:06
bacek it's in generated code
Coke s/chromatic/any c hackers really/
cotto_work I was thinking along the lines of "make it work again", but if you think a rewrite's best we could go with that.
pmichaud bacek: the ops_pct is using the old API for parsing
the invocation semantics for rules in the new system are different from the old
bacek pmichaud, any links to new API description?
cotto_work I imagine that the usable code could be ported over once there's a skeleton working. 20:07
pmichaud bacek: normally one parses by calling the .parse method on a grammar object, now.
Coke reg_sort_f is another function that is defined as taking void but only ever takes a specific type.
chromatic Coke, is this on your rm_cflags branch?
Coke chromatic: yes, but fixing on trunk is fine, I can always merge up.
pmichaud the previous api would invoke a rule sub passing the string to be parsed.
chromatic Coke, I don't see the warning on trunk. I'm trying the branch. 20:08
pmichaud I can probably get a skeleton parse working again fairly quickly.
Coke I'm just trying to get it warnings clean (preferentially by fixing things being warned on)
chromatic: trunk is sweeping a lot of imcc crap under the covers.
(rather than just the generated files, it ignored cast-qual on compilers/imcc/* 20:09
cotto_work pmichaud, you mean an nqp-based one?
Coke nqp-rx?
purl nqp-rx is github.com/perl6/nqp-rx
cotto_work that's what I meant
chromatic Coke, fixed one.
pmichaud yes, an nqp-rx based parser. parsers are easy :-) 20:10
cotto_work Cool. Just call it opsc-nqp so that old code can be copied easily from the current opsc if necessary. 20:11
pmichaud will do. can I do the work in trunk, or make a fresh branch, or ... ?
cotto_work Trunk would be nice to avoid frequent syncs, but the compiler shouldn't ship until it starts to resemble usefulness. 20:12
a new branch would be best
Coke (merge in the new svn is acceptable, usually) 20:13
pmichaud I'll make a fresh branch from current trunk, then.
cotto_work Thanks.
I'll look forward to hacking on it. 20:14
bacek++ for getting that started
pmichaud++ for the branch and skeleton
bacek cotto++ # just for fun :) 20:15
cotto_work -Ofun++
karma -Ofun
purl -ofun has neutral karma
cotto_work karma Ofun
purl ofun has karma of 3
cotto_work (-Ofun)++
karma -Ofun
purl -ofun has karma of 1
dalek kudo/master: 2df2463 | (Solomon Foster)++ | t/spectest.data:
Turn on S32-array/kv.t.
20:17
chromatic Two warnings fixed, Coke. 20:21
NotFound parrot_nci_thunk_gen keeps failing for me in linux i386
Doesn't break the build, but fails.
cotto_work pmichaud, what's a good nqp-rx-based compiler that I can steal code and techniques from, ideally less complex than rakudo? 20:22
NotFound cotto_work: nqp-rx itself? 20:23
pmichaud I'm likely to write one in the next day or so 20:24
I want to get started on an nqp book
I was thinking of doing a lolcode compiler again, just because it's fun and demos most of the features
I could also do abc again 20:25
NotFound pmichaud: some people are telling that the squak tutorials are outdated.
pmichaud yes, they are.
somehow I've never been able to get enthused about sqaak as a language, though. 20:26
NotFound That discourages newcomers.
Coke so lets replace them with an lolcode tutorial. =-)
NotFound +1
purl 1
Coke as long as there is /a/ tutorial, that's fine.
pmichaud well, I was hoping for something a little less glib than lolcode, I think
NotFound As Coke said
Coke ok. tcl. =-)
pmichaud but on the plus side, lolcode would be fun (for me), so it's -Ofun 20:27
whereas I don't find squaak to be particularly -Ofun. That's not anything against squaak, for some reason it just never grabbed me.
Coke i will assume notfound was responding to something other than "tcl' on that.
darbelo <@Coke> as long as there is /a/ tutorial, that's fine.
NotFound Well, you can try a minimalistic tcl of sorts ;) 20:28
pmichaud tcl is somewhat weird, though. it's not along the same lines as a python, perl, or php
NotFound BTW, the ecmascript in languages need some love... or a big axe. 20:29
20:29 bluescreen joined
dalek rrot: r44473 | NotFound++ | trunk/compilers/imcc (3 files):
switch iSUBROUTINE static function declaration from WARN_UNUSED to IGNORABLE_RESULT because is used that way
20:30
rrot: r44474 | chromatic++ | branches/rm_cflags/compilers/imcc/symreg.c:
[IMCC] Removed a spurious cast from _mk_address() to avoid a compiler warning.
rrot: r44475 | chromatic++ | branches/rm_cflags/compilers/imcc (3 files):
[IMCC] Changed emit_open() and open emitter signature to take a C string, not a
rrot: r44476 | bacek++ | trunk/compilers/imcc (4 files):
Constify some bison/flex strings
rrot: r44477 | darbelo++ | branches/rm_cflags (2 files):
Make codetest happy.
PerlJam pmichaud: tcl is a specialist language like lisp, just with a different speciality. Python, Perl and PHP are almost the exact opposite. (IMHO) 20:31
pmichaud anyway, a new nqp-based language tutorial is very high on my todo list
cotto_work pmichaud, I'd love to see that.
bacek cotto_work, pmichaud, r44478 :) 20:32
PmTcl is very good tutorial :)
tewk Is it possible to print the address of a PMC from PIR? 20:35
bacek tewk, get_addr $P0 20:36
cotto_work assuming that the PMC doesn't override get_addr 20:37
bacek (not 100% true, but...)
cotto_work s/addr/pointer/
several do 20:38
20:39 mj41_ joined
dalek kudo/master: 9a1d71b | (Martin Berends)++ | src/glue/run.pir:
[glue/run.pir] when running as a main program, create $*PROGRAM_NAME and @*ARGS
20:41
20:42 kurahaupo1 joined
kthakore what is the file cloneflags.pasm? 20:43
yay! 20:44
one more demo works
:)
dalek rrot: r44478 | bacek++ | branches/ops_pct/compilers/opsc (5 files):
Resurrect OPSC
20:46
20:47 AndyA joined
chromatic Coke, here are more IMCC warnings squashed. 20:49
Coke chromatic++
kthakore what do I need to do print in parrot? 20:51
chromatic First, you must invent the universe. 20:52
Wait, that's "How do I make an apple pie in Parrot?"
kthakore oh
...
chromatic There's a print opcode and a say opcode. Do you need something more complex?
kthakore chromatic: nope
just want to print out a stderr saying file not found 20:53
chromatic Then you need printerr "File not found"
darbelo you want the printerr opcode.
kthakore ah ok 20:54
how do I die?
just die?
purl hmmm... just die is fine
japhb kthakore, there's a die opcode too
cotto_work what the bot said
NotFound chromatic: I want a cry opcode.
kthakore wow
hehe
NotFound Like say, but to stderr
japhb kthakore, yep, target^Wopcode heavy environment
kthakore the opcode die<0> was not found 20:55
Tene kthakore: it expects a string argument
kthakore ahhh
cotto_work yeah. Whiteknight would like that opcode's days to be numbered, if I read his blog correctly
Tene I'm planning on experimenting with removing the die opcode in my branch.
Isn't "say" not a real opcode anymore, or something?
some kind of magic fake opcode? 20:56
chromatic It's a real wooden boy now.
kthakore what am I miising? die filename.' not found' 20:57
Tene kthakore: are you hoping that . is a concat there?
PIR doesn't handle nesting ops like that.
chromatic die takes a string, not an expression that evaluates to a string
Tene $S0 = concat filename, ' not found'
die $S0
NotFound kthakore: remember, pir is a glorifier assembler, it doesn't evaluate expressions.
kthakore it says contcat expect \\n 20:58
ok
I see
dalek kudo/master: 795e94c | (Solomon Foster)++ | t/spectest.data:
Turn on S32-array/keys_values.t.
kudo/master: 72a95fc | (Solomon Foster)++ | src/core/Any-list.pm:
Quick lazy implementations of Any.keys and Any.values, plus matching protos.
NotFound Sometimes it can evaluate something, but when only constant values are involved.
kthakore Tene: unexpected COMMA, expecting '\\n' 21:00
???
dukeleto just starting using ack.vim, booya
cotto_work I don't know what that is, but I want it.
dukeleto cotto_work: ack integration in vim. it is sweet
Tene kthakore: is 'filename' a P register, or S? 21:01
Coke ack.vim is github.com/mileszs/ack.vim
dukeleto Coke++
kthakore .param string filenam
..
Coke google++
kthakore Tene: String?
Coke skynet=+
Tene kthakore: yeah
kthakore: dunno
kthakore s ok 21:02
Tene: let me pus hit
dukeleto Coke: i was ++'ing you because I was too lazy to give a link ;)
Tene I was sure I remembered something about 'say' being translated into a pair of 'print' ops, or something...
was that just imaginary? 21:03
NotFound Give a little link of your web to me...
Tene src/ops/io.ops still has 'op say', so I must have made that up.
dukeleto Tene: i think there is a say opcode now, last i remembered, but i could be wrong and/or crazy
NotFound There is
Coke I made 'say' a real opcode some time ago.
it used to be imcc magic. 21:04
dalek rrot: r44479 | chromatic++ | branches/rm_cflags/compilers/imcc (3 files):
[IMCC] Added empty do/while loop to definition of YYFREE to silence useless
Tene ah
NotFound I've been using it with my code generation tests.
Tene why was it changed?
because imcc is evil?
cotto_work We've got too much imcc magic. coke++
NotFound So I'm pretty sure.
Tene I was considering making die, exit, throw, etc. into imcc magic for a single super-exception-op 21:05
Coke chromatic: That just leaves the && error. danke.
s/error/warning/
Tene but if we hate that, nevermind
kthakore Tene: bit.ly/9DimYF
chromatic Let's save that magic for Lorito.
Coke rather than have things that look like opcodes, I would just add .hll_macros or imcc .directives 21:06
NotFound Too much imcc magic is evil specially if/when we're going towards replacing imcc. Forces to duplicate the magic in any candidate.
nopaste "tene" at 76.27.121.193 pasted "like this, kthakore" (6 lines) at nopaste.snit.ch/19779 21:07
Tene Ah, I can do that.
kthakore Tene: yeah ... doesn't work in my context 21:08
oh wait
concat!
purl it has been said that concat is "."
kthakore kok
Tene kthakore: isn't that what I said the first time?
13:57 <@Tene> $S0 = concat filename, ' not found'
13:57 <@Tene> die $S0
kthakore yeah I am stupid 21:09
NotFound BTW you can also use sprintf
kthakore NotFound: I need a cry opcode now 21:10
NotFound: you guys are evil :P
NotFound kthakore: I said you that maybe it will be better to prototype in some hll, remember? ;) 21:11
kthakore NotFound: lies!
all lies!
purl they can't ALL be lies!!!
kthakore purl: yes they can be ALL lies!!!
purl kthakore: sorry...
NotFound Isn't great to have a defensive bot? 21:12
Tene NotFound: he's trying to throw an exception, not just print, I think.
kthakore Tene: yes
if_null image, image_error
the crptic messages of parrot are no fun
no offense
NotFound Tene: yes, but sprintf may be useful to format more elaborate error messages before dying.
kthakore NotFound: I only need a simple fix now 21:13
Tene ahh, I just can't read. :)
NotFound kthakore: you can wait some months until some of the alternative pir compiler is ready and have better diagnostics ;) 21:14
kthakore NotFound: nah
NotFound: I am just playing around now 21:15
NotFound: not serios
yet
21:21 joeri joined
dalek kudo/master: 46bc261 | jonathan++ | t/spectest.data:
Turn on S02-magicals/progname.t, thanks to patch from mberends++.
21:22
kudo/master: 6373c3b | jonathan++ | t/spectest.data:
Another test file we can run again.
21:28
nopaste "tewk" at 155.98.68.48 pasted "closures, what am I doing wrong?" (45 lines) at nopaste.snit.ch/19780 21:29
Austin_away does newclosure supercede the capture_lex thing? 21:33
tewk Austin, I looked newclosure clones the sub and calls capture_lex on the clone. 21:40
Austin Okay, then the other obvious thing is that the vars are in the same register. Is it capturing the register, or its contents? 21:42
tewk The register shouldn't matter, I'm boxing the value and .lex only works with pmcs. 21:44
pmichaud, ping could you take a quick look at nopaste.snit.ch/19780, am I doing something stupid?
Austin Sure. But the capture_lex code points the cloned sub's outer_ctx as the current context, and you're changing that. 21:45
pmichaud tewk: what are you expecting to happen? 21:46
Austin 10, 20
pmichaud at the time you call each closure, pip is set to 20
tewk what austin said
pmichaud a closure doesn't snapshot values, it snapshots variables.
both closures are referring to the same variable. 21:47
in Perl, it'd be like:
my $pip = 20;
my $a = sub { print($pip); }
$pip = 30;
my $b = sub { print($pip); } 21:48
$a(); $b();
chromatic 30, 30
pmichaud both subs are referring to the same $pip
Austin If you leave the kone sub, then re-enter it, do you get a new $pip?
pmichaud yes 21:49
Austin *new = different
pmichaud actually, you get a new $pip whenever you enter
but the closures you created will refer to whatever $pip was in place at the time of the newclosure/capture_lex
Austin Is that lexical, or dynamic? 21:50
NotFound It captures the contexts chain, like a continuation, isn't it? 21:51
Austin If I take a closure, will that capture find_dynamic_lex stuff?
pmichaud find_dynamic_lex is strictly dynamic
there's no outer scoping involved
Austin Right.
And newclosure is ... ?
pmichaud newclosure performs a capture_lex and creates a clone
newclosure $P0, $P1 is the same as capture_lex $P1; $P0 = clone $P1 21:52
(or I might have those backwards)
tewk Ok I think I got it.
Austin So capture_lex is strictly lexical, not dynamic? 21:53
pmichaud it updates the target's outer_ctx to the current context of its outer_sub 21:54
I don't know what "strictly lexical" would mean here.
Austin Capturing nothing but the :outer lexicals
pmichaud all it does is set the target's outer_ctx
in that sense it "captures", yes. 21:55
Austin Okay, but what's an outer_ctx?
pmichaud an outer_ctx is the outer scope
i.e., it's the outer context for a sub
let's see if I can explain it this way.... 21:56
a context is an activation record, it contains the lexicals for a specific invocation of a sub
each context also has an outer context and a caller context 21:57
the caller context is the context of its immediate caller
the outer context is the context of the outer scope that was in effect at the time the inner context was created
Austin okay 21:58
pmichaud when we invoke a sub, we create a context and set its outer and caller contexts appropriately
capture_lex tells a sub which outer context to use whenever it's invoked
(it basically tells the sub to grab the current context of its outer sub)
if we clone a sub and capture_lex the clone, then invoking that clone will always use the outer context that was in effect at the time the clone was created, even if subsequent invocations end up capture_lex on the original sub 21:59
(because each capture_lex "resets" the sub to a new outer context) 22:00
Austin But we're only going to see the "different counters running in parallel" type behavior if the outer context changes in between captures, because that's what the captured subs are being pointed at. 22:01
pmichaud I don't follow "different counters running in parallel", but yes, it's if the outer context changes between captures. 22:02
Here's an example:
Austin $pip = 10, $pip= 20
pmichaud those are the same variable
here's an example...
Austin Because they're part of the outer context which hasn't changed, right? 22:03
pmichaud right
Austin (The "different counters" thing is the classic "Look, ma, perl5 closures!" example.)
pmichaud sub kone() { my $pip = 10; return sub { $pip } };
my $a = kone();
my $b = kone();
$a and $b end up referring to different $pip's 22:04
because each invocation of kone() creates a different $pip
Austin Because kone() exited between captures.
pmichaud not because it exited, because it was re-entered.
(recursion can also create new outer contexts.)
Austin Would it have been the same if kone() had yielded?
pmichaud *entering* a sub is what creates a new context, and a new lexpad. 22:05
Austin okay.
nopaste "tewk" at 155.98.68.48 pasted "binding verses assignment bites me again, I wish we made a clear distinction in parrot" (30 lines) at nopaste.snit.ch/19783 22:07
tewk pmichaud, thanks, I think this is the second or third time I've gotten confused on this same issue, when I see scheme code its clear, when I see PIR, I don't think clearly. 22:08
Tene tewk: so write a scheme compiler, like I did. ;)
pmichaud afk for a bit
plobsing_ can someone who knows a bit about PCC take a look at TT 1477? 22:11
I would like advice regarding which kind of aggregate would work best 22:12
chromatic In theory, you could build your own CallSignature (or is it CallContext now?) PMC. 22:13
Coke plobsing_: are you the nci thunks guy? 22:14
plobsing_ Coke: yes. what do you need to know
Coke why do we have src/nci/extra_thunks.c and src/extra_nci_thunks.c ?
plobsing_ chromatic: it seems like a perfect fit functionality-wise, but I'm wary of how volatile that code seems to be
Austin I'm with chromatic. If you're going to build a c data structure, build the one we want.
plobsing_ Coke: One is for a dynext library and one is for static inclusion.
Whiteknight plobsing_ (Re #1477): Yeah, best bet is probably to build a CallContext PMC 22:15
plobsing_ Coke: my intent is to be able to disable inclusion of all those thunks when you don't need them
chromatic One large flaw in the old PCC code was several different paths into PCC from C.
NotFound plobsing_: parrot_nci_thunk_gen fails foe me in i386
Whiteknight we might want a Parrot_ext_call_signature() function to make the call with the given signature
plobsing_ NotFound: nopaste?
purl nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) 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 or trac.parrot.org/parrot/browser/tru...nopaste.pl
chromatic Whiteknight, I think we already have that function (with a different name).
Whiteknight chromatic: I'm not so sure. At least, not in a way that isn't deprecated 22:16
almost all our calling functions that are externally-visible were deprecated
we do have Parrot_pcc_invoke_from_sig_object
but that's not an API function that I am aware of
er, not an extending interface API function
nopaste "NotFound" at 213.96.228.50 pasted "parrot_nci_thunk_gen fails" (5 lines) at nopaste.snit.ch/19784
NotFound Ugh, ugly formatting 22:17
Coke plobsing_: ok. in the mean time we have two super huge generated files that are nearly identical. that might warrant some docs. =-)
I am also getting those data_json issues in my build. 22:18
purl okay, Coke.
plobsing_ NotFound: hmmm...that looks like some of the bugs I dealt with on the tt362 branch
Coke purl, botdeath.
purl Coke: excuse me?
NotFound I think that it also happens in windows builds.
Coke plobsing_: that generated code is also not warnings-clean, btw.
(I'm disabling whatever warning that is in the rm_cflags branch for now.) 22:19
plobsing_ Coke: I can try to clean it if you give me the warnings, but I'm not sure what the priority on that should be
NotFound It fails the same way if calling the pbc instead of the fakecutable
dalek kudo/master: 2ab6b38 | jonathan++ | src/pmc/perl6multisub.pmc:
Fix .clone on multis.
22:20
kudo/master: abd99af | jonathan++ | src/core/Any-str.pm:
Add back sprintf.
plobsing_ NotFound: yeah, I think the pbc has bad counts because somehow ImageIOSize is giving bogus results.
kudo/master: d798874 | jonathan++ | t/spectest.data:
We now pass S32-str/sprintf.t again.
plobsing_ the bug is elsewhere, but the fault is still mine :-) 22:23
NotFound plobsing_: the problem is that the build doesn't break, so is easy to not see the fail. 22:25
Coke plobsing_: the build should not have any warnings. 22:37
plobsing_ Coke: I am willing to write docs (there's actually a whole stack I should write about freeze/thaw). Please suggest where I should mention this.
Coke plobsing_: I don't know. I only noticed they were identical because they both generated the exact same compiler warnings.
plobsing_ Coke: nopaste the warnings and I'll try to fix 'em 22:38
Coke plobsing_: will try to later. in branch they're squashed. (you should be seeing them on trunk) 22:40
22:52 AndyA joined
dalek kudo/master: 740ce02 | (Solomon Foster)++ | t/spectest.data:
Turn on S32-array/delete.t.
23:00
kudo/master: 6ffe11a | jonathan++ | src/metamodel/RoleToClassApplier.nqp:
Just rely on code thingies stringifying sanely; means Parrot subs just work in the role composer too.
23:12
kudo/master: 7ce3765 | jonathan++ | src/glue/dispatch.pir:
Fix up .+ and .* with multis.
kudo/master: 3be16bb | jonathan++ | t/spectest.data:
We now pass S12-methods/calling_sets.t again.
kudo/master: cf150fc | pmichaud++ | src/Perl6/Actions.pm:
Quoted lists should act like ('1', '2', '3') instead of '1', '2', '3'
23:18
kudo/master: b3fcd6c | pmichaud++ | (5 files):
Merge branch 'master' of git@github.com:rakudo/rakudo
kudo/master: a215ee5 | pmichaud++ | (3 files):
Merge branch 'master' of git@github.com:rakudo/rakudo
Coke plobsing_: you still around? 23:38
plobsing_ yes 23:39
Coke k. generating warnings.
plobsing_: feather.perl6.nl/~coke/er 23:43
dalek tracwiki: v4 | cotto++ | LoritoPrimitives 23:44
tracwiki: add some of the simpler smalltalk operations
tracwiki: trac.parrot.org/parrot/wiki/LoritoP...ction=diff
plobsing_ Coke: if I understand correctly it wants 'char *(* func_t)()' to be 'char *(* func_t)(void)' right? 23:49
dalek rrot: r44480 | coke++ | branches/rm_cflags/lib/Parrot/Configure/Compiler.pm:
Treat .mak files like makefiles for the purpose of genfile
rrot: r44481 | coke++ | branches/rm_cflags/config/auto/pmc.pm:
Don't tack on gcc-specific warning flags here...
Whiteknight plobsing_: the two *should* be equivalent. What compiler are we talking about?
plobsing_ Whiteknight: ask Coke 23:50
Whiteknight Coke?
purl hmmm... Coke is Will Coleda <mailto:will@coleda.com> or perpetually annoyed. or magical ticket robot or (if Diet), something that turns into formaldehyde in my blood. or getting those data_json issues in Coke's build.
Whiteknight well, Coke IS perpetually annoyed...
I think he was playing around with suncc 23:51
plobsing_ sun eh? do they make anything that doesn't hate me? 23:52
chromatic Do they make anything anymore? 23:53
23:54 kid51 joined
Whiteknight ZING! 23:56
If Oracle drops support for OpenSolaris, I propose we drop support for it too
because: screw OpenSolaris 23:57
darbelo I doubt they will, and even then. There's still (unopened) Solaris to think about.
Whiteknight damn fart crap. 23:58
darbelo And, it's Sun CC that you probably hate and not the OS.
Whiteknight no , I'm particularly unfond of the OS as well 23:59
dalek kudo/master: 852213b | (Solomon Foster)++ | t/spectest.data:
Turn on S32-hash/pairs.t and S32-list/grep.t.