Camelia, the Perl 6 bug

IRC log for #parrot, 2011-05-16

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:39 whiteknight plobsing: ping
00:43 kid51 joined #parrot
00:44 benabik left #parrot
00:45 sorear hello, whiteknight
00:46 whiteknight hello sorear
00:46 sorear I read your blog post on PCC
00:46 sorear I think you need to coordinate with jnthn
00:47 sorear 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
00:48 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
00:49 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
00:50 whiteknight Parrot shouldn't be doing the decoding internally, we should expose the CallContext to the user for decoding
00:50 whiteknight Rakudo uses a custom dynop, but other users could decode it in other ways
00:58 lucian left #parrot
01:10 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
01:10 pmichaud okay, thanks
01:10 whiteknight I've been half working on a reply, half trying to get my kid to go to bed
01:11 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 pmichaud think you could get my kid(s) to go to bed while you're at it, though?  ;-)
01:12 pmichaud afk, errands (and getting kids to bed)
01:16 dalek TT #1722 reopened by jkeenan++: osx build failed caused by errant '\c'
01:16 dalek TT #1722: http://trac.parrot.org/parrot/ticket/1722
01:21 dalek parrot: 351378a | jkeenan++ | config/auto/icu.pm:
01:21 dalek parrot: Apply correction suggested by Tom Christiansen for TT #1722.
01:21 dalek parrot: review: https://github.com/parrot/parrot/commit/351378a25f
01:22 bacek_at_work cotto, it's "mark and sweep" not "mark and seek" :)
01:24 whiteknight "bedtime" in my house means my kid goes into a different room, and screams/cries for several hours
01:30 ttbot Parrot 351378a2 MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/7518
01:34 kid51 msg cotto taptinder has been reporting build errors on MSWin32-x86 since commit 7eaaf85ef3
01:34 aloha OK. I'll deliver the message.
01:39 dalek Rosella/gh-pages: 6607a22 | Whiteknight++ | libraries/memoize.md:
01:39 dalek Rosella/gh-pages: fix title
01:39 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/6607a22d72
01:39 dalek Rosella: 223c7c2 | Whiteknight++ | / (2 files):
01:39 dalek Rosella: Fix memoize_method and unmemoize_method, and test simple use of both
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/223c7c2c38
01:39 dalek Rosella: de263f3 | Whiteknight++ | t/memoize/Memoize.t:
01:39 dalek Rosella: 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
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/de263f3c13
01:39 dalek Rosella: 0afc191 | Whiteknight++ | / (2 files):
01:39 dalek Rosella: +tests for Memoize.Cache.SimpleString
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/0afc1910f7
01:39 dalek Rosella: 1916dce | Whiteknight++ | t/memoize/cache/Item.t:
01:39 dalek Rosella: +tests for Memoize.Cache.Item
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/1916dcea9d
01:39 dalek Rosella: 1e91a80 | Whiteknight++ | / (12 files):
01:39 dalek Rosella: Merge branch 'memoize_cleanup'
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/1e91a80a11
01:39 dalek Rosella: c29f635 | Whiteknight++ | src/container/Container.winxed:
01:39 dalek Rosella: remove old hack and TODO note from Container
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/c29f63539c
01:39 dalek Rosella: 99ca730 | Whiteknight++ | / (2 files):
01:39 dalek Rosella: Add the ability for Container.resolve to pass arguments in to the default factory, if type resolution fails. Add a test for this behavior
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/99ca73038e
01:39 dalek Rosella: f15c6f0 | Whiteknight++ | src/container/Container.winxed:
01:39 dalek Rosella: fix bug, making sure to pass the hash of named args as flat,named. Pass slurpy args to Container.resolve to the resolving ItemFactory
01:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/f15c6f09c8
01:39 dalek Rosella: 7a8584b | Whiteknight++ | / (5 files):
01:39 dalek Rosella: 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:39 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/7a8584bc70
01:40 whiteknight left #parrot
01:41 pmichaud general comment:  people not directly familiar with Parrot might want to know that "TT #1722"  in fact means http://trac.parrot.org/parrot/ticket/1722  (rather than having to search for it)
01:42 pmichaud 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:43 pmichaud See also http://lists.parrot.org/pipermail​/parrot-dev/2011-May/005889.html  "It was hard to find the example..."
01:44 pmichaud </soapbox>
01:44 Khisanth left #parrot
01:44 benabik joined #parrot
01:57 Khisanth joined #parrot
02:03 kid51 left #parrot
02:29 cotto bacek_at_work, thank.  I don't know how I mixed that up.
02:29 cotto thanks, even
02:50 particle left #parrot
02:52 particle joined #parrot
02:53 woosley joined #parrot
03:02 Andy joined #parrot
03:05 woosley left #parrot
03:05 bluescreen left #parrot
03:19 woosley joined #parrot
03:22 dalek parrot/wrap-opengl-strings: 260436e | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
03:22 dalek parrot/wrap-opengl-strings: add function "call_with_cstring" to automate translation of cstring arguments
03:22 dalek parrot/wrap-opengl-strings: review: https://github.com/parrot/parrot/commit/260436e7f0
03:22 dalek parrot/wrap-opengl-strings: f2058de | plobsing++ | / (2 files):
03:22 dalek parrot/wrap-opengl-strings: wrap opengl functions taking or returning cstrings appropriately
03:22 dalek parrot/wrap-opengl-strings: review: https://github.com/parrot/parrot/commit/f2058deb05
03:24 cotto plobsing, is that to help with the zavolaj problem?
03:26 plobsing msg NotFound the wrap-opengl-strings branch fixes the window title issue
03:26 aloha OK. I'll deliver the message.
03:26 plobsing cotto: it can.
03:27 plobsing I was targetting that branch mainly at opengl (which had window title problems)
03:30 plobsing I'm not sure, this close to the release, that it should be going into trunk. Have we had the code freeze yet?
03:31 cotto plobsing, not yet
03:32 cotto I'm also trying an experiment to see if I can implement a suggestion from pmichaud about 't'
03:33 cotto He suggested that we tie C strings to their STRING* counterparts so that we could avoid the need to free them manually.
03:36 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 pmichaud fwiw
03:37 cotto Also a possibility, though not an ideal long-term fix.
03:37 cotto would be pretty easy to do short-term though
03:37 pmichaud seems like it's workable for long-term, too.
03:37 cotto Where's the code that destroys strings?
03:37 pmichaud aren't strings reclaimed normally?
03:38 cotto "normally"?
03:38 pmichaud basically, I'm thinking of something like
03:38 pmichaud STRING *cstring = Parrot_str_concat( old_str, null_str );
03:38 pmichaud c_func( ..., cstring->str_start, ...);
03:39 pmichaud 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.
03:39 plobsing that kinda nixes compaction, doesn't it?
03:39 pmichaud I think it's roughly equivalent to what we do now -- i.e., it allocates a new buffer and frees it up later
03:40 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
03:41 cotto If this code lives in nci thunk generation, the cstring variable wouldn't be around very long.
03:42 pmichaud right, same as allocating a cstring buffer and explicitly freeing it
03:42 pmichaud no, wait
03:42 pmichaud this code has to be part of the thunk
03:42 pmichaud because you don't have the string until the NCI function is called
03:42 pmichaud (the string argument, that is)
03:43 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
03:43 pmichaud it's a case we've already handled.
03:44 pmichaud 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)
03:45 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
03:45 plobsing I'm saying the STRING* variable isn't live
03:45 sorear How about just always keeping a 0 after all string variables?
03:46 sorear 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.
03:46 pmichaud sorear: we still want to clone the STRING somehow, because the called function might manipulate the contents
03:46 pmichaud I have no such expectation.  I consider that to be outside the scope of 't'
03:47 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)?
03:47 sorear literal strings are kept in read-only segments now
03:47 pmichaud sorear: these aren't necessarily literal strings
03:47 pmichaud nor do I think that the str_start buffers of STRING are read-only
03:48 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
03:48 plobsing the GC could talk to the OS to enforce RO, but I suspect that could get costly fast
03:48 sorear why do you think Parrot should do that, then?
03:49 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.
03:49 pmichaud cotto: whatever works -- I just wanted to let you know about the other (possibly simpler and more robust) option
03:49 plobsing we can't just pass in parrot's internal string buffers because it will fall over badly and unintuitively
03:50 plobsing 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"  :)
03:50 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.
03:51 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
04:01 pmichaud afk, have to get groceries for breakfast tomorrow
04:01 cotto ok
04:13 cotto plobsing, do you have the tuits to implement pmichaud's suggestion for 't' before the release?
04:15 plobsing I'm currently working on patching up zavolaj with call_with_cstring. Shouldn't be that hard.
04:15 plobsing I could try pmichaud's idea as a backup, but I have concerns that it may not be consistent
04:16 cotto Getting zavolaj working is the priority.  Getting it working elegantly would be really nice.
04:18 cotto Thanks for working on it.
04:38 bubaflub left #parrot
04:38 pmichaud fwiw, I'd be quite concerned about the overhead of call_with_cstring for a long-term solution, too.
04:38 pmichaud (just in for a second... out again)
04:40 plobsing argh, why won't PCT load properly from rakudo?
04:47 dalek parrot/shims: ca0e38c | petdance++ | / (6 files):
04:47 dalek parrot/shims: fixing up SHIM args
04:47 dalek parrot/shims: review: https://github.com/parrot/parrot/commit/ca0e38cfe3
04:50 Andy left #parrot
04:52 davidfetter left #parrot
04:56 particle left #parrot
05:05 dukeleto cotto: pong
05:10 cotto dukeleto, hio
05:10 cotto dukeleto, do you have some time for M0 atm?
05:11 dalek parrot/m0-spec: eebc3e7 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
05:11 dalek parrot/m0-spec: This is exactly why we make computers do our math.
05:11 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/eebc3e72cd
05:11 dalek parrot/m0-spec: aee227c | cotto++ | docs/pdds/draft/pdd32_m0.pod:
05:11 dalek parrot/m0-spec: add a note about appraoches to dealing with constant data
05:11 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/aee227c866
05:16 particle joined #parrot
05:23 dalek parrot/wrap-opengl-strings: 34749b4 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
05:23 dalek parrot/wrap-opengl-strings: use shifted integer in stead of iterator in array access (oops)
05:23 dalek parrot/wrap-opengl-strings: review: https://github.com/parrot/parrot/commit/34749b4172
05:23 dalek parrot/wrap-opengl-strings: 478188d | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
05:23 dalek parrot/wrap-opengl-strings: disable export code temporarily - it crashes rakudo
05:23 dalek parrot/wrap-opengl-strings: review: https://github.com/parrot/parrot/commit/478188d0ee
05:24 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj call_with_cstring" (119 lines) at http://nopaste.snit.ch/45840
05:24 plobsing ^^ WORKING PATCH ^^ (SFAICT)
05:29 contingencyplan left #parrot
05:29 pmichaud mysql_library_init and mysql_library_end are no longer available?
05:33 plobsing they've never been available
05:34 plobsing it's just that now zavolaj fails early on missing symbols
05:34 plobsing so in stead of not calling them, we don't define bindings to them in the first place
05:34 dukeleto cotto: yeps
05:34 pmichaud hmmm, that might not work fo us.
05:34 pmichaud for us.
05:35 * 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?
05:36 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.
05:37 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:38 pmichaud 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:39 plobsing it shouldn't be to hard to change over. It was simply easier to implement the behaviour that I found more desirable.
05:40 * plobsing sleeps
05:41 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 pmichaud *existence
05:49 dukeleto cotto: you have m0 questions?
05:52 dukeleto cotto: do you have an example m0b file I can use as test data for the assembler?
05:52 dukeleto cotto: or do I have to make one myself?
05:53 theory left #parrot
05:55 cotto dukeleto, istr that you had some questions about the metadata segment.
05:56 cotto I don't have an example m0b file.
05:58 dukeleto cotto: generally, just noticing we still have some TODO's and such in the spec
05:58 cotto one fewer now
05:59 cotto actually, no.  just a longer one
05:59 dukeleto cotto: https://github.com/parrot/parrot/blob/m0-​prototype/t/m0/m0_bytecode_loading.t#L59
05:59 dukeleto cotto: did you mean to make to 'vars' segments there?
06:00 preflex left #parrot
06:00 cotto dukeleto, typo on my part
06:02 preflex joined #parrot
06:08 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 dukeleto cotto: i think my tuits may have run out for tonight. Did a serious 14ish mile bike ride before.
06:09 cotto dukeleto, that'll drain you
06:14 cotto dukeleto, catch you later
06:21 dukeleto cotto: see you on the flip side
06:26 ShaneC joined #parrot
06:35 woosley left #parrot
06:50 fperrad joined #parrot
06:52 cotto bacek_at_work, ping
06:55 cotto bacek_at_work, unping
06:55 cotto found it
07:01 dod joined #parrot
07:08 bacek_at_work cotto, unpong. Lost it :)
07:11 cotto bacek_at_work, do you have a minute for patch review?
07:11 bacek_at_work cotto, yeah, sure
07:11 dalek parrot/tied-cstring: 026b4cf | cotto++ | / (2 files):
07:11 dalek parrot/tied-cstring: add tied_cstr to parrot_string_t, null where needed
07:11 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/026b4cf010
07:11 dalek parrot/tied-cstring: a774442 | cotto++ | src/string/api.c:
07:11 dalek parrot/tied-cstring: add function to get a tied_cstring
07:11 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/a774442ce2
07:11 dalek parrot/tied-cstring: dadae2d | cotto++ | src/gc/gc_ (4 files):
07:11 dalek parrot/tied-cstring: tell gc about tied_cstr
07:11 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/dadae2d34c
07:11 dalek parrot/tied-cstring: 039297f | cotto++ | src/string/api.c:
07:11 dalek parrot/tied-cstring: make the tied cstring code a tad smarter and less leaky
07:11 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/039297f2b6
07:11 cotto bacek_at_work: ^
07:12 bacek_at_work hey! It's 3 of them! :)
07:12 cotto https://github.com/parrot/parro​t/compare/026b4cf%5E...039297f
07:13 cotto nothing uses it yet, but the idea is that it'll make the 't' nci type easier to implement
07:14 bacek_at_work Looks about all right.
07:14 bacek_at_work You just missed couple of files in "t" directory :)
07:14 cotto ok.  I didn't think there'd be anything surprising.
07:14 cotto of course
07:14 cotto just wanted to vet the concept
07:14 bacek_at_work and it's better to use Parrot_str_free_cstring
07:15 bacek_at_work Concept is actually really good and can give us some small performance benefits.
07:15 cotto wfm
07:15 cotto pmichaud++ for the idea
07:15 bacek_at_work pmichaud++ indeed :)
07:19 cotto I feel good having figured out how to do that.  The rest of the problem seems solvable now.
07:20 dalek parrot/tied-cstring: 45ffc63 | cotto++ | src/gc/gc_ (4 files):
07:20 dalek parrot/tied-cstring: use string api function instead of mem_internal_free
07:20 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/45ffc63926
07:21 cotto 'night
07:21 cotto bacek++ for letting me pick your brain
07:23 ShaneC left #parrot
07:24 * moritz imagines cotto using a lock pick to access bacek's brain through the ear :-)
07:29 mj41 joined #parrot
07:36 woosley joined #parrot
07:36 woosley left #parrot
07:47 UltraDM joined #parrot
07:49 rurban_ joined #parrot
07:51 rurban left #parrot
07:51 rurban_ is now known as rurban
08:13 bacek ~~
08:14 mikehh hi bacek
08:14 bacek aloha, mikehh
08:18 dalek parrot: 8e49d49 | fperrad++ | runtime/parrot/library/uuid.pir:
08:18 dalek parrot: [uuid] refactor with the Parrot's source of entropy.
08:18 dalek parrot: review: https://github.com/parrot/parrot/commit/8e49d498d2
08:29 ttbot Parrot 8e49d498 MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/7586
08:53 contingencyplan joined #parrot
09:09 mikehh runtime/parrot/library/uuid.pir depends on math.ops
09:10 mikehh completely blows up make -j world
09:11 mikehh had to run it 5 times before it completed
09:15 bacek left #parrot
09:22 mikehh ok I think I added the right dependency - testing, will push when done
09:31 bacek joined #parrot
09:32 dalek parrot: 8326612 | mikehh++ | config/gen/makefiles/root.in:
09:32 dalek parrot: added dependency for runtime/parrot/library/uuid.pbc and tidied up
09:32 dalek parrot: review: https://github.com/parrot/parrot/commit/832661206c
09:40 ttbot Parrot 83266120 MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/7632
09:46 mikehh seriously need someone with MSWin32 to sort that out ^ ^ ^
10:10 bacek mikehh, s/someone/cotto/
10:15 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-272-g8326612
10:15 mikehh Ubuntu 11.04 i386 (gcc)
10:17 mikehh bacek: don't care who does it, needs to be done before release :-}
10:18 mikehh my windoze skills are a bit stale, haven't used it for a couple of years
10:19 bacek mikehh, he broke it. he has windows. he have to fix it :)
10:22 mikehh :-} - and my last use was convertin' to linux anyway
10:35 dalek parrot: 19ed0b0 | fperrad++ | config/gen/makefiles/root.in:
10:35 dalek parrot: [build] fix on Windows
10:35 dalek parrot:
10:35 dalek parrot: use Makefile comment instead of shell comment
10:35 dalek parrot: review: https://github.com/parrot/parrot/commit/19ed0b09b2
10:59 bacek Yay! fperrad++
11:02 Psyche^ joined #parrot
11:07 Patterner left #parrot
11:07 Psyche^ is now known as Patterner
11:07 SHODAN joined #parrot
11:09 mikehh well that worked - fperrad++
11:12 ambs joined #parrot
11:17 utsl left #parrot
11:49 UltraDM left #parrot
11:51 davidfetter joined #parrot
11:57 PacoLinux joined #parrot
11:58 davidfetter_ joined #parrot
12:00 lucian joined #parrot
12:02 davidfetter left #parrot
12:02 davidfetter_ is now known as davidfetter
12:06 ambs left #parrot
12:08 ambs joined #parrot
12:10 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-273-g19ed0b0
12:10 mikehh Ubuntu 11.04 i386 (gcc --optimize)
12:27 davidfetter left #parrot
12:41 woosley joined #parrot
12:42 woosley left #parrot
12:44 whiteknight joined #parrot
12:53 whiteknight good morning, #parrot
12:58 whiteknight plobsing, cotto: ping
12:58 PacoLinux left #parrot
12:59 bubaflub joined #parrot
13:10 UltraDM joined #parrot
13:12 ambs left #parrot
13:15 mtk joined #parrot
13:17 ptc joined #parrot
13:18 ptc seen particle
13:18 aloha particle was last seen in #parrot 8 hours 1 mins ago joining the channel.
13:24 lucian left #parrot
13:28 JimmyZ joined #parrot
13:33 mtk left #parrot
13:35 ptc left #parrot
13:38 mtk joined #parrot
13:52 PacoLinux joined #parrot
13:53 woosley joined #parrot
14:01 dalek parrot/gc_tuning: e65f5cd | bacek++ | / (2 files):
14:01 dalek parrot/gc_tuning: Add skeleton functions for PA iterators
14:01 alester left #parrot
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/e65f5cd60b
14:01 dalek parrot/gc_tuning: 9d9034e | bacek++ | / (2 files):
14:01 dalek parrot/gc_tuning: Mark PA iterators functions with PARROT_EXPORT
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/9d9034e2e9
14:01 dalek parrot/gc_tuning: f510328 | bacek++ | t/src/pointer_array.t:
14:01 dalek parrot/gc_tuning: Start adding tests for PA Iterators. Horribly broken atm.
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/f5103283a6
14:01 dalek parrot/gc_tuning: d090963 | bacek++ | / (2 files):
14:01 dalek parrot/gc_tuning: Implement pa_begin and pa_iter_destroy
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/d090963776
14:01 dalek parrot/gc_tuning: 4111692 | bacek++ | t/src/pointer_array.t:
14:01 dalek parrot/gc_tuning: Redo test with some kind of nano-test-more.
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/4111692bb2
14:01 dalek parrot/gc_tuning: d24b29a | bacek++ | / (2 files):
14:01 dalek parrot/gc_tuning: Implement pa_iter_is_empty properly
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/d24b29a011
14:01 dalek parrot/gc_tuning: 5d00fc6 | bacek++ | / (2 files):
14:01 dalek parrot/gc_tuning: Implement pa_iter_get
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/5d00fc645f
14:01 dalek parrot/gc_tuning: dc1989b | bacek++ | t/src/pointer_array.t:
14:01 dalek parrot/gc_tuning: Add (failing) tests for pa_iter_next
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/dc1989b875
14:01 dalek parrot/gc_tuning: f3c03b8 | bacek++ | / (2 files):
14:01 dalek parrot/gc_tuning: Implement basic iteration
14:01 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/f3c03b8020
14:01 dalek parrot/gc_tuning: 2b22ed0 | bacek++ | / (3 files):
14:01 dalek parrot/gc_tuning: Change iterator to return pointer-to-value
14:02 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/2b22ed0abf
14:02 dalek parrot/gc_tuning: 666a7c4 | bacek++ | / (2 files):
14:02 dalek parrot/gc_tuning: Implement iterating over removed elements
14:02 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/666a7c49d2
14:02 dalek parrot/gc_tuning: e96590d | bacek++ | src/gc/gc_gms.c:
14:02 dalek parrot/gc_tuning: Totally break GMS.
14:02 dalek parrot/gc_tuning:
14:02 dalek parrot/gc_tuning: Rework it to not to store additional pointer in header.
14:02 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/e96590d310
14:02 dalek parrot/gc_tuning: 21273cd | bacek++ | src/gc/gc_gms.c:
14:02 dalek parrot/gc_tuning: Fix braino and remove debug output
14:02 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/21273cd812
14:02 dalek parrot/gc_tuning: b0a839b | bacek++ | src/gc/gc_gms.c:
14:02 dalek parrot/gc_tuning: Change behavior of is_(str|pmc)_ptr to be same as old GC MS
14:02 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/b0a839b7ce
14:02 dalek parrot/gc_tuning: 5b08fe4 | bacek++ | src/gc/gc_gms.c:
14:02 dalek parrot/gc_tuning: Enable 'manual' memory management back
14:02 dalek parrot/gc_tuning: review: https://github.com/parrot/parrot/commit/5b08fe45de
14:02 * bacek wave from tomorrow and going to recharge.
14:03 bluescreen joined #parrot
14:03 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?
14:03 aloha OK. I'll deliver the message.
14:03 bacek moritz, no way. I run out of beer :)
14:04 pmichaud bacek: yes, I can test gc_tuning branch.  you mean for timing?
14:04 woosley left #parrot
14:04 bacek pmichaud, yes, benchmarking it
14:04 * moritz can do a simple spectest run on top of it
14:05 bacek moritz, it will be helpful
14:06 Coke_ pmichaud++ # post to list.
14:07 * Coke_ inadvertently skips a weekend worth of review. Did I miss anything?
14:08 pmichaud Coke_: http://pmichaud.com/sandbox/relman-draft.txt  is looking for comments/feedback
14:10 Coke_ pmichaud++ # post to list.
14:10 Coke_ +1. no finger pointing, level head, well done
14:13 pmichaud bacek: what would you like me to compare with?
14:13 nopaste left #parrot
14:13 lateau joined #parrot
14:14 pmichaud rakudo-2011.01 and rakudo-2011.04, definitely
14:19 nopaste joined #parrot
14:23 lateau I'm wondering if you'll help me. I'm trying to convert Integer to Float with 'box'
14:23 lateau I did this...$P0 = box 5; $N0 = $P0;
14:23 lateau but print $P0 says just "5"
14:23 moritz what else should it say?
14:23 pmichaud printing floating point numbers doesn't force the decimal to appear
14:23 moritz if you want a different stringification of your num, use printf
14:24 lateau thank you!! i try printf
14:24 pmichaud also
14:24 lateau yub
14:24 pmichaud note that your $P0 *is* an Integer
14:24 pmichaud box 5 results in an Integer
14:24 moritz just $N0 is a num
14:24 pmichaud if you want the PMC to be a Float, use   box 5.0
14:25 lateau are there any ways convert integer to floating number?
14:26 lateau i red this, example's from http://docs.parrot.org/parrot/latest/htm​l/docs/book/pir/ch04_variables.pod.html and it says boxing can low-level type conversion
14:26 moritz $N0 = $I0
14:26 moritz then your $N0 is a num
14:26 moritz you can then to $P0 = $N0 if you really want it in a PMC
14:27 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
14:27 pmichaud i.e., it converts an int to an Integer, a num to a Float, or a string to a String
14:28 preflex left #parrot
14:28 lateau hmm...
14:28 lateau $P0 = box 5
14:28 lateau $S0 = $P0           # the string "5"
14:28 lateau $N0 = $P0           # the number 5.0
14:29 lateau i cannot understand this example clearly...
14:30 pmichaud the first statement creates an Integer PMC from the int 5, and binds $P0 to that PMC
14:30 pmichaud the second statement retrieves the string value of the PMC -- i.e., it gives us the string value of $P0 ("5")
14:30 pmichaud the third statement retreives the floating point value of the PMC -- i.e., it gives us a num value of 5.0
14:31 lateau i see!
14:33 preflex joined #parrot
14:49 bluescreen left #parrot
14:59 UltraDM left #parrot
15:04 woosley joined #parrot
15:04 bluescreen joined #parrot
15:05 theory joined #parrot
15:15 SHODAN left #parrot
15:15 woosley left #parrot
15:26 dalek winxed: r1002 | NotFound++ | trunk/winxedst1.winxed:
15:26 dalek winxed: add namespace level 'using' and 'using namespace' and change compile time scope
15:26 dalek winxed: search to support them and fix some problems
15:26 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1002
15:27 benabik left #parrot
15:29 whiteknight NotFound++
15:29 whiteknight using namespace looks like it will be extremely helpful in the REPL
15:30 NotFound whiteknight: I'm still testing, not available yet in plumage install.
15:31 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.
15:33 lateau thanks guys and have a goodnight :)
15:34 lateau left #parrot
15:40 alester joined #parrot
15:44 cotto whiteknight, pong
15:45 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'
15:45 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 #parrot
15:46 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:47 NotFound cotto++
15:47 cotto crud.  I seem to have summoned chromatic.
15:47 whiteknight heh, that's what got me looking at your branch in the first place
15:47 cotto nm.  still workable
15:48 whiteknight and it's good to summon chromatic. We need more chromatic
15:48 cotto just needs const
15:48 NotFound An improved replacement will be very good, but we need backwards compatibility for some time.
15:48 alester I've got a lot of splinty goodness waiting for the next release to get out.
15:49 alester Nothing I want to merge back to master yet.
15:49 alester the day before a release
15:49 rurban_ joined #parrot
15:50 whiteknight alester++
15:50 cotto petdance++
15:50 cotto whiteknight, can you fix the win32 build failure?  I'll dig into it today if not.
15:51 whiteknight yeah, I can take a glance at it later
15:51 rurban left #parrot
15:52 rurban_ is now known as rurban
15:52 dalek parrot: c07f2ff | (Gerd Pokorra)++ | NEWS:
15:52 dalek parrot: update news for release 3.4.0
15:52 dalek parrot: review: https://github.com/parrot/parrot/commit/c07f2ffbb2
15:52 cotto whiteknight, great.  thanks
15:54 moritz didn't fperrad++ fix it earlier?
15:54 moritz or was that another one?
15:55 * 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
15:55 whiteknight We can talk about that decision more, if we want
15:56 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".
15:56 JimmyZ when people read NEWS, they got confused, what is Winxed?  where is it?
15:57 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 #parrot
16:03 darbelo_ joined #parrot
16:07 mikehh cotto: it appears that NMAKE does not like comment characters not in line 1
16:08 darbelo left #parrot
16:09 cotto mikehh, guess so
16:11 darbelo_ left #parrot
16:12 darbelo joined #parrot
16:22 dalek parrot/tied-cstring: 6c60363 | cotto++ | src/string/api.c:
16:22 dalek parrot/tied-cstring: use const for tied_cstr return type
16:22 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/6c60363107
16:22 dalek parrot/tied-cstring: f73c1c5 | cotto++ | src/nci/ (2 files):
16:22 dalek parrot/tied-cstring: first attempt to re-add 't' NCI type; needs tests and review
16:22 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/f73c1c5b8a
16:22 dalek parrot/tied-cstring: 7ac893d | cotto++ | tools/dev/nci_thunk_gen.pir:
16:22 dalek parrot/tied-cstring: first shot at re-adding 't' to nci thunk gen; also needs tests and review
16:22 dalek parrot/tied-cstring: review: https://github.com/parrot/parrot/commit/7ac893d434
16:29 lucian joined #parrot
16:41 JimmyZ left #parrot
16:47 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] working zavolaj (now with fail-at-runtime)" (88 lines) at http://nopaste.snit.ch/45872
16:48 dukeleto i am +1 to having HLL news (like Winxed) in NEWS
16:49 NotFound dukeleto: fine for me, as long as they are a short summary.
16:50 plobsing pmichaud: http://nopaste.snit.ch/45872 is a revised patch to zavolaj that puts failures at runtime as requested
16:51 dukeleto tadzik: can you close this TT if it works for you? http://trac.parrot.org/parrot/ticket/2101
16:52 dalek parrot: aafb693 | plobsing++ | / (3 files):
16:52 dalek parrot: Merge branch 'wrap-opengl-strings'
16:52 dalek parrot: review: https://github.com/parrot/parrot/commit/aafb6933dd
16:52 bluescreen left #parrot
16:52 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?
16:53 pmichaud dukeleto: I have an open issue with the relationship managers that wants resolving before the release.
16:53 pmichaud or maybe it was tewk that asked about Select.   TT #2034
16:54 pmichaud if Parrot isn't going to adopt this soon, we may just put it in Rakudo for now.
16:55 plobsing dukeleto: I've not seen any emails on parrot-dev about a code freeze. perhaps I've missed something.
16:55 cotto_work ~~
16:56 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.
16:56 whiteknight that has to get fixed before the release, so that trumps code freeze
16:56 plobsing I've got a patch that fixes zavolaj
16:57 cotto_work I emailed him asking to hold off the release until the zavolaj issue is fixed.
16:57 plobsing http://nopaste.snit.ch/45872
16:58 pmichaud I'm looking at the patch now.
16:58 whiteknight plobsing: what is the descalarref op?
16:58 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.
16:58 pmichaud It changes the signatures of at least one function.
16:58 plobsing whiteknight: it is rakudo magic dust
16:58 plobsing sprinkled liberally
16:58 whiteknight plobsing: ah, okay
16:58 whiteknight that's why I'm not familiar with it
16:58 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
16:59 dukeleto pmichaud: what is up?
16:59 whiteknight cotto_work: make sure your branch plays nicely with these changes
17:00 cotto_work whiteknight: "these changes"?
17:00 whiteknight cotto_work: plobsing just merged a branch
17:00 cotto_work ok
17:00 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.
17:00 pmichaud also, fwiw, I'm not entirely comfortable relying upon NCI::Util which was just added ~1 day ago.
17:00 pmichaud *code in NCI::Util
17:00 cotto_work they look substantially orthogonal
17:01 plobsing NCI::Utils has been around for years
17:01 pmichaud I meant call_with_cstring
17:01 pmichaud and Rakudo/zavolaj has never used NCI::Util
17:01 pmichaud *s
17:01 plobsing it works
17:02 whiteknight github has mention of it all the way back to 2009
17:02 pmichaud of call_with_cstring?  really?
17:02 * pmichaud checks
17:02 whiteknight no, not call_with_cstring
17:02 whiteknight just NCI::Utils
17:02 pmichaud that's what the patch is using, primarily.
17:02 whiteknight that's been around since at least 2009
17:02 bluescreen joined #parrot
17:03 pmichaud I meant "new code in NCI::Utils", not NCI::Utils itself
17:03 pmichaud but I recognize that at this point whatever we do we're going to be relying on new/untested code.  :(
17:03 dodathome joined #parrot
17:04 whiteknight pmichaud: ideally, we only need to rely on it until the minute after the release
17:04 pmichaud ?
17:04 whiteknight then we can work on a solution which is acceptable to everybody
17:05 pmichaud if I make a (star) release based on this release, I'm relying on it for much longer than one minute.
17:05 pmichaud I have to rely on it until there's a new parrot release that updates it.
17:05 whiteknight what is the liklihood that you make a star release based on Parrot 3.4?
17:05 pmichaud you didn't read my email?
17:05 whiteknight I did.
17:06 whiteknight 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
17:06 whiteknight I want to know where that possibility currently stands
17:06 pmichaud until today, that probably was pretty close to 100%
17:06 pmichaud *probability
17:06 whiteknight okay. So let's still shoot for that
17:07 whiteknight 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.
17:07 pmichaud I'm much more comfortable with something that restores a 't' work-alike than anything that substantially changes zavolaj
17:07 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
17:07 pmichaud because I don't know how many things depend on zavolaj
17:08 whiteknight ok
17:08 whiteknight cotto is doing work similar to that. Now we need to ask what his ETA is
17:08 cotto_work eyes on my branch is a good idea
17:08 pmichaud if the zavolaj fix was a simple one, I'd be less concerned.
17:08 cotto_work afk 10m
17:08 whiteknight cotto_work: okay. Merge it ASAP, and we all test like wild hyenas
17:08 darbelo left #parrot
17:09 cotto_work no idea if it even works
17:09 whiteknight blah
17:09 darbelo joined #parrot
17:09 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.
17:10 plobsing oh. oops. forgot to document. sorry, I'll get right on that.
17:11 mj41 left #parrot
17:12 pmichaud in the patch, I also have no idea what
17:12 pmichaud when Str {
17:12 pmichaud # pir::push_vPi($cstrings, $i);
17:12 pmichaud }
17:12 pmichaud is intended to do
17:14 plobsing it pushes an integer into a variable
17:14 plobsing I tried using array variables, but they didn't work
17:14 pmichaud not if it's commented out, though.
17:14 whiteknight dukeleto: ping
17:14 plobsing commented out?
17:14 pmichaud # means comment in Perl
17:15 plobsing yes, I'm aware.
17:16 pmichaud also, pir:: needs two __'s to make an opcode signature
17:16 pmichaud i.e., push__vPi
17:17 dukeleto whiteknight: pong
17:17 whiteknight dukeleto: privmsg
17:19 dalek parrot: d918686 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
17:19 dalek parrot: document call_with_cstring
17:19 dalek parrot: review: https://github.com/parrot/parrot/commit/d918686b48
17:20 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj (v2)" (88 lines) at http://nopaste.snit.ch/45873
17:22 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:23 pmichaud rakudo doesn't know about all of the possible PIR opcodes
17:23 pmichaud there's not really a place it can look
17:23 pmichaud basically, you're asking it to check in a foreign namespace that doesn't exist
17:23 bluescreen left #parrot
17:24 plobsing there's also not a lot of opcodes that end in '_[vPisn]+'. it could at least warn.
17:25 pmichaud I beg to differ.
17:25 pmichaud There are a *ton* of opcodes that end in that pattern.
17:25 plobsing such as?
17:25 pmichaud set_i_n
17:25 pmichaud set_i_i
17:25 pmichaud set_p_i
17:25 pmichaud add_p_p_i
17:26 plobsing ok, how about '_[vPism]{2,}'?
17:26 plobsing er n
17:26 darbelo left #parrot
17:27 pmichaud "It would have been nice if Parrot has warned about 't' no longer being available."  :-)
17:27 plobsing and it did
17:27 plobsing when you tried to use it. Perl 6 is all about failing late right?
17:28 pmichaud I mean when it was deprecated, not when it was removed.  :-)
17:28 pmichaud "warn early" is the principle you're espousing.
17:32 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.
17:33 plobsing I wonder the same thing myself
17:33 pmichaud that scares me a bit too.
17:33 plobsing the only logical explanation is that it wasn't exercised
17:33 pmichaud you mean that the tests weren't passing string arguments to C funcs?
17:33 pmichaud unlikely.
17:33 plobsing I've been using examples/mysqlclient.p6
17:33 plobsing pmichaud: that only handles the returns
17:34 pmichaud no, the part that was commented out was in the args
17:34 pmichaud not the returns
17:34 plobsing oh. ouch. how the hell did that work?
17:34 pmichaud if it was in the returns, I'd say "yeah, not exercised"
17:37 pmichaud so, if I read this right, the cstrings array is a list of argument indices that are strings?
17:38 bluescreen joined #parrot
17:38 pmichaud $P0     = str_to_cstring(interp, $S0)
17:38 pmichaud oh my.
17:38 pmichaud that looks totally evil.
17:39 plobsing I don't see the problem.
17:39 pmichaud you're putting a non-PMC into a PMC register?!
17:39 whiteknight I assume the pointer is being wrapped into a Ptr PMC?
17:39 pmichaud or is it actually a Ptr PMC
17:39 pmichaud okay
17:39 pmichaud that makes more sense
17:40 plobsing well, NCI currently uses UnManagedStruc PMCs (this is the UMS that zavolaj depends on)
17:40 plobsing these are less efficient than Ptr PMCs space-wise
17:40 plobsing but it returns a pointer-ish PMC, yes
17:42 whiteknight is the lifetime of that PMC tied to the lifetime of the cstring?
17:43 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)
17:44 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)
17:44 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.
17:44 pmichaud let's look at mysql_real_connect
17:44 plobsing the first thing in a PMC header is flags, which are frequently 0, so the strings passed were empty strings
17:45 plobsing I confirmed this by binding to printf with the broken version. it outputs nothing.
17:45 plobsing with the fixed version, I get a "Hello World!" loud and clear
17:45 pmichaud it will have an NCI signature of    ppttttiti
17:46 pmichaud why can't call_with_cstrings (or something similar) simply parse that signature to find out which arguments need to be wrapped?
17:46 pmichaud instead of having a separate array of argument indicies?
17:46 whiteknight i don't know if the signature string is stored with the dlfunc pmc
17:46 whiteknight if so, that would seem the better way to do it
17:46 plobsing I could write a routine that takes the same parameters as dlfunc and provides the wrapping required.
17:46 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 #parrot
17:47 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
17:47 plobsing the current implementation was simply the first thing that occured to me
17:47 whiteknight plobsing: how much effort would it take?
17:47 pmichaud then we simply say that people use    call_with_cstrings to get the desired dlfunc instead of calling dlfunc directly
17:47 plobsing whiteknight: just for the 't' signatures? not too long
17:48 pmichaud and call with cstrings can build all of the wrappers it wants, and return the closure or whatever
17:48 pmichaud and I suggest it be called something other than "call_with_cstrings"
17:49 pmichaud it could become the primary interface to nci
17:49 pmichaud (well, if it weren't relatively slow)
17:49 plobsing dlfancy?
17:49 whiteknight there are multiple different available semantics with regard to cstrings, so a single wrapper for everybody seems to be too little
17:50 pmichaud whiteknight: you can hide multiple semantics with different signature letters
17:50 pmichaud *and*
17:50 pmichaud it doesn't have to be an everything for everybody interface -- just something that handles the common cases
17:50 pmichaud the ability to get to the pointer/p level and wrap things yourself is still there.
17:50 plobsing I've been trying to move away from signature letters. Everybody has a different idea about how the description language should be extended.
17:50 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
17:51 cotto_work back
17:51 pmichaud fair enough, I'm not tied to the idea of signature letters as a long term solution
17:51 whiteknight they are still *the* solution for 3.4
17:51 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
17:51 plobsing that, I can provide
17:52 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 pmichaud and for tests, we could potentially resurrect the tests that tested the 't' parameters in NCI previously
17:52 pmichaud (but have them go through the new wrapper instead of dlfunc also)
17:53 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:54 ambs joined #parrot
17:54 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 pmichaud it's still a very common case for users.
17:54 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
17:54 pmichaud he didn't give percentages for each
17:55 whiteknight they aren't 9%
17:55 whiteknight 0%
17:55 pmichaud he was coming from the position of "one letter to do everything", which I completely disagree with
17:55 whiteknight well, that's what 't' is right now
17:55 whiteknight and it's clearly untenable in the long run
17:55 pmichaud okay, I agree that's untenable
17:55 pmichaud and I've never argued for keeping *that* interpretation
17:55 whiteknight but you are correct, a mechanism to take STRING and get cstring is a fundamental and important mechanism
17:55 pmichaud I've only said that passing constant strings to library functions is a very common use case
17:56 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'
17:56 cotto_work plobsing: do you think the tied-cstring branch is on the right track?
17:56 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
17:56 pmichaud cotto_work: we have a fourth approach now, which I think I'd be very comfortable with :-)
17:56 cotto_work pmichaud: if you're happy I'm happy
17:57 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
17:57 whiteknight plobsing++
17:57 pmichaud well, I still think the tied-cstring has the potential to have some memory churn wins
17:57 pmichaud so it's worth exploring, but perhaps doesn't need to be committed to before release
17:57 whiteknight pmichaud: yes, it's definitely worth testing out
17:57 cotto_work bacek thought so to when I asked him last night
17:57 whiteknight I can't say I would be surprised no matter how it turns out.
17:58 whiteknight 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
17:59 pmichaud (I finally came up with a version that didn't require it so much... but my initial attempts were going to be churn-ful)
18:03 pmichaud wowee!   Bacek's gc_tuning branch shows a 98% speed improvement on many of the .p6 tests!!!
18:03 pmichaud (wait for it)
18:04 ShaneC joined #parrot
18:04 cotto_work lolwut?
18:04 plobsing 98%?
18:04 aloha 0.98
18:04 pmichaud pmichaud@kiwi:/zip/rakbench/rakudo-2011.04-gct$ /usr/bin/time ./perl6 /zip/rakbench/bench/B03-sin.p6
18:04 pmichaud Command terminated by signal 11
18:04 pmichaud 1.00user 0.09system 0:01.20elapsed 90%CPU (0avgtext+0avgdata 891344maxresident)k
18:04 pmichaud 0inputs+0outputs (0major+55789minor)pagefaults 0swaps
18:04 pmichaud (signal 11 = segmentation fault)
18:05 plobsing we can segfault a lot faster than that ;)
18:05 pmichaud lol
18:07 ShaneC left #parrot
18:09 cotto_work pmichaud: what's the plan for 't' between now and the release?
18:10 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:11 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 http://irclog.perlgeek.de/p​arrot/2011-05-16#i_3751386
18:12 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] initial dlfancy implementation" (64 lines) at http://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
18:12 plobsing right now, it just dispatches to call_with_cstring. but it does provide a dlfunc-emulating interface
18:12 plobsing whiteknight: preaching to the choir
18:13 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
18:14 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 pmichaud 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?
18:15 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
18:15 whiteknight whatever solution we go with, we need to get it into master soon so we can test it as much as possible
18:15 pmichaud I suspect I could have my version of dlfancy in about 3 hrs from now
18:15 whiteknight if dlfancy can be made to work, I think there's consensus that it is the better approach
18:15 cotto_work pmichaud: like I said, I'm happy as long as the problem is solved to your satisfaction.
18:16 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.
18:18 pmichaud well, I'd also be refactoring (heavily) call-with-cstrings
18:18 pmichaud anyway, I'll propose it a bit later and you can review/accept/whatever
18:19 pmichaud afk
18:20 whiteknight plobsing: I don't think that it would be a huge battle, if we decided to take up the fight
18:21 cotto_work +1
18:21 whiteknight I would *love* to see winxed snapshotted into the parrot repo
18:21 pmichaud "NO!  NQP MUST WIN FOREVER!"    j/k
18:21 whiteknight I'm not saying to take NQP out. I like NQP and it should stay
18:21 NotFound Language wars!
18:21 pmichaud "THERE CAN BE ONLY ONE!"
18:21 plobsing that would be nice. I'd settle for winxed code and generated PIR living side-by-side.
18:21 whiteknight my languages and I, we're polyamorous
18:22 pmichaud aloha: msg bacek  alas, gc_tuning branch results in many segfaults for me:  http://gist.github.com/975001
18:22 aloha pmichaud: OK. I'll deliver the message.
18:23 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 whiteknight and why do you have both?
18:24 dalek parrot: 0cf475b | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
18:24 dalek parrot: add dlfancy for providing "fancier" NCI types
18:24 dalek parrot: review: https://github.com/parrot/parrot/commit/0cf475be7c
18:24 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj/dlfancy" (19 lines) at http://nopaste.snit.ch/45875
18:24 plobsing not quite working yet for some reason
18:24 whiteknight that is a *much* nicer zavolaj patch
18:24 NotFound whiteknight: after the last two month changes, there is less difference than before.
18:25 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.
18:26 whiteknight oh.
18:28 tadzik good evening #parrot
18:28 tadzik seen bubaflub
18:28 aloha bubaflub was last seen in #parrot 2 hours 31 mins ago saying "seen tadzik".
18:28 whiteknight hello tadzik
18:28 bubaflub hey tadzik
18:28 bubaflub we got two more pull requests for cardinal, was wondering if you were going to get to those first
18:28 bubaflub i can get them when i'm done with work in an hour or two
18:28 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)
18:29 pmichaud 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.
18:29 pmichaud or, provide 't' for backwards compatibility, and a new letter for whatever we think "pass a constring string arg" should be.
18:29 tadzik pmichaud: yeah, the {ticket_you_mentioned} can be closed I think, I'm commenting on that in a second
18:29 whiteknight NotFound: I'm just thinking about ways to make the update process easier and to unify code
18:29 NotFound And for those that want to test winxed without installing it.
18:30 tadzik bah, my password is reseted again
18:31 whiteknight on trac?
18:31 alester left #parrot
18:31 tadzik yeah
18:32 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
18:32 cotto_work yes
18:32 tadzik cotto_work: yeah, but I don't remember that one :)
18:32 tadzik will reset it again :)
18:32 cotto_work tadzik: I can set it to something if you want.
18:33 cotto_work your call
18:33 tadzik I'll handle it, thanks :)
18:33 cotto_work ok
18:33 whiteknight actually, we should all set tadzik's new password!
18:33 whiteknight everybody submit options, and we'll pick one at random
18:33 tadzik okay :)
18:34 tadzik doesn't matter, I'll set it to something I don't remember and reset it after Chromium forgets it too :F
18:34 tadzik bubaflub: have you seen the new Pull Request for Cardinal?
18:34 plobsing for some reason, $type.of is no longer working properly
18:35 tadzik oh, two of them
18:35 bubaflub tadzik: i looked briefly at them
18:35 bubaflub 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
18:35 tadzik I'll do that now
18:36 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
18:37 tadzik 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
18:38 tadzik bubaflub: I'm afraid it's 1.8.7_p334
18:38 tadzik Gentoo--
18:38 bubaflub tadzik: you can use RVM to manage multiple versions of ruby
18:38 bubaflub (if you'd like)
18:39 bubaflub also, there's a good chance that it hasn't changed between the two
18:39 bubaflub i'd say, go ahead and merge it
18:39 bubaflub in a few hours i'll take a look as well
18:39 bubaflub and if it's different / wrong i'll fix it
18:51 dukeleto bubaflub: wazzup
18:51 bubaflub dukeleto: hey hey
18:51 dukeleto bubaflub: you are free of exams?
18:52 bubaflub dukeleto: free and clear
18:52 dalek cardinal: 808c71c | (Hongwe Qiu)++ | src/classes/String.pir:
18:52 dalek cardinal: Minir bug fixes, so that t/string/concat.t passes.
18:52 dalek cardinal: review: https://github.com/parrot/​cardinal/commit/808c71ce0b
18:52 dalek cardinal: bd9ac96 | (Hongwe Qiu)++ | setup.pir:
18:52 dalek cardinal: add CardinalFloat to built, so that parrot setup.pir test passes more tests.
18:52 dalek cardinal: review: https://github.com/parrot/​cardinal/commit/bd9ac9631a
18:52 dalek cardinal: 0651c0d | tadzik++ | s (2 files):
18:52 dalek cardinal: Merge pull request #10 from qiuhw/master
18:52 dalek cardinal:
18:52 dalek cardinal: These two commits get more tests pass
18:52 dalek cardinal: review: https://github.com/parrot/​cardinal/commit/0651c0da7f
18:53 dukeleto bubaflub: woot!
18:53 cotto_work bubaflub: booyah
18:53 dukeleto bubaflub: what are your next steps?
18:54 bubaflub dukeleto: ???? and Profit!!!
18:54 dukeleto bubaflub++ # you learn well, grasshopper
18:54 tadzik oh, I wish I was free to
18:54 tadzik but I still have 1.5 month to go
18:55 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 dukeleto bubaflub: give a link to https://github.com/bubaflub/parrot-gmp/issues and your GSoC proposal
18:55 bubaflub dukeleto: cool.  i'm already subscribed, i'll shoot one out today.
18:55 dukeleto bubaflub: ask them which versions of GMP they suggest supporting, as well
18:55 dukeleto bubaflub: that will fix 2 gh issues :)
18:56 dukeleto bubaflub: GMP turned 20 years old this month!
18:56 bubaflub woah, didn't realize it's been around for that long
18:56 dukeleto pretty amazing to think about. Before GMP, *everybody* wrote their own bigint/bigfloat libraries
18:57 dukeleto 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 dukeleto i think that was my first experience with C++ (shudders)
18:57 cotto_work My first experience with C++ was before my first experience with vcs.  It did not go well.
18:58 dukeleto bubaflub: can you convert your TODO.md into github issues?
18:58 dukeleto bubaflub: it will make it easy for people to comment/etc on them
18:58 bubaflub dukeleto: sure
18:59 dukeleto bubaflub: i am a big fan of github issues
18:59 dukeleto bubaflub: i really like the color/tagging support
19:00 dukeleto bubaflub: for a good example of labels, see https://github.com/GMOD/mimosa/issues
19:00 dalek winxed: r1003 | NotFound++ | trunk/winxedst1.winxed:
19:00 dalek winxed: function level "using namespace" and some changes in compile time scope search
19:00 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1003
19:01 dukeleto bubaflub: one issue with using tools/dev/ncidef2.pl is that it is not installed with a normal parrot
19:01 dukeleto bubaflub: so i think that is something that you will do, and commit the results to the parrot-gmp.git repo
19:02 bubaflub dukeleto: yes.  i think i can store the def file and the results
19:02 bubaflub and that way developers can regenerate that file, end users just get the results
19:02 dukeleto bubaflub: sure, you can add a Makefile target or whatever to regenerate the file
19:02 dukeleto bubaflub: and that will only be used by developers, not end users
19:03 dukeleto bubaflub: i would like to see one solid test for parrot-gmp, before you do much more coding
19:03 dukeleto bubaflub: that single test will help guide you greatly during the initial implementation phase
19:04 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.
19:05 dukeleto bubaflub: did you write a bonding period blog post yet?
19:05 bubaflub dukeleto: yeah, when are you free?
19:05 bubaflub dukeleto: not yet, i can do that tonight
19:07 whiteknight blah, I had a git repo go all corrupty because of a VM crash
19:07 whiteknight that's a bummer
19:07 dukeleto whiteknight: gist the errors
19:07 dukeleto whiteknight: i have run into git corruption before. Usually, you can delete a currupt packfile and be on your merry way
19:07 whiteknight dukeleto: nah, I already closed the thing in frustration
19:07 dalek parrot: 6a2784c | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
19:07 dalek parrot: fix thinkos in cstring return wrapper
19:07 dalek parrot: review: https://github.com/parrot/parrot/commit/6a2784c22c
19:07 dukeleto whiteknight: hokey dokey
19:08 dukeleto 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
19:08 whiteknight then I get angry and start deleting files
19:08 dukeleto bubaflub: what is your skype id?
19:08 dukeleto whiteknight: no bueno
19:08 whiteknight dukeleto: it's a known personality bug
19:09 whiteknight and when I try to run myself through the debugger, I get bruised
19:09 bubaflub dukeleto: should be same, bubaflub
19:09 bubaflub dukeleto: i haven't used it in a while, though
19:10 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.
19:11 dukeleto 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
19:12 dukeleto bubaflub: i added you on skype. You gonna be ready in 10mins or so?
19:12 bubaflub dukeleto: suer
19:12 bubaflub *sure
19:14 bubaflub current version: 2.8.0 updated version: 5.1.0
19:14 bubaflub haven't used skype in a while
19:17 dalek parrot: a37452e | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
19:17 dalek parrot: correctly handle null strings
19:17 dalek parrot: review: https://github.com/parrot/parrot/commit/a37452ed2a
19:27 alester joined #parrot
19:28 dalek Rosella: 7469240 | Whiteknight++ | s (71 files):
19:28 dalek Rosella: move unstable libraries into an unstable folder. Update setup.winxed to handle this, and make includes a little nicer
19:28 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/7469240b28
19:28 dalek Rosella: d3a6799 | Whiteknight++ | t/test/Suite.t:
19:28 dalek Rosella: fix copy+paste failure in Suite.t
19:28 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/d3a679999d
19:29 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.
19:31 dalek TT #2101 closed by tadzik++: Broken ipv6 detection on Gentoo linux
19:31 dalek TT #2101: http://trac.parrot.org/parrot/ticket/2101
19:34 dalek Rosella: 04669c3 | Whiteknight++ | / (2 files):
19:34 dalek Rosella: Add an is_proxy function to determine if a given object is a proxy. Add a test
19:34 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/04669c3a1d
19:34 plobsing msg pmichaud for convenience, the patch is @ http://nopaste.snit.ch/45875
19:34 aloha OK. I'll deliver the message.
19:37 * dukeleto just had a nice skype conversation with bubaflub++, who is walking for his graduation tomorrow
19:38 cotto_work good way to start a career
19:38 cotto_work I remember how amazing it was to start getting paid to write code.
19:39 bubaflub i'm looking forward to just having more free time
19:39 bubaflub my wife consoling me during finals: "when you're done you can read more, play halo, do open source..."
19:40 atrodo free time is a lie1
19:40 dukeleto bubaflub: lulz
19:40 bubaflub atrodo: sadly i must agree
19:42 bluescreen left #parrot
19:47 dalek Rosella: 1d9cbcd | Whiteknight++ | / (2 files):
19:47 dalek Rosella: Add Memoize.is_memoize_proxy to determine if a function is a memoize proxy or not
19:47 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/1d9cbcd9c0
19:49 Coke_ halo? mass effect 2!
19:50 * tadzik whispers something about minecraft
19:50 * Coke_ bought minecraft, played it twice, and never reopened it.
19:50 * Coke_ suspects it is slightly too hard by default.
19:50 tadzik it must be extremely boring to a certain kind of people, and I am one of them it seems
19:51 * 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
19:52 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 Rosella: dde571a | Whiteknight++ | / (2 files):
19:52 dalek Rosella: Add checks to memoize_method and unmemoize_method to attempt to redo the same operation. Add tests
19:52 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/dde571aa49
19:52 tadzik also, spiders respawning in your house when you sleep... brr
19:54 bluescreen joined #parrot
19:57 * Coke_ is now on his 3rd playthrough of ME2, though.
20:06 dafrito left #parrot
20:10 pmichaud plobsing / others:  here's my suggested version of an NCI wrapper (to replace dlfancy) -- http://gist.github.com/975243
20:11 pmichaud 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:12 pmichaud it also caches various values to avoid looking them up / constructing NCI objects on each call
20:12 pmichaud I've not run/tested it -- it's just a first draft at this point
20:13 PacoLinux left #parrot
20:13 dalek winxed: r1004 | NotFound++ | trunk/winxedst1.winxed:
20:13 dalek winxed: box last operand of conditional operator when needed
20:13 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1004
20:14 whiteknight pmichaud: it looks nice on first glance, I'll have to give it a deeper review later
20:15 dalek Rosella/gh-pages: b3c0287 | Whiteknight++ | libraries/memoize.md:
20:15 dalek Rosella/gh-pages: quick first draft of web docs for memoize
20:15 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/b3c02873c7
20:18 pmichaud whiteknight: any objection to me committing it to NCI::Utils (in addition to what plobsing has there)
20:18 pmichaud It won't hurt to have two versions for a short while, and I can do some testing
20:18 pmichaud actually, I'll just make a branch for now and provide a branch diff
20:18 pmichaud but then I can also test it with zavolaj :-)
20:18 whiteknight pmichaud: commit it
20:18 whiteknight we need as many eyes on it as possible
20:25 cotto_work +1
20:26 whiteknight 'erbody just commit 'erthing that they gots
20:28 whiteknight NotFound++ # Over 1000 commits of winxed!
20:29 NotFound Commit early, commit often.
20:30 baest joined #parrot
20:33 mj41 left #parrot
20:36 dodathome left #parrot
20:38 whiteknight left #parrot
20:39 plobsing pmichaud: (re: nciwrap) it lacks special consideration for null strings, but otherwise looks functional
20:39 plobsing I'm not sure how effecient or inefficient the two approaches are.
20:43 pmichaud I'm pretty sure the second is more efficient, if only because it's not allocating as many thunks and closures
20:43 pmichaud I'm writing a test library now.
20:44 plobsing if it is a single-level closure, I wonder if a continuation-closure is more efficient (because it avoids using lexpads)
20:45 pmichaud I'd prefer to stick with the lexpad, I think.  the Closure PMC has its own set of issues.
20:45 pmichaud (having had long experience with it.  See also "PGE"  :-)
20:46 pmichaud s/Closure/Coroutine
20:46 pmichaud both, actually :-)
20:46 dalek parrot: 95d47d1 | mikehh++ | runtime/parrot/library/NCI/Utils.pir:
20:46 dalek parrot: fix pod syntax - correct =over 4 / =back matching
20:46 dalek parrot: review: https://github.com/parrot/parrot/commit/95d47d1de3
20:51 bluescreen left #parrot
20:54 PacoLinux joined #parrot
20:54 moritz bacek: fwiw rakudo spectest was all gree on the gc_tuning branch
20:59 pmichaud when I attempt to call Parrot_str_new() in my version, I'm getting
20:59 pmichaud No NCI thunk available for signature `STRING (ptr, ptr, INTVAL)'
20:59 pmichaud moritz: it failed horribly on mine
21:00 pmichaud I might need to try it again, but I got lots of segfaults
21:00 plobsing \o/ that error message is much prettier.
21:00 plobsing pmichaud: we'll have to add that to the list of static thunks and reboostrap them
21:01 pmichaud this is why we need tests  :-)
21:01 * pmichaud keeps writing more tests.
21:04 plobsing pmichaud: I am seeing the same failures in zavolaj using 'ncifunc' as I was with 'dlfancy': "Null PMC access in type()"
21:05 jsut_ joined #parrot
21:07 jsut left #parrot
21:08 * Coke_ wonders if  Klaus Br�ssel
21:08 Coke_ is a perlperson.
21:10 pmichaud plobsing: how long to add the new thunk?
21:11 Coke_ going to yapc::na?
21:12 Coke_ 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
21:12 Coke_ aloha, going to yapc::na 2011?
21:12 aloha Coke_: I have no idea.
21:12 plobsing pmichaud: done
21:12 dalek parrot: 4eabcb8 | plobsing++ | src/nci/extra_thunks. (2 files):
21:12 dalek parrot: add thunk 'STRING (ptr, ptr, INTVAL)' needed to call Parrot_str_new() from HLLs
21:12 dalek parrot: review: https://github.com/parrot/parrot/commit/4eabcb83e2
21:12 dukeleto aloha: going to yapc::na 2011 is also Coke
21:12 aloha dukeleto: Okay.
21:12 dukeleto aloha, going to yapc::na?
21:12 aloha dukeleto: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51
21:12 dafrito joined #parrot
21:12 dukeleto aloha, going to yapc::na 2011?
21:12 aloha dukeleto: going to yapc::na 2011 is Coke
21:12 dukeleto darn.
21:12 Coke_ aloha: forget going to going to yapc::na 2011
21:12 aloha Coke_: I don't know anything about going to going to yapc::na 2011.
21:13 Coke_ aloha: forget going to yapc::na 2011
21:13 aloha Coke_: I forgot about going to yapc::na 2011.
21:13 Coke_ please don't add me to the other one. Danke.
21:16 dafrito left #parrot
21:17 * Coke_ is pretty sure he cannot justify the cost this year.
21:18 ambs left #parrot
21:22 dafrito joined #parrot
21:22 bluescreen joined #parrot
21:28 dalek parrot/ncifunc: 95d47d1 | mikehh++ | runtime/parrot/library/NCI/Utils.pir:
21:28 dalek parrot/ncifunc: fix pod syntax - correct =over 4 / =back matching
21:28 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/95d47d1de3
21:28 dalek parrot/ncifunc: 4eabcb8 | plobsing++ | src/nci/extra_thunks. (2 files):
21:28 dalek parrot/ncifunc: add thunk 'STRING (ptr, ptr, INTVAL)' needed to call Parrot_str_new() from HLLs
21:28 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/4eabcb83e2
21:28 dalek parrot/ncifunc: 1f73a3a | pmichaud++ | src/nci_test.c:
21:28 dalek parrot/ncifunc: Add some functions for testing char* parameters in NCI.
21:28 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/1f73a3a326
21:28 dalek parrot/ncifunc: 6691e38 | pmichaud++ | runtime/parrot/library/NCI/Utils.pir:
21:28 dalek parrot/ncifunc: [NCI] Add "ncifunc" as a replacement / approach to "dlfancy".
21:28 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/6691e38132
21:28 dalek parrot/ncifunc: 3b55d79 | pmichaud++ | / (3 files):
21:28 dalek parrot/ncifunc: Merge branch 'master', remote-tracking branch 'origin' into ncifunc
21:28 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/3b55d79d78
21:28 dalek parrot/ncifunc: c1315ce | pmichaud++ | t/library/nciutils.t:
21:28 dalek parrot/ncifunc: [NCI]:  Add tests for 'ncifunc' in NCI::Utils.
21:28 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/c1315ceb91
21:30 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-284-g95d47d1
21:30 mikehh Ubuntu 11.04 i386 (g++ --optimize)
21:33 lucian_ joined #parrot
21:33 mtk left #parrot
21:34 pmichaud all tests pass here... shall I merge to master?
21:37 cotto_work pmichaud: music to my ears
21:37 lucian left #parrot
21:37 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:38 mtk joined #parrot
21:40 pmichaud plobsing: what's the "special consideration" needed for null strings?
21:40 pmichaud and do you mean actually STRINGNULL, as opposed to the empty string?
21:44 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 ?
21:45 pmichaud 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
21:45 plobsing well OK, PMCNULL as far as parrot is concerned
21:45 pmichaud so, a null argument should remain a null argument and not be passed to str_to_cstring
21:45 pmichaud no problem
21:46 pmichaud when a null PMC is passed via NCI, what does the receiving function see?  PMCNULL or NULL ?
21:46 dalek parrot/ncifunc: 0366834 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
21:46 plobsing pmichaud: fixed
21:46 dalek parrot/ncifunc: properly handle null arguments
21:46 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/036683435d
21:47 plobsing NCI translates PMCNULL pointer arguments to NULLs
21:47 pmichaud I like 1-line fiexes :-)
21:47 pmichaud *fixes
21:54 dalek parrot/ncifunc: 6e069f0 | plobsing++ | runtime/parrot/library/NCI/Utils.pir:
21:54 dalek parrot/ncifunc: properly handle null string returns
21:54 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/6e069f05fa
21:56 dukeleto Good read: http://www.dwheeler.com/essays/f​ixing-unix-linux-filenames.html
22:02 pmichaud http://gist.github.com/975473   # zavolaj almost works
22:02 cotto_work dukeleto: that article sucks.
22:02 cotto_work Forbidden
22:02 cotto_work You don't have permission to access /essays/fixing-unix-linux-filenames.html on this server.
22:03 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.
22:03 cotto_work how odd
22:05 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.  :)
22:05 pmichaud were the thunks in parrot before?
22:05 cotto_work a bunch of static thunks were deleted when 't' was removed
22:06 plobsing pmichaud: can I see the zavolaj patch?
22:07 pmichaud http://gist.github.com/975484
22:07 dalek parrot/ncifunc: 2fef4a1 | plobsing++ | src/nci/extra_thunks. (2 files):
22:07 dalek parrot/ncifunc: add thunk for mysql_real_connect
22:07 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/2fef4a1aa7
22:11 pmichaud cotto_work: that's wrong, if so.
22:11 pmichaud they should've have been converted to whatever the new form of 't' would be
22:11 pmichaud (unless they were deprecated also)
22:12 tty234 joined #parrot
22:12 plobsing pmichaud: I'm still seeing the 'Null PMC access in type()' problem.
22:12 pmichaud plobsing: where are you seeing it?
22:12 plobsing in zavolaj mysqlclient
22:13 pmichaud can I get a full error message?
22:14 nopaste "plobsing" at 192.168.1.3 pasted "zavolaj problem" (10 lines) at http://nopaste.snit.ch/45912
22:15 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
22:15 pmichaud excellent.  Can you nopaste your .perl6/lib/NativeCall.pm6 ?
22:15 pmichaud (I just want to double-check.)
22:16 pmichaud 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 http://nopaste.snit.ch/45931
22:17 fperrad left #parrot
22:18 pmichaud hmmm
22:18 pmichaud oh, I might need to update my version to include the new thunks
22:18 pmichaud just a sec
22:22 pmichaud Null PMC access in type()
22:23 pmichaud okay, now I see it
22:23 pmichaud hmm
22:26 bluescreen left #parrot
22:30 ShaneC joined #parrot
22:31 pmichaud it's happening right after the return from the real_connect call
22:31 pmichaud i.e., real_connect makes it into the nci call and out again
22:31 pmichaud so I'm guessing it might have something to do with the return value.
22:34 pmichaud retv is coming back as a ResizablePMCArray
22:34 pmichaud that's normal for something with :slurpy
22:34 pmichaud it's first element is a ResizablePMCArray
22:34 pmichaud I'm not so sure that's normal
22:35 pmichaud shouldn't it be a Ptr or something Opaque-ish?
22:35 pmichaud or an unmanaged struct, perhaps?
22:36 plobsing yeah, it should be
22:36 pmichaud trying something....
22:37 pmichaud aha
22:37 pmichaud getting rid of the :slurpy fixes it
22:37 pmichaud or at least gets farther
22:37 pmichaud wait, maybe not
22:37 pmichaud trying again
22:37 plobsing the function returns null
22:38 pmichaud mysql_real_connect returns a MYSQL*
22:38 plobsing it returns null for me
22:38 pmichaud yes, perhaps NULL then
22:39 pmichaud ah, returns NULL if the connection is unsuccessful
22:39 pmichaud so why is a NULL becoming a ResizablePMCArray ?
22:39 plobsing no idea how
22:40 pmichaud what should the result of an nci call be to a function that returns a null pointer?
22:40 plobsing pmcnull
22:41 pmichaud oh
22:41 ShaneC left #parrot
22:41 pmichaud then getting rid of slurpy may have worked
22:41 pmichaud because that's what I get in that case
22:42 pmichaud just a sec
22:46 pmichaud looksl ike even in 2011.04 it was normalish to get a Null PMC access result
22:46 pmichaud I'm guessing that's the case when the mysql database connection fails
22:46 pmichaud as would be the case when not running a server
22:46 pmichaud are you running a server on your localhost?
22:47 pmichaud (a mysql server, that is)
22:47 plobsing I don't think so
22:47 pmichaud see the requirements at the top of mysqlclient.p6
22:47 pmichaud I'm certain I'm not
22:48 plobsing but it *could* return nulls before
22:48 pmichaud really?
22:48 plobsing because the MySQL example got further with old parrot and the more invasive call_with_cstring changes
22:49 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
22:49 pmichaud pmichaud@kiwi:~/zip/perl/rakudo-2011.04$ ./perl6 mysqlclient.p6
22:49 pmichaud library_init [currently not working]
22:49 pmichaud init
22:49 pmichaud get_client_info: 5.1.54
22:49 pmichaud real_connect
22:49 pmichaud Null PMC access in get_string() in <anon> at line 106:NativeCall.pm6 in main program body at line 153:mysqlclient.p6
22:49 pmichaud what do you get?
22:49 plobsing I got several lines of SQL followed by something about permissions
22:50 plobsing I don't have 2011.04 easily available
22:50 pmichaud hmmm
22:50 pmichaud maybe I'll install mysql-server on one of my other boxes to test
22:51 plobsing but I could have messed something up. I'm not terribly familiar with mysql.
22:52 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 pmichaud or, phrased differently, why the :slurpy on retv?
22:54 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?
22:54 plobsing that's new
22:54 pmichaud oh, that's a deprecation also then
22:55 pmichaud unless you mean that call-by-reference returns a ResizablePMCArray
22:56 pmichaud what exactly is "call-by-reference" here, ooc?
22:56 plobsing how is adding something a deprecation?
22:56 pmichaud if you changed the return value of an existing feature, that's a deprecation
22:56 pmichaud so if nci thunks now return arrays where they used to return a single element, that's different
22:56 plobsing the return value stays the same for old signatures. it is an added capability
22:56 pmichaud okay
22:56 pmichaud so, you're saying it's possible for an nci thunk to have more than one return value
22:56 pmichaud i.e., I could do:
22:57 pmichaud $P99 = dlfunc ...
22:57 pmichaud ($P1, $P2, $P3) = $P99(...)
22:57 pmichaud and it would be meaningful
22:57 pmichaud for an apropriate dlfunc
22:57 plobsing yes
22:57 plobsing the multi return is the closest thing has to C's call-by-reference
22:57 pmichaud but a dlfunc that returned a NULL pointer would still just have it come back as the first return value
22:58 plobsing exactly
22:58 pmichaud testing
23:00 plobsing also, to be clear, there is a difference between multi-returns and returning an array
23:00 pmichaud right
23:00 pmichaud good point
23:01 pmichaud I'm adding a test case to t/library/ncifunc.t
23:01 pmichaud (for null return)
23:04 benabik joined #parrot
23:04 pmichaud that seems to work
23:05 dalek parrot/ncifunc: f820150 | pmichaud++ | t/library/nciutils.t:
23:05 dalek parrot/ncifunc: [nci]:  Add test to NCI::Utils for functions returning a NULL pointer.
23:05 dalek parrot/ncifunc: review: https://github.com/parrot/parrot/commit/f82015020f
23:05 pmichaud oops
23:05 pmichaud I thought I was on the master branch
23:05 benabik left #parrot
23:06 plobsing I've been working off your branch
23:06 pmichaud okay, I can stay in the branch a bit longer
23:07 pmichaud I'm going to speculate that everything is in fact working
23:07 pmichaud I'll set up a mysql_server on my notebook to make sure, though.
23:07 pmichaud the only thing we have missing now are any thunks that disappeared since 2011.04
23:10 plobsing some of those will already be covered by other signatures and not be a problem
23:11 whiteknight joined #parrot
23:12 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
23:12 pmichaud and I don't have a full set
23:12 pmichaud that's like saying "test whatever HLLs are using Parrot"
23:13 pmichaud or, more accurately "test every program using Parrot"
23:13 plobsing ok, what do you propose?
23:13 pmichaud looking.
23:14 pmichaud were the removed thunks deprecated at all?
23:14 particle left #parrot
23:15 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.
23:15 plobsing we have the ability to generate thunks at runtime for users that have libffi
23:15 plobsing not all users have libffi. not all platforms support libffi.
23:15 Tene Ah.
23:15 Tene 'k
23:16 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 pmichaud i.e., if I could previously do    $P9 = dlfunc lib, name, 'ttttttt'
23:17 pmichaud and the "upgrade path" is to convert all of those 't's into 'p'
23:17 pmichaud then there needs to be a corresponding 'ppppppp' thunk.
23:17 PacoLinux left #parrot
23:17 plobsing I don't think that necessarily follows
23:17 particle joined #parrot
23:17 pmichaud let's walk through it this way
23:17 PacoLinux joined #parrot
23:18 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
23:18 pmichaud let me finish
23:18 pmichaud then previously I would've accessed this function by doing    $P99 = dlfunc lib, 'xyz', 'ttt'
23:18 pmichaud If 'ttt' is no longer available (and it isn't)
23:18 pmichaud then how do I access my xyz func if there's no 'ppp' thunk in the core?
23:19 kid51 joined #parrot
23:19 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
23:19 pmichaud a deprecation says "this feature will no longer be available" and "here's your upgrade path"
23:20 pmichaud 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.
23:20 pmichaud er
23:20 pmichaud "where they used to exist in core parrot but no longer exist"
23:21 pmichaud Parrot core used to have thunks that could access my xyz() function above.  It no longer has them.
23:21 pmichaud (in my hypothetical example)
23:21 pmichaud more to the point
23:21 plobsing it is unreasonable to keep adding thunks to parrot core indefinitely
23:21 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.
23:22 pmichaud I'm not saying add them indefinitely.
23:22 pmichaud 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.
23:22 plobsing there was, adding it to core was for expedience
23:22 pmichaud what's the equivalent way to do it in the new scheme?
23:22 pmichaud has it been documented somewhere?
23:23 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?
23:23 pmichaud at this point I think I'll call in cotto and whiteknight for a ruling
23:23 plobsing that's likely appropriate.
23:24 cotto_work hi
23:24 * cotto_work backscrolls
23:24 pmichaud cotto_work: I think we have zavolaj working again.  I'll do more tests in a bit.
23:24 pmichaud 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
23:25 pmichaud for example, someone was previously using nci with a signature of    'ppttttiti'
23:26 pmichaud the thunk that supported 'ppttttiti' went away
23:26 pmichaud 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
23:26 pmichaud however, there's no 'ppppppipi' thunk in parrot to support the new calls
23:26 pmichaud so a nci user is still stuck
23:28 pmichaud because he cannot access library functions he was formerly able to access in Parrot
23:28 pmichaud my opinion is that we need to provide equivalent thunks to what existed in 3.3.0, at least for a deprecation cycle
23:28 pmichaud plobsing disagrees (and I'm not implying that his disagreement is misplaced... just that we disagree)
23:29 pmichaud 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
23:30 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.
23:31 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
23:31 cotto_work pmichaud: ok
23:31 cotto_work I'm glad the immediate fire seems to be going out.
23:33 * whiteknight has to backscroll
23:35 whiteknight oh fun
23:36 * whiteknight types ack --thpppt
23:37 whiteknight 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 whiteknight I don't feel like we can imply certain features will go away, because other things do
23:38 whiteknight 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:39 whiteknight post 3.6, we should all expect any non-core NCI thunks to be disappeared
23:39 whiteknight and several kittens will also be killed
23:40 whiteknight pmichaud: do you have a list of the thunks we need back?
23:44 whiteknight 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:46 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
23:47 whiteknight 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 #parrot
23:47 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
23:48 whiteknight We need to make Sub much easier to subclass, I think, then we can attach those kinds of details to subclasses
23:48 whiteknight CachedSub, or something like that
23:48 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.
23:49 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 rurban_ joined #parrot
23:49 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:50 whiteknight NotFound: I don't think that's a purpose of it at all
23:50 whiteknight NotFound: NCI is supposed to give access to C libraries, not make the build any easier
23:51 whiteknight 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.
23:51 whiteknight NotFound: and you would have to write your own bindings
23:51 whiteknight it's easier to get the thunk generator to do that
23:51 rurban left #parrot
23:51 rurban_ is now known as rurban
23:52 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
23:53 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:56 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 whiteknight compared to the alternative, writing a whole PMC, or a whole dynop
23:56 whiteknight or worse yet, writing a custom wrapper library and accessing THAT with NCI
23:57 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
23:58 whiteknight having a tool to write C automatically can be a big help
23:58 whiteknight but you're right. The tool is not perfect
23:58 NotFound_b whiteknight: The tool is not the current problem. The current problem is breaking existing code.ç
23:58 whiteknight yes. We are trying to fix that

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced