Parrot 3.1.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Get GSoC ideas on wiki. Merge/review tewk/select. Evaluate attribute_defs, rip out in branch
Set by moderator on 1 March 2011.
00:04 bubaflub joined
bubaflub evening, #parrot 00:04
davidfetter oh hai 00:05
whiteknight plobsing: ping 00:12
plobsing whiteknight: pong 00:13
whiteknight plobsing: I'm writing up a that new API function to wrap an external pointer. I'm going to take an optional size. If a size is provided I should use a PtrBuf, otherwise a Ptr? 00:14
plobsing yes, that is the intended usage 00:15
whiteknight okay, also would it make sense to have an init_int on PtrBuf?
plobsing init_int is already used by Ptr to init with pointer
whiteknight oh, okay 00:16
plobsing there is another way to see this though
PtrBuf, when not provided with a size, will act just like a Ptr (but more memory-costly) 00:17
so from a certain consistency perspective, you may want to always return a PtrBuf
not sure if that is an important concern 00:18
whiteknight it isn't 00:20
basically, I want to give an embedder a way to pass an opaque pointer into Parrot, in a way that it can be retrieved but without Parrot trying to mess with it or do things with it that it shouldn't 00:21
plobsing then what you've described is exactly what should be done 00:22
whiteknight okay 00:23
What's the NCI signature to pass the get_pointer value from a PMC? v? 00:24
p?
plobsing p
whiteknight okay. and default.get_pointer returns SELF, which is why shockwave was able to use that for his one use 00:25
plobsing yes, it will "work". in the "doesn't obviously break" sense. not in the "actually works" sense.
whiteknight right 00:32
cotto_work Perhaps we need more obvious failure modes.
plobsing the hidden failure is in a spurious "convenience" vtable on default.pmc
default shouldn't implement get_pointer 00:33
cotto_work +1
whiteknight or should with a "You done failz" exception
default has to provide all vtables. It's the particular behavior that sucks
cotto_work whiteknight: why does it have to? 00:34
nm
It can "provide" in the sense of "throwing an exception"
plobsing OK, default *does* implement all vtables. so rather, default should provide a non-default implementaiton 00:35
pmc2c will provide default, throwing implementations
whiteknight right. "return SELF" is probably not the right thing to do there 00:36
"return NULL" is probably better
throw exception might be best
I shudder to think about all the awful places in Parrot that rely on the current behavior
cotto_work Yeah. Turning over that rock will almost certainly reveal all kinds of ugly things. 00:37
ttbot Parrot 7338a80a i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/47640 00:54
whiteknight plobsing: Can we add an NCI signature item to pass a ParrotInterpreter PMC instead of a raw Interp* like "J" does? 00:56
plobsing getinterp 00:57
whiteknight something like "j" could pass that PMC, which would be very good for embedders
getinterp?
plobsing its an op
whiteknight right, but how does that help inside an embedder's NCI callback?
oh, you're saying to use getinterp and pass it as P
plobsing yes
whiteknight gotcha. I'm overthinking his 00:58
plobsing exactly that
whiteknight this
cotto_work plobsing: is your preference for the Select PMC to have it live in core but as a dynpmc? 01:01
plobsing yes, that's a much more preferable situation 01:02
cotto_work plobsing: if you were writing it from scratch, how would you implement it? 01:04
dynop, dynpmc, other
plobsing I haven't used select or async stuff much, so I'm not sure I'm the best person to ask.
cotto_work ok
plobsing But I think this somewhat ties in with our threading debacle. 01:05
cotto_work me neither, which is why I ask
plobsing I mean, we sort of have a scheduler for async-type stuff
and it would be great if it tied into that infrastructure (if it still works)
cotto_work tewk: ping
plobsing but this works *now* which is a pretty strong trump card 01:06
01:06 davidfetter left
cotto_work decommutes 01:07
whiteknight The more I look at it, the more I think the scheduler, the threads, and all related infrastructure really needs to just get trashed and rewritten 01:14
events, timers, all that crap
plobsing whiteknight: well volunteered! 01:15
whiteknight trust me, I am volunteering
last time I volunteered to rip out threads, there was lukewarm reception at best 01:16
and the time before that was no better
plobsing oh no. you don't get to do the ripping out. you get to do the rewritting. 01:18
and then the rerewritting after the bikeshedding by armchair architects
whiteknight blah 01:21
01:22 cognominal joined
plobsing reclines in armchair laughing maniacally 01:23
01:25 kid51 joined 01:26 lucian_ left 01:30 shockwave joined
shockwave whiteknight: Thanks for commiting those changes related to passing around void*'s. 01:31
whiteknight shockwave: no problem. It's a useful thing to have
tewk cotto_work: pong 01:32
kid51 ~~
shockwave whiteknight: You mentioned that I can start using them right away. Which branch should I download?
whiteknight master
kid51 re Select: 01:33
shockwave Thanks
kid51 notes that in the not too distant past, we had a config step, auto::aio
But since nothing was making use of it, we junked it. 01:34
whiteknight kid51: it is the circle of life
kid51 which is part of why I want a coherent rationale presented for any additions to core in that area 01:35
... or, for that matter, in any other area
I hope we're past the stage of "It would be really cool if Parrot had X"
Any new features, I think we should ask: How does that make the performance of our HLL clients better? 01:36
(and, hopefully, have some HLL people concur)
01:36 dalek joined
kid51 dalek ping 01:37
Hmm, I see we have a test file with no tests! 01:38
t/compilers/opsc/03-past-macros.t
plobsing it is the ghost of macros past 01:39
kid51 actually, inspecting it, I see its the ghost of macro tests yet to come
plobsing future-macros.t then?
cotto tewk, do you mind making your Select PMC a dynpmc? 01:40
kid51 Unfortunately, the string 'past' is overloaded for us. 01:41
plobsing I guess the time for debating that has passed, but I still can't get past that. 01:42
01:42 ShaneC left
plobsing kid51: do you have a verdict on infnan2? 01:43
kid51 I should have within 2 hours, but all signs are good.
I'm trying 4 different combinations on darwin/ppc
w/wout --optimize X cc=gcc vs cc=g++
tewk cotto: I'm not really interested in doing it, I don't mind if someone else does. 01:44
dalek rrot: 9af067f | bacek++ | / (2 files):
Export PMC boxing functions
ttbot Parrot 9af067f2 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/47774 01:45
kid51 plobsing: Since you've got numbers ops on your mind, have you any thoughts about either TT #1978 or TT #1930? 01:46
dalek rtcl: 4b95281 | bacek++ | src/pmc/tclint.pmc:
Add workaround for bug #1811.

It can be actually proper fix due MMD distance for divide(Int, Default) vs divide(TclInt, TclFloat) can be same.
Requiares very recent parrot with exported PMC boxing functions.
01:48
plobsing kid51: sorry, no clue. I'm not really a floating point pro. I just know that some OSes throw big nasty SIGFPE errors and dump core when you try to divide by zero, so we should try to avoid that (which is why I was doing infnan in the first place). 01:50
01:51 ShaneC joined
whiteknight I'm glad those boxing functions are being useful. 01:51
I can't beleive we went so long without having functions to do that in a single place
cotto tewk, ok. I'd like it to be a dynpmc before it gets merged.
kid51 taptinder reports build errot in src/embed/api.c 01:52
whiteknight +1 on dynpmc
02:00 whiteknight left
kid51 Is there any branch in need of a basic test on linux/i386 tonight? 02:13
Was the opsc_full_parse branch merged? 02:15
Appears so. 02:16
plobsing cotto: I've moved select over to dynpmc in branch 02:17
cotto plobsing, thanks 02:18
dalek rrot/tewk/select: 33afcc1 | plobsing++ | / (6 files):
convert Select to dynpmc
02:19
02:24 TimToady joined 02:25 sorear joined
kid51 plobsing: TT #1813 is all yours 02:32
02:33 kid51 left
dalek rrot: cc69a53 | plobsing++ | / (7 files):
Merge branch 'infnan2'
02:45
ttbot Parrot cc69a530 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/47929 02:52
dalek TT #1813 closed by plobsing++: t/op/infnan.t: failures on Darwin/PPC 02:54
TT #1813: trac.parrot.org/parrot/ticket/1813
TT #966 closed by bacek++: segfault in Parrot_string_mark
TT #966: trac.parrot.org/parrot/ticket/966
cotto bacek++ 02:55
dalek rrot: b65a8ba | bacek++ | src/embed/api.c:
Fix braino in api_wrap/unwrap_pointer.
02:56
plobsing C++ type system actually caught a mistake for once 02:57
colour me surprised
shockwave In NCI, what the difference between p and P, for the signature string? 03:00
plobsing P passes the PMC through, p interprets the PMC as a pointer wrapper, fetching the pointer value with pmc.get_pointer() 03:01
P => PMC*, p => void*
shockwave plobsing: Thanks 03:02
cotto plobsing, are you fixing that? 03:04
dalek rrot: 54d5026 | plobsing++ | src/embed/api.c:
[codetest] correct format of C function doc =item
03:05
rrot: edc686b | plobsing++ | src/embed/api.c:
cuddled else
plobsing cotto: fixing what?
bacek_at_work cotto, it's fixed in b65a8ba 03:08
cotto the thing that bacek just fixed
shockwave whiteknight just added a function to the embeed API called 'Parrot_api_wrap_pointer', which creates a PMC for wrapping a void*. 03:16
plobsing shockwave: yes. that is suitable for use as 'p'-type argument 03:17
many PMC types are not really at all suitable for this. For example, Integer, as you found out. 03:18
shockwave if I were to call that callback like so: cb($P0, "foo") The wrapped void* is what should be getting passed, right?
plobsing 'P'-type arguments are more for passing objects originating from Parrot which will most likely not get dereferenced.
shockwave: it depends on what you want to happen. if you want the callback to get the void*, then yes, pass the wrapped void* as a 'p'-arg 03:20
shockwave This is the prototype of the C callback, which it *is* getting called: void Web_print(void* data, const char* msg)
The text param is passed correctly, but the program crashes when I try to dereference the void*. 03:21
plobsing have you pulled the fix commited in b65a8ba? the initial implementation contained a pretty big error. 03:22
shockwave Is that in master? 03:23
plobsing yes
shockwave Ok, I'll download the update and rebuild parrot.
plobsing sorry for that inconvenience 03:24
shockwave No sweat. 03:25
03:34 bubaflub left
shockwave plobsing: Beautiful! After I downloaded the fix, I can access the pointer now. This is awesome. 03:40
plobsing \\o/
03:49 shockwave left, ShaneC left
dalek TT #691 closed by cotto++: installed pbc_to_exe can't find config.fpmc. 04:00
TT #691: trac.parrot.org/parrot/ticket/691
TT #1672 closed by cotto++: TT #389 fix introduced regression with globals.
TT #1672: trac.parrot.org/parrot/ticket/1672
rrot: db77547 | bacek++ | lib/Parrot/Pmc2c/PCCMETHOD.pm:
Implement :manual_wb for METHODs. Closes #2018.
04:12
bacek_at_work trac.parrot.org/parrot/report/1 04:16
Results (1 - 50 of 499)
Less than 500 open tickets :)
dalek TT #2018 closed by bacek++: Improve pmc2c to support :manual_wb flag.
TT #2018: trac.parrot.org/parrot/ticket/2018
TT #2006 closed by bacek++: Problem compiling Rakudo's Test.pm on Debian x64
TT #2006: trac.parrot.org/parrot/ticket/2006
TT #1948 closed by bacek++: Configure with --no-line-directives still produces .c files filled with ...
TT #1948: trac.parrot.org/parrot/ticket/1948
cotto bacek_at_work, yay! 04:18
04:34 sigue left 04:39 JimmyZ joined 04:47 sigue joined
dalek TT #2036 created by jimmy++: rakudo runs tests failed on windows XP 04:49
TT #2036: trac.parrot.org/parrot/ticket/2036
cotto hi JimmyZ 04:57
JimmyZ, I think icu is a hard requirement for Rakudo. Have you checked about that? 04:58
plobsing rakudo requires ICU if I am not mistaken. perhaps it should detect that it is not present and warn or die during configure/build. 04:59
err... what cotto said
JimmyZ cotto: I am not sure, but it is not a hard requirement before unicode refactor merge. 05:08
cotto: and it doesn't fail on linux 05:09
cotto Their readme says it's not a hard requirement 05:10
05:10 JimmyZ left 05:11 JimmyZ joined
JimmyZ cotto: i think it's a retrogression on windows. 05:13
cotto JimmyZ, what makes you think that it's a parrot bug rather than rakudo? 05:14
(I'm not saying that I know either way)
JimmyZ cotto: there is a function in parrot is NYI, just throw 'Unicode rindex not implemented', I am not sure why it is not called on linux. 05:15
cotto: but it's called on windows :( 05:16
cotto that's a good indicator 05:17
05:18 JimmyZ_ joined
dalek rrot/mmd-cache-pmc: 18e8849 | cotto++ | / (4 files):
make interp->op_mmd_cache a PMC
05:18
05:22 JimmyZ left, JimmyZ_ is now known as JimmyZ
cotto Can someone with a speedy machine test that branch with Rakudo's spectest? It should be fine but I want to be sure. 05:24
JimmyZ can't run rakudo spectest on windows unless somebody fix the retrogression on windows 05:26
cotto heh
sneaky
05:36 JimmyZ_ joined 05:39 JimmyZ left, JimmyZ_ is now known as JimmyZ
bacek_at_work cotto, you can't remove mmd_destroy function without deprecation notice. 05:43
cotto I guess. 05:44
I can gut it though.
or make it a macro
thanks for catching that 05:45
bacek_at_work Just cut guts and put deprecation notice. 05:50
cotto bacek_at_work, yes 05:51
though I may have somehow broken the rakudo build
actually, that's just marked PARROT_EXPORT. Only PARROT_API functions need a deprecation cycle. 05:53
05:58 Kulag left, Kulag joined
cotto partcl looks good with the branch 06:01
06:05 Kulag left, Kulag joined
cotto rakudo build still breaks mysteriously 06:05
Ah. They're using it. 06:06
dalek rrot/mmd-cache-pmc: a5571e9 | cotto++ | include/parrot/multidispatch.h:
add noop macro for Parrot_mmd_cache_destroy for backwards compatibility
06:19
06:19 rurban_ joined 06:22 rurban left, rurban_ is now known as rurban
bacek_at_work cotto, bad commit :) 06:24
ah, no. Actually it will work.
cotto rakudo's still broken though 06:29
bacek_at_work just leave old function. 06:31
cotto that's an option
I'm rebuilding and will dig in once it breaks again
06:40 shockwave joined
cotto Hmmm. It works now. 06:40
shockwave What is the proper way to return a value from a called C function to the calling PIR sub? 06:41
the called C function is done via NCI
cotto bacek_at_work, why would VTABLE_mark in Parrot_mmd_cache_mark cause a Rakudo build failure but Parrot_gc_mark_PMC_alive work? 06:44
shockwave, have you looked at the nci tests? Several of them do that. 06:45
bacek_at_work cotto, because VTABLE_mark mark only PMC children, not PMC itself.
And VTABLE_mark shouldn't be used outside of GC implementation at all 06:46
cotto bacek_at_work, thanks for the lesson 06:47
dalek rrot/mmd-cache-pmc: 259ae36 | cotto++ | src/multidispatch.c:
fix Parrot_mmd_cache_mark
06:49
shockwave cotto: will do. Thanks. 06:58
07:01 mtk left 07:03 theory left 07:06 mtk joined 07:11 ShaneC joined 07:23 Kulag left, Kulag joined
tadzik morning 07:36
07:46 Kulag left 08:13 lucian joined 08:33 lucian left 08:35 fperrad joined 08:37 fperrad_ joined 08:42 fperrad left 08:45 fperrad_ is now known as fperrad 08:57 sigue left 09:03 sigue joined 09:06 fperrad left 09:10 arnsholt_ joined, arnsholt left, fperrad joined 09:25 pjcj left 09:30 pjcj joined 09:36 sigue left, sigue joined
bacek ~~ 09:38
09:44 JimmyZ left 09:48 plobsing_ joined 09:52 plobsing left 10:00 contingencyplan left 10:12 particle left 10:15 cotto left 10:20 Hackbinary|2 left, Hackbinary left 10:32 plobsing joined 10:35 plobsing_ left
shockwave Hello. 10:38
I've been able to call C functions using PIR NCI code. 10:39
I have been able to send void* and text to the C function, as well as receive text and ints.
I mostly understand the process, but there is one signature that is failing, and I wonder what I could be doing wrong. 10:40
The PIR signature looks like this: vpti -- and the C like so: void func(void* data, const char* msg, int type) 10:41
thanks 10:42
On the above PIR signature, if I remove the 'i' and then remove the corresponding C int param, then the function works. 10:43
So, somehow adding that extra int param make the thing not work. 10:44
11:11 lucian joined
moritz is the destroy vtable actually called by the GC? 11:33
jnthn I hpoe so...otherwise things ain't going to be freeing memory. :)
moritz I just tried to override :vtable('destroy') in Mu.pir, and have no indicaton that is' even being called :/ 11:35
jnthn PIR overrides actually getting called is a separate thing from the vtable itself getting called. 11:37
moritz uhm... why?
jnthn See object.pmc - it has code to do the delegation to a PIR override.
Thing is, running any code in the destroy could lead to the object being brought back to life again. 11:38
I'm not sure how well that situation would be handled. 11:39
It's a trickyish area.
moritz but that'st true for C code too, no?
jnthn Sure, but I suspect that there's not a situation where we actually do that. 11:40
I don't know that there's a way to tell the GC "oh, this object may live on, don't free the PMC header"
11:43 particle joined
bacek jnthn, there is such way. 11:55
something like 'abort("OH SHIT, WE DID IT WRONG") 11:56
:)
jnthn :)
11:57 Tene left 12:00 cotto joined 12:09 bluescreen joined
shockwave Hello 12:29
I have been able to send void* and text to the C function, as well as receive text and ints.
I mostly understand the process, but there is one signature that is failing, and I wonder what I could be doing wrong. 12:30
The PIR signature looks like this: vpti -- and the C like so: void func(void* data, const char* msg, int type)
On the above PIR signature, if I remove the 'i' and then remove the corresponding C int param, then the function works.
So, somehow adding that extra int param make the thing not work.
Is one able to mix and match these letters freely, or is there a specific/finite way of arranging them? 12:31
12:32 Hackbinary joined 12:35 PacoLinux_ joined 12:52 lucian left 12:53 PacoLinux_ left, PacoLinux_ joined 13:05 PacoLinux_ left 13:11 mtk left 13:12 mtk joined 13:16 mtk left 13:20 mtk joined 13:21 Kulag joined
Coke that mathop.test is still running. now at over 5G used. 13:34
13:34 whiteknight joined
Coke kills the spectest run, as it's clearly gotten worse in the past few years. 13:34
whiteknight Coke: we are going to need to valgrind partcl eventually, to figure out where the bottlenecks are 13:36
13:36 Tene joined
whiteknight because most other applications have gotten (or seem to have gotten) quicker in the past few months 13:36
Coke whiteknight: well, hopefully we can keep partcl from getting broken, which will make it at least possible to track when things get slower. 13:37
msg bacek: your change seems to break t/cmd_expr.t (I had hoped I'd just get passing TODOs, but it dies early.) 13:38
aloha OK. I'll deliver the message.
plobsing shockwave: there is a fixed set of NCI signatures built-in to Parrot. There is a tool to add more as a dynamically loadable library. There is also optional support for libffi (probed in Configure.pl, used if available). 13:39
Coke bacek - you mean a REALLY recent parrot? ;) 13:42
dalek rtcl: cefe45f | coke++ | Configure.pl:
Change diagnostic message to be more user-friendly
sella: 0ebfdcd | Whiteknight++ | s (2 files):
translate test library to winxed
13:48
sella: 319270b | Whiteknight++ | src/core/Error.winxed:
+fixes to spelling and formatting
sella: f042785 | Whiteknight++ | / (8 files):
translate tap_harness to winxed
sella: c9ab2bc | Whiteknight++ | src/core/Rosella.winxed:
refactor the Rosella.build function. Add in a new Rosella.construct function, which calls the constructor with the same name as the class
sella: 83bad94 | Whiteknight++ | src/core/Rosella.winxed:
fix
13:49
sella: 306c394 | Whiteknight++ | src/xunit/Standalone.nqp:
delete old, empty Standalone.nqp file
sella: 115803d | Whiteknight++ | src/xunit/ (4 files):
partial translation of the xunit library. it's bigger than the rest
Coke msg bacek yay, it worked, after updated parrot. (need to fix the config check to actually FORCE the check instead of just letting anything through.) 13:56
aloha OK. I'll deliver the message.
dalek rtcl: 5a4d0d5 | coke++ | t/cmd_expr.t:
Un todo these tests that bacek++ got working again.
14:04
14:08 plobsing left 14:19 rurban_ joined
dalek tracwiki: v18 | coke++ | ListOfPlatforms 14:21
tracwiki: trac.parrot.org/parrot/wiki/ListOfP...ction=diff
14:22 rurban left, rurban_ is now known as rurban 14:32 x3nU joined
Coke bacek++ # see lots more of closed tickets in parrot queue. 14:33
14:34 JimmyZ joined
moritz www.mirandabanda.org/cogblog/2011/0...s-you-can/ maybe this is of interest to some folks here 14:47
NotFound I'm glad to see in Rosella winxed code intended to call and be called from nqp. Parrot language interorperability in action :) 15:17
dalek rrot: 18e8849 | cotto++ | / (4 files):
make interp->op_mmd_cache a PMC
15:18
rrot: a5571e9 | cotto++ | include/parrot/multidispatch.h:
add noop macro for Parrot_mmd_cache_destroy for backwards compatibility
rrot: 259ae36 | cotto++ | src/multidispatch.c:
fix Parrot_mmd_cache_mark
rrot: ecc49a6 | cotto++ | / (4 files):
Merge branch 'mmd-cache-pmc'
jnthn cotto: Glad that cache is finally getting imrpoved. :) 15:21
cotto: oh, the key bit doesn't seem to have changed much though. 15:22
15:22 plobsing joined
cotto jnthn, what were you hoping for? 15:24
mmd_cache_key_from_types just makes a string 15:25
cotto heads off to $dayjob 15:26
jnthn cotto: Yeah, GC allocation for every cache lookup is LTA.
ttbot Parrot ecc49a66 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/48686 15:27
dalek TT #2011 closed by cotto++: Replace MMD_cache with Hash PMC.
TT #2011: trac.parrot.org/parrot/ticket/2011
whiteknight NotFound: yes, language interoperability is a key design goal of Rosella 15:30
15:31 theory joined
NotFound whiteknight: aye, but I enjoy more seeing working code than plans and goals. 15:33
Specially when it's winxed code ;) 15:34
JimmyZ would like see more parrot speedy improvement. 15:36
15:36 lucian joined
whiteknight NotFound: does winxed support multiple return values from functions? 15:43
NotFound whiteknight: yes, but there is no syntax for the caller side.
whiteknight okay 15:44
NotFound Just use a comma delimited list of values.
whiteknight oh, so "foo, bar, baz = func()"? 15:45
NotFound No, I mean in the return side. 15:46
whiteknight okay, so I can't actually call a function with multiple return values yet?
NotFound That is. You can write the function, but you can't effectively use it. 15:47
plobsing suspects "foo, bar, bazz = func()" syntax is ambiguous with existing syntax
whiteknight yeah, I would suspect a conflict there
NotFound I've been able yet to figure a syntax and a semantic that makes sense.
I've not
JimmyZ (foo, bar, bazz) = func() ? 15:48
NotFound JimmyZ: hard to pase unambiguously.
s/pase/parse 15:49
JimmyZ or just like PHP list(foo, bar, bazz) = func()
plobsing NotFound: we don't yet have lvalue brackets do we?
whiteknight MATLAB uses [a, b,c] = func()
plobsing whiteknight: I think we call all agree to do better than matlab
moritz and Mathematica uses {a, b, c} = Func[] :-)
NotFound plobsing: brackets are already too overloaded.
whiteknight plobsing: in almost all cases, yes. But it does have built-in handling of vectorized assignment operations, and does so in a way that wouldn't create a parse conflict in winxed 15:50
properly implementing vectorized assigns was the single biggest roadblock for my work on matrixy 15:51
15:53 dod joined
whiteknight of course, that was back before the PCC refactors, and CallContext. It would be much easier now 15:54
NotFound I'm thinking about a convoluted way that may work: calling an inner function with the results.
Just an idea, not a syntax. 15:55
whiteknight that's not really optimal, considering PIR handles it directly 15:56
hardest part is coming up with a syntax
NotFound Yes, but pir is not expressions oriented as Winxed is. 15:57
whiteknight Actually, you could skip the PIR syntax entirely, and build the CallContext yourself, and push in values
plobsing multi-return syntax should also be available for yield(). coros can accept arguments on resumption. 15:58
NotFound whiteknight: there is some PIR example or that?
plobsing: haven't tested that, but should work,
whiteknight NotFound: probably not. The set_args opcode builds a CallContext. I'm sure we could duplicate that logic in PIR
NotFound yield and return implementations share almost all. 15:59
plobsing NotFound: no, winxed does not support returns from yield. 'var a = yield()' 16:01
NotFound plobsing: ah, you mean returning to the yield.
Does pir support that? 16:02
16:02 hercynium joined
cotto_work jnthn: were you commenting on one of the things I didn't change, then? 16:02
plobsing NotFound: it does now. PCC has supported it since forever, but you had to use get_params.
now, sequences of .param statements after the yield() achieve the same result.
NotFound Amazing. 16:03
plobsing A possible use-case I can see would be an asynchrony framework like POE 16:04
but built from coros
dngor Reflex gets around it in perl 5 by using emit() instead of return. 16:06
Reflex::Callback::Promise collects emitted messages into a queue that the caller can consume using synchronous syntax. The queue waits for a new message if it's empty. 16:07
whiteknight plobsing: really? you can take params after a .yeild? Was that part of your IMCC grammar change?
I've wanted that feature for a long time
moritz dngor: sounds a bit like gather/take in Perl 6 16:08
NotFound whiteknight: how can we call a sub with a signature object? Using pasm syntax? 16:09
16:10 lucian left
whiteknight NotFound: at the moment, I guess we can't. invokecc opcode doesn't let you specify a CallContext like it should 16:10
set_params sets that internally
we really need to refactor that 16:11
set_params should return a CallContext, and we should pass that in to invokecc
could be some savings there, if we have an optimizer smart enough to reuse those CallContext objects 16:12
but that's neither here nor there
NotFound We also don't have yet a :signature modifier, do we?
16:12 plobsing left
whiteknight NotFound: we have :call_sig on the callee side, but not the caller side 16:13
that's also something we should implement
I could probably have that added by next week if you need it
NotFound I'm just ruminating possible ways to enable such kind of calls right now. 16:14
16:16 lucian joined
whiteknight Once you pick a syntax, you can just translate the call down into a PIR call with (a,b,c) = foo() 16:18
16:18 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner
jnthn cotto_work: Yes, I thought you were going to do a change along those lines. :-) 16:22
Then I saw "oh, just wrapping in a PMC"
cotto_work jnthn: I'm open to suggestions. Do you think using an INTVAL key would be feasible?
jnthn Ah well, the abstraction is still in place if we want to do something smarter in the future.
cotto_work: I wrote a much smarter one for nqpclr that didn't get ported to anywhere in Parrot yet. 16:23
cotto_work jnthn: where does it live? 16:24
jnthn just finding it :)
moritz ETOOMANYREPOS
jnthn cotto_work: github.com/jnthn/6model/blob/maste...chCache.cs 16:25
cotto_work jnthn: thanks. 16:29
16:38 JimmyZ left 16:39 bluescreen left, lucian left 16:43 dmalcolm joined
NotFound whiteknight: :call_sig in the caller seems to work. 16:53
16:58 contingencyplan joined
whiteknight NotFound: it does? There are no tests for it 17:03
nopaste "NotFound" at 192.168.1.3 pasted "call_sig in results" (19 lines) at nopaste.snit.ch/35187 17:05
whiteknight oh, okay. yes :call_sig works on the callee side, and a return is a call 17:07
so that makes sense
would love to see a test for it get written
17:14 plobsing joined
cotto_work hi plobsing 17:26
nopaste "NotFound" at 192.168.1.3 pasted "call_sig in results - experimental winxed predef" (13 lines) at nopaste.snit.ch/35191 17:28
NotFound whiteknight: do you like that as a quick provisional solution? 17:29
17:31 bluescreen joined
whiteknight NotFound: We don't need anything provisional. I'm not in a rush for multi-returns 17:31
it's not bad, but how do you decide when to wrap up the values in a CallContext? 17:32
oh wait, I see. invoke() wraps it
NotFound Is just to enable a PIR feature that is no currently accesible, that's all.
17:33 jsut_ left
whiteknight yes, that works very well 17:33
17:33 jsut joined
NotFound Not in a clean and short way, but accesible at least. 17:33
whiteknight like I said, a lot of that code needs to be refactored at the Parrot/IMCC level. Once we do that we should have better access 17:34
NotFound Ok, I'll commit it in a few minutes.
Coke I wonder when TT #1672 was fixed. 17:35
cotto_work Coke: would it be useful to bisect it? 17:37
Coke cotto_work: only from a morbid curiousity standpoint.
cotto_work so no
Coke I just removed the ugly hack I had introduced into partcl-old to workaround it. 17:38
dalek rtcl: 9a5ce3f | coke++ | / (5 files):
Ok to put subs directly in the NameSpace again.
17:41
rrot: 872e2cc | cotto++ | src/multidispatch.c:
add cast to fix C++ build
17:48
Coke 9.480 / 0.028 17:52
aloha 338.571428571429
Coke (# of times slower to just load the tcltest.tcl test file and not do anything between partcl-old & tclsh) 17:53
dalek nxed: r843 | NotFound++ | trunk/winxedst1.winxed:
new predef 'invoke' to allow use of multi return values
18:08
Coke Hurm. I wonder how far I could get in terms of replacing raw PIR in partcl-old with NQP subs taken from partcl-nqp 18:09
seen pmichaud ? 18:11
aloha Sorry, I haven't seen pmichaud .
Coke seen pmichaud?
aloha pmichaud was last seen in #perl6 1 days 23 hours ago saying "good afternoon, #perl6".
cotto_work msg bacek aloha needs to be smarter about trimming whitespace. asking aloha "seen pmichaud ?" confuses it. 18:12
aloha OK. I'll deliver the message.
dalek nxed: r844 | NotFound++ | trunk/winxedst1.winxed:
refactor a bit print, say and cry predefs
18:14
nxed: r845 | NotFound++ | trunk/pir/winxed_compiler.pir:
update installable compiler
18:20
18:26 bluescreen left 18:41 bluescreen joined
cotto_work aloha: seen aloha 18:48
aloha cotto_work: aloha was last seen in #perl6 2 days 19 hours ago joining the channel.
cotto_work aloha: seen aloha
aloha cotto_work: aloha was last seen in #perl6 2 days 19 hours ago joining the channel.
cotto_work also odd 18:49
Coke seen aloha is "that's me!" 18:53
aloha Sorry, I haven't seen aloha is "that's me!".
Coke no, seen aloha is "that's me!"
seen aloha?
aloha aloha was last seen in #perl6 2 days 19 hours ago joining the channel.
Coke ah well. ;)
dalek rrot: 0cf3ffa | (Gerd Pokorra)++ | compilers/data_json/JSON.nqp:
add the JSON values "true" and "false"
18:59
19:04 bluescreen left 19:12 jan left 19:18 bluescreen joined
dalek rrot/gerd/JSON_nqp: 45e5941 | (Gerd Pokorra)++ | t/compilers/data_json/to_parrot.t:
look to an other error message
19:36
19:41 bluescreen left
dalek rrot/gerd/JSON_nqp: 7ac0362 | (Gerd Pokorra)++ | / (70 files):
Merge branch 'master' into gerd/JSON_nqp
19:48
19:53 bluescreen joined
cotto_work msg gerd Are you planning on merging gerd/JSON_nqp? 19:53
aloha OK. I'll deliver the message.
20:56 bluescreen left 21:01 plobsing left
dalek sella: d7b9855 | Whiteknight++ | / (9 files):
translate the query library over to winxed. Update tests to work with it, since winxed attributes aren't prefixed with a sigil. This means the NQP version of this library is broken
21:01
sella: b14d1db | Whiteknight++ | s (6 files):
remove query/*.nqp files. Update setup.nqp so we don't try to build that library. Query is winxed-only
tadzik ~~
sella: cbdacf1 | Whiteknight++ | s (32 files):
move old NQP files into a separate directory. I'll keep them around, but they won't be changing much
sella: a865bb5 | Whiteknight++ | s (13 files):
finish initial (untested) translation of xunit library to winxed. Merge into the test library. Several changes, big and small, from the NQP versions
sella: 612bff2 | Whiteknight++ | src/test/ (4 files):
several fixes so we build and can run some dummy tests
21:03 plobsing joined 21:08 davidfetter joined 21:25 plobsing left 21:28 whiteknight left 21:45 hercynium left
dalek p/lexical-setting: a32c5f9 | jonathan++ | src/NQP/Compiler.pm:
Make sure if we try to use a setting twice it'll work out.
22:00
bacek_at_work ~~ 22:13
Coke bacek_at_work: ~~ 22:16
bacek_at_work aloha, Coke
dalek nxed: r846 | NotFound++ | trunk/winxedst1.winxed:
refactor Declare statements to avoid the mix between simple variable and array
22:18
22:20 rurban_ joined
bacek_at_work Coke, how much of mathops.test passed for you before you killed it? 22:22
22:23 elmex left 22:24 elmex joined, rurban left, rurban_ is now known as rurban 22:29 mtk left 22:31 mrwall-e joined
bacek_at_work Coke, mathops.test is stablilized on 357M of memory. Running mathop-7.* tests now. 22:31
22:35 mtk joined
Coke bacek_at_work: did you change something? 22:36
bacek_at_work nope
Coke, are you running optimized build of parrot? 22:37
GC GMS in unoptimized build has a lot of internal validations switched on
Coke bacek_at_work: something in the 20s.
I pretty much always run optimized.
bacek_at_work Coke, ok. it's on mathop-7.33 on my box now. We'll see how it goes 22:38
Coke I also reverted the workaround for #378 that you pointed out was fixed, which should help, but only slightly. 22:46
bacek_at_work ok 22:49
22:52 lucian joined 22:58 plobsing joined 23:00 lucian_ joined 23:02 lucian left 23:17 davidfetter left 23:21 Andy left 23:29 plobsing left
shockwave Hello 23:43
23:44 whiteknight joined
shockwave It seems some NCI C function signatures do not work. 23:44
For Example, I can't load a function with this signature: tptt
Maybe it's something I'm doing. 23:45
23:45 fperrad left
PerlJam shockwave: last I looked they needed to be precompiled into parrot. That one probably isn't. 23:45
shockwave PerlJam: Sorry, are you saying the signatures cannot be arbitrary, but that there is an specific, finite amount of acceptable signatures? 23:46
PerlJam shockwave: I am. (but my information is dated. I haven't played with parrot NCI in a long while)
23:47 mrwall-e left
shockwave PerlJam: I'm gonna have to agree with you. There were other signatures I tried and they failed. 23:47
PerlJam shockwave: That state was temporary and there was some work to make arbitrary signatures usable. I don't know what became of it though
23:47 mrwall-e joined
PerlJam shockwave: See src/nci/extra_thunks.nci 23:54
jnthn iiuc, if you have libffi available at Parrot's configure-time it will be used to make any signatures available. 23:57
shockwave Am I able to simple add a signature to extra_thunks.nci, and they will be compiled into Parrot? 23:59