|
Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today Set by moderator on 15 May 2011. |
|||
| whiteknight | plobsing: ping | 00:39 | |
|
00:43
kid51 joined
00:44
benabik left
|
|||
| sorear | hello, whiteknight | 00:45 | |
| whiteknight | hello sorear | 00:46 | |
| sorear | I read your blog post on PCC | ||
| I think you need to coordinate with jnthn | |||
| niecza used to use something like your new system, with a bunch of ops for extracting parameters from the call | 00:47 | ||
| whiteknight | I need to coordinate with jnthn about a lot of things | ||
| sorear | but it was changed to a signature-blob system on jnthn__'s recommendation | 00:48 | |
| whiteknight | sorear: yes, the Rakudo mechanism is a big source of inspiration | ||
| sorear | whiteknight: what do you mean? Rakudo uses signature blobs and a single do-everything bind_llsig dynop | 00:49 | |
| whiteknight | sorear, it has a custom dynop for parsing the signature, but it still takes the CallContext object from Parrot to decode itself | ||
| Parrot shouldn't be doing the decoding internally, we should expose the CallContext to the user for decoding | 00:50 | ||
| Rakudo uses a custom dynop, but other users could decode it in other ways | |||
|
00:58
lucian left
|
|||
| pmichaud | whiteknight: just pinging to make sure you got the email I sent about an hour ago. (No need for immediate response here.) | 01:10 | |
| whiteknight | pmichaud: yes, I got it | ||
| pmichaud | okay, thanks | ||
| whiteknight | I've been half working on a reply, half trying to get my kid to go to bed | ||
| pmichaud | understood. you know the time pressure as well as I do, so I'll not press further until you or cotto have something :) | 01:11 | |
| think you could get my kid(s) to go to bed while you're at it, though? ;-) | |||
| afk, errands (and getting kids to bed) | 01:12 | ||
| dalek | TT #1722 reopened by jkeenan++: osx build failed caused by errant '\\c' | 01:16 | |
| TT #1722: trac.parrot.org/parrot/ticket/1722 | |||
| rrot: 351378a | jkeenan++ | config/auto/icu.pm: Apply correction suggested by Tom Christiansen for TT #1722. |
01:21 | ||
| bacek_at_work | cotto, it's "mark and sweep" not "mark and seek" :) | 01:22 | |
| whiteknight | "bedtime" in my house means my kid goes into a different room, and screams/cries for several hours | 01:24 | |
| ttbot | Parrot 351378a2 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7518 | 01:30 | |
| kid51 | msg cotto taptinder has been reporting build errors on MSWin32-x86 since commit 7eaaf85ef3 | 01:34 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | sella/gh-pages: 6607a22 | Whiteknight++ | libraries/memoize.md: fix title |
01:39 | |
| sella: 223c7c2 | Whiteknight++ | / (2 files): Fix memoize_method and unmemoize_method, and test simple use of both |
|||
| sella: de263f3 | Whiteknight++ | t/memoize/Memoize.t: fill out all tests I had for memoize.t, but add two new stubs that I will fill in later once I add functionality to the libary |
|||
| sella: 0afc191 | Whiteknight++ | / (2 files): +tests for Memoize.Cache.SimpleString |
|||
| sella: 1916dce | Whiteknight++ | t/memoize/cache/Item.t: +tests for Memoize.Cache.Item |
|||
| sella: 1e91a80 | Whiteknight++ | / (12 files): Merge branch 'memoize_cleanup' |
|||
| sella: c29f635 | Whiteknight++ | src/container/Container.winxed: remove old hack and TODO note from Container |
|||
| sella: 99ca730 | Whiteknight++ | / (2 files): Add the ability for Container.resolve to pass arguments in to the default factory, if type resolution fails. Add a test for this behavior |
|||
| sella: f15c6f0 | Whiteknight++ | src/container/Container.winxed: fix bug, making sure to pass the hash of named args as flat,named. Pass slurpy args to Container.resolve to the resolving ItemFactory |
|||
| sella: 7a8584b | Whiteknight++ | / (5 files): Fix a TODO in Suite by breaking run_test into a few smaller methods for easy subclassing. Add a new test file to test subclassing Suite. Fix a few minor issues |
|||
|
01:40
whiteknight left
|
|||
| pmichaud | general comment: people not directly familiar with Parrot might want to know that "TT #1722" in fact means trac.parrot.org/parrot/ticket/1722 (rather than having to search for it) | 01:41 | |
| I think I'm a little (over?) sensitive to this at the moment, given that I've had a lot of responses lately where someone says "you can find it in XXX" without providing a direct link or reference to the source (meaning I have to search somewhere just to find XXX) | 01:42 | ||
| See also lists.parrot.org/pipermail/parrot-d...05889.html "It was hard to find the example..." | 01:43 | ||
| </soapbox> | 01:44 | ||
|
01:44
Khisanth left,
benabik joined
01:57
Khisanth joined
02:03
kid51 left
|
|||
| cotto | bacek_at_work, thank. I don't know how I mixed that up. | 02:29 | |
| thanks, even | |||
|
02:50
particle left
02:52
particle joined
02:53
woosley joined
03:02
Andy joined
03:05
woosley left,
bluescreen left
03:19
woosley joined
|
|||
| dalek | rrot/wrap-opengl-strings: 260436e | plobsing++ | runtime/parrot/library/NCI/Utils.pir: add function "call_with_cstring" to automate translation of cstring arguments |
03:22 | |
| rrot/wrap-opengl-strings: f2058de | plobsing++ | / (2 files): wrap opengl functions taking or returning cstrings appropriately |
|||
| cotto | plobsing, is that to help with the zavolaj problem? | 03:24 | |
| plobsing | msg NotFound the wrap-opengl-strings branch fixes the window title issue | 03:26 | |
| aloha | OK. I'll deliver the message. | ||
| plobsing | cotto: it can. | ||
| I was targetting that branch mainly at opengl (which had window title problems) | 03:27 | ||
| I'm not sure, this close to the release, that it should be going into trunk. Have we had the code freeze yet? | 03:30 | ||
| cotto | plobsing, not yet | 03:31 | |
| I'm also trying an experiment to see if I can implement a suggestion from pmichaud about 't' | 03:32 | ||
| He suggested that we tie C strings to their STRING* counterparts so that we could avoid the need to free them manually. | 03:33 | ||
| pmichaud | I also later made a suggestion that we create a new STRING by concatenating a null terminator to the existing string, pass the new STRING's str_start as the char* pointer to the called C function, and then let Parrot's normal GC take care of freeing up the new STRING (and its buffer) when it's no longer needed | 03:36 | |
| fwiw | |||
| cotto | Also a possibility, though not an ideal long-term fix. | 03:37 | |
| would be pretty easy to do short-term though | |||
| pmichaud | seems like it's workable for long-term, too. | ||
| cotto | Where's the code that destroys strings? | ||
| pmichaud | aren't strings reclaimed normally? | ||
| cotto | "normally"? | 03:38 | |
| pmichaud | basically, I'm thinking of something like | ||
| STRING *cstring = Parrot_str_concat( old_str, null_str ); | |||
| c_func( ..., cstring->str_start, ...); | |||
| s/old_str/arg_str/ # might be clearer | 03:39 | ||
| cotto | That'd work. It just seems like more work than we need to do. | ||
| plobsing | that kinda nixes compaction, doesn't it? | ||
| pmichaud | I think it's roughly equivalent to what we do now -- i.e., it allocates a new buffer and frees it up later | ||
| cotto | What's to keep it from getting collected if there's no reference to it? | 03:40 | |
| pmichaud | the cstring variable is a reference to it | ||
| cotto | If this code lives in nci thunk generation, the cstring variable wouldn't be around very long. | 03:41 | |
| pmichaud | right, same as allocating a cstring buffer and explicitly freeing it | 03:42 | |
| no, wait | |||
| this code has to be part of the thunk | |||
| because you don't have the string until the NCI function is called | |||
| (the string argument, that is) | |||
| plobsing | and the STRING* (as opposed to the char*) stays on the stack because? we don't optimize? | 03:43 | |
| pmichaud | I believe we have tons of Parrot code already that allocates STRING *'s and calls functions that could result in GC | ||
| it's a case we've already handled. | |||
| and if we haven't.... I'm curious to know why it works. | 03:44 | ||
| plobsing | It works because most of that code operates on the STRING* variables, which forces the compiler to keep it around (and the stack scanner can pick that up) | ||
| pmichaud | so, you're saying the thunk code isn't a wrapper around the nci call? | 03:45 | |
| plobsing | if all we use the STRING* for is the underlying char*, the compiler will clue in, discard the reference, and GC will reclaim it | ||
| I'm saying the STRING* variable isn't live | |||
| sorear | How about just always keeping a 0 after all string variables? | ||
| 1 byte is not much next to sizeof(STRING) | 03:46 | ||
| cotto | It'll work if there's no expectation that the char* will remain valid after the nci call. | ||
| pmichaud | sorear: we still want to clone the STRING somehow, because the called function might manipulate the contents | ||
| I have no such expectation. I consider that to be outside the scope of 't' | |||
| sorear | pmichaud: I think that falls under "protecting the user from their own stupidity". In C, foo("bar"), foo modifies argument -> SIGSEGV with recent versions of gcc | 03:47 | |
| pmichaud | the cstring->str_start wouldn't count as a valid reference (so the C compiler doesn't discard it)? | ||
| sorear | literal strings are kept in read-only segments now | ||
| pmichaud | sorear: these aren't necessarily literal strings | ||
| nor do I think that the str_start buffers of STRING are read-only | |||
| sorear | pmichaud: do you think "foo" in C should expand to something like strdup("foo") /* just in case the function modifies its argument */ ? | 03:48 | |
| pmichaud | no | ||
| plobsing | the GC could talk to the OS to enforce RO, but I suspect that could get costly fast | ||
| sorear | why do you think Parrot should do that, then? | ||
| cotto | I like the original idea. I'll take a stab at it. | 03:49 | |
| pmichaud | because Parrot *does* assume some level of protection a bit higher than that of a C compiler, I think. | ||
| cotto: whatever works -- I just wanted to let you know about the other (possibly simpler and more robust) option | |||
| plobsing | we can't just pass in parrot's internal string buffers because it will fall over badly and unintuitively | ||
| random failures *elsewhere* are possible | 03:50 | ||
| pmichaud | anyway, at the moment I'm not aiming for "optimal solution", I'm just aiming for "solution" :) | ||
| cotto | pmichaud, at this point simplicity and robustness are a really good idea. We can do something more complex when there's not a looming deadline. | ||
| pmichaud | and modifying Parrot's STRING implementation to maintain null terminators at the end of each buffer isn't something I contemplate happening before Tuesday 07:00 UTC | 03:51 | |
| afk, have to get groceries for breakfast tomorrow | 04:01 | ||
| cotto | ok | ||
| plobsing, do you have the tuits to implement pmichaud's suggestion for 't' before the release? | 04:13 | ||
| plobsing | I'm currently working on patching up zavolaj with call_with_cstring. Shouldn't be that hard. | 04:15 | |
| I could try pmichaud's idea as a backup, but I have concerns that it may not be consistent | |||
| cotto | Getting zavolaj working is the priority. Getting it working elegantly would be really nice. | 04:16 | |
| Thanks for working on it. | 04:18 | ||
|
04:38
bubaflub left
|
|||
| pmichaud | fwiw, I'd be quite concerned about the overhead of call_with_cstring for a long-term solution, too. | 04:38 | |
| (just in for a second... out again) | |||
| plobsing | argh, why won't PCT load properly from rakudo? | 04:40 | |
| dalek | rrot/shims: ca0e38c | petdance++ | / (6 files): fixing up SHIM args |
04:47 | |
|
04:50
Andy left
04:52
davidfetter left
04:56
particle left
|
|||
| dukeleto | cotto: pong | 05:05 | |
| cotto | dukeleto, hio | 05:10 | |
| dukeleto, do you have some time for M0 atm? | |||
| dalek | rrot/m0-spec: eebc3e7 | cotto++ | docs/pdds/draft/pdd32_m0.pod: This is exactly why we make computers do our math. |
05:11 | |
| rrot/m0-spec: aee227c | cotto++ | docs/pdds/draft/pdd32_m0.pod: add a note about appraoches to dealing with constant data |
|||
|
05:16
particle joined
|
|||
| dalek | rrot/wrap-opengl-strings: 34749b4 | plobsing++ | runtime/parrot/library/NCI/Utils.pir: use shifted integer in stead of iterator in array access (oops) |
05:23 | |
| rrot/wrap-opengl-strings: 478188d | plobsing++ | runtime/parrot/library/NCI/Utils.pir: disable export code temporarily - it crashes rakudo |
|||
| nopaste | "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj call_with_cstring" (119 lines) at nopaste.snit.ch/45840 | 05:24 | |
| plobsing | ^^ WORKING PATCH ^^ (SFAICT) | ||
|
05:29
contingencyplan left
|
|||
| pmichaud | mysql_library_init and mysql_library_end are no longer available? | 05:29 | |
| plobsing | they've never been available | 05:33 | |
| it's just that now zavolaj fails early on missing symbols | 05:34 | ||
| so in stead of not calling them, we don't define bindings to them in the first place | |||
| dukeleto | cotto: yeps | ||
| pmichaud | hmmm, that might not work fo us. | ||
| for us. | |||
| dukeleto realizes that YAPC::NA is a lot closer than he thought. Better buy tickets soon. | 05:35 | ||
| plobsing | pmichaud: why would you want bindings to functions that just fall over when called? | ||
| pmichaud | several answers... the most prominent being that Perl (especially Perl 6) is a dynamic language that is entirely built around late binding. | 05:36 | |
| cotto | dukeleto, and apparently hotel accommodations are getting tricky. | ||
| pmichaud | there's nothing that says that a prototype declration (and that's exactly what these _are_) should fail if the thing it's prototyping hasn't been defined/loaded yet. | 05:37 | |
| but beyond that... there may be libraries built on zavolaj that depend on not failing when they define a function that isn't loaded yet | 05:38 | ||
| plobsing | it shouldn't be to hard to change over. It was simply easier to implement the behaviour that I found more desirable. | 05:39 | |
| plobsing sleeps | 05:40 | ||
| pmichaud | also, the existing of AUTOLOAD features means that we have to be able to declare things which will be loaded (or even manufactured) later. | 05:41 | |
| *existence | |||
| dukeleto | cotto: you have m0 questions? | 05:49 | |
| cotto: do you have an example m0b file I can use as test data for the assembler? | 05:52 | ||
| cotto: or do I have to make one myself? | |||
|
05:53
theory left
|
|||
| cotto | dukeleto, istr that you had some questions about the metadata segment. | 05:55 | |
| I don't have an example m0b file. | 05:56 | ||
| dukeleto | cotto: generally, just noticing we still have some TODO's and such in the spec | 05:58 | |
| cotto | one fewer now | ||
| actually, no. just a longer one | 05:59 | ||
| dukeleto | cotto: github.com/parrot/parrot/blob/m0-p...ding.t#L59 | ||
| cotto: did you mean to make to 'vars' segments there? | |||
|
06:00
preflex left
|
|||
| cotto | dukeleto, typo on my part | 06:00 | |
|
06:02
preflex joined
|
|||
| dukeleto | cotto: i think my next step is hand-writing a valid hello.m0b to use as test data for t/m0/hello.m0 | 06:08 | |
| cotto: i think my tuits may have run out for tonight. Did a serious 14ish mile bike ride before. | |||
| cotto | dukeleto, that'll drain you | 06:09 | |
| dukeleto, catch you later | 06:14 | ||
| dukeleto | cotto: see you on the flip side | 06:21 | |
|
06:26
ShaneC joined
06:35
woosley left
06:50
fperrad joined
|
|||
| cotto | bacek_at_work, ping | 06:52 | |
| bacek_at_work, unping | 06:55 | ||
| found it | |||
|
07:01
dod joined
|
|||
| bacek_at_work | cotto, unpong. Lost it :) | 07:08 | |
| cotto | bacek_at_work, do you have a minute for patch review? | 07:11 | |
| bacek_at_work | cotto, yeah, sure | ||
| dalek | rrot/tied-cstring: 026b4cf | cotto++ | / (2 files): add tied_cstr to parrot_string_t, null where needed |
||
| rrot/tied-cstring: a774442 | cotto++ | src/string/api.c: add function to get a tied_cstring |
|||
| rrot/tied-cstring: dadae2d | cotto++ | src/gc/gc_ (4 files): tell gc about tied_cstr |
|||
| rrot/tied-cstring: 039297f | cotto++ | src/string/api.c: make the tied cstring code a tad smarter and less leaky |
|||
| cotto | bacek_at_work: ^ | ||
| bacek_at_work | hey! It's 3 of them! :) | 07:12 | |
| cotto | github.com/parrot/parrot/compare/0......039297f | ||
| nothing uses it yet, but the idea is that it'll make the 't' nci type easier to implement | 07:13 | ||
| bacek_at_work | Looks about all right. | 07:14 | |
| You just missed couple of files in "t" directory :) | |||
| cotto | ok. I didn't think there'd be anything surprising. | ||
| of course | |||
| just wanted to vet the concept | |||
| bacek_at_work | and it's better to use Parrot_str_free_cstring | ||
| Concept is actually really good and can give us some small performance benefits. | 07:15 | ||
| cotto | wfm | ||
| pmichaud++ for the idea | |||
| bacek_at_work | pmichaud++ indeed :) | ||
| cotto | I feel good having figured out how to do that. The rest of the problem seems solvable now. | 07:19 | |
| dalek | rrot/tied-cstring: 45ffc63 | cotto++ | src/gc/gc_ (4 files): use string api function instead of mem_internal_free |
07:20 | |
| cotto | 'night | 07:21 | |
| bacek++ for letting me pick your brain | |||
|
07:23
ShaneC left
|
|||
| moritz imagines cotto using a lock pick to access bacek's brain through the ear :-) | 07:24 | ||
|
07:29
mj41 joined
07:36
woosley joined,
woosley left
07:47
UltraDM joined
07:49
rurban_ joined
07:51
rurban left,
rurban_ is now known as rurban
|
|||
| bacek | ~~ | 08:13 | |
| mikehh | hi bacek | 08:14 | |
| bacek | aloha, mikehh | ||
| dalek | rrot: 8e49d49 | fperrad++ | runtime/parrot/library/uuid.pir: [uuid] refactor with the Parrot's source of entropy. |
08:18 | |
| ttbot | Parrot 8e49d498 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7586 | 08:29 | |
|
08:53
contingencyplan joined
|
|||
| mikehh | runtime/parrot/library/uuid.pir depends on math.ops | 09:09 | |
| completely blows up make -j world | 09:10 | ||
| had to run it 5 times before it completed | 09:11 | ||
|
09:15
bacek left
|
|||
| mikehh | ok I think I added the right dependency - testing, will push when done | 09:22 | |
|
09:31
bacek joined
|
|||
| dalek | rrot: 8326612 | mikehh++ | config/gen/makefiles/root.in: added dependency for runtime/parrot/library/uuid.pbc and tidied up |
09:32 | |
| ttbot | Parrot 83266120 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7632 | 09:40 | |
| mikehh | seriously need someone with MSWin32 to sort that out ^ ^ ^ | 09:46 | |
| bacek | mikehh, s/someone/cotto/ | 10:10 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-272-g8326612 | 10:15 | |
| Ubuntu 11.04 i386 (gcc) | |||
| bacek: don't care who does it, needs to be done before release :-} | 10:17 | ||
| my windoze skills are a bit stale, haven't used it for a couple of years | 10:18 | ||
| bacek | mikehh, he broke it. he has windows. he have to fix it :) | 10:19 | |
| mikehh | :-} - and my last use was convertin' to linux anyway | 10:22 | |
| dalek | rrot: 19ed0b0 | fperrad++ | config/gen/makefiles/root.in: [build] fix on Windows use Makefile comment instead of shell comment |
10:35 | |
| bacek | Yay! fperrad++ | 10:59 | |
|
11:02
Psyche^ joined
11:07
Patterner left,
Psyche^ is now known as Patterner,
SHODAN joined
|
|||
| mikehh | well that worked - fperrad++ | 11:09 | |
|
11:12
ambs joined
11:17
utsl left
11:49
UltraDM left
11:51
davidfetter joined
11:57
PacoLinux joined
11:58
davidfetter_ joined
12:00
lucian joined
12:02
davidfetter left,
davidfetter_ is now known as davidfetter
12:06
ambs left
12:08
ambs joined
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-273-g19ed0b0 | 12:10 | |
| Ubuntu 11.04 i386 (gcc --optimize) | |||
|
12:27
davidfetter left
12:41
woosley joined
12:42
woosley left
12:44
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:53 | |
| plobsing, cotto: ping | 12:58 | ||
|
12:58
PacoLinux left
12:59
bubaflub joined
13:10
UltraDM joined
13:12
ambs left
13:15
mtk joined
13:17
ptc joined
|
|||
| ptc | seen particle | 13:18 | |
| aloha | particle was last seen in #parrot 8 hours 1 mins ago joining the channel. | ||
|
13:24
lucian left
13:28
JimmyZ joined
13:33
mtk left
13:35
ptc left
13:38
mtk joined
13:52
PacoLinux joined
13:53
woosley joined
|
|||
| dalek | rrot/gc_tuning: e65f5cd | bacek++ | / (2 files): Add skeleton functions for PA iterators |
14:01 | |
|
14:01
alester left
|
|||
| rrot/gc_tuning: 9d9034e | bacek++ | / (2 files): Mark PA iterators functions with PARROT_EXPORT |
|||
| rrot/gc_tuning: f510328 | bacek++ | t/src/pointer_array.t: Start adding tests for PA Iterators. Horribly broken atm. |
|||
| rrot/gc_tuning: d090963 | bacek++ | / (2 files): Implement pa_begin and pa_iter_destroy |
|||
| rrot/gc_tuning: 4111692 | bacek++ | t/src/pointer_array.t: Redo test with some kind of nano-test-more. |
|||
| rrot/gc_tuning: d24b29a | bacek++ | / (2 files): Implement pa_iter_is_empty properly |
|||
| rrot/gc_tuning: 5d00fc6 | bacek++ | / (2 files): Implement pa_iter_get |
|||
| rrot/gc_tuning: dc1989b | bacek++ | t/src/pointer_array.t: Add (failing) tests for pa_iter_next |
|||
| rrot/gc_tuning: f3c03b8 | bacek++ | / (2 files): Implement basic iteration |
|||
| rrot/gc_tuning: 2b22ed0 | bacek++ | / (3 files): Change iterator to return pointer-to-value |
|||
| rrot/gc_tuning: 666a7c4 | bacek++ | / (2 files): Implement iterating over removed elements |
|||
| rrot/gc_tuning: e96590d | bacek++ | src/gc/gc_gms.c: Totally break GMS. Rework it to not to store additional pointer in header. |
|||
| rrot/gc_tuning: 21273cd | bacek++ | src/gc/gc_gms.c: Fix braino and remove debug output |
|||
| rrot/gc_tuning: b0a839b | bacek++ | src/gc/gc_gms.c: Change behavior of is_(str|pmc)_ptr to be same as old GC MS |
|||
| rrot/gc_tuning: 5b08fe4 | bacek++ | src/gc/gc_gms.c: Enable 'manual' memory management back |
|||
| bacek wave from tomorrow and going to recharge. | |||
|
14:03
bluescreen joined
|
|||
| moritz | bacek: you should really get a power cord and code all night :-) | 14:03 | |
| bacek | msg pmichaud If you'll have a chance can you test gc_tuning branch? | ||
| aloha | OK. I'll deliver the message. | ||
| bacek | moritz, no way. I run out of beer :) | ||
| pmichaud | bacek: yes, I can test gc_tuning branch. you mean for timing? | 14:04 | |
|
14:04
woosley left
|
|||
| bacek | pmichaud, yes, benchmarking it | 14:04 | |
| moritz can do a simple spectest run on top of it | |||
| bacek | moritz, it will be helpful | 14:05 | |
| Coke_ | pmichaud++ # post to list. | 14:06 | |
| Coke_ inadvertently skips a weekend worth of review. Did I miss anything? | 14:07 | ||
| pmichaud | Coke_: pmichaud.com/sandbox/relman-draft.txt is looking for comments/feedback | 14:08 | |
| Coke_ | pmichaud++ # post to list. | 14:10 | |
| +1. no finger pointing, level head, well done | |||
| pmichaud | bacek: what would you like me to compare with? | 14:13 | |
|
14:13
nopaste left,
lateau joined
|
|||
| pmichaud | rakudo-2011.01 and rakudo-2011.04, definitely | 14:14 | |
|
14:19
nopaste joined
|
|||
| lateau | I'm wondering if you'll help me. I'm trying to convert Integer to Float with 'box' | 14:23 | |
| I did this...$P0 = box 5; $N0 = $P0; | |||
| but print $P0 says just "5" | |||
| moritz | what else should it say? | ||
| pmichaud | printing floating point numbers doesn't force the decimal to appear | ||
| moritz | if you want a different stringification of your num, use printf | ||
| lateau | thank you!! i try printf | 14:24 | |
| pmichaud | also | ||
| lateau | yub | ||
| pmichaud | note that your $P0 *is* an Integer | ||
| box 5 results in an Integer | |||
| moritz | just $N0 is a num | ||
| pmichaud | if you want the PMC to be a Float, use box 5.0 | ||
| lateau | are there any ways convert integer to floating number? | 14:25 | |
| i red this, example's from docs.parrot.org/parrot/latest/html/...s.pod.html and it says boxing can low-level type conversion | 14:26 | ||
| moritz | $N0 = $I0 | ||
| then your $N0 is a num | |||
| you can then to $P0 = $N0 if you really want it in a PMC | |||
| lateau | i see... | 14:27 | |
| pmichaud | I think the article means that boxing enables you to convert from a native type to a boxed PMC type | ||
| i.e., it converts an int to an Integer, a num to a Float, or a string to a String | |||
|
14:28
preflex left
|
|||
| lateau | hmm... | 14:28 | |
| $P0 = box 5 | |||
| $S0 = $P0 # the string "5" | |||
| $N0 = $P0 # the number 5.0 | |||
| i cannot understand this example clearly... | 14:29 | ||
| pmichaud | the first statement creates an Integer PMC from the int 5, and binds $P0 to that PMC | 14:30 | |
| the second statement retrieves the string value of the PMC -- i.e., it gives us the string value of $P0 ("5") | |||
| the third statement retreives the floating point value of the PMC -- i.e., it gives us a num value of 5.0 | |||
| lateau | i see! | 14:31 | |
|
14:33
preflex joined
14:49
bluescreen left
14:59
UltraDM left
15:04
woosley joined,
bluescreen joined
15:05
theory joined
15:15
SHODAN left,
woosley left
|
|||
| dalek | nxed: r1002 | NotFound++ | trunk/winxedst1.winxed: add namespace level 'using' and 'using namespace' and change compile time scope |
15:26 | |
|
15:27
benabik left
|
|||
| whiteknight | NotFound++ | 15:29 | |
| using namespace looks like it will be extremely helpful in the REPL | |||
| NotFound | whiteknight: I'm still testing, not available yet in plumage install. | 15:30 | |
| whiteknight | NotFound: of course. I'm not ready to use it yet anyway. But it looks like a very good idea | 15:31 | |
| NotFound | Borrowing from Stroustrup is always a good idea. | ||
| lateau | thanks guys and have a goodnight :) | 15:33 | |
|
15:34
lateau left
15:40
alester joined
|
|||
| cotto | whiteknight, pong | 15:44 | |
| whiteknight | cotto: I saw your tied cstring branch. What's the plan/ETA for that? Just exploratory? | 15:45 | |
| cotto | whiteknight, if possible I want to get it in before the release to resurrect 't' | ||
| whiteknight | I'm trying to make sure this 't' NCI thing gets fixed today, and I see both you and plobsing have branches in the works that might serve as solutions | ||
|
15:46
darbelo joined
|
|||
| cotto | whiteknight, I'm not sure if plobsing is trying to resurrect 't' as much as find a replacement for it. My goal is to preserve backwards compatibility. | 15:46 | |
| NotFound | cotto++ | 15:47 | |
| cotto | crud. I seem to have summoned chromatic. | ||
| whiteknight | heh, that's what got me looking at your branch in the first place | ||
| cotto | nm. still workable | ||
| whiteknight | and it's good to summon chromatic. We need more chromatic | 15:48 | |
| cotto | just needs const | ||
| NotFound | An improved replacement will be very good, but we need backwards compatibility for some time. | ||
| alester | I've got a lot of splinty goodness waiting for the next release to get out. | ||
| Nothing I want to merge back to master yet. | 15:49 | ||
| the day before a release | |||
|
15:49
rurban_ joined
|
|||
| whiteknight | alester++ | 15:50 | |
| cotto | petdance++ | ||
| whiteknight, can you fix the win32 build failure? I'll dig into it today if not. | |||
| whiteknight | yeah, I can take a glance at it later | 15:51 | |
|
15:51
rurban left
15:52
rurban_ is now known as rurban
|
|||
| dalek | rrot: c07f2ff | (Gerd Pokorra)++ | NEWS: update news for release 3.4.0 |
15:52 | |
| cotto | whiteknight, great. thanks | ||
| moritz | didn't fperrad++ fix it earlier? | 15:54 | |
| or was that another one? | |||
| JimmyZ doesn't think winxed news should go into parrot NEWS | 15:55 | ||
| whiteknight | JimmyZ: a few months ago we decided that project news can go into NEWS | ||
| We can talk about that decision more, if we want | |||
| bubaflub | seen tadzik | 15:56 | |
| aloha | tadzik was last seen in #perl6 3 hours 9 mins ago saying "the implementation is a bit LTA, I agree". | ||
| JimmyZ | when people read NEWS, they got confused, what is Winxed? where is it? | ||
| cotto | moritz, looks like he fixed something. I don't know what the build failure was, but it looks like he at least made it less broken. | 15:57 | |
| JimmyZ | is it in parrot? | ||
|
16:01
dod left
16:03
darbelo_ joined
|
|||
| mikehh | cotto: it appears that NMAKE does not like comment characters not in line 1 | 16:07 | |
|
16:08
darbelo left
|
|||
| cotto | mikehh, guess so | 16:09 | |
|
16:11
darbelo_ left
16:12
darbelo joined
|
|||
| dalek | rrot/tied-cstring: 6c60363 | cotto++ | src/string/api.c: use const for tied_cstr return type |
16:22 | |
| rrot/tied-cstring: f73c1c5 | cotto++ | src/nci/ (2 files): first attempt to re-add 't' NCI type; needs tests and review |
|||
| rrot/tied-cstring: 7ac893d | cotto++ | tools/dev/nci_thunk_gen.pir: first shot at re-adding 't' to nci thunk gen; also needs tests and review |
|||
|
16:29
lucian joined
16:41
JimmyZ left
|
|||
| nopaste | "plobsing" at 192.168.1.3 pasted "[PATCH] working zavolaj (now with fail-at-runtime)" (88 lines) at nopaste.snit.ch/45872 | 16:47 | |
| dukeleto | i am +1 to having HLL news (like Winxed) in NEWS | 16:48 | |
| NotFound | dukeleto: fine for me, as long as they are a short summary. | 16:49 | |
| plobsing | pmichaud: nopaste.snit.ch/45872 is a revised patch to zavolaj that puts failures at runtime as requested | 16:50 | |
| dukeleto | tadzik: can you close this TT if it works for you? trac.parrot.org/parrot/ticket/2101 | 16:51 | |
| dalek | rrot: aafb693 | plobsing++ | / (3 files): Merge branch 'wrap-opengl-strings' |
16:52 | |
|
16:52
bluescreen left
|
|||
| pmichaud | oh! I think tadzik++ also asked me about the status of the Select PMC | 16:52 | |
| dukeleto | plobsing: aren't we in a code freeze? | ||
| pmichaud | dukeleto: I have an open issue with the relationship managers that wants resolving before the release. | 16:53 | |
| or maybe it was tewk that asked about Select. TT #2034 | |||
| if Parrot isn't going to adopt this soon, we may just put it in Rakudo for now. | 16:54 | ||
| plobsing | dukeleto: I've not seen any emails on parrot-dev about a code freeze. perhaps I've missed something. | 16:55 | |
| cotto_work | ~~ | ||
| whiteknight | I haven't seen anything about a codefreeze, and we know that fixing 't' and zavolaj is still priority | 16:56 | |
| cotto_work | I don't think gerd has requested a freeze. | ||
| whiteknight | that has to get fixed before the release, so that trumps code freeze | ||
| plobsing | I've got a patch that fixes zavolaj | ||
| cotto_work | I emailed him asking to hold off the release until the zavolaj issue is fixed. | 16:57 | |
| plobsing | nopaste.snit.ch/45872 | ||
| pmichaud | I'm looking at the patch now. | 16:58 | |
| whiteknight | plobsing: what is the descalarref op? | ||
| cotto_work | plobsing: that's a good fallback. The preferable solution is to get 't' working again so that a patch won't be required. | ||
| pmichaud | It changes the signatures of at least one function. | ||
| plobsing | whiteknight: it is rakudo magic dust | ||
| sprinkled liberally | |||
| whiteknight | plobsing: ah, okay | ||
| that's why I'm not familiar with it | |||
| pmichaud | descalarref "decontainerizes" an object -- it gets us all the way down to its final value instead of the container PMC that holds a reference to that value | ||
| dukeleto | pmichaud: what is up? | 16:59 | |
| whiteknight | cotto_work: make sure your branch plays nicely with these changes | ||
| cotto_work | whiteknight: "these changes"? | 17:00 | |
| whiteknight | cotto_work: plobsing just merged a branch | ||
| cotto_work | ok | ||
| dukeleto | plobsing: i guess i assumed that "we are cutting a release tomorrow" => code freeze. But I agree, he did not explicitly state that there is a freeze. | ||
| pmichaud | also, fwiw, I'm not entirely comfortable relying upon NCI::Util which was just added ~1 day ago. | ||
| *code in NCI::Util | |||
| cotto_work | they look substantially orthogonal | ||
| plobsing | NCI::Utils has been around for years | 17:01 | |
| pmichaud | I meant call_with_cstring | ||
| and Rakudo/zavolaj has never used NCI::Util | |||
| *s | |||
| plobsing | it works | ||
| whiteknight | github has mention of it all the way back to 2009 | 17:02 | |
| pmichaud | of call_with_cstring? really? | ||
| pmichaud checks | |||
| whiteknight | no, not call_with_cstring | ||
| just NCI::Utils | |||
| pmichaud | that's what the patch is using, primarily. | ||
| whiteknight | that's been around since at least 2009 | ||
|
17:02
bluescreen joined
|
|||
| pmichaud | I meant "new code in NCI::Utils", not NCI::Utils itself | 17:03 | |
| but I recognize that at this point whatever we do we're going to be relying on new/untested code. :( | |||
|
17:03
dodathome joined
|
|||
| whiteknight | pmichaud: ideally, we only need to rely on it until the minute after the release | 17:04 | |
| pmichaud | ? | ||
| whiteknight | then we can work on a solution which is acceptable to everybody | ||
| pmichaud | if I make a (star) release based on this release, I'm relying on it for much longer than one minute. | 17:05 | |
| I have to rely on it until there's a new parrot release that updates it. | |||
| whiteknight | what is the liklihood that you make a star release based on Parrot 3.4? | ||
| pmichaud | you didn't read my email? | ||
| whiteknight | I did. | ||
| you said you've been "working towards the possibility" of a release | 17:06 | ||
| pmichaud | well, we're kind of stuck between a rock and a hard place. Either we live with performance slowdown for a while longer, or we release with out a robust zavolaj | ||
| whiteknight | I want to know where that possibility currently stands | ||
| pmichaud | until today, that probably was pretty close to 100% | ||
| *probability | |||
| whiteknight | okay. So let's still shoot for that | ||
| What does a robust solution look like to you? At this point, the time we have left for robust levels of testing is slim | 17:07 | ||
| pmichaud | I know. | ||
| I'm much more comfortable with something that restores a 't' work-alike than anything that substantially changes zavolaj | |||
| whiteknight | either we're going with under-tested code (assuming we can still test every minute of every hour before tomorrow), or we try a revert and maybe end up with a configuration which is even less tested | ||
| pmichaud | because I don't know how many things depend on zavolaj | ||
| whiteknight | ok | 17:08 | |
| cotto is doing work similar to that. Now we need to ask what his ETA is | |||
| cotto_work | eyes on my branch is a good idea | ||
| pmichaud | if the zavolaj fix was a simple one, I'd be less concerned. | ||
| cotto_work | afk 10m | ||
| whiteknight | cotto_work: okay. Merge it ASAP, and we all test like wild hyenas | ||
|
17:08
darbelo left
|
|||
| cotto_work | no idea if it even works | 17:09 | |
| whiteknight | blah | ||
|
17:09
darbelo joined
|
|||
| whiteknight | okay, then we are farther away than 10 minutes | 17:09 | |
| pmichaud | also, I'm struggling to understand the zavolaj patch because call_with_cstring isn't really documented. I don't know what it expects as args. | ||
| plobsing | oh. oops. forgot to document. sorry, I'll get right on that. | 17:10 | |
|
17:11
mj41 left
|
|||
| pmichaud | in the patch, I also have no idea what | 17:12 | |
| when Str { | |||
| # pir::push_vPi($cstrings, $i); | |||
| } | |||
| is intended to do | |||
| plobsing | it pushes an integer into a variable | 17:14 | |
| I tried using array variables, but they didn't work | |||
| pmichaud | not if it's commented out, though. | ||
| whiteknight | dukeleto: ping | ||
| plobsing | commented out? | ||
| pmichaud | # means comment in Perl | ||
| plobsing | yes, I'm aware. | 17:15 | |
| pmichaud | also, pir:: needs two __'s to make an opcode signature | 17:16 | |
| i.e., push__vPi | |||
| dukeleto | whiteknight: pong | 17:17 | |
| whiteknight | dukeleto: privmsg | ||
| dalek | rrot: d918686 | plobsing++ | runtime/parrot/library/NCI/Utils.pir: document call_with_cstring |
17:19 | |
| nopaste | "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj (v2)" (88 lines) at nopaste.snit.ch/45873 | 17:20 | |
| plobsing | pmichaud: I had to comment that line out because of the missing _ led to syntax errors reported by IMCC for the PIR generated by Rakudo. It would have been nice if rakudo had been able to warn me about the error I was making. | 17:22 | |
| pmichaud | rakudo doesn't know about all of the possible PIR opcodes | 17:23 | |
| there's not really a place it can look | |||
| basically, you're asking it to check in a foreign namespace that doesn't exist | |||
|
17:23
bluescreen left
|
|||
| plobsing | there's also not a lot of opcodes that end in '_[vPisn]+'. it could at least warn. | 17:24 | |
| pmichaud | I beg to differ. | 17:25 | |
| There are a *ton* of opcodes that end in that pattern. | |||
| plobsing | such as? | ||
| pmichaud | set_i_n | ||
| set_i_i | |||
| set_p_i | |||
| add_p_p_i | |||
| plobsing | ok, how about '_[vPism]{2,}'? | 17:26 | |
| er n | |||
|
17:26
darbelo left
|
|||
| pmichaud | "It would have been nice if Parrot has warned about 't' no longer being available." :-) | 17:27 | |
| plobsing | and it did | ||
| when you tried to use it. Perl 6 is all about failing late right? | |||
| pmichaud | I mean when it was deprecated, not when it was removed. :-) | 17:28 | |
| "warn early" is the principle you're espousing. | |||
| plobsing | getting back on target, the patch should work now. It was working for arguments before. I lack a proper testcase for the cstring returns in zavolaj apparently | 17:32 | |
| pmichaud | I'm wondering how it could've worked if the push was commented out. | ||
| plobsing | I wonder the same thing myself | 17:33 | |
| pmichaud | that scares me a bit too. | ||
| plobsing | the only logical explanation is that it wasn't exercised | ||
| pmichaud | you mean that the tests weren't passing string arguments to C funcs? | ||
| unlikely. | |||
| plobsing | I've been using examples/mysqlclient.p6 | ||
| pmichaud: that only handles the returns | |||
| pmichaud | no, the part that was commented out was in the args | 17:34 | |
| not the returns | |||
| plobsing | oh. ouch. how the hell did that work? | ||
| pmichaud | if it was in the returns, I'd say "yeah, not exercised" | ||
| so, if I read this right, the cstrings array is a list of argument indices that are strings? | 17:37 | ||
|
17:38
bluescreen joined
|
|||
| pmichaud | $P0 = str_to_cstring(interp, $S0) | 17:38 | |
| oh my. | |||
| that looks totally evil. | |||
| plobsing | I don't see the problem. | 17:39 | |
| pmichaud | you're putting a non-PMC into a PMC register?! | ||
| whiteknight | I assume the pointer is being wrapped into a Ptr PMC? | ||
| pmichaud | or is it actually a Ptr PMC | ||
| okay | |||
| that makes more sense | |||
| plobsing | well, NCI currently uses UnManagedStruc PMCs (this is the UMS that zavolaj depends on) | 17:40 | |
| these are less efficient than Ptr PMCs space-wise | |||
| but it returns a pointer-ish PMC, yes | |||
| whiteknight | is the lifetime of that PMC tied to the lifetime of the cstring? | 17:42 | |
| pmichaud | if cstrings can be an array identifying which arguments are STRINGS, I fail to see why 't' could not be used in the same way. | 17:43 | |
| plobsing | pmichaud: I know how it was working. All non-pointerish PMCs override the 'get_pointer' vtable to return (void*)SELF (this is VERY stupid, I know) | ||
| whiteknight | pmichaud: if NCI::Utils provided a wrapper layer that made 't' appear to work the same without changes to zavolaj, would that be better? | 17:44 | |
| pmichaud | I think that'd be better for everyone (more) | ||
| plobsing | so when the non-translated strings were unwrapped first as (String) PMCs and then as pointers, the functions were passed a pointer to the PMC header. | ||
| pmichaud | let's look at mysql_real_connect | ||
| plobsing | the first thing in a PMC header is flags, which are frequently 0, so the strings passed were empty strings | ||
| I confirmed this by binding to printf with the broken version. it outputs nothing. | 17:45 | ||
| with the fixed version, I get a "Hello World!" loud and clear | |||
| pmichaud | it will have an NCI signature of ppttttiti | ||
| why can't call_with_cstrings (or something similar) simply parse that signature to find out which arguments need to be wrapped? | 17:46 | ||
| instead of having a separate array of argument indicies? | |||
| whiteknight | i don't know if the signature string is stored with the dlfunc pmc | ||
| if so, that would seem the better way to do it | |||
| plobsing | I could write a routine that takes the same parameters as dlfunc and provides the wrapping required. | ||
| pmichaud | even if the signature string isn't stored, the way that call_with_cstrings works is by creating a wrapper closure that holds the "signature" | ||
|
17:47
mj41 joined
|
|||
| pmichaud | only here the signature is a resizableintegerarray (expensive) instead of a simple string (cheap, and what the caller wants to use anyway) | 17:47 | |
| whiteknight | plobsing: such a routine would seem like a very good idea right now. If only to make people more comfortable with the interface | ||
| plobsing | the current implementation was simply the first thing that occured to me | ||
| whiteknight | plobsing: how much effort would it take? | ||
| pmichaud | then we simply say that people use call_with_cstrings to get the desired dlfunc instead of calling dlfunc directly | ||
| plobsing | whiteknight: just for the 't' signatures? not too long | ||
| pmichaud | and call with cstrings can build all of the wrappers it wants, and return the closure or whatever | 17:48 | |
| and I suggest it be called something other than "call_with_cstrings" | |||
| it could become the primary interface to nci | 17:49 | ||
| (well, if it weren't relatively slow) | |||
| plobsing | dlfancy? | ||
| whiteknight | there are multiple different available semantics with regard to cstrings, so a single wrapper for everybody seems to be too little | ||
| pmichaud | whiteknight: you can hide multiple semantics with different signature letters | 17:50 | |
| *and* | |||
| it doesn't have to be an everything for everybody interface -- just something that handles the common cases | |||
| the ability to get to the pointer/p level and wrap things yourself is still there. | |||
| plobsing | I've been trying to move away from signature letters. Everybody has a different idea about how the description language should be extended. | ||
| whiteknight | it seems to me a better long-term solution would be to allow the user to specify their letters and map them to lists of predefined semantics | ||
| cotto_work | back | 17:51 | |
| pmichaud | fair enough, I'm not tied to the idea of signature letters as a long term solution | ||
| whiteknight | they are still *the* solution for 3.4 | ||
| pmichaud | I *am* tied to the idea that there ought to be a backwards compatibility layer for signature letters that have existed for 6+ years in parrot | ||
| plobsing | that, I can provide | ||
| pmichaud | if that happens, then all we have to do is change zavolaj so that instead of calling dlfunc it calls this new wrapper | 17:52 | |
| and for tests, we could potentially resurrect the tests that tested the 't' parameters in NCI previously | |||
| (but have them go through the new wrapper instead of dlfunc also) | |||
| whiteknight | pmichaud: yes, we are trying to provide that backwards compatibility now. I don't think we should be tied to our mistakes forever, but I do think that we can prolong the death of this one a little longer | 17:53 | |
|
17:54
ambs joined
|
|||
| pmichaud | I'd still like to see exploration of supporting 't' more natively though (i.e., at the thunk layer instead of a PIR wrapper) | 17:54 | |
| it's still a very common case for users. | |||
| whiteknight | pmichaud: I don't know if you saw the comment by chromatic earlier on github. It's really not as "common" as we would like | ||
| pmichaud | he didn't give percentages for each | ||
| whiteknight | they aren't 9% | 17:55 | |
| 0% | |||
| pmichaud | he was coming from the position of "one letter to do everything", which I completely disagree with | ||
| whiteknight | well, that's what 't' is right now | ||
| and it's clearly untenable in the long run | |||
| pmichaud | okay, I agree that's untenable | ||
| and I've never argued for keeping *that* interpretation | |||
| whiteknight | but you are correct, a mechanism to take STRING and get cstring is a fundamental and important mechanism | ||
| pmichaud | I've only said that passing constant strings to library functions is a very common use case | ||
| whiteknight | we need to find a way to expose that mechanism to the users in a way that is easy and usable | 17:56 | |
| pmichaud | I think the other cases chromatic cited are far less common, and if they're supported, they shouldn't be 't' | ||
| cotto_work | plobsing: do you think the tied-cstring branch is on the right track? | ||
| whiteknight | cotto_work: I've been thinking about that idea all night. I think there is some merit there, if memory consumption doesn't balloon | ||
| pmichaud | cotto_work: we have a fourth approach now, which I think I'd be very comfortable with :-) | ||
| cotto_work | pmichaud: if you're happy I'm happy | ||
| plobsing | cotto_work: I've been kinda working with blinders on trying to make this work | 17:57 | |
| whiteknight | cotto_work: where we are frequently doing the conversion, such as in IO, there are performance wins to be had | ||
| plobsing++ | |||
| pmichaud | well, I still think the tied-cstring has the potential to have some memory churn wins | ||
| so it's worth exploring, but perhaps doesn't need to be committed to before release | |||
| whiteknight | pmichaud: yes, it's definitely worth testing out | ||
| cotto_work | bacek thought so to when I asked him last night | ||
| whiteknight | I can't say I would be surprised no matter how it turns out. | ||
| it could be major win, major fail, or anywhere in the middle | 17:58 | ||
| pmichaud | I know that when I added sub-profiling to Rakudo, I was shocked at how many times my STRING values were going to have to be alloced/freed | ||
| (I finally came up with a version that didn't require it so much... but my initial attempts were going to be churn-ful) | 17:59 | ||
| wowee! Bacek's gc_tuning branch shows a 98% speed improvement on many of the .p6 tests!!! | 18:03 | ||
| (wait for it) | |||
|
18:04
ShaneC joined
|
|||
| cotto_work | lolwut? | 18:04 | |
| plobsing | 98%? | ||
| aloha | 0.98 | ||
| pmichaud | pmichaud@kiwi:/zip/rakbench/rakudo-2011.04-gct$ /usr/bin/time ./perl6 /zip/rakbench/bench/B03-sin.p6 | ||
| Command terminated by signal 11 | |||
| 1.00user 0.09system 0:01.20elapsed 90%CPU (0avgtext+0avgdata 891344maxresident)k | |||
| 0inputs+0outputs (0major+55789minor)pagefaults 0swaps | |||
| (signal 11 = segmentation fault) | |||
| plobsing | we can segfault a lot faster than that ;) | 18:05 | |
| pmichaud | lol | ||
|
18:07
ShaneC left
|
|||
| cotto_work | pmichaud: what's the plan for 't' between now and the release? | 18:09 | |
| pmichaud | cotto_work: I suggested that the approach plobsing is using for zavolaj (a separate interface closure) could handle 't' directly instead of making the users do it | 18:10 | |
| cotto_work | pmichaud: ok. So he's working on that and I don't need to scramble to get tied-cstring merged before the release? | 18:11 | |
| pmichaud | thread starts around irclog.perlgeek.de/parrot/2011-05-16#i_3751386 | ||
| nopaste | "plobsing" at 192.168.1.3 pasted "[PATCH] initial dlfancy implementation" (64 lines) at nopaste.snit.ch/45874 | 18:12 | |
| whiteknight | every time I open a patch on a .pir file, I weep a little and wish it were winxed | ||
| plobsing | right now, it just dispatches to call_with_cstring. but it does provide a dlfunc-emulating interface | ||
| whiteknight: preaching to the choir | |||
| whiteknight | I keep hoping that one day we won't need to be communicating in grunts and cave paintings | 18:13 | |
| plobsing | I would do the whole thing in winxed, but I'm not willing to fight the battle to set that precedent | ||
| pmichaud | cotto_work: also, it feels to me like tied_cstring could be a bit larger of a change than we want to do right before a release | 18:14 | |
| plobsing: I have to run errands now and get ready for a call on another project... would you be willing to consider an alternate dlfancy implementation a bit later? | |||
| cotto_work | pmichaud: yes. If it were the only way I'd push ahead, but I would *much* rather give it some serious testing and stabilizing first. | 18:15 | |
| pmichaud | cotto_work: now that I see where things are heading, as long as we can get one of the other two approaches going I'm likely to favor them | ||
| whiteknight | whatever solution we go with, we need to get it into master soon so we can test it as much as possible | ||
| pmichaud | I suspect I could have my version of dlfancy in about 3 hrs from now | ||
| whiteknight | if dlfancy can be made to work, I think there's consensus that it is the better approach | ||
| cotto_work | pmichaud: like I said, I'm happy as long as the problem is solved to your satisfaction. | ||
| pmichaud | it's just that for the next 1.5 hours I'm occupied on another unmaskable task | 18:16 | |
| plobsing | pmichaud: yes, I don't like the dlfancy *implementation* at the moment. It can be improved later. | ||
| pmichaud | well, I'd also be refactoring (heavily) call-with-cstrings | 18:18 | |
| anyway, I'll propose it a bit later and you can review/accept/whatever | |||
| afk | 18:19 | ||
| whiteknight | plobsing: I don't think that it would be a huge battle, if we decided to take up the fight | 18:20 | |
| cotto_work | +1 | 18:21 | |
| whiteknight | I would *love* to see winxed snapshotted into the parrot repo | ||
| pmichaud | "NO! NQP MUST WIN FOREVER!" j/k | ||
| whiteknight | I'm not saying to take NQP out. I like NQP and it should stay | ||
| NotFound | Language wars! | ||
| pmichaud | "THERE CAN BE ONLY ONE!" | ||
| plobsing | that would be nice. I'd settle for winxed code and generated PIR living side-by-side. | ||
| whiteknight | my languages and I, we're polyamorous | ||
| pmichaud | aloha: msg bacek alas, gc_tuning branch results in many segfaults for me: gist.github.com/975001 | 18:22 | |
| aloha | pmichaud: OK. I'll deliver the message. | ||
| whiteknight | NotFound: something I wanted to ask you the other day, what is the difference between the winxed.winxed compiler driver, and winxed_installable.winxed? | 18:23 | |
| and why do you have both? | |||
| dalek | rrot: 0cf475b | plobsing++ | runtime/parrot/library/NCI/Utils.pir: add dlfancy for providing "fancier" NCI types |
18:24 | |
| nopaste | "plobsing" at 192.168.1.3 pasted "[PATCH] zavolaj/dlfancy" (19 lines) at nopaste.snit.ch/45875 | ||
| plobsing | not quite working yet for some reason | ||
| whiteknight | that is a *much* nicer zavolaj patch | ||
| NotFound | whiteknight: after the last two month changes, there is less difference than before. | ||
| whiteknight | NotFound: I only ask because I've been reading over them, learning how to compile for my REPL | 18:25 | |
| NotFound | The main one is that the installable driver does not allow to select stage. | ||
| whiteknight | oh. | 18:26 | |
| tadzik | good evening #parrot | 18:28 | |
| seen bubaflub | |||
| aloha | bubaflub was last seen in #parrot 2 hours 31 mins ago saying "seen tadzik". | ||
| whiteknight | hello tadzik | ||
| bubaflub | hey tadzik | ||
| we got two more pull requests for cardinal, was wondering if you were going to get to those first | |||
| i can get them when i'm done with work in an hour or two | |||
| pmichaud | oh, btw. I might suggest that we choose a different signature letter besides 't' for this new semantic (the one that works only with constant strings) | ||
| unless the patched approach also works okay with non-constant strings (i.e., the same as 't' did before) | 18:29 | ||
| NotFound | whiteknight: don't worry about the non installed, is only intended for testing the bootstrap process. | ||
| pmichaud | or, provide 't' for backwards compatibility, and a new letter for whatever we think "pass a constring string arg" should be. | ||
| tadzik | pmichaud: yeah, the {ticket_you_mentioned} can be closed I think, I'm commenting on that in a second | ||
| whiteknight | NotFound: I'm just thinking about ways to make the update process easier and to unify code | ||
| NotFound | And for those that want to test winxed without installing it. | ||
| tadzik | bah, my password is reseted again | 18:30 | |
| whiteknight | on trac? | 18:31 | |
|
18:31
alester left
|
|||
| tadzik | yeah | 18:31 | |
| cotto_work | tadzik: try your old password. They were restored. | 18:32 | |
| tadzik | I reseted it after the breakage, and now it's reseted to the state before the breakage | ||
| cotto_work | yes | ||
| tadzik | cotto_work: yeah, but I don't remember that one :) | ||
| will reset it again :) | |||
| cotto_work | tadzik: I can set it to something if you want. | ||
| your call | 18:33 | ||
| tadzik | I'll handle it, thanks :) | ||
| cotto_work | ok | ||
| whiteknight | actually, we should all set tadzik's new password! | ||
| everybody submit options, and we'll pick one at random | |||
| tadzik | okay :) | ||
| doesn't matter, I'll set it to something I don't remember and reset it after Chromium forgets it too :F | 18:34 | ||
| bubaflub: have you seen the new Pull Request for Cardinal? | |||
| plobsing | for some reason, $type.of is no longer working properly | ||
| tadzik | oh, two of them | 18:35 | |
| bubaflub | tadzik: i looked briefly at them | ||
| tadzik: if you don't get to it first i'll check em out, run the test suite, and merge em if they are good | |||
| tadzik | I'll do that now | ||
| bubaflub | ok | 18:36 | |
| tadzik | I believe this should be done by someone who knows Ruby though :) I just test in irb if that's Proper Ruby | ||
| Ruby's still on my todo | 18:37 | ||
| bubaflub | tadzik: do you have 1.9.2 installed? i think that's what we are targetting | ||
| tadzik | bubaflub: I'm afraid it's 1.8.7_p334 | 18:38 | |
| Gentoo-- | |||
| bubaflub | tadzik: you can use RVM to manage multiple versions of ruby | ||
| (if you'd like) | |||
| also, there's a good chance that it hasn't changed between the two | 18:39 | ||
| i'd say, go ahead and merge it | |||
| in a few hours i'll take a look as well | |||
| and if it's different / wrong i'll fix it | |||
| dukeleto | bubaflub: wazzup | 18:51 | |
| bubaflub | dukeleto: hey hey | ||
| dukeleto | bubaflub: you are free of exams? | ||
| bubaflub | dukeleto: free and clear | 18:52 | |
| dalek | rdinal: 808c71c | (Hongwe Qiu)++ | src/classes/String.pir: Minir bug fixes, so that t/string/concat.t passes. |
||
| rdinal: bd9ac96 | (Hongwe Qiu)++ | setup.pir: add CardinalFloat to built, so that parrot setup.pir test passes more tests. |
|||
| rdinal: 0651c0d | tadzik++ | s (2 files): Merge pull request #10 from qiuhw/master These two commits get more tests pass |
|||
| dukeleto | bubaflub: woot! | 18:53 | |
| cotto_work | bubaflub: booyah | ||
| dukeleto | bubaflub: what are your next steps? | ||
| bubaflub | dukeleto: ???? and Profit!!! | 18:54 | |
| dukeleto | bubaflub++ # you learn well, grasshopper | ||
| tadzik | oh, I wish I was free to | ||
| but I still have 1.5 month to go | |||
| dukeleto | bubaflub: i have homework for you. Send an email to the gmp-discuss mailing list, and tell them what you are up to | 18:55 | |
| bubaflub: give a link to github.com/bubaflub/parrot-gmp/issues and your GSoC proposal | |||
| bubaflub | dukeleto: cool. i'm already subscribed, i'll shoot one out today. | ||
| dukeleto | bubaflub: ask them which versions of GMP they suggest supporting, as well | ||
| bubaflub: that will fix 2 gh issues :) | |||
| bubaflub: GMP turned 20 years old this month! | 18:56 | ||
| bubaflub | woah, didn't realize it's been around for that long | ||
| dukeleto | pretty amazing to think about. Before GMP, *everybody* wrote their own bigint/bigfloat libraries | ||
| i remember having to write a bigint library in CS class in highschool. Not sure it ever worked right, but we tried. It definitely is not trivial. | 18:57 | ||
| i think that was my first experience with C++ (shudders) | |||
| cotto_work | My first experience with C++ was before my first experience with vcs. It did not go well. | ||
| dukeleto | bubaflub: can you convert your TODO.md into github issues? | 18:58 | |
| bubaflub: it will make it easy for people to comment/etc on them | |||
| bubaflub | dukeleto: sure | ||
| dukeleto | bubaflub: i am a big fan of github issues | 18:59 | |
| bubaflub: i really like the color/tagging support | |||
| bubaflub: for a good example of labels, see github.com/GMOD/mimosa/issues | 19:00 | ||
| dalek | nxed: r1003 | NotFound++ | trunk/winxedst1.winxed: function level "using namespace" and some changes in compile time scope search |
||
| dukeleto | bubaflub: one issue with using tools/dev/ncidef2.pl is that it is not installed with a normal parrot | 19:01 | |
| bubaflub: so i think that is something that you will do, and commit the results to the parrot-gmp.git repo | |||
| bubaflub | dukeleto: yes. i think i can store the def file and the results | 19:02 | |
| and that way developers can regenerate that file, end users just get the results | |||
| dukeleto | bubaflub: sure, you can add a Makefile target or whatever to regenerate the file | ||
| bubaflub: and that will only be used by developers, not end users | |||
| bubaflub: i would like to see one solid test for parrot-gmp, before you do much more coding | 19:03 | ||
| bubaflub: that single test will help guide you greatly during the initial implementation phase | |||
| bubaflub | dukeleto: roger that | 19:04 | |
| dukeleto | bubaflub: do you have enough to chew on for now? we still need to do some google video/skyping. | ||
| bubaflub: did you write a bonding period blog post yet? | 19:05 | ||
| bubaflub | dukeleto: yeah, when are you free? | ||
| dukeleto: not yet, i can do that tonight | |||
| whiteknight | blah, I had a git repo go all corrupty because of a VM crash | 19:07 | |
| that's a bummer | |||
| dukeleto | whiteknight: gist the errors | ||
| whiteknight: i have run into git corruption before. Usually, you can delete a currupt packfile and be on your merry way | |||
| whiteknight | dukeleto: nah, I already closed the thing in frustration | ||
| dalek | rrot: 6a2784c | plobsing++ | runtime/parrot/library/NCI/Utils.pir: fix thinkos in cstring return wrapper |
||
| dukeleto | whiteknight: hokey dokey | ||
| bubaflub: want to skype in 15 mins? | 19:08 | ||
| whiteknight | my problem is, I don't just see a problem and report it. I fiddle and make it worse | ||
| then I get angry and start deleting files | |||
| dukeleto | bubaflub: what is your skype id? | ||
| whiteknight: no bueno | |||
| whiteknight | dukeleto: it's a known personality bug | ||
| and when I try to run myself through the debugger, I get bruised | 19:09 | ||
| bubaflub | dukeleto: should be same, bubaflub | ||
| dukeleto: i haven't used it in a while, though | |||
| whiteknight | I suspect strongly that skype-on-linux might not have a very bright future | 19:10 | |
| dukeleto | bubaflub: i dislike skype, but currently i have had better luck with it than google voice on linux, although i hear it has been improvely lately. | ||
| whiteknight: yeah. I am forced to use skype for work teleconf calls once per week. So painful. | 19:11 | ||
| whiteknight | i dislike the practice of big companies buying up technology that people like, ruining it, and then selling it for more money | ||
| dukeleto | bubaflub: i added you on skype. You gonna be ready in 10mins or so? | 19:12 | |
| bubaflub | dukeleto: suer | ||
| *sure | |||
| current version: 2.8.0 updated version: 5.1.0 | 19:14 | ||
| haven't used skype in a while | |||
| dalek | rrot: a37452e | plobsing++ | runtime/parrot/library/NCI/Utils.pir: correctly handle null strings |
19:17 | |
|
19:27
alester joined
|
|||
| dalek | sella: 7469240 | Whiteknight++ | s (71 files): move unstable libraries into an unstable folder. Update setup.winxed to handle this, and make includes a little nicer |
19:28 | |
| sella: d3a6799 | Whiteknight++ | t/test/Suite.t: fix copy+paste failure in Suite.t |
|||
| plobsing | msg pmichaud Can you look into the 'Null PMC access in type()' errors I'm seeing with the 'dlfancy' patch to zavolaj? I don't understand what is wrong. | 19:29 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | TT #2101 closed by tadzik++: Broken ipv6 detection on Gentoo linux | 19:31 | |
| TT #2101: trac.parrot.org/parrot/ticket/2101 | |||
| sella: 04669c3 | Whiteknight++ | / (2 files): Add an is_proxy function to determine if a given object is a proxy. Add a test |
19:34 | ||
| plobsing | msg pmichaud for convenience, the patch is @ nopaste.snit.ch/45875 | ||
| aloha | OK. I'll deliver the message. | ||
| dukeleto just had a nice skype conversation with bubaflub++, who is walking for his graduation tomorrow | 19:37 | ||
| cotto_work | good way to start a career | 19:38 | |
| I remember how amazing it was to start getting paid to write code. | |||
| bubaflub | i'm looking forward to just having more free time | 19:39 | |
| my wife consoling me during finals: "when you're done you can read more, play halo, do open source..." | |||
| atrodo | free time is a lie1 | 19:40 | |
| dukeleto | bubaflub: lulz | ||
| bubaflub | atrodo: sadly i must agree | ||
|
19:42
bluescreen left
|
|||
| dalek | sella: 1d9cbcd | Whiteknight++ | / (2 files): Add Memoize.is_memoize_proxy to determine if a function is a memoize proxy or not |
19:47 | |
| Coke_ | halo? mass effect 2! | 19:49 | |
| tadzik whispers something about minecraft | 19:50 | ||
| Coke_ bought minecraft, played it twice, and never reopened it. | |||
| Coke_ suspects it is slightly too hard by default. | |||
| tadzik | it must be extremely boring to a certain kind of people, and I am one of them it seems | ||
| Coke_ rally did like the concept and wanted to support the guy, though. | 19:51 | ||
| Tene | I playet it a lot of a couple of days, and then couldn't find anything else I cared to do; haven't been back since | ||
| tadzik | I spent like an hour making myself a glass-made roof, and then some creature exploded in the middle of my house burying my work. Frustrating | 19:52 | |
| dalek | sella: dde571a | Whiteknight++ | / (2 files): Add checks to memoize_method and unmemoize_method to attempt to redo the same operation. Add tests |
||
| tadzik | also, spiders respawning in your house when you sleep... brr | ||
|
19:54
bluescreen joined
|
|||
| Coke_ is now on his 3rd playthrough of ME2, though. | 19:57 | ||
|
20:06
dafrito left
|
|||
| pmichaud | plobsing / others: here's my suggested version of an NCI wrapper (to replace dlfancy) -- gist.github.com/975243 | 20:10 | |
| it does at most one level of closure wrapping, and is structured so that it's easy to add other conversion types in the future if we want | 20:11 | ||
| it also caches various values to avoid looking them up / constructing NCI objects on each call | 20:12 | ||
| I've not run/tested it -- it's just a first draft at this point | |||
|
20:13
PacoLinux left
|
|||
| dalek | nxed: r1004 | NotFound++ | trunk/winxedst1.winxed: box last operand of conditional operator when needed |
20:13 | |
| whiteknight | pmichaud: it looks nice on first glance, I'll have to give it a deeper review later | 20:14 | |
| dalek | sella/gh-pages: b3c0287 | Whiteknight++ | libraries/memoize.md: quick first draft of web docs for memoize |
20:15 | |
| pmichaud | whiteknight: any objection to me committing it to NCI::Utils (in addition to what plobsing has there) | 20:18 | |
| It won't hurt to have two versions for a short while, and I can do some testing | |||
| actually, I'll just make a branch for now and provide a branch diff | |||
| but then I can also test it with zavolaj :-) | |||
| whiteknight | pmichaud: commit it | ||
| we need as many eyes on it as possible | |||
| cotto_work | +1 | 20:25 | |
| whiteknight | 'erbody just commit 'erthing that they gots | 20:26 | |
| NotFound++ # Over 1000 commits of winxed! | 20:28 | ||
| NotFound | Commit early, commit often. | 20:29 | |
|
20:30
baest joined
20:33
mj41 left
20:36
dodathome left
20:38
whiteknight left
|
|||
| plobsing | pmichaud: (re: nciwrap) it lacks special consideration for null strings, but otherwise looks functional | 20:39 | |
| I'm not sure how effecient or inefficient the two approaches are. | |||
| pmichaud | I'm pretty sure the second is more efficient, if only because it's not allocating as many thunks and closures | 20:43 | |
| I'm writing a test library now. | |||
| plobsing | if it is a single-level closure, I wonder if a continuation-closure is more efficient (because it avoids using lexpads) | 20:44 | |
| pmichaud | I'd prefer to stick with the lexpad, I think. the Closure PMC has its own set of issues. | 20:45 | |
| (having had long experience with it. See also "PGE" :-) | |||
| s/Closure/Coroutine | 20:46 | ||
| both, actually :-) | |||
| dalek | rrot: 95d47d1 | mikehh++ | runtime/parrot/library/NCI/Utils.pir: fix pod syntax - correct =over 4 / =back matching |
||
|
20:51
bluescreen left
20:54
PacoLinux joined
|
|||
| moritz | bacek: fwiw rakudo spectest was all gree on the gc_tuning branch | 20:54 | |
| pmichaud | when I attempt to call Parrot_str_new() in my version, I'm getting | 20:59 | |
| No NCI thunk available for signature `STRING (ptr, ptr, INTVAL)' | |||
| moritz: it failed horribly on mine | |||
| I might need to try it again, but I got lots of segfaults | 21:00 | ||
| plobsing | \\o/ that error message is much prettier. | ||
| pmichaud: we'll have to add that to the list of static thunks and reboostrap them | |||
| pmichaud | this is why we need tests :-) | 21:01 | |
| pmichaud keeps writing more tests. | |||
| plobsing | pmichaud: I am seeing the same failures in zavolaj using 'ncifunc' as I was with 'dlfancy': "Null PMC access in type()" | 21:04 | |
|
21:05
jsut_ joined
21:07
jsut left
|
|||
| Coke_ wonders if Klaus Br�ssel | 21:08 | ||
| is a perlperson. | |||
| pmichaud | plobsing: how long to add the new thunk? | 21:10 | |
| Coke_ | going to yapc::na? | 21:11 | |
| aloha, going to yapc::na? | 21:12 | ||
| aloha | Coke_: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51 | ||
| Coke_ | aloha, going to yapc::na 2011? | ||
| aloha | Coke_: I have no idea. | ||
| plobsing | pmichaud: done | ||
| dalek | rrot: 4eabcb8 | plobsing++ | src/nci/extra_thunks. (2 files): add thunk 'STRING (ptr, ptr, INTVAL)' needed to call Parrot_str_new() from HLLs |
||
| dukeleto | aloha: going to yapc::na 2011 is also Coke | ||
| aloha | dukeleto: Okay. | ||
| dukeleto | aloha, going to yapc::na? | ||
| aloha | dukeleto: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51 | ||
|
21:12
dafrito joined
|
|||
| dukeleto | aloha, going to yapc::na 2011? | 21:12 | |
| aloha | dukeleto: going to yapc::na 2011 is Coke | ||
| dukeleto | darn. | ||
| Coke_ | aloha: forget going to going to yapc::na 2011 | ||
| aloha | Coke_: I don't know anything about going to going to yapc::na 2011. | ||
| Coke_ | aloha: forget going to yapc::na 2011 | 21:13 | |
| aloha | Coke_: I forgot about going to yapc::na 2011. | ||
| Coke_ | please don't add me to the other one. Danke. | ||
|
21:16
dafrito left
|
|||
| Coke_ is pretty sure he cannot justify the cost this year. | 21:17 | ||
|
21:18
ambs left
21:22
dafrito joined,
bluescreen joined
|
|||
| dalek | rrot/ncifunc: 95d47d1 | mikehh++ | runtime/parrot/library/NCI/Utils.pir: fix pod syntax - correct =over 4 / =back matching |
21:28 | |
| rrot/ncifunc: 4eabcb8 | plobsing++ | src/nci/extra_thunks. (2 files): add thunk 'STRING (ptr, ptr, INTVAL)' needed to call Parrot_str_new() from HLLs |
|||
| rrot/ncifunc: 1f73a3a | pmichaud++ | src/nci_test.c: Add some functions for testing char* parameters in NCI. |
|||
| rrot/ncifunc: 6691e38 | pmichaud++ | runtime/parrot/library/NCI/Utils.pir: [NCI] Add "ncifunc" as a replacement / approach to "dlfancy". |
|||
| rrot/ncifunc: 3b55d79 | pmichaud++ | / (3 files): Merge branch 'master', remote-tracking branch 'origin' into ncifunc |
|||
| rrot/ncifunc: c1315ce | pmichaud++ | t/library/nciutils.t: [NCI]: Add tests for 'ncifunc' in NCI::Utils. |
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-284-g95d47d1 | 21:30 | |
| Ubuntu 11.04 i386 (g++ --optimize) | |||
|
21:33
lucian_ joined,
mtk left
|
|||
| pmichaud | all tests pass here... shall I merge to master? | 21:34 | |
| cotto_work | pmichaud: music to my ears | 21:37 | |
|
21:37
lucian left
|
|||
| pmichaud | I haven't tried zavolaj itself yet -- I'm about to do that. But since the 't' interface is preserved through ncifunc, it ought to work out just fine. | 21:37 | |
|
21:38
mtk joined
|
|||
| pmichaud | plobsing: what's the "special consideration" needed for null strings? | 21:40 | |
| and do you mean actually STRINGNULL, as opposed to the empty string? | |||
| plobsing | pmichaud: yes. specifically, if you pass in a null string or pmc for an argument, it should turn into NULL | 21:44 | |
| pmichaud | NULL or PMCNULL ? | ||
| or is nci smart enough to translate PMCNULL to NULL or something like that? | 21:45 | ||
| plobsing | NULL. PMCNULL isn't really useful to external libraries | ||
| well OK, PMCNULL as far as parrot is concerned | |||
| pmichaud | so, a null argument should remain a null argument and not be passed to str_to_cstring | ||
| no problem | |||
| when a null PMC is passed via NCI, what does the receiving function see? PMCNULL or NULL ? | 21:46 | ||
| dalek | rrot/ncifunc: 0366834 | plobsing++ | runtime/parrot/library/NCI/Utils.pir: properly handle null arguments |
||
| plobsing | pmichaud: fixed | ||
| plobsing | NCI translates PMCNULL pointer arguments to NULLs | 21:47 | |
| pmichaud | I like 1-line fiexes :-) | ||
| *fixes | |||
| dalek | rrot/ncifunc: 6e069f0 | plobsing++ | runtime/parrot/library/NCI/Utils.pir: properly handle null string returns |
21:54 | |
| dukeleto | Good read: www.dwheeler.com/essays/fixing-unix...names.html | 21:56 | |
| pmichaud | gist.github.com/975473 # zavolaj almost works | 22:02 | |
| cotto_work | dukeleto: that article sucks. | ||
| Forbidden | |||
| You don't have permission to access /essays/fixing-unix-linux-filenames.html on this server. | |||
| plobsing | cotto_work: maybe the server just doesn't like you. I can read it fine. | 22:03 | |
| cotto_work | When I go to the root, I get a CentOS Apache default page. | ||
| how odd | |||
| plobsing | pmichaud: I can add the thunk fairly easily, but to ease your development, you could install libffi which would allow thunks to be generated automatically | 22:05 | |
| pmichaud | correction: zavolaj works. What's missing are the nci thunks that the mysqlclient.p6 example wants. :) | ||
| were the thunks in parrot before? | |||
| cotto_work | a bunch of static thunks were deleted when 't' was removed | ||
| plobsing | pmichaud: can I see the zavolaj patch? | 22:06 | |
| pmichaud | gist.github.com/975484 | 22:07 | |
| dalek | rrot/ncifunc: 2fef4a1 | plobsing++ | src/nci/extra_thunks. (2 files): add thunk for mysql_real_connect |
||
| pmichaud | cotto_work: that's wrong, if so. | 22:11 | |
| they should've have been converted to whatever the new form of 't' would be | |||
| (unless they were deprecated also) | |||
|
22:12
tty234 joined
|
|||
| plobsing | pmichaud: I'm still seeing the 'Null PMC access in type()' problem. | 22:12 | |
| pmichaud | plobsing: where are you seeing it? | ||
| plobsing | in zavolaj mysqlclient | ||
| pmichaud | can I get a full error message? | 22:13 | |
| nopaste | "plobsing" at 192.168.1.3 pasted "zavolaj problem" (10 lines) at nopaste.snit.ch/45912 | 22:14 | |
| pmichaud | can you nopaste your .perl6/lib/NativeCall.pm6 ? | 22:15 | |
| plobsing | it is a symlink to the one in the zavolaj directory which is a fresh checkout from master with your patch applied | ||
| pmichaud | excellent. Can you nopaste your .perl6/lib/NativeCall.pm6 ? | ||
| (I just want to double-check.) | |||
| also, it'll help me see the exact lines in your file. | 22:16 | ||
| nopaste | "plobsing" at 192.168.1.3 pasted "NativeCall.pm6" (121 lines) at nopaste.snit.ch/45931 | ||
|
22:17
fperrad left
|
|||
| pmichaud | hmmm | 22:18 | |
| oh, I might need to update my version to include the new thunks | |||
| just a sec | |||
| Null PMC access in type() | 22:22 | ||
| okay, now I see it | 22:23 | ||
| hmm | |||
|
22:26
bluescreen left
22:30
ShaneC joined
|
|||
| pmichaud | it's happening right after the return from the real_connect call | 22:31 | |
| i.e., real_connect makes it into the nci call and out again | |||
| so I'm guessing it might have something to do with the return value. | |||
| retv is coming back as a ResizablePMCArray | 22:34 | ||
| that's normal for something with :slurpy | |||
| it's first element is a ResizablePMCArray | |||
| I'm not so sure that's normal | |||
| shouldn't it be a Ptr or something Opaque-ish? | 22:35 | ||
| or an unmanaged struct, perhaps? | |||
| plobsing | yeah, it should be | 22:36 | |
| pmichaud | trying something.... | ||
| aha | 22:37 | ||
| getting rid of the :slurpy fixes it | |||
| or at least gets farther | |||
| wait, maybe not | |||
| trying again | |||
| plobsing | the function returns null | ||
| pmichaud | mysql_real_connect returns a MYSQL* | 22:38 | |
| plobsing | it returns null for me | ||
| pmichaud | yes, perhaps NULL then | ||
| ah, returns NULL if the connection is unsuccessful | 22:39 | ||
| so why is a NULL becoming a ResizablePMCArray ? | |||
| plobsing | no idea how | ||
| pmichaud | what should the result of an nci call be to a function that returns a null pointer? | 22:40 | |
| plobsing | pmcnull | ||
| pmichaud | oh | 22:41 | |
|
22:41
ShaneC left
|
|||
| pmichaud | then getting rid of slurpy may have worked | 22:41 | |
| because that's what I get in that case | |||
| just a sec | 22:42 | ||
| looksl ike even in 2011.04 it was normalish to get a Null PMC access result | 22:46 | ||
| I'm guessing that's the case when the mysql database connection fails | |||
| as would be the case when not running a server | |||
| are you running a server on your localhost? | |||
| (a mysql server, that is) | 22:47 | ||
| plobsing | I don't think so | ||
| pmichaud | see the requirements at the top of mysqlclient.p6 | ||
| I'm certain I'm not | |||
| plobsing | but it *could* return nulls before | 22:48 | |
| pmichaud | really? | ||
| plobsing | because the MySQL example got further with old parrot and the more invasive call_with_cstring changes | ||
| pmichaud | I just tried it on my 2011.04 install -- I got: | 22:49 | |
| plobsing | or maybe it was just failing in a different way | ||
| pmichaud | pmichaud@kiwi:~/zip/perl/rakudo-2011.04$ ./perl6 mysqlclient.p6 | ||
| library_init [currently not working] | |||
| init | |||
| get_client_info: 5.1.54 | |||
| real_connect | |||
| Null PMC access in get_string() in <anon> at line 106:NativeCall.pm6 in main program body at line 153:mysqlclient.p6 | |||
| what do you get? | |||
| plobsing | I got several lines of SQL followed by something about permissions | ||
| I don't have 2011.04 easily available | 22:50 | ||
| pmichaud | hmmm | ||
| maybe I'll install mysql-server on one of my other boxes to test | |||
| plobsing | but I could have messed something up. I'm not terribly familiar with mysql. | 22:51 | |
| pmichaud | so, just to confirm: previously a call to a funciton returning a null pointer would cause the NCI thunk to return PMCNULL, and not a ResizablePMCArray containinga PMCNULL? | 22:52 | |
| or, phrased differently, why the :slurpy on retv? | |||
| plobsing | the slurpy is there because call-by-reference is translated into multi-returns | 22:54 | |
| pmichaud | is that new, or was that the behavior before also? | ||
| plobsing | that's new | ||
| pmichaud | oh, that's a deprecation also then | ||
| unless you mean that call-by-reference returns a ResizablePMCArray | 22:55 | ||
| what exactly is "call-by-reference" here, ooc? | 22:56 | ||
| plobsing | how is adding something a deprecation? | ||
| pmichaud | if you changed the return value of an existing feature, that's a deprecation | ||
| so if nci thunks now return arrays where they used to return a single element, that's different | |||
| plobsing | the return value stays the same for old signatures. it is an added capability | ||
| pmichaud | okay | ||
| so, you're saying it's possible for an nci thunk to have more than one return value | |||
| i.e., I could do: | |||
| $P99 = dlfunc ... | 22:57 | ||
| ($P1, $P2, $P3) = $P99(...) | |||
| and it would be meaningful | |||
| for an apropriate dlfunc | |||
| plobsing | yes | ||
| the multi return is the closest thing has to C's call-by-reference | |||
| pmichaud | but a dlfunc that returned a NULL pointer would still just have it come back as the first return value | ||
| plobsing | exactly | 22:58 | |
| pmichaud | testing | ||
| plobsing | also, to be clear, there is a difference between multi-returns and returning an array | 23:00 | |
| pmichaud | right | ||
| good point | |||
| I'm adding a test case to t/library/ncifunc.t | 23:01 | ||
| (for null return) | |||
|
23:04
benabik joined
|
|||
| pmichaud | that seems to work | 23:04 | |
| dalek | rrot/ncifunc: f820150 | pmichaud++ | t/library/nciutils.t: [nci]: Add test to NCI::Utils for functions returning a NULL pointer. |
23:05 | |
| pmichaud | oops | ||
| I thought I was on the master branch | |||
|
23:05
benabik left
|
|||
| plobsing | I've been working off your branch | 23:06 | |
| pmichaud | okay, I can stay in the branch a bit longer | ||
| I'm going to speculate that everything is in fact working | 23:07 | ||
| I'll set up a mysql_server on my notebook to make sure, though. | |||
| the only thing we have missing now are any thunks that disappeared since 2011.04 | |||
| plobsing | some of those will already be covered by other signatures and not be a problem | 23:10 | |
|
23:11
whiteknight joined
|
|||
| plobsing | I suggest testing whatever code uses NativeCall, adding missing signatures as they are found. | 23:12 | |
| pmichaud | that's a lot of code to test | ||
| and I don't have a full set | |||
| that's like saying "test whatever HLLs are using Parrot" | |||
| or, more accurately "test every program using Parrot" | 23:13 | ||
| plobsing | ok, what do you propose? | ||
| pmichaud | looking. | ||
| were the removed thunks deprecated at all? | 23:14 | ||
|
23:14
particle left
|
|||
| Tene | Wasn't there work in progress a long time ago to generate thunks at runtime with llvm? What happened to that? | 23:15 | |
| pmichaud | Tene: I don't know. | ||
| plobsing | we have the ability to generate thunks at runtime for users that have libffi | ||
| not all users have libffi. not all platforms support libffi. | |||
| Tene | Ah. | ||
| 'k | |||
| pmichaud | although I find deprecation notices for the parameter types; I don't see anything that says their corresponding thunks would no longer be available | 23:16 | |
| i.e., if I could previously do $P9 = dlfunc lib, name, 'ttttttt' | |||
| and the "upgrade path" is to convert all of those 't's into 'p' | 23:17 | ||
| then there needs to be a corresponding 'ppppppp' thunk. | |||
|
23:17
PacoLinux left
|
|||
| plobsing | I don't think that necessarily follows | 23:17 | |
|
23:17
particle joined
|
|||
| pmichaud | let's walk through it this way | 23:17 | |
|
23:17
PacoLinux joined
|
|||
| pmichaud | if I have a function: char* xyz(const char*, const char*) | 23:18 | |
| plobsing | the thunks were deprecated by virtue of accessing deprecated functionality | ||
| pmichaud | let me finish | ||
| then previously I would've accessed this function by doing $P99 = dlfunc lib, 'xyz', 'ttt' | |||
| If 'ttt' is no longer available (and it isn't) | |||
| then how do I access my xyz func if there's no 'ppp' thunk in the core? | |||
|
23:19
kid51 joined
|
|||
| plobsing | the ability to provide libraries of thunks has been available for some time | 23:19 | |
| pmichaud | that's not the point of a deprecation | ||
| a deprecation says "this feature will no longer be available" and "here's your upgrade path" | |||
| so, now you're saying the upgrade path is for each project to also provide its own thunks? | 23:20 | ||
| plobsing | where they don't exist in core parrot already, yes. | ||
| pmichaud | er | ||
| "where they used to exist in core parrot but no longer exist" | |||
| Parrot core used to have thunks that could access my xyz() function above. It no longer has them. | 23:21 | ||
| (in my hypothetical example) | |||
| more to the point | |||
| plobsing | it is unreasonable to keep adding thunks to parrot core indefinitely | ||
| pmichaud | Parrot core used to have a thunk that could access mysql_real_connect. Until you patched Parrot a couple of hours ago, there wasn't an equivalent way to do that in the new scheme. | ||
| I'm not saying add them indefinitely. | 23:22 | ||
| I'm saying we have to support the ones we had in the previous supported release until they've gone through an appropriate deprecation cycle. | |||
| plobsing | there was, adding it to core was for expedience | ||
| pmichaud | what's the equivalent way to do it in the new scheme? | ||
| has it been documented somewhere? | |||
| plobsing | it is the nci_thunk_gen tool, which has POD documentation and is used by the opengl bindings. | 23:23 | |
| pmichaud | how would all of my users that make use of NativeCall write the thunk libraries they need? | ||
| at this point I think I'll call in cotto and whiteknight for a ruling | |||
| plobsing | that's likely appropriate. | ||
| cotto_work | hi | 23:24 | |
| cotto_work backscrolls | |||
| pmichaud | cotto_work: I think we have zavolaj working again. I'll do more tests in a bit. | ||
| where we run into a problem now is that there are no equivalent nci thunks in Parrot that can support the behavior offered by the thunks that used to provide the 't' support | |||
| for example, someone was previously using nci with a signature of 'ppttttiti' | 23:25 | ||
| the thunk that supported 'ppttttiti' went away | 23:26 | ||
| the upgrade path documented thus far says to convert those 't's to 'p's, and wrap the arguments in calls that create/free the cstring. we've now done that | |||
| however, there's no 'ppppppipi' thunk in parrot to support the new calls | |||
| so a nci user is still stuck | |||
| because he cannot access library functions he was formerly able to access in Parrot | 23:28 | ||
| my opinion is that we need to provide equivalent thunks to what existed in 3.3.0, at least for a deprecation cycle | |||
| plobsing disagrees (and I'm not implying that his disagreement is misplaced... just that we disagree) | |||
| his alternative (and feel free to explain further if I give it short-shrift here) is that users should generate their own thunks using the nci_thunk_gen tool. | 23:29 | ||
| plobsing | it is my opinion that these thunks were deprecated by virtue of making available, in a very explicit way, deprecated functionality | ||
| pmichaud | I'm saying a user wouldn't have known that from reading the notices. | 23:30 | |
| cotto_work | My inclination is to say that we need to provide the thunks to make the upgrade path as smooth as possible. | ||
| pmichaud | I have to join the family for dinner now -- I'll let you all work it out (or not, or to take a break also) and I should be back in 90 | 23:31 | |
| cotto_work | whiteknight: ping | ||
| pmichaud: ok | |||
| I'm glad the immediate fire seems to be going out. | |||
| whiteknight has to backscroll | 23:33 | ||
| oh fun | 23:35 | ||
| whiteknight types ack --thpppt | 23:36 | ||
| where I'm running into trouble is the fact that the deprecation notice just wasn't clear enough about what all was expected to disappear | 23:37 | ||
| I don't feel like we can imply certain features will go away, because other things do | |||
| I think we can add back in a few of the necessary thunks for the purposes of the release, but also put in a deprecation notice to explicitly say that they are temporary | 23:38 | ||
| post 3.6, we should all expect any non-core NCI thunks to be disappeared | 23:39 | ||
| and several kittens will also be killed | |||
| pmichaud: do you have a list of the thunks we need back? | 23:40 | ||
| I also don't think it's super-hard to make your own thunk library. We should consider making sure that infrastructure gets added to the zavolaj build | 23:44 | ||
| Tene | whiteknight: I like what I'm seeing with your PCC posts. One thing I'm surprised to not see in your benchmark was instantiating only a single callcontext object. | 23:46 | |
| whiteknight | Tene: can't do that, yet. If you try to reuse a CallContext without resetting it, we eventually hit a recursion limit exception | ||
| the recursion limit code is not handled in the places where you think it should be | 23:47 | ||
| Tene | whiteknight: Something I didn't see you talk about is exposing signature metadata on subs such that we can build custom callcontexts optimized for a specific sub. | ||
|
23:47
NotFound_b joined
|
|||
| whiteknight | Tene: yeah, I left that out on purpose. I am very hesitant to suggest we add any more data to Sub without removing some of the crap that is already there | 23:47 | |
| Tene | 'k | ||
| whiteknight | We need to make Sub much easier to subclass, I think, then we can attach those kinds of details to subclasses | 23:48 | |
| CachedSub, or something like that | |||
| Tene | It does kind of go in the opposite direction from "Do less in Parrot". I suppose that could certainly be done by individual HLLs isntantiating their own customized callcontexts with their own info. | ||
| NotFound_b | whiteknight: making a tumb library for nci kinda defeats one of the purposes of nci: avoiding the need of C compiling to install modules. | 23:49 | |
|
23:49
rurban_ joined
|
|||
| whiteknight | We want Parrot to do more of the right kind of stuff, and do less of the stuff that HLLs are going to override anyway | 23:49 | |
| NotFound: I don't think that's a purpose of it at all | 23:50 | ||
| NotFound: NCI is supposed to give access to C libraries, not make the build any easier | |||
| and so long as the NCI thunk code is generated by a tool, humans don't have to write it | 23:51 | ||
| NotFound_b | whiteknight: if I use a C compiler I already have access to C libraries. | ||
| whiteknight | NotFound: and you would have to write your own bindings | ||
| it's easier to get the thunk generator to do that | |||
|
23:51
rurban left,
rurban_ is now known as rurban
|
|||
| NotFound_b | whiteknight: I surely do, if NCI start being too obstrusive. | 23:52 | |
| whiteknight | NotFound_b: It depends on the usage. Sometimes NCI makes sense. Sometimes it doesn't | ||
| NotFound_b | It makes most sense for me when you can do most usages from pir or an hll without needing to generate or compile any C. | 23:53 | |
| whiteknight | NotFound: if I have a textfile where I write the string "tipppt", and then I add one line to the makefile and then a few lines of PIR to get the dlfunc, that doesn't seem like much work | 23:56 | |
| compared to the alternative, writing a whole PMC, or a whole dynop | |||
| or worse yet, writing a custom wrapper library and accessing THAT with NCI | |||
| NotFound_b | Actually that one may be the easier solution. | 23:57 | |
| whiteknight | many people are not as comfortable with C/C++ as you are | ||
| having a tool to write C automatically can be a big help | 23:58 | ||
| but you're right. The tool is not perfect | |||
| NotFound_b | whiteknight: The tool is not the current problem. The current problem is breaking existing code.ç | ||
| whiteknight | yes. We are trying to fix that | ||