Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today
Set by moderator on 15 May 2011.
whiteknight plobsing: ping 00:39
00:43 kid51 joined 00:44 benabik left
sorear hello, whiteknight 00:45
whiteknight hello sorear 00:46
sorear I read your blog post on PCC
I think you need to coordinate with jnthn
niecza used to use something like your new system, with a bunch of ops for extracting parameters from the call 00:47
whiteknight I need to coordinate with jnthn about a lot of things
sorear but it was changed to a signature-blob system on jnthn__'s recommendation 00:48
whiteknight sorear: yes, the Rakudo mechanism is a big source of inspiration
sorear whiteknight: what do you mean? Rakudo uses signature blobs and a single do-everything bind_llsig dynop 00:49
whiteknight sorear, it has a custom dynop for parsing the signature, but it still takes the CallContext object from Parrot to decode itself
Parrot shouldn't be doing the decoding internally, we should expose the CallContext to the user for decoding 00:50
Rakudo uses a custom dynop, but other users could decode it in other ways
00:58 lucian left
pmichaud whiteknight: just pinging to make sure you got the email I sent about an hour ago. (No need for immediate response here.) 01:10
whiteknight pmichaud: yes, I got it
pmichaud okay, thanks
whiteknight I've been half working on a reply, half trying to get my kid to go to bed
pmichaud understood. you know the time pressure as well as I do, so I'll not press further until you or cotto have something :) 01:11
think you could get my kid(s) to go to bed while you're at it, though? ;-)
afk, errands (and getting kids to bed) 01:12
dalek TT #1722 reopened by jkeenan++: osx build failed caused by errant '\\c' 01:16
TT #1722: trac.parrot.org/parrot/ticket/1722
rrot: 351378a | jkeenan++ | config/auto/icu.pm:
Apply correction suggested by Tom Christiansen for TT #1722.
01:21
bacek_at_work cotto, it's "mark and sweep" not "mark and seek" :) 01:22
whiteknight "bedtime" in my house means my kid goes into a different room, and screams/cries for several hours 01:24
ttbot Parrot 351378a2 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7518 01:30
kid51 msg cotto taptinder has been reporting build errors on MSWin32-x86 since commit 7eaaf85ef3 01:34
aloha OK. I'll deliver the message.
dalek sella/gh-pages: 6607a22 | Whiteknight++ | libraries/memoize.md:
fix title
01:39
sella: 223c7c2 | Whiteknight++ | / (2 files):
Fix memoize_method and unmemoize_method, and test simple use of both
sella: de263f3 | Whiteknight++ | t/memoize/Memoize.t:
fill out all tests I had for memoize.t, but add two new stubs that I will fill in later once I add functionality to the libary
sella: 0afc191 | Whiteknight++ | / (2 files):
+tests for Memoize.Cache.SimpleString
sella: 1916dce | Whiteknight++ | t/memoize/cache/Item.t:
+tests for Memoize.Cache.Item
sella: 1e91a80 | Whiteknight++ | / (12 files):
Merge branch 'memoize_cleanup'
sella: c29f635 | Whiteknight++ | src/container/Container.winxed:
remove old hack and TODO note from Container
sella: 99ca730 | Whiteknight++ | / (2 files):
Add the ability for Container.resolve to pass arguments in to the default factory, if type resolution fails. Add a test for this behavior
sella: f15c6f0 | Whiteknight++ | src/container/Container.winxed:
fix bug, making sure to pass the hash of named args as flat,named. Pass slurpy args to Container.resolve to the resolving ItemFactory
sella: 7a8584b | Whiteknight++ | / (5 files):
Fix a TODO in Suite by breaking run_test into a few smaller methods for easy subclassing. Add a new test file to test subclassing Suite. Fix a few minor issues
01:40 whiteknight left
pmichaud general comment: people not directly familiar with Parrot might want to know that "TT #1722" in fact means trac.parrot.org/parrot/ticket/1722 (rather than having to search for it) 01:41
I think I'm a little (over?) sensitive to this at the moment, given that I've had a lot of responses lately where someone says "you can find it in XXX" without providing a direct link or reference to the source (meaning I have to search somewhere just to find XXX) 01:42
See also lists.parrot.org/pipermail/parrot-d...05889.html "It was hard to find the example..." 01:43
</soapbox> 01:44
01:44 Khisanth left, benabik joined 01:57 Khisanth joined 02:03 kid51 left
cotto bacek_at_work, thank. I don't know how I mixed that up. 02:29
thanks, even
02:50 particle left 02:52 particle joined 02:53 woosley joined 03:02 Andy joined 03:05 woosley left, bluescreen left 03:19 woosley joined
dalek rrot/wrap-opengl-strings: 260436e | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
add function "call_with_cstring" to automate translation of cstring arguments
03:22
rrot/wrap-opengl-strings: f2058de | plobsing++ | / (2 files):
wrap opengl functions taking or returning cstrings appropriately
cotto plobsing, is that to help with the zavolaj problem? 03:24
plobsing msg NotFound the wrap-opengl-strings branch fixes the window title issue 03:26
aloha OK. I'll deliver the message.
plobsing cotto: it can.
I was targetting that branch mainly at opengl (which had window title problems) 03:27
I'm not sure, this close to the release, that it should be going into trunk. Have we had the code freeze yet? 03:30
cotto plobsing, not yet 03:31
I'm also trying an experiment to see if I can implement a suggestion from pmichaud about 't' 03:32
He suggested that we tie C strings to their STRING* counterparts so that we could avoid the need to free them manually. 03:33
pmichaud I also later made a suggestion that we create a new STRING by concatenating a null terminator to the existing string, pass the new STRING's str_start as the char* pointer to the called C function, and then let Parrot's normal GC take care of freeing up the new STRING (and its buffer) when it's no longer needed 03:36
fwiw
cotto Also a possibility, though not an ideal long-term fix. 03:37
would be pretty easy to do short-term though
pmichaud seems like it's workable for long-term, too.
cotto Where's the code that destroys strings?
pmichaud aren't strings reclaimed normally?
cotto "normally"? 03:38
pmichaud basically, I'm thinking of something like
STRING *cstring = Parrot_str_concat( old_str, null_str );
c_func( ..., cstring->str_start, ...);
s/old_str/arg_str/ # might be clearer 03:39
cotto That'd work. It just seems like more work than we need to do.
plobsing that kinda nixes compaction, doesn't it?
pmichaud I think it's roughly equivalent to what we do now -- i.e., it allocates a new buffer and frees it up later
cotto What's to keep it from getting collected if there's no reference to it? 03:40
pmichaud the cstring variable is a reference to it
cotto If this code lives in nci thunk generation, the cstring variable wouldn't be around very long. 03:41
pmichaud right, same as allocating a cstring buffer and explicitly freeing it 03:42
no, wait
this code has to be part of the thunk
because you don't have the string until the NCI function is called
(the string argument, that is)
plobsing and the STRING* (as opposed to the char*) stays on the stack because? we don't optimize? 03:43
pmichaud I believe we have tons of Parrot code already that allocates STRING *'s and calls functions that could result in GC
it's a case we've already handled.
and if we haven't.... I'm curious to know why it works. 03:44
plobsing It works because most of that code operates on the STRING* variables, which forces the compiler to keep it around (and the stack scanner can pick that up)
pmichaud so, you're saying the thunk code isn't a wrapper around the nci call? 03:45
plobsing if all we use the STRING* for is the underlying char*, the compiler will clue in, discard the reference, and GC will reclaim it
I'm saying the STRING* variable isn't live
sorear How about just always keeping a 0 after all string variables?
1 byte is not much next to sizeof(STRING) 03:46
cotto It'll work if there's no expectation that the char* will remain valid after the nci call.
pmichaud sorear: we still want to clone the STRING somehow, because the called function might manipulate the contents
I have no such expectation. I consider that to be outside the scope of 't'
sorear pmichaud: I think that falls under "protecting the user from their own stupidity". In C, foo("bar"), foo modifies argument -> SIGSEGV with recent versions of gcc 03:47
pmichaud the cstring->str_start wouldn't count as a valid reference (so the C compiler doesn't discard it)?
sorear literal strings are kept in read-only segments now
pmichaud sorear: these aren't necessarily literal strings
nor do I think that the str_start buffers of STRING are read-only
sorear pmichaud: do you think "foo" in C should expand to something like strdup("foo") /* just in case the function modifies its argument */ ? 03:48
pmichaud no
plobsing the GC could talk to the OS to enforce RO, but I suspect that could get costly fast
sorear why do you think Parrot should do that, then?
cotto I like the original idea. I'll take a stab at it. 03:49
pmichaud because Parrot *does* assume some level of protection a bit higher than that of a C compiler, I think.
cotto: whatever works -- I just wanted to let you know about the other (possibly simpler and more robust) option
plobsing we can't just pass in parrot's internal string buffers because it will fall over badly and unintuitively
random failures *elsewhere* are possible 03:50
pmichaud anyway, at the moment I'm not aiming for "optimal solution", I'm just aiming for "solution" :)
cotto pmichaud, at this point simplicity and robustness are a really good idea. We can do something more complex when there's not a looming deadline.
pmichaud and modifying Parrot's STRING implementation to maintain null terminators at the end of each buffer isn't something I contemplate happening before Tuesday 07:00 UTC 03:51
afk, have to get groceries for breakfast tomorrow 04:01
cotto ok
plobsing, do you have the tuits to implement pmichaud's suggestion for 't' before the release? 04:13
plobsing I'm currently working on patching up zavolaj with call_with_cstring. Shouldn't be that hard. 04:15
I could try pmichaud's idea as a backup, but I have concerns that it may not be consistent
cotto Getting zavolaj working is the priority. Getting it working elegantly would be really nice. 04:16
Thanks for working on it. 04:18
04:38 bubaflub left
pmichaud fwiw, I'd be quite concerned about the overhead of call_with_cstring for a long-term solution, too. 04:38
(just in for a second... out again)
plobsing argh, why won't PCT load properly from rakudo? 04:40
dalek rrot/shims: ca0e38c | petdance++ | / (6 files):
fixing up SHIM args
04:47
04:50 Andy left 04:52 davidfetter left 04:56 particle left
dukeleto cotto: pong 05:05
cotto dukeleto, hio 05:10
dukeleto, do you have some time for M0 atm?
dalek rrot/m0-spec: eebc3e7 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
This is exactly why we make computers do our math.
05:11
rrot/m0-spec: aee227c | cotto++ | docs/pdds/draft/pdd32_m0.pod:
add a note about appraoches to dealing with constant data
05:16 particle joined
dalek rrot/wrap-opengl-strings: 34749b4 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
use shifted integer in stead of iterator in array access (oops)
05:23
rrot/wrap-opengl-strings: 478188d | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
disable export code temporarily - it crashes rakudo
nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj call_with_cstring" (119 lines) at nopaste.snit.ch/45840 05:24
plobsing ^^ WORKING PATCH ^^ (SFAICT)
05:29 contingencyplan left
pmichaud mysql_library_init and mysql_library_end are no longer available? 05:29
plobsing they've never been available 05:33
it's just that now zavolaj fails early on missing symbols 05:34
so in stead of not calling them, we don't define bindings to them in the first place
dukeleto cotto: yeps
pmichaud hmmm, that might not work fo us.
for us.
dukeleto realizes that YAPC::NA is a lot closer than he thought. Better buy tickets soon. 05:35
plobsing pmichaud: why would you want bindings to functions that just fall over when called?
pmichaud several answers... the most prominent being that Perl (especially Perl 6) is a dynamic language that is entirely built around late binding. 05:36
cotto dukeleto, and apparently hotel accommodations are getting tricky.
pmichaud there's nothing that says that a prototype declration (and that's exactly what these _are_) should fail if the thing it's prototyping hasn't been defined/loaded yet. 05:37
but beyond that... there may be libraries built on zavolaj that depend on not failing when they define a function that isn't loaded yet 05:38
plobsing it shouldn't be to hard to change over. It was simply easier to implement the behaviour that I found more desirable. 05:39
plobsing sleeps 05:40
pmichaud also, the existing of AUTOLOAD features means that we have to be able to declare things which will be loaded (or even manufactured) later. 05:41
*existence
dukeleto cotto: you have m0 questions? 05:49
cotto: do you have an example m0b file I can use as test data for the assembler? 05:52
cotto: or do I have to make one myself?
05:53 theory left
cotto dukeleto, istr that you had some questions about the metadata segment. 05:55
I don't have an example m0b file. 05:56
dukeleto cotto: generally, just noticing we still have some TODO's and such in the spec 05:58
cotto one fewer now
actually, no. just a longer one 05:59
dukeleto cotto: github.com/parrot/parrot/blob/m0-p...ding.t#L59
cotto: did you mean to make to 'vars' segments there?
06:00 preflex left
cotto dukeleto, typo on my part 06:00
06:02 preflex joined
dukeleto cotto: i think my next step is hand-writing a valid hello.m0b to use as test data for t/m0/hello.m0 06:08
cotto: i think my tuits may have run out for tonight. Did a serious 14ish mile bike ride before.
cotto dukeleto, that'll drain you 06:09
dukeleto, catch you later 06:14
dukeleto cotto: see you on the flip side 06:21
06:26 ShaneC joined 06:35 woosley left 06:50 fperrad joined
cotto bacek_at_work, ping 06:52
bacek_at_work, unping 06:55
found it
07:01 dod joined
bacek_at_work cotto, unpong. Lost it :) 07:08
cotto bacek_at_work, do you have a minute for patch review? 07:11
bacek_at_work cotto, yeah, sure
dalek rrot/tied-cstring: 026b4cf | cotto++ | / (2 files):
add tied_cstr to parrot_string_t, null where needed
rrot/tied-cstring: a774442 | cotto++ | src/string/api.c:
add function to get a tied_cstring
rrot/tied-cstring: dadae2d | cotto++ | src/gc/gc_ (4 files):
tell gc about tied_cstr
rrot/tied-cstring: 039297f | cotto++ | src/string/api.c:
make the tied cstring code a tad smarter and less leaky
cotto bacek_at_work: ^
bacek_at_work hey! It's 3 of them! :) 07:12
cotto github.com/parrot/parrot/compare/0......039297f
nothing uses it yet, but the idea is that it'll make the 't' nci type easier to implement 07:13
bacek_at_work Looks about all right. 07:14
You just missed couple of files in "t" directory :)
cotto ok. I didn't think there'd be anything surprising.
of course
just wanted to vet the concept
bacek_at_work and it's better to use Parrot_str_free_cstring
Concept is actually really good and can give us some small performance benefits. 07:15
cotto wfm
pmichaud++ for the idea
bacek_at_work pmichaud++ indeed :)
cotto I feel good having figured out how to do that. The rest of the problem seems solvable now. 07:19
dalek rrot/tied-cstring: 45ffc63 | cotto++ | src/gc/gc_ (4 files):
use string api function instead of mem_internal_free
07:20
cotto 'night 07:21
bacek++ for letting me pick your brain
07:23 ShaneC left
moritz imagines cotto using a lock pick to access bacek's brain through the ear :-) 07:24
07:29 mj41 joined 07:36 woosley joined, woosley left 07:47 UltraDM joined 07:49 rurban_ joined 07:51 rurban left, rurban_ is now known as rurban
bacek ~~ 08:13
mikehh hi bacek 08:14
bacek aloha, mikehh
dalek rrot: 8e49d49 | fperrad++ | runtime/parrot/library/uuid.pir:
[uuid] refactor with the Parrot's source of entropy.
08:18
ttbot Parrot 8e49d498 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7586 08:29
08:53 contingencyplan joined
mikehh runtime/parrot/library/uuid.pir depends on math.ops 09:09
completely blows up make -j world 09:10
had to run it 5 times before it completed 09:11
09:15 bacek left
mikehh ok I think I added the right dependency - testing, will push when done 09:22
09:31 bacek joined
dalek rrot: 8326612 | mikehh++ | config/gen/makefiles/root.in:
added dependency for runtime/parrot/library/uuid.pbc and tidied up
09:32
ttbot Parrot 83266120 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7632 09:40
mikehh seriously need someone with MSWin32 to sort that out ^ ^ ^ 09:46
bacek mikehh, s/someone/cotto/ 10:10
mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-272-g8326612 10:15
Ubuntu 11.04 i386 (gcc)
bacek: don't care who does it, needs to be done before release :-} 10:17
my windoze skills are a bit stale, haven't used it for a couple of years 10:18
bacek mikehh, he broke it. he has windows. he have to fix it :) 10:19
mikehh :-} - and my last use was convertin' to linux anyway 10:22
dalek rrot: 19ed0b0 | fperrad++ | config/gen/makefiles/root.in:
[build] fix on Windows

use Makefile comment instead of shell comment
10:35
bacek Yay! fperrad++ 10:59
11:02 Psyche^ joined 11:07 Patterner left, Psyche^ is now known as Patterner, SHODAN joined
mikehh well that worked - fperrad++ 11:09
11:12 ambs joined 11:17 utsl left 11:49 UltraDM left 11:51 davidfetter joined 11:57 PacoLinux joined 11:58 davidfetter_ joined 12:00 lucian joined 12:02 davidfetter left, davidfetter_ is now known as davidfetter 12:06 ambs left 12:08 ambs joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-273-g19ed0b0 12:10
Ubuntu 11.04 i386 (gcc --optimize)
12:27 davidfetter left 12:41 woosley joined 12:42 woosley left 12:44 whiteknight joined
whiteknight good morning, #parrot 12:53
plobsing, cotto: ping 12:58
12:58 PacoLinux left 12:59 bubaflub joined 13:10 UltraDM joined 13:12 ambs left 13:15 mtk joined 13:17 ptc joined
ptc seen particle 13:18
aloha particle was last seen in #parrot 8 hours 1 mins ago joining the channel.
13:24 lucian left 13:28 JimmyZ joined 13:33 mtk left 13:35 ptc left 13:38 mtk joined 13:52 PacoLinux joined 13:53 woosley joined
dalek rrot/gc_tuning: e65f5cd | bacek++ | / (2 files):
Add skeleton functions for PA iterators
14:01
14:01 alester left
rrot/gc_tuning: 9d9034e | bacek++ | / (2 files):
Mark PA iterators functions with PARROT_EXPORT
rrot/gc_tuning: f510328 | bacek++ | t/src/pointer_array.t:
Start adding tests for PA Iterators. Horribly broken atm.
rrot/gc_tuning: d090963 | bacek++ | / (2 files):
Implement pa_begin and pa_iter_destroy
rrot/gc_tuning: 4111692 | bacek++ | t/src/pointer_array.t:
Redo test with some kind of nano-test-more.
rrot/gc_tuning: d24b29a | bacek++ | / (2 files):
Implement pa_iter_is_empty properly
rrot/gc_tuning: 5d00fc6 | bacek++ | / (2 files):
Implement pa_iter_get
rrot/gc_tuning: dc1989b | bacek++ | t/src/pointer_array.t:
Add (failing) tests for pa_iter_next
rrot/gc_tuning: f3c03b8 | bacek++ | / (2 files):
Implement basic iteration
rrot/gc_tuning: 2b22ed0 | bacek++ | / (3 files):
Change iterator to return pointer-to-value
rrot/gc_tuning: 666a7c4 | bacek++ | / (2 files):
Implement iterating over removed elements
rrot/gc_tuning: e96590d | bacek++ | src/gc/gc_gms.c:
Totally break GMS.

Rework it to not to store additional pointer in header.
rrot/gc_tuning: 21273cd | bacek++ | src/gc/gc_gms.c:
Fix braino and remove debug output
rrot/gc_tuning: b0a839b | bacek++ | src/gc/gc_gms.c:
Change behavior of is_(str|pmc)_ptr to be same as old GC MS
rrot/gc_tuning: 5b08fe4 | bacek++ | src/gc/gc_gms.c:
Enable 'manual' memory management back
bacek wave from tomorrow and going to recharge.
14:03 bluescreen joined
moritz bacek: you should really get a power cord and code all night :-) 14:03
bacek msg pmichaud If you'll have a chance can you test gc_tuning branch?
aloha OK. I'll deliver the message.
bacek moritz, no way. I run out of beer :)
pmichaud bacek: yes, I can test gc_tuning branch. you mean for timing? 14:04
14:04 woosley left
bacek pmichaud, yes, benchmarking it 14:04
moritz can do a simple spectest run on top of it
bacek moritz, it will be helpful 14:05
Coke_ pmichaud++ # post to list. 14:06
Coke_ inadvertently skips a weekend worth of review. Did I miss anything? 14:07
pmichaud Coke_: pmichaud.com/sandbox/relman-draft.txt is looking for comments/feedback 14:08
Coke_ pmichaud++ # post to list. 14:10
+1. no finger pointing, level head, well done
pmichaud bacek: what would you like me to compare with? 14:13
14:13 nopaste left, lateau joined
pmichaud rakudo-2011.01 and rakudo-2011.04, definitely 14:14
14:19 nopaste joined
lateau I'm wondering if you'll help me. I'm trying to convert Integer to Float with 'box' 14:23
I did this...$P0 = box 5; $N0 = $P0;
but print $P0 says just "5"
moritz what else should it say?
pmichaud printing floating point numbers doesn't force the decimal to appear
moritz if you want a different stringification of your num, use printf
lateau thank you!! i try printf 14:24
pmichaud also
lateau yub
pmichaud note that your $P0 *is* an Integer
box 5 results in an Integer
moritz just $N0 is a num
pmichaud if you want the PMC to be a Float, use box 5.0
lateau are there any ways convert integer to floating number? 14:25
i red this, example's from docs.parrot.org/parrot/latest/html/...s.pod.html and it says boxing can low-level type conversion 14:26
moritz $N0 = $I0
then your $N0 is a num
you can then to $P0 = $N0 if you really want it in a PMC
lateau i see... 14:27
pmichaud I think the article means that boxing enables you to convert from a native type to a boxed PMC type
i.e., it converts an int to an Integer, a num to a Float, or a string to a String
14:28 preflex left
lateau hmm... 14:28
$P0 = box 5
$S0 = $P0 # the string "5"
$N0 = $P0 # the number 5.0
i cannot understand this example clearly... 14:29
pmichaud the first statement creates an Integer PMC from the int 5, and binds $P0 to that PMC 14:30
the second statement retrieves the string value of the PMC -- i.e., it gives us the string value of $P0 ("5")
the third statement retreives the floating point value of the PMC -- i.e., it gives us a num value of 5.0
lateau i see! 14:31
14:33 preflex joined 14:49 bluescreen left 14:59 UltraDM left 15:04 woosley joined, bluescreen joined 15:05 theory joined 15:15 SHODAN left, woosley left
dalek nxed: r1002 | NotFound++ | trunk/winxedst1.winxed:
add namespace level 'using' and 'using namespace' and change compile time scope
15:26
15:27 benabik left
whiteknight NotFound++ 15:29
using namespace looks like it will be extremely helpful in the REPL
NotFound whiteknight: I'm still testing, not available yet in plumage install. 15:30
whiteknight NotFound: of course. I'm not ready to use it yet anyway. But it looks like a very good idea 15:31
NotFound Borrowing from Stroustrup is always a good idea.
lateau thanks guys and have a goodnight :) 15:33
15:34 lateau left 15:40 alester joined
cotto whiteknight, pong 15:44
whiteknight cotto: I saw your tied cstring branch. What's the plan/ETA for that? Just exploratory? 15:45
cotto whiteknight, if possible I want to get it in before the release to resurrect 't'
whiteknight I'm trying to make sure this 't' NCI thing gets fixed today, and I see both you and plobsing have branches in the works that might serve as solutions
15:46 darbelo joined
cotto whiteknight, I'm not sure if plobsing is trying to resurrect 't' as much as find a replacement for it. My goal is to preserve backwards compatibility. 15:46
NotFound cotto++ 15:47
cotto crud. I seem to have summoned chromatic.
whiteknight heh, that's what got me looking at your branch in the first place
cotto nm. still workable
whiteknight and it's good to summon chromatic. We need more chromatic 15:48
cotto just needs const
NotFound An improved replacement will be very good, but we need backwards compatibility for some time.
alester I've got a lot of splinty goodness waiting for the next release to get out.
Nothing I want to merge back to master yet. 15:49
the day before a release
15:49 rurban_ joined
whiteknight alester++ 15:50
cotto petdance++
whiteknight, can you fix the win32 build failure? I'll dig into it today if not.
whiteknight yeah, I can take a glance at it later 15:51
15:51 rurban left 15:52 rurban_ is now known as rurban
dalek rrot: c07f2ff | (Gerd Pokorra)++ | NEWS:
update news for release 3.4.0
15:52
cotto whiteknight, great. thanks
moritz didn't fperrad++ fix it earlier? 15:54
or was that another one?
JimmyZ doesn't think winxed news should go into parrot NEWS 15:55
whiteknight JimmyZ: a few months ago we decided that project news can go into NEWS
We can talk about that decision more, if we want
bubaflub seen tadzik 15:56
aloha tadzik was last seen in #perl6 3 hours 9 mins ago saying "the implementation is a bit LTA, I agree".
JimmyZ when people read NEWS, they got confused, what is Winxed? where is it?
cotto moritz, looks like he fixed something. I don't know what the build failure was, but it looks like he at least made it less broken. 15:57
JimmyZ is it in parrot?
16:01 dod left 16:03 darbelo_ joined
mikehh cotto: it appears that NMAKE does not like comment characters not in line 1 16:07
16:08 darbelo left
cotto mikehh, guess so 16:09
16:11 darbelo_ left 16:12 darbelo joined
dalek rrot/tied-cstring: 6c60363 | cotto++ | src/string/api.c:
use const for tied_cstr return type
16:22
rrot/tied-cstring: f73c1c5 | cotto++ | src/nci/ (2 files):
first attempt to re-add 't' NCI type; needs tests and review
rrot/tied-cstring: 7ac893d | cotto++ | tools/dev/nci_thunk_gen.pir:
first shot at re-adding 't' to nci thunk gen; also needs tests and review
16:29 lucian joined 16:41 JimmyZ left
nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] working zavolaj (now with fail-at-runtime)" (88 lines) at nopaste.snit.ch/45872 16:47
dukeleto i am +1 to having HLL news (like Winxed) in NEWS 16:48
NotFound dukeleto: fine for me, as long as they are a short summary. 16:49
plobsing pmichaud: nopaste.snit.ch/45872 is a revised patch to zavolaj that puts failures at runtime as requested 16:50
dukeleto tadzik: can you close this TT if it works for you? trac.parrot.org/parrot/ticket/2101 16:51
dalek rrot: aafb693 | plobsing++ | / (3 files):
Merge branch 'wrap-opengl-strings'
16:52
16:52 bluescreen left
pmichaud oh! I think tadzik++ also asked me about the status of the Select PMC 16:52
dukeleto plobsing: aren't we in a code freeze?
pmichaud dukeleto: I have an open issue with the relationship managers that wants resolving before the release. 16:53
or maybe it was tewk that asked about Select. TT #2034
if Parrot isn't going to adopt this soon, we may just put it in Rakudo for now. 16:54
plobsing dukeleto: I've not seen any emails on parrot-dev about a code freeze. perhaps I've missed something. 16:55
cotto_work ~~
whiteknight I haven't seen anything about a codefreeze, and we know that fixing 't' and zavolaj is still priority 16:56
cotto_work I don't think gerd has requested a freeze.
whiteknight that has to get fixed before the release, so that trumps code freeze
plobsing I've got a patch that fixes zavolaj
cotto_work I emailed him asking to hold off the release until the zavolaj issue is fixed. 16:57
plobsing nopaste.snit.ch/45872
pmichaud I'm looking at the patch now. 16:58
whiteknight plobsing: what is the descalarref op?
cotto_work plobsing: that's a good fallback. The preferable solution is to get 't' working again so that a patch won't be required.
pmichaud It changes the signatures of at least one function.
plobsing whiteknight: it is rakudo magic dust
sprinkled liberally
whiteknight plobsing: ah, okay
that's why I'm not familiar with it
pmichaud descalarref "decontainerizes" an object -- it gets us all the way down to its final value instead of the container PMC that holds a reference to that value
dukeleto pmichaud: what is up? 16:59
whiteknight cotto_work: make sure your branch plays nicely with these changes
cotto_work whiteknight: "these changes"? 17:00
whiteknight cotto_work: plobsing just merged a branch
cotto_work ok
dukeleto plobsing: i guess i assumed that "we are cutting a release tomorrow" => code freeze. But I agree, he did not explicitly state that there is a freeze.
pmichaud also, fwiw, I'm not entirely comfortable relying upon NCI::Util which was just added ~1 day ago.
*code in NCI::Util
cotto_work they look substantially orthogonal
plobsing NCI::Utils has been around for years 17:01
pmichaud I meant call_with_cstring
and Rakudo/zavolaj has never used NCI::Util
*s
plobsing it works
whiteknight github has mention of it all the way back to 2009 17:02
pmichaud of call_with_cstring? really?
pmichaud checks
whiteknight no, not call_with_cstring
just NCI::Utils
pmichaud that's what the patch is using, primarily.
whiteknight that's been around since at least 2009
17:02 bluescreen joined
pmichaud I meant "new code in NCI::Utils", not NCI::Utils itself 17:03
but I recognize that at this point whatever we do we're going to be relying on new/untested code. :(
17:03 dodathome joined
whiteknight pmichaud: ideally, we only need to rely on it until the minute after the release 17:04
pmichaud ?
whiteknight then we can work on a solution which is acceptable to everybody
pmichaud if I make a (star) release based on this release, I'm relying on it for much longer than one minute. 17:05
I have to rely on it until there's a new parrot release that updates it.
whiteknight what is the liklihood that you make a star release based on Parrot 3.4?
pmichaud you didn't read my email?
whiteknight I did.
you said you've been "working towards the possibility" of a release 17:06
pmichaud well, we're kind of stuck between a rock and a hard place. Either we live with performance slowdown for a while longer, or we release with out a robust zavolaj
whiteknight I want to know where that possibility currently stands
pmichaud until today, that probably was pretty close to 100%
*probability
whiteknight okay. So let's still shoot for that
What does a robust solution look like to you? At this point, the time we have left for robust levels of testing is slim 17:07
pmichaud I know.
I'm much more comfortable with something that restores a 't' work-alike than anything that substantially changes zavolaj
whiteknight either we're going with under-tested code (assuming we can still test every minute of every hour before tomorrow), or we try a revert and maybe end up with a configuration which is even less tested
pmichaud because I don't know how many things depend on zavolaj
whiteknight ok 17:08
cotto is doing work similar to that. Now we need to ask what his ETA is
cotto_work eyes on my branch is a good idea
pmichaud if the zavolaj fix was a simple one, I'd be less concerned.
cotto_work afk 10m
whiteknight cotto_work: okay. Merge it ASAP, and we all test like wild hyenas
17:08 darbelo left
cotto_work no idea if it even works 17:09
whiteknight blah
17:09 darbelo joined
whiteknight okay, then we are farther away than 10 minutes 17:09
pmichaud also, I'm struggling to understand the zavolaj patch because call_with_cstring isn't really documented. I don't know what it expects as args.
plobsing oh. oops. forgot to document. sorry, I'll get right on that. 17:10
17:11 mj41 left
pmichaud in the patch, I also have no idea what 17:12
when Str {
# pir::push_vPi($cstrings, $i);
}
is intended to do
plobsing it pushes an integer into a variable 17:14
I tried using array variables, but they didn't work
pmichaud not if it's commented out, though.
whiteknight dukeleto: ping
plobsing commented out?
pmichaud # means comment in Perl
plobsing yes, I'm aware. 17:15
pmichaud also, pir:: needs two __'s to make an opcode signature 17:16
i.e., push__vPi
dukeleto whiteknight: pong 17:17
whiteknight dukeleto: privmsg
dalek rrot: d918686 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
document call_with_cstring
17:19
nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj (v2)" (88 lines) at nopaste.snit.ch/45873 17:20
plobsing pmichaud: I had to comment that line out because of the missing _ led to syntax errors reported by IMCC for the PIR generated by Rakudo. It would have been nice if rakudo had been able to warn me about the error I was making. 17:22
pmichaud rakudo doesn't know about all of the possible PIR opcodes 17:23
there's not really a place it can look
basically, you're asking it to check in a foreign namespace that doesn't exist
17:23 bluescreen left
plobsing there's also not a lot of opcodes that end in '_[vPisn]+'. it could at least warn. 17:24
pmichaud I beg to differ. 17:25
There are a *ton* of opcodes that end in that pattern.
plobsing such as?
pmichaud set_i_n
set_i_i
set_p_i
add_p_p_i
plobsing ok, how about '_[vPism]{2,}'? 17:26
er n
17:26 darbelo left
pmichaud "It would have been nice if Parrot has warned about 't' no longer being available." :-) 17:27
plobsing and it did
when you tried to use it. Perl 6 is all about failing late right?
pmichaud I mean when it was deprecated, not when it was removed. :-) 17:28
"warn early" is the principle you're espousing.
plobsing getting back on target, the patch should work now. It was working for arguments before. I lack a proper testcase for the cstring returns in zavolaj apparently 17:32
pmichaud I'm wondering how it could've worked if the push was commented out.
plobsing I wonder the same thing myself 17:33
pmichaud that scares me a bit too.
plobsing the only logical explanation is that it wasn't exercised
pmichaud you mean that the tests weren't passing string arguments to C funcs?
unlikely.
plobsing I've been using examples/mysqlclient.p6
pmichaud: that only handles the returns
pmichaud no, the part that was commented out was in the args 17:34
not the returns
plobsing oh. ouch. how the hell did that work?
pmichaud if it was in the returns, I'd say "yeah, not exercised"
so, if I read this right, the cstrings array is a list of argument indices that are strings? 17:37
17:38 bluescreen joined
pmichaud $P0 = str_to_cstring(interp, $S0) 17:38
oh my.
that looks totally evil.
plobsing I don't see the problem. 17:39
pmichaud you're putting a non-PMC into a PMC register?!
whiteknight I assume the pointer is being wrapped into a Ptr PMC?
pmichaud or is it actually a Ptr PMC
okay
that makes more sense
plobsing well, NCI currently uses UnManagedStruc PMCs (this is the UMS that zavolaj depends on) 17:40
these are less efficient than Ptr PMCs space-wise
but it returns a pointer-ish PMC, yes
whiteknight is the lifetime of that PMC tied to the lifetime of the cstring? 17:42
pmichaud if cstrings can be an array identifying which arguments are STRINGS, I fail to see why 't' could not be used in the same way. 17:43
plobsing pmichaud: I know how it was working. All non-pointerish PMCs override the 'get_pointer' vtable to return (void*)SELF (this is VERY stupid, I know)
whiteknight pmichaud: if NCI::Utils provided a wrapper layer that made 't' appear to work the same without changes to zavolaj, would that be better? 17:44
pmichaud I think that'd be better for everyone (more)
plobsing so when the non-translated strings were unwrapped first as (String) PMCs and then as pointers, the functions were passed a pointer to the PMC header.
pmichaud let's look at mysql_real_connect
plobsing the first thing in a PMC header is flags, which are frequently 0, so the strings passed were empty strings
I confirmed this by binding to printf with the broken version. it outputs nothing. 17:45
with the fixed version, I get a "Hello World!" loud and clear
pmichaud it will have an NCI signature of ppttttiti
why can't call_with_cstrings (or something similar) simply parse that signature to find out which arguments need to be wrapped? 17:46
instead of having a separate array of argument indicies?
whiteknight i don't know if the signature string is stored with the dlfunc pmc
if so, that would seem the better way to do it
plobsing I could write a routine that takes the same parameters as dlfunc and provides the wrapping required.
pmichaud even if the signature string isn't stored, the way that call_with_cstrings works is by creating a wrapper closure that holds the "signature"
17:47 mj41 joined
pmichaud only here the signature is a resizableintegerarray (expensive) instead of a simple string (cheap, and what the caller wants to use anyway) 17:47
whiteknight plobsing: such a routine would seem like a very good idea right now. If only to make people more comfortable with the interface
plobsing the current implementation was simply the first thing that occured to me
whiteknight plobsing: how much effort would it take?
pmichaud then we simply say that people use call_with_cstrings to get the desired dlfunc instead of calling dlfunc directly
plobsing whiteknight: just for the 't' signatures? not too long
pmichaud and call with cstrings can build all of the wrappers it wants, and return the closure or whatever 17:48
and I suggest it be called something other than "call_with_cstrings"
it could become the primary interface to nci 17:49
(well, if it weren't relatively slow)
plobsing dlfancy?
whiteknight there are multiple different available semantics with regard to cstrings, so a single wrapper for everybody seems to be too little
pmichaud whiteknight: you can hide multiple semantics with different signature letters 17:50
*and*
it doesn't have to be an everything for everybody interface -- just something that handles the common cases
the ability to get to the pointer/p level and wrap things yourself is still there.
plobsing I've been trying to move away from signature letters. Everybody has a different idea about how the description language should be extended.
whiteknight it seems to me a better long-term solution would be to allow the user to specify their letters and map them to lists of predefined semantics
cotto_work back 17:51
pmichaud fair enough, I'm not tied to the idea of signature letters as a long term solution
whiteknight they are still *the* solution for 3.4
pmichaud I *am* tied to the idea that there ought to be a backwards compatibility layer for signature letters that have existed for 6+ years in parrot
plobsing that, I can provide
pmichaud if that happens, then all we have to do is change zavolaj so that instead of calling dlfunc it calls this new wrapper 17:52
and for tests, we could potentially resurrect the tests that tested the 't' parameters in NCI previously
(but have them go through the new wrapper instead of dlfunc also)
whiteknight pmichaud: yes, we are trying to provide that backwards compatibility now. I don't think we should be tied to our mistakes forever, but I do think that we can prolong the death of this one a little longer 17:53
17:54 ambs joined
pmichaud I'd still like to see exploration of supporting 't' more natively though (i.e., at the thunk layer instead of a PIR wrapper) 17:54
it's still a very common case for users.
whiteknight pmichaud: I don't know if you saw the comment by chromatic earlier on github. It's really not as "common" as we would like
pmichaud he didn't give percentages for each
whiteknight they aren't 9% 17:55
0%
pmichaud he was coming from the position of "one letter to do everything", which I completely disagree with
whiteknight well, that's what 't' is right now
and it's clearly untenable in the long run
pmichaud okay, I agree that's untenable
and I've never argued for keeping *that* interpretation
whiteknight but you are correct, a mechanism to take STRING and get cstring is a fundamental and important mechanism
pmichaud I've only said that passing constant strings to library functions is a very common use case
whiteknight we need to find a way to expose that mechanism to the users in a way that is easy and usable 17:56
pmichaud I think the other cases chromatic cited are far less common, and if they're supported, they shouldn't be 't'
cotto_work plobsing: do you think the tied-cstring branch is on the right track?
whiteknight cotto_work: I've been thinking about that idea all night. I think there is some merit there, if memory consumption doesn't balloon
pmichaud cotto_work: we have a fourth approach now, which I think I'd be very comfortable with :-)
cotto_work pmichaud: if you're happy I'm happy
plobsing cotto_work: I've been kinda working with blinders on trying to make this work 17:57
whiteknight cotto_work: where we are frequently doing the conversion, such as in IO, there are performance wins to be had
plobsing++
pmichaud well, I still think the tied-cstring has the potential to have some memory churn wins
so it's worth exploring, but perhaps doesn't need to be committed to before release
whiteknight pmichaud: yes, it's definitely worth testing out
cotto_work bacek thought so to when I asked him last night
whiteknight I can't say I would be surprised no matter how it turns out.
it could be major win, major fail, or anywhere in the middle 17:58
pmichaud I know that when I added sub-profiling to Rakudo, I was shocked at how many times my STRING values were going to have to be alloced/freed
(I finally came up with a version that didn't require it so much... but my initial attempts were going to be churn-ful) 17:59
wowee! Bacek's gc_tuning branch shows a 98% speed improvement on many of the .p6 tests!!! 18:03
(wait for it)
18:04 ShaneC joined
cotto_work lolwut? 18:04
plobsing 98%?
aloha 0.98
pmichaud pmichaud@kiwi:/zip/rakbench/rakudo-2011.04-gct$ /usr/bin/time ./perl6 /zip/rakbench/bench/B03-sin.p6
Command terminated by signal 11
1.00user 0.09system 0:01.20elapsed 90%CPU (0avgtext+0avgdata 891344maxresident)k
0inputs+0outputs (0major+55789minor)pagefaults 0swaps
(signal 11 = segmentation fault)
plobsing we can segfault a lot faster than that ;) 18:05
pmichaud lol
18:07 ShaneC left
cotto_work pmichaud: what's the plan for 't' between now and the release? 18:09
pmichaud cotto_work: I suggested that the approach plobsing is using for zavolaj (a separate interface closure) could handle 't' directly instead of making the users do it 18:10
cotto_work pmichaud: ok. So he's working on that and I don't need to scramble to get tied-cstring merged before the release? 18:11
pmichaud thread starts around irclog.perlgeek.de/parrot/2011-05-16#i_3751386
nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] initial dlfancy implementation" (64 lines) at nopaste.snit.ch/45874 18:12
whiteknight every time I open a patch on a .pir file, I weep a little and wish it were winxed
plobsing right now, it just dispatches to call_with_cstring. but it does provide a dlfunc-emulating interface
whiteknight: preaching to the choir
whiteknight I keep hoping that one day we won't need to be communicating in grunts and cave paintings 18:13
plobsing I would do the whole thing in winxed, but I'm not willing to fight the battle to set that precedent
pmichaud cotto_work: also, it feels to me like tied_cstring could be a bit larger of a change than we want to do right before a release 18:14
plobsing: I have to run errands now and get ready for a call on another project... would you be willing to consider an alternate dlfancy implementation a bit later?
cotto_work pmichaud: yes. If it were the only way I'd push ahead, but I would *much* rather give it some serious testing and stabilizing first. 18:15
pmichaud cotto_work: now that I see where things are heading, as long as we can get one of the other two approaches going I'm likely to favor them
whiteknight whatever solution we go with, we need to get it into master soon so we can test it as much as possible
pmichaud I suspect I could have my version of dlfancy in about 3 hrs from now
whiteknight if dlfancy can be made to work, I think there's consensus that it is the better approach
cotto_work pmichaud: like I said, I'm happy as long as the problem is solved to your satisfaction.
pmichaud it's just that for the next 1.5 hours I'm occupied on another unmaskable task 18:16
plobsing pmichaud: yes, I don't like the dlfancy *implementation* at the moment. It can be improved later.
pmichaud well, I'd also be refactoring (heavily) call-with-cstrings 18:18
anyway, I'll propose it a bit later and you can review/accept/whatever
afk 18:19
whiteknight plobsing: I don't think that it would be a huge battle, if we decided to take up the fight 18:20
cotto_work +1 18:21
whiteknight I would *love* to see winxed snapshotted into the parrot repo
pmichaud "NO! NQP MUST WIN FOREVER!" j/k
whiteknight I'm not saying to take NQP out. I like NQP and it should stay
NotFound Language wars!
pmichaud "THERE CAN BE ONLY ONE!"
plobsing that would be nice. I'd settle for winxed code and generated PIR living side-by-side.
whiteknight my languages and I, we're polyamorous
pmichaud aloha: msg bacek alas, gc_tuning branch results in many segfaults for me: gist.github.com/975001 18:22
aloha pmichaud: OK. I'll deliver the message.
whiteknight NotFound: something I wanted to ask you the other day, what is the difference between the winxed.winxed compiler driver, and winxed_installable.winxed? 18:23
and why do you have both?
dalek rrot: 0cf475b | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
add dlfancy for providing "fancier" NCI types
18:24
nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj/dlfancy" (19 lines) at nopaste.snit.ch/45875
plobsing not quite working yet for some reason
whiteknight that is a *much* nicer zavolaj patch
NotFound whiteknight: after the last two month changes, there is less difference than before.
whiteknight NotFound: I only ask because I've been reading over them, learning how to compile for my REPL 18:25
NotFound The main one is that the installable driver does not allow to select stage.
whiteknight oh. 18:26
tadzik good evening #parrot 18:28
seen bubaflub
aloha bubaflub was last seen in #parrot 2 hours 31 mins ago saying "seen tadzik".
whiteknight hello tadzik
bubaflub hey tadzik
we got two more pull requests for cardinal, was wondering if you were going to get to those first
i can get them when i'm done with work in an hour or two
pmichaud oh, btw. I might suggest that we choose a different signature letter besides 't' for this new semantic (the one that works only with constant strings)
unless the patched approach also works okay with non-constant strings (i.e., the same as 't' did before) 18:29
NotFound whiteknight: don't worry about the non installed, is only intended for testing the bootstrap process.
pmichaud or, provide 't' for backwards compatibility, and a new letter for whatever we think "pass a constring string arg" should be.
tadzik pmichaud: yeah, the {ticket_you_mentioned} can be closed I think, I'm commenting on that in a second
whiteknight NotFound: I'm just thinking about ways to make the update process easier and to unify code
NotFound And for those that want to test winxed without installing it.
tadzik bah, my password is reseted again 18:30
whiteknight on trac? 18:31
18:31 alester left
tadzik yeah 18:31
cotto_work tadzik: try your old password. They were restored. 18:32
tadzik I reseted it after the breakage, and now it's reseted to the state before the breakage
cotto_work yes
tadzik cotto_work: yeah, but I don't remember that one :)
will reset it again :)
cotto_work tadzik: I can set it to something if you want.
your call 18:33
tadzik I'll handle it, thanks :)
cotto_work ok
whiteknight actually, we should all set tadzik's new password!
everybody submit options, and we'll pick one at random
tadzik okay :)
doesn't matter, I'll set it to something I don't remember and reset it after Chromium forgets it too :F 18:34
bubaflub: have you seen the new Pull Request for Cardinal?
plobsing for some reason, $type.of is no longer working properly
tadzik oh, two of them 18:35
bubaflub tadzik: i looked briefly at them
tadzik: if you don't get to it first i'll check em out, run the test suite, and merge em if they are good
tadzik I'll do that now
bubaflub ok 18:36
tadzik I believe this should be done by someone who knows Ruby though :) I just test in irb if that's Proper Ruby
Ruby's still on my todo 18:37
bubaflub tadzik: do you have 1.9.2 installed? i think that's what we are targetting
tadzik bubaflub: I'm afraid it's 1.8.7_p334 18:38
Gentoo--
bubaflub tadzik: you can use RVM to manage multiple versions of ruby
(if you'd like)
also, there's a good chance that it hasn't changed between the two 18:39
i'd say, go ahead and merge it
in a few hours i'll take a look as well
and if it's different / wrong i'll fix it
dukeleto bubaflub: wazzup 18:51
bubaflub dukeleto: hey hey
dukeleto bubaflub: you are free of exams?
bubaflub dukeleto: free and clear 18:52
dalek rdinal: 808c71c | (Hongwe Qiu)++ | src/classes/String.pir:
Minir bug fixes, so that t/string/concat.t passes.
rdinal: bd9ac96 | (Hongwe Qiu)++ | setup.pir:
add CardinalFloat to built, so that parrot setup.pir test passes more tests.
rdinal: 0651c0d | tadzik++ | s (2 files):
Merge pull request #10 from qiuhw/master

These two commits get more tests pass
dukeleto bubaflub: woot! 18:53
cotto_work bubaflub: booyah
dukeleto bubaflub: what are your next steps?
bubaflub dukeleto: ???? and Profit!!! 18:54
dukeleto bubaflub++ # you learn well, grasshopper
tadzik oh, I wish I was free to
but I still have 1.5 month to go
dukeleto bubaflub: i have homework for you. Send an email to the gmp-discuss mailing list, and tell them what you are up to 18:55
bubaflub: give a link to github.com/bubaflub/parrot-gmp/issues and your GSoC proposal
bubaflub dukeleto: cool. i'm already subscribed, i'll shoot one out today.
dukeleto bubaflub: ask them which versions of GMP they suggest supporting, as well
bubaflub: that will fix 2 gh issues :)
bubaflub: GMP turned 20 years old this month! 18:56
bubaflub woah, didn't realize it's been around for that long
dukeleto pretty amazing to think about. Before GMP, *everybody* wrote their own bigint/bigfloat libraries
i remember having to write a bigint library in CS class in highschool. Not sure it ever worked right, but we tried. It definitely is not trivial. 18:57
i think that was my first experience with C++ (shudders)
cotto_work My first experience with C++ was before my first experience with vcs. It did not go well.
dukeleto bubaflub: can you convert your TODO.md into github issues? 18:58
bubaflub: it will make it easy for people to comment/etc on them
bubaflub dukeleto: sure
dukeleto bubaflub: i am a big fan of github issues 18:59
bubaflub: i really like the color/tagging support
bubaflub: for a good example of labels, see github.com/GMOD/mimosa/issues 19:00
dalek nxed: r1003 | NotFound++ | trunk/winxedst1.winxed:
function level "using namespace" and some changes in compile time scope search
dukeleto bubaflub: one issue with using tools/dev/ncidef2.pl is that it is not installed with a normal parrot 19:01
bubaflub: so i think that is something that you will do, and commit the results to the parrot-gmp.git repo
bubaflub dukeleto: yes. i think i can store the def file and the results 19:02
and that way developers can regenerate that file, end users just get the results
dukeleto bubaflub: sure, you can add a Makefile target or whatever to regenerate the file
bubaflub: and that will only be used by developers, not end users
bubaflub: i would like to see one solid test for parrot-gmp, before you do much more coding 19:03
bubaflub: that single test will help guide you greatly during the initial implementation phase
bubaflub dukeleto: roger that 19:04
dukeleto bubaflub: do you have enough to chew on for now? we still need to do some google video/skyping.
bubaflub: did you write a bonding period blog post yet? 19:05
bubaflub dukeleto: yeah, when are you free?
dukeleto: not yet, i can do that tonight
whiteknight blah, I had a git repo go all corrupty because of a VM crash 19:07
that's a bummer
dukeleto whiteknight: gist the errors
whiteknight: i have run into git corruption before. Usually, you can delete a currupt packfile and be on your merry way
whiteknight dukeleto: nah, I already closed the thing in frustration
dalek rrot: 6a2784c | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
fix thinkos in cstring return wrapper
dukeleto whiteknight: hokey dokey
bubaflub: want to skype in 15 mins? 19:08
whiteknight my problem is, I don't just see a problem and report it. I fiddle and make it worse
then I get angry and start deleting files
dukeleto bubaflub: what is your skype id?
whiteknight: no bueno
whiteknight dukeleto: it's a known personality bug
and when I try to run myself through the debugger, I get bruised 19:09
bubaflub dukeleto: should be same, bubaflub
dukeleto: i haven't used it in a while, though
whiteknight I suspect strongly that skype-on-linux might not have a very bright future 19:10
dukeleto bubaflub: i dislike skype, but currently i have had better luck with it than google voice on linux, although i hear it has been improvely lately.
whiteknight: yeah. I am forced to use skype for work teleconf calls once per week. So painful. 19:11
whiteknight i dislike the practice of big companies buying up technology that people like, ruining it, and then selling it for more money
dukeleto bubaflub: i added you on skype. You gonna be ready in 10mins or so? 19:12
bubaflub dukeleto: suer
*sure
current version: 2.8.0 updated version: 5.1.0 19:14
haven't used skype in a while
dalek rrot: a37452e | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
correctly handle null strings
19:17
19:27 alester joined
dalek sella: 7469240 | Whiteknight++ | s (71 files):
move unstable libraries into an unstable folder. Update setup.winxed to handle this, and make includes a little nicer
19:28
sella: d3a6799 | Whiteknight++ | t/test/Suite.t:
fix copy+paste failure in Suite.t
plobsing msg pmichaud Can you look into the 'Null PMC access in type()' errors I'm seeing with the 'dlfancy' patch to zavolaj? I don't understand what is wrong. 19:29
aloha OK. I'll deliver the message.
dalek TT #2101 closed by tadzik++: Broken ipv6 detection on Gentoo linux 19:31
TT #2101: trac.parrot.org/parrot/ticket/2101
sella: 04669c3 | Whiteknight++ | / (2 files):
Add an is_proxy function to determine if a given object is a proxy. Add a test
19:34
plobsing msg pmichaud for convenience, the patch is @ nopaste.snit.ch/45875
aloha OK. I'll deliver the message.
dukeleto just had a nice skype conversation with bubaflub++, who is walking for his graduation tomorrow 19:37
cotto_work good way to start a career 19:38
I remember how amazing it was to start getting paid to write code.
bubaflub i'm looking forward to just having more free time 19:39
my wife consoling me during finals: "when you're done you can read more, play halo, do open source..."
atrodo free time is a lie1 19:40
dukeleto bubaflub: lulz
bubaflub atrodo: sadly i must agree
19:42 bluescreen left
dalek sella: 1d9cbcd | Whiteknight++ | / (2 files):
Add Memoize.is_memoize_proxy to determine if a function is a memoize proxy or not
19:47
Coke_ halo? mass effect 2! 19:49
tadzik whispers something about minecraft 19:50
Coke_ bought minecraft, played it twice, and never reopened it.
Coke_ suspects it is slightly too hard by default.
tadzik it must be extremely boring to a certain kind of people, and I am one of them it seems
Coke_ rally did like the concept and wanted to support the guy, though. 19:51
Tene I playet it a lot of a couple of days, and then couldn't find anything else I cared to do; haven't been back since
tadzik I spent like an hour making myself a glass-made roof, and then some creature exploded in the middle of my house burying my work. Frustrating 19:52
dalek sella: dde571a | Whiteknight++ | / (2 files):
Add checks to memoize_method and unmemoize_method to attempt to redo the same operation. Add tests
tadzik also, spiders respawning in your house when you sleep... brr
19:54 bluescreen joined
Coke_ is now on his 3rd playthrough of ME2, though. 19:57
20:06 dafrito left
pmichaud plobsing / others: here's my suggested version of an NCI wrapper (to replace dlfancy) -- gist.github.com/975243 20:10
it does at most one level of closure wrapping, and is structured so that it's easy to add other conversion types in the future if we want 20:11
it also caches various values to avoid looking them up / constructing NCI objects on each call 20:12
I've not run/tested it -- it's just a first draft at this point
20:13 PacoLinux left
dalek nxed: r1004 | NotFound++ | trunk/winxedst1.winxed:
box last operand of conditional operator when needed
20:13
whiteknight pmichaud: it looks nice on first glance, I'll have to give it a deeper review later 20:14
dalek sella/gh-pages: b3c0287 | Whiteknight++ | libraries/memoize.md:
quick first draft of web docs for memoize
20:15
pmichaud whiteknight: any objection to me committing it to NCI::Utils (in addition to what plobsing has there) 20:18
It won't hurt to have two versions for a short while, and I can do some testing
actually, I'll just make a branch for now and provide a branch diff
but then I can also test it with zavolaj :-)
whiteknight pmichaud: commit it
we need as many eyes on it as possible
cotto_work +1 20:25
whiteknight 'erbody just commit 'erthing that they gots 20:26
NotFound++ # Over 1000 commits of winxed! 20:28
NotFound Commit early, commit often. 20:29
20:30 baest joined 20:33 mj41 left 20:36 dodathome left 20:38 whiteknight left
plobsing pmichaud: (re: nciwrap) it lacks special consideration for null strings, but otherwise looks functional 20:39
I'm not sure how effecient or inefficient the two approaches are.
pmichaud I'm pretty sure the second is more efficient, if only because it's not allocating as many thunks and closures 20:43
I'm writing a test library now.
plobsing if it is a single-level closure, I wonder if a continuation-closure is more efficient (because it avoids using lexpads) 20:44
pmichaud I'd prefer to stick with the lexpad, I think. the Closure PMC has its own set of issues. 20:45
(having had long experience with it. See also "PGE" :-)
s/Closure/Coroutine 20:46
both, actually :-)
dalek rrot: 95d47d1 | mikehh++ | runtime/parrot/library/NCI/Utils.pir:
fix pod syntax - correct =over 4 / =back matching
20:51 bluescreen left 20:54 PacoLinux joined
moritz bacek: fwiw rakudo spectest was all gree on the gc_tuning branch 20:54
pmichaud when I attempt to call Parrot_str_new() in my version, I'm getting 20:59
No NCI thunk available for signature `STRING (ptr, ptr, INTVAL)'
moritz: it failed horribly on mine
I might need to try it again, but I got lots of segfaults 21:00
plobsing \\o/ that error message is much prettier.
pmichaud: we'll have to add that to the list of static thunks and reboostrap them
pmichaud this is why we need tests :-) 21:01
pmichaud keeps writing more tests.
plobsing pmichaud: I am seeing the same failures in zavolaj using 'ncifunc' as I was with 'dlfancy': "Null PMC access in type()" 21:04
21:05 jsut_ joined 21:07 jsut left
Coke_ wonders if Klaus Br�ssel 21:08
is a perlperson.
pmichaud plobsing: how long to add the new thunk? 21:10
Coke_ going to yapc::na? 21:11
aloha, going to yapc::na? 21:12
aloha Coke_: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51
Coke_ aloha, going to yapc::na 2011?
aloha Coke_: I have no idea.
plobsing pmichaud: done
dalek rrot: 4eabcb8 | plobsing++ | src/nci/extra_thunks. (2 files):
add thunk 'STRING (ptr, ptr, INTVAL)' needed to call Parrot_str_new() from HLLs
dukeleto aloha: going to yapc::na 2011 is also Coke
aloha dukeleto: Okay.
dukeleto aloha, going to yapc::na?
aloha dukeleto: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51
21:12 dafrito joined
dukeleto aloha, going to yapc::na 2011? 21:12
aloha dukeleto: going to yapc::na 2011 is Coke
dukeleto darn.
Coke_ aloha: forget going to going to yapc::na 2011
aloha Coke_: I don't know anything about going to going to yapc::na 2011.
Coke_ aloha: forget going to yapc::na 2011 21:13
aloha Coke_: I forgot about going to yapc::na 2011.
Coke_ please don't add me to the other one. Danke.
21:16 dafrito left
Coke_ is pretty sure he cannot justify the cost this year. 21:17
21:18 ambs left 21:22 dafrito joined, bluescreen joined
dalek rrot/ncifunc: 95d47d1 | mikehh++ | runtime/parrot/library/NCI/Utils.pir:
fix pod syntax - correct =over 4 / =back matching
21:28
rrot/ncifunc: 4eabcb8 | plobsing++ | src/nci/extra_thunks. (2 files):
add thunk 'STRING (ptr, ptr, INTVAL)' needed to call Parrot_str_new() from HLLs
rrot/ncifunc: 1f73a3a | pmichaud++ | src/nci_test.c:
Add some functions for testing char* parameters in NCI.
rrot/ncifunc: 6691e38 | pmichaud++ | runtime/parrot/library/NCI/Utils.pir:
[NCI] Add "ncifunc" as a replacement / approach to "dlfancy".
rrot/ncifunc: 3b55d79 | pmichaud++ | / (3 files):
Merge branch 'master', remote-tracking branch 'origin' into ncifunc
rrot/ncifunc: c1315ce | pmichaud++ | t/library/nciutils.t:
[NCI]: Add tests for 'ncifunc' in NCI::Utils.
mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-284-g95d47d1 21:30
Ubuntu 11.04 i386 (g++ --optimize)
21:33 lucian_ joined, mtk left
pmichaud all tests pass here... shall I merge to master? 21:34
cotto_work pmichaud: music to my ears 21:37
21:37 lucian left
pmichaud I haven't tried zavolaj itself yet -- I'm about to do that. But since the 't' interface is preserved through ncifunc, it ought to work out just fine. 21:37
21:38 mtk joined
pmichaud plobsing: what's the "special consideration" needed for null strings? 21:40
and do you mean actually STRINGNULL, as opposed to the empty string?
plobsing pmichaud: yes. specifically, if you pass in a null string or pmc for an argument, it should turn into NULL 21:44
pmichaud NULL or PMCNULL ?
or is nci smart enough to translate PMCNULL to NULL or something like that? 21:45
plobsing NULL. PMCNULL isn't really useful to external libraries
well OK, PMCNULL as far as parrot is concerned
pmichaud so, a null argument should remain a null argument and not be passed to str_to_cstring
no problem
when a null PMC is passed via NCI, what does the receiving function see? PMCNULL or NULL ? 21:46
dalek rrot/ncifunc: 0366834 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
properly handle null arguments
plobsing pmichaud: fixed
plobsing NCI translates PMCNULL pointer arguments to NULLs 21:47
pmichaud I like 1-line fiexes :-)
*fixes
dalek rrot/ncifunc: 6e069f0 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
properly handle null string returns
21:54
dukeleto Good read: www.dwheeler.com/essays/fixing-unix...names.html 21:56
pmichaud gist.github.com/975473 # zavolaj almost works 22:02
cotto_work dukeleto: that article sucks.
Forbidden
You don't have permission to access /essays/fixing-unix-linux-filenames.html on this server.
plobsing cotto_work: maybe the server just doesn't like you. I can read it fine. 22:03
cotto_work When I go to the root, I get a CentOS Apache default page.
how odd
plobsing pmichaud: I can add the thunk fairly easily, but to ease your development, you could install libffi which would allow thunks to be generated automatically 22:05
pmichaud correction: zavolaj works. What's missing are the nci thunks that the mysqlclient.p6 example wants. :)
were the thunks in parrot before?
cotto_work a bunch of static thunks were deleted when 't' was removed
plobsing pmichaud: can I see the zavolaj patch? 22:06
pmichaud gist.github.com/975484 22:07
dalek rrot/ncifunc: 2fef4a1 | plobsing++ | src/nci/extra_thunks. (2 files):
add thunk for mysql_real_connect
pmichaud cotto_work: that's wrong, if so. 22:11
they should've have been converted to whatever the new form of 't' would be
(unless they were deprecated also)
22:12 tty234 joined
plobsing pmichaud: I'm still seeing the 'Null PMC access in type()' problem. 22:12
pmichaud plobsing: where are you seeing it?
plobsing in zavolaj mysqlclient
pmichaud can I get a full error message? 22:13
nopaste "plobsing" at 192.168.1.3 pasted "zavolaj problem" (10 lines) at nopaste.snit.ch/45912 22:14
pmichaud can you nopaste your .perl6/lib/NativeCall.pm6 ? 22:15
plobsing it is a symlink to the one in the zavolaj directory which is a fresh checkout from master with your patch applied
pmichaud excellent. Can you nopaste your .perl6/lib/NativeCall.pm6 ?
(I just want to double-check.)
also, it'll help me see the exact lines in your file. 22:16
nopaste "plobsing" at 192.168.1.3 pasted "NativeCall.pm6" (121 lines) at nopaste.snit.ch/45931
22:17 fperrad left
pmichaud hmmm 22:18
oh, I might need to update my version to include the new thunks
just a sec
Null PMC access in type() 22:22
okay, now I see it 22:23
hmm
22:26 bluescreen left 22:30 ShaneC joined
pmichaud it's happening right after the return from the real_connect call 22:31
i.e., real_connect makes it into the nci call and out again
so I'm guessing it might have something to do with the return value.
retv is coming back as a ResizablePMCArray 22:34
that's normal for something with :slurpy
it's first element is a ResizablePMCArray
I'm not so sure that's normal
shouldn't it be a Ptr or something Opaque-ish? 22:35
or an unmanaged struct, perhaps?
plobsing yeah, it should be 22:36
pmichaud trying something....
aha 22:37
getting rid of the :slurpy fixes it
or at least gets farther
wait, maybe not
trying again
plobsing the function returns null
pmichaud mysql_real_connect returns a MYSQL* 22:38
plobsing it returns null for me
pmichaud yes, perhaps NULL then
ah, returns NULL if the connection is unsuccessful 22:39
so why is a NULL becoming a ResizablePMCArray ?
plobsing no idea how
pmichaud what should the result of an nci call be to a function that returns a null pointer? 22:40
plobsing pmcnull
pmichaud oh 22:41
22:41 ShaneC left
pmichaud then getting rid of slurpy may have worked 22:41
because that's what I get in that case
just a sec 22:42
looksl ike even in 2011.04 it was normalish to get a Null PMC access result 22:46
I'm guessing that's the case when the mysql database connection fails
as would be the case when not running a server
are you running a server on your localhost?
(a mysql server, that is) 22:47
plobsing I don't think so
pmichaud see the requirements at the top of mysqlclient.p6
I'm certain I'm not
plobsing but it *could* return nulls before 22:48
pmichaud really?
plobsing because the MySQL example got further with old parrot and the more invasive call_with_cstring changes
pmichaud I just tried it on my 2011.04 install -- I got: 22:49
plobsing or maybe it was just failing in a different way
pmichaud pmichaud@kiwi:~/zip/perl/rakudo-2011.04$ ./perl6 mysqlclient.p6
library_init [currently not working]
init
get_client_info: 5.1.54
real_connect
Null PMC access in get_string() in <anon> at line 106:NativeCall.pm6 in main program body at line 153:mysqlclient.p6
what do you get?
plobsing I got several lines of SQL followed by something about permissions
I don't have 2011.04 easily available 22:50
pmichaud hmmm
maybe I'll install mysql-server on one of my other boxes to test
plobsing but I could have messed something up. I'm not terribly familiar with mysql. 22:51
pmichaud so, just to confirm: previously a call to a funciton returning a null pointer would cause the NCI thunk to return PMCNULL, and not a ResizablePMCArray containinga PMCNULL? 22:52
or, phrased differently, why the :slurpy on retv?
plobsing the slurpy is there because call-by-reference is translated into multi-returns 22:54
pmichaud is that new, or was that the behavior before also?
plobsing that's new
pmichaud oh, that's a deprecation also then
unless you mean that call-by-reference returns a ResizablePMCArray 22:55
what exactly is "call-by-reference" here, ooc? 22:56
plobsing how is adding something a deprecation?
pmichaud if you changed the return value of an existing feature, that's a deprecation
so if nci thunks now return arrays where they used to return a single element, that's different
plobsing the return value stays the same for old signatures. it is an added capability
pmichaud okay
so, you're saying it's possible for an nci thunk to have more than one return value
i.e., I could do:
$P99 = dlfunc ... 22:57
($P1, $P2, $P3) = $P99(...)
and it would be meaningful
for an apropriate dlfunc
plobsing yes
the multi return is the closest thing has to C's call-by-reference
pmichaud but a dlfunc that returned a NULL pointer would still just have it come back as the first return value
plobsing exactly 22:58
pmichaud testing
plobsing also, to be clear, there is a difference between multi-returns and returning an array 23:00
pmichaud right
good point
I'm adding a test case to t/library/ncifunc.t 23:01
(for null return)
23:04 benabik joined
pmichaud that seems to work 23:04
dalek rrot/ncifunc: f820150 | pmichaud++ | t/library/nciutils.t:
[nci]: Add test to NCI::Utils for functions returning a NULL pointer.
23:05
pmichaud oops
I thought I was on the master branch
23:05 benabik left
plobsing I've been working off your branch 23:06
pmichaud okay, I can stay in the branch a bit longer
I'm going to speculate that everything is in fact working 23:07
I'll set up a mysql_server on my notebook to make sure, though.
the only thing we have missing now are any thunks that disappeared since 2011.04
plobsing some of those will already be covered by other signatures and not be a problem 23:10
23:11 whiteknight joined
plobsing I suggest testing whatever code uses NativeCall, adding missing signatures as they are found. 23:12
pmichaud that's a lot of code to test
and I don't have a full set
that's like saying "test whatever HLLs are using Parrot"
or, more accurately "test every program using Parrot" 23:13
plobsing ok, what do you propose?
pmichaud looking.
were the removed thunks deprecated at all? 23:14
23:14 particle left
Tene Wasn't there work in progress a long time ago to generate thunks at runtime with llvm? What happened to that? 23:15
pmichaud Tene: I don't know.
plobsing we have the ability to generate thunks at runtime for users that have libffi
not all users have libffi. not all platforms support libffi.
Tene Ah.
'k
pmichaud although I find deprecation notices for the parameter types; I don't see anything that says their corresponding thunks would no longer be available 23:16
i.e., if I could previously do $P9 = dlfunc lib, name, 'ttttttt'
and the "upgrade path" is to convert all of those 't's into 'p' 23:17
then there needs to be a corresponding 'ppppppp' thunk.
23:17 PacoLinux left
plobsing I don't think that necessarily follows 23:17
23:17 particle joined
pmichaud let's walk through it this way 23:17
23:17 PacoLinux joined
pmichaud if I have a function: char* xyz(const char*, const char*) 23:18
plobsing the thunks were deprecated by virtue of accessing deprecated functionality
pmichaud let me finish
then previously I would've accessed this function by doing $P99 = dlfunc lib, 'xyz', 'ttt'
If 'ttt' is no longer available (and it isn't)
then how do I access my xyz func if there's no 'ppp' thunk in the core?
23:19 kid51 joined
plobsing the ability to provide libraries of thunks has been available for some time 23:19
pmichaud that's not the point of a deprecation
a deprecation says "this feature will no longer be available" and "here's your upgrade path"
so, now you're saying the upgrade path is for each project to also provide its own thunks? 23:20
plobsing where they don't exist in core parrot already, yes.
pmichaud er
"where they used to exist in core parrot but no longer exist"
Parrot core used to have thunks that could access my xyz() function above. It no longer has them. 23:21
(in my hypothetical example)
more to the point
plobsing it is unreasonable to keep adding thunks to parrot core indefinitely
pmichaud Parrot core used to have a thunk that could access mysql_real_connect. Until you patched Parrot a couple of hours ago, there wasn't an equivalent way to do that in the new scheme.
I'm not saying add them indefinitely. 23:22
I'm saying we have to support the ones we had in the previous supported release until they've gone through an appropriate deprecation cycle.
plobsing there was, adding it to core was for expedience
pmichaud what's the equivalent way to do it in the new scheme?
has it been documented somewhere?
plobsing it is the nci_thunk_gen tool, which has POD documentation and is used by the opengl bindings. 23:23
pmichaud how would all of my users that make use of NativeCall write the thunk libraries they need?
at this point I think I'll call in cotto and whiteknight for a ruling
plobsing that's likely appropriate.
cotto_work hi 23:24
cotto_work backscrolls
pmichaud cotto_work: I think we have zavolaj working again. I'll do more tests in a bit.
where we run into a problem now is that there are no equivalent nci thunks in Parrot that can support the behavior offered by the thunks that used to provide the 't' support
for example, someone was previously using nci with a signature of 'ppttttiti' 23:25
the thunk that supported 'ppttttiti' went away 23:26
the upgrade path documented thus far says to convert those 't's to 'p's, and wrap the arguments in calls that create/free the cstring. we've now done that
however, there's no 'ppppppipi' thunk in parrot to support the new calls
so a nci user is still stuck
because he cannot access library functions he was formerly able to access in Parrot 23:28
my opinion is that we need to provide equivalent thunks to what existed in 3.3.0, at least for a deprecation cycle
plobsing disagrees (and I'm not implying that his disagreement is misplaced... just that we disagree)
his alternative (and feel free to explain further if I give it short-shrift here) is that users should generate their own thunks using the nci_thunk_gen tool. 23:29
plobsing it is my opinion that these thunks were deprecated by virtue of making available, in a very explicit way, deprecated functionality
pmichaud I'm saying a user wouldn't have known that from reading the notices. 23:30
cotto_work My inclination is to say that we need to provide the thunks to make the upgrade path as smooth as possible.
pmichaud I have to join the family for dinner now -- I'll let you all work it out (or not, or to take a break also) and I should be back in 90 23:31
cotto_work whiteknight: ping
pmichaud: ok
I'm glad the immediate fire seems to be going out.
whiteknight has to backscroll 23:33
oh fun 23:35
whiteknight types ack --thpppt 23:36
where I'm running into trouble is the fact that the deprecation notice just wasn't clear enough about what all was expected to disappear 23:37
I don't feel like we can imply certain features will go away, because other things do
I think we can add back in a few of the necessary thunks for the purposes of the release, but also put in a deprecation notice to explicitly say that they are temporary 23:38
post 3.6, we should all expect any non-core NCI thunks to be disappeared 23:39
and several kittens will also be killed
pmichaud: do you have a list of the thunks we need back? 23:40
I also don't think it's super-hard to make your own thunk library. We should consider making sure that infrastructure gets added to the zavolaj build 23:44
Tene whiteknight: I like what I'm seeing with your PCC posts. One thing I'm surprised to not see in your benchmark was instantiating only a single callcontext object. 23:46
whiteknight Tene: can't do that, yet. If you try to reuse a CallContext without resetting it, we eventually hit a recursion limit exception
the recursion limit code is not handled in the places where you think it should be 23:47
Tene whiteknight: Something I didn't see you talk about is exposing signature metadata on subs such that we can build custom callcontexts optimized for a specific sub.
23:47 NotFound_b joined
whiteknight Tene: yeah, I left that out on purpose. I am very hesitant to suggest we add any more data to Sub without removing some of the crap that is already there 23:47
Tene 'k
whiteknight We need to make Sub much easier to subclass, I think, then we can attach those kinds of details to subclasses 23:48
CachedSub, or something like that
Tene It does kind of go in the opposite direction from "Do less in Parrot". I suppose that could certainly be done by individual HLLs isntantiating their own customized callcontexts with their own info.
NotFound_b whiteknight: making a tumb library for nci kinda defeats one of the purposes of nci: avoiding the need of C compiling to install modules. 23:49
23:49 rurban_ joined
whiteknight We want Parrot to do more of the right kind of stuff, and do less of the stuff that HLLs are going to override anyway 23:49
NotFound: I don't think that's a purpose of it at all 23:50
NotFound: NCI is supposed to give access to C libraries, not make the build any easier
and so long as the NCI thunk code is generated by a tool, humans don't have to write it 23:51
NotFound_b whiteknight: if I use a C compiler I already have access to C libraries.
whiteknight NotFound: and you would have to write your own bindings
it's easier to get the thunk generator to do that
23:51 rurban left, rurban_ is now known as rurban
NotFound_b whiteknight: I surely do, if NCI start being too obstrusive. 23:52
whiteknight NotFound_b: It depends on the usage. Sometimes NCI makes sense. Sometimes it doesn't
NotFound_b It makes most sense for me when you can do most usages from pir or an hll without needing to generate or compile any C. 23:53
whiteknight NotFound: if I have a textfile where I write the string "tipppt", and then I add one line to the makefile and then a few lines of PIR to get the dlfunc, that doesn't seem like much work 23:56
compared to the alternative, writing a whole PMC, or a whole dynop
or worse yet, writing a custom wrapper library and accessing THAT with NCI
NotFound_b Actually that one may be the easier solution. 23:57
whiteknight many people are not as comfortable with C/C++ as you are
having a tool to write C automatically can be a big help 23:58
but you're right. The tool is not perfect
NotFound_b whiteknight: The tool is not the current problem. The current problem is breaking existing code.ç
whiteknight yes. We are trying to fix that