|
Parrot 1.2.0 released | parrot.org/ | 304 RTs left | Weekly Priority: Apply Patches, Fix Bugs, Close Tickets Set by moderator on 25 May 2009. |
|||
|
00:02
bacek_ joined
|
|||
| darbelo | Just checked. Same here. | 00:03 | |
| wayland, both the installed binary and the one generated on the parrot build-dir give me the correct answer. | 00:04 | ||
| wayland | Ok, thanks. It must be something to do with me making it into an RPM then | 00:05 | |
|
00:07
Whiteknight joined
|
|||
| wayland | rpm -qf /usr/bin/svn | 00:08 | |
| subversion-1.5.4-3.i386 | |||
| (svn software used) | |||
|
00:21
tetragon_ joined
|
|||
| dalek | cnum-dynpmcs: r62 | darbelo++ | trunk/src/pmc/decnum.pmc: MULTI is no more! It has ceased to be! It's expired and gone to meet it's maker! |
00:26 | |
| Whiteknight | darbelo++ | 00:34 | |
| darbelo | Heh. I (re)watched 'And now for something completely different' today. I just couldn't help myself. | 00:36 | |
| Whiteknight | haha, that's a great one | 00:46 | |
| Not as good as Grail or Life of Brian, but fun nonetheless | |||
|
00:53
tetragon joined
00:55
tetragon_ joined
01:01
tetragon joined
01:08
patspam joined
01:36
kid51 joined
|
|||
| kid51 | wayland ping | 01:46 | |
|
01:47
cotto joined
|
|||
| wayland | Present :) | 01:59 | |
| (or should I say, kid51 pong :) ) | |||
|
01:59
Maddingue joined,
mj41_ joined,
dalek joined,
amoc joined
|
|||
| kid51 | wayland Read your queries about revision number on scrollback. | 01:59 | |
| Feature, not bug. | |||
| wayland | oh, ok | ||
| kid51 | If you look at lib/Parrot/Revision.pm, you'll see that the SVN revision requires running 'svn' code. | ||
| Implies you're in your sandbox, not building from a tarball or package. | |||
| wayland | ok, great | 02:00 | |
| Rakudo needs modification then :) | |||
| kid51 | If the file DEVELOPING exists in your top-level directory, you're considered to be working directly from source, are a Parrot developer, etc. Hence, svn rev number is of prime importance. | ||
| but if you're building from a tarball, we presume you're doing something with the Parrot executable, not trying to hack on Parrot itself. | 02:01 | ||
| Over past few years, we've had a tremendous amount of back-and-forth on this. (Too much, IMHO.) | |||
| wayland | No, it's all good. It just means that Rakudo is bad :) | 02:02 | |
| kid51 | At one time, we had code in lib/Parrot/Revision.pm to enable SVK users to determine the revision number. | ||
| But none of our SVK users were willing to help maintain that code. | |||
| So we yanked it. | |||
| Then Linus proclaimed that everyone who didn't use git was an asshole. | 02:03 | ||
| So people clamored for some git code there. | |||
| And eventually some crept in. Though, once again, it's not verified by any tests. | |||
| Net result: The only thing we guarantee once you're building from a tarball, RPM, etc., is the Parrot version number, not the svn revision number. | 02:04 | ||
| If our Smolder server were working, you'd be able to observe this. | 02:05 | ||
| Smolder reports that come from testing tarballs display SVN rev 0. | |||
| IIRC | |||
| cf: thenceforward.net/parrot/coverage/c...on-pm.html | 02:06 | ||
| Also, note how tests 017 018 and 061 in t/configure/*.t are designed to work differently depending on whether you're DEVELOPING or not. | 02:10 | ||
| But, better still, don't worry too much about this. | |||
| wayland | Exactly what I was hoping to do :o) | 02:11 | |
|
02:11
Andy joined
|
|||
| wayland | Anyway, I'm being called for lunch. Thanks for your help :) | 02:12 | |
|
02:27
tetragon_ joined
02:42
janus joined
02:48
Austin_Hastings joined
|
|||
| Infinoid | kid51: I recently re-added the git code, when rakudo started refusing to build without it | 03:05 | |
| I'm not sure what the best way to test that is. If we could somehow fake the output of "git log" and verify the number it returns, that should be sufficient | 03:06 | ||
| Andy | hey infinvoid | ||
| Infinoid | hey Andy | 03:07 | |
| Andy | hey Infinoid have you tried the splint lately? | ||
| Infinoid | I have been unable to get spint installed on my machine, and been too busy with moving and applying for work | ||
| it is on my list for this week, though. | |||
| Andy | what is yr machine? | ||
| Infinoid | gentoo/amd64 | ||
| Andy | and yu can't get a package installed? | 03:08 | |
| Infinoid | The problem is that gentoo wants to install from the source tarball, but the tarball it downloads doesn't match the MD5sum it has stored, so it thinks it's been hacked and refuses to build it. | ||
| Andy | huh | ||
| Infinoid | (gentoo tends to be one of the first to detect hacked tarballs on sourceforge and the like, because of this feature. But it also has some false positives, and I don't think splint is high enough profile to be a target for malware) | 03:09 | |
| Andy | Did you try the tarball yrself? | 03:12 | |
| Infinoid: Here's what the output is looking like these days pastebin.com/m4404e416 | 03:13 | ||
| How do I set a default value for a variable? | 03:20 | ||
| in a makefile? | |||
| Austin_Hastings | A_default = foo | ||
| A = $(A_default$(A))$(A) | 03:21 | ||
| dalek | cnum-dynpmcs: r63 | darbelo++ | trunk/src/pmc/decnum.pmc: Add floor_divide VTABLEs. |
03:27 | |
| Austin_Hastings | Andy: Alternatively, you could use the 'ifeq' test to set the value if it was not set. This is probably clearer, and Parrot seems to be using gnumake exclusively. | 03:30 | |
| Andy | Austin_Hastings: Not true. I have to be very careful not to break the Windows make | 03:31 | |
| I don't get the A_default thing | |||
| Austin_Hastings | Okay, consider this: | ||
| A_default=foo | |||
| Andy | What I want is | ||
| Austin_Hastings | That's just a setting for the default. | ||
| Andy | SPLINT_TARGETS="blah blah blah" unless defined $SPLINT_TARGETS | 03:32 | |
| Austin_Hastings | Now $(A_default) is going to expand to "foo" always. | ||
| Andy | ok | ||
| Austin_Hastings | But $(A_defaultXXX) has no value. | ||
| Andy | one hopes | ||
| Austin_Hastings | So if I set B = XXX, I can use A_default$(B) to get A_defaultXXX | ||
| But if I set B = (nothing), I get A_default$(B) = A_default | 03:33 | ||
| So when I expand A_default$(B) I either get A_defaultXXX or I get A_default | 03:34 | ||
| By setting A = $(A_default$(B)) I either get A = $(A_defaultXXX) (= nothing) or I get A = $(A_default) (= foo) | 03:35 | ||
| Actually, if you're using an unspecified make I should make that C = | |||
| C = $(A_default$(B)) | |||
| So now C = (nothing) or C = foo | 03:36 | ||
| But I don't want C = (nothing) if the user provides a value for C. I want C = uservalue | |||
| The user value in this case is B, which is either (nothing) or XXX. | 03:37 | ||
| So I set C = $(B) | |||
| And I get C = XXX | |||
| But when $(B) is nothing, I want "foo" | |||
| So I set C = $(B)$(A_default$(B)) | |||
| darbelo | Andy, is the definition (or lack thereof) known to Configure.pl? In that case you can use #IF(condition) on the Makefile.in template. Less likely to break brain-dead makes :) | ||
| Andy | darbelo: Dunno. It's not really a big deal. | 03:38 | |
| Austin_Hastings | Which gets me (nothing) + foo when B = nothing, or XXX+ (nothing) when B = XXX | ||
| Andy | Austin_Hastings: So it basically is just relying on the default variable not existing as expanded | 03:39 | |
| Austin_Hastings | The only problem is that with older makes, you can't redefine a variable in terms of itself. | ||
| Andy: Yes. | |||
| So you can't say A = $(A), etc. That's a gnu-ism. | |||
| So try something like _A = $(A) instead. | 03:40 | ||
| _A = $(A)$(A_default($A)) | |||
| Then use _A elsewhere. | |||
| _SPLINT_TARGETS = $(SPLINT_TARGETS)$(SPLINT_TARGETS_default$(SPLINT_TARGETS)) | 03:41 | ||
| darbelo | I used the #IF() thing for the decnum-dynpmcs Makefile to determine the endianess of the platform. | 03:42 | |
| line 16 of code.google.com/p/decnum-dynpmcs/so...akefile.in | |||
| Austin_Hastings | But won't you do okay with just assigning the value in the file, and letting the user override it on the command line? Or are you looking at including another makefile? | 03:43 | |
| Andy | Will it get overridden if I specify on the command line? | ||
| I didn't think it would | 03:44 | ||
| Austin_Hastings | Yeah. | ||
| nopaste.com/p/awlxSMQtfb | 03:46 | ||
| That's what you're looking for, no? | 03:47 | ||
| ...? | 03:54 | ||
| purl | Yada yada yada hasn't been implemented yet! (unless you run bleadperl) | ||
| Andy | so no need for default! :-) | 04:07 | |
| Austin_Hastings | No need to put in code, if all you want to do is provide the user with a default. | 04:08 | |
| If you want to provide a default to another piece of code, see above. | |||
| But the user "wins" whenever a command-line value is specified. | |||
| Andy | how is the default determined? | 04:11 | |
| What "make" makes? | |||
| with no args? | |||
| Austin_Hastings | First target | ||
| purl | i heard First target was probably Unicode::Collate | ||
|
04:11
tetragon joined
|
|||
| Andy | how can i tell what that is | 04:12 | |
| Austin_Hastings | sed? | 04:13 | |
| purl | sed is not a programming language its an editor. or perl jr | ||
| Andy | no, I mean looking at the fil | ||
| It looks like it's "all" | |||
| Will my enviornment variables override what's in the makefile, too? | 04:14 | ||
| I want to provide a $TMP if the user's env doesn't have one. | |||
| Austin_Hastings | It's all. | ||
| sed -ne '/^[a-z_A-Z0-9]*[ ]*:[^=]/{p;q}' ~/parrot/Makefile | |||
| You can specify -e to force environment variables to override makefile vars. | 04:15 | ||
| But check to see if the current behavior isn't what you want already. | |||
| In most makes, setting TMP=/tmp will override whatever setting comes from the environment. | 04:18 | ||
| This is one of those cases where you might have to use the default-value hack. | |||
| darbelo | cotto, ping | 04:20 | |
| cotto | darbelo, pong | 04:29 | |
| darbelo | I'm looking at the cmp VTABLE, and I was wondering if I should implement a total ordering or not. Any thoughts? | 04:31 | |
| cotto | Why wouldn't you? Does the library not support that directly? | 04:33 | |
| darbelo | It supports both "IEEE total ordering" and "Comparing NaNs is silly" behaviors. | 04:34 | |
| Total ordering is "ļæ½NaN < ļæ½sNaN < ļæ½Infinity < ļæ½finites < ļæ½0 < +0 < +finites < +Infinity < +sNaN < +NaN" | 04:35 | ||
| cotto | Hmm. | 04:36 | |
| darbelo | The other is "WTF? NaN? Bugger all, I dunno." Which I can turn into an exception easily enough. | ||
| cotto | My instinct says that if NaNs are popping up, you've got bigger issues than ordering. | 04:37 | |
| so fail noisily | |||
| but feel free to go the other way if you can imagine the more common use cases where that happens benefiting from an ordering that includes the NaNs. | 04:39 | ||
| cotto wonders if that last statement could have been better phrased | |||
| Infinoid overflows his stack and segfaults | 04:41 | ||
| darbelo | I'll make the VTABLE throw an exception and provide a METHOD for people who want full IEEE 754 ordering. | ||
| cotto | sounds like a good way to go | 04:42 | |
| cotto makes careful notes on Infinoid's vulnerability | 04:43 | ||
| darbelo | I think "NaN? WTF?" is the default response we'll get from people. Might as well make it the software's. :) | 04:44 | |
| cotto: Think the overflow is exploitable? | 04:45 | ||
| cotto | I'll have to run some more tests | ||
| Infinoid, A hundred prisoners are each locked in a room with three pirates, one of whom will walk the plank in the morning. Each prisoner has 10 bottles of wine, one of which has been poisoned; and each pirate has 12 coins, one of which is counterfeit and weighs either more or less than a genuine coin. In the room is a single switch, which the prisoner may either leave as it is, or flip. Before being led into the rooms, the prisoners are | 04:47 | ||
| all made to wear either a red hat or a blue hat; they can see all the other prisoners' hats, but not their own. Meanwhile, a six-digit prime number of monkeys multiply until their digits reverse, then all have to get across a river using a canoe that can hold at most two monkeys at a time. But half the monkeys always lie and the other half always tell the truth. Given that the Nth prisoner knows that one of the monkeys doesn't know that | |||
| a pirate doesn't know the product of two numbers between 1 and 100 without knowing that the N+1th prisoner has flipped the switch in his room or not after having determined which bottle of wine was poisoned and what colour his hat is, what is the solution to this puzzle? send cotto a check for one million dollars | |||
| cotto waits expectantly | |||
| davidfetter | cotto, 42 | 04:48 | |
| cotto is not entirely disappointed | 04:51 | ||
|
05:09
davidfetter joined
05:30
flh joined
05:49
jisom joined
|
|||
| dalek | rrot: r39172 | petdance++ | trunk/src/call/pcc.c: consting |
05:49 | |
| purl | consting is a nightmare :) | ||
| rrot: r39173 | petdance++ | trunk (2 files): shimmed an interp and reran the headerizer |
05:53 | ||
| rrot: r39174 | petdance++ | trunk/config/gen/makefiles/root.in: The splint-andy target is now just 'splint', vs. 'splint-all' which works on the entire tree |
05:56 | ||
| cotto | no, consting is <reply> | 05:58 | |
| purl | okay, cotto. | ||
|
06:02
skids joined
06:11
iblechbot joined
06:19
patspam1 joined
06:21
he__ joined
|
|||
| dalek | rrot: r39175 | petdance++ | trunk/lib/Parrot/Pmc2c/PMCEmitter.pm: adding splint macros to the generated C code from PMCs |
06:23 | |
|
06:28
flh joined
06:43
skids joined
|
|||
| dalek | rrot: r39176 | Util++ | trunk/tools/dev/pbc_to_exe.pir: [pbc_to_exe] TT #688 - performance fixed for GCC. |
06:56 | |
| moritz | Util++ # very good improvement | 07:04 | |
|
08:10
Ademan joined
08:15
cotto joined
08:16
cotto joined
08:17
cotto joined
08:21
Debolaz joined
08:29
Maghnus_ joined
|
|||
| dalek | kudo: 870bf3b | moritz++ | t/spectest.data: fix typo in t/spectest.data, moritz-- |
08:34 | |
|
08:39
cotto joined
08:43
rg joined
08:44
amoc joined
08:46
cotto joined
08:51
iblechbot joined
09:01
donaldh joined
09:05
skids joined
09:37
gaz joined
|
|||
| moritz | parrot r39132 broke rakudo's t/spec/S12-methods/indirect_notation.t | 09:52 | |
|
09:56
rdice joined
|
|||
| bacek | moritz: I know... | 09:58 | |
| But it 30% faster with this caching. | |||
| wayland | I know the fastest VM. | 10:02 | |
| exit(0) | |||
| :) | |||
|
10:04
HG` joined
|
|||
| jonathan | bacek: Mighta been good if you'd posted to the list first saying it broke something and getting analysis on why...one test fail can point to something important but rarely exercised. | 10:13 | |
| bacek | jonathan: I did post. But I'm failing to understand why it's failing. | 10:14 | |
|
10:27
mikehh joined
10:33
HG` joined
|
|||
| wayland | Where does socket.pasm come from? | 10:45 | |
| bacek | wayland: generated by Configure.pl from C enum | ||
| wayland | ok | ||
| Because it's not in the MANIFEST anywhere | |||
| should it be? | |||
| (or at least, not the manifest in SVN) | 10:46 | ||
| bacek | no, it shouldn't (iiuc) | 10:47 | |
| wayland | Oh, wait, it's in MANIFEST.configure.generated or something | ||
| bacek | indeed | ||
| wayland | (I'm trying to make a Rakudo RPM build on a Parrot RPM, and the Parrot RPM doesn't package that file, so I'm trying to fix that) | 10:49 | |
| Should make install-dev be putting socket.pasm somewhere? | 10:50 | ||
| bacek | wayland: no idea. Ask kid51 and allison | 10:51 | |
| wayland | ok, will do | ||
| However, I've got this feeling that maybe kid51 doesn't know :). Well, we'll see :) | 10:52 | ||
|
11:03
riffraff joined
|
|||
| bacek | jonathan: around? | 11:07 | |
| msg jonathan Looks like sometimes Object.increment and Int.succ can fall in infinite love^W^W mutual recursive calls | 11:10 | ||
| purl | Message for jonathan stored. | ||
|
11:12
masak joined
|
|||
| jonathan | bacek: Is that related to the method dispatch bug? | 11:13 | |
| bacek | jonathan: no. I just found it during investigations... | 11:14 | |
| jonathan | Ah, OK. | ||
| bacek | Object.increment calls self.succ. Int.succ calls "inc $P0", which is VTABLE_increment and calls Object.increment | 11:15 | |
|
11:17
he__ joined
|
|||
| bacek | jonathan: where is hll_global Callable defined? (in rakudo) | 11:17 | |
| jonathan | src/classes/Callable.pir I expect | 11:18 | |
| bacek | it's "Callable[::T]" | 11:20 | |
| and there is no "set_hll_global" in it | 11:21 | ||
| jonathan | bacek: Oh | ||
|
11:21
donaldh joined
|
|||
| jonathan | Yes, it just sets up one factory and installs it as one of the parametric role variants. | 11:21 | |
| There's various bits of code relating to that, I think see guts.pir's !create_parametric_role | 11:22 | ||
| bacek | I'm digging guts.pir ATM trying to fix dispatch bug.. | 11:23 | |
| jonathan | There Be Dragons. :-) | 11:24 | |
| moritz | There Be Spectests | ||
| jonathan | Indeed. | ||
| moritz | aka anti-dragons | ||
| jonathan | I've had them happily catching my accidental breakage of parametric roles a couple of times. | ||
| bacek | Hooray. | 11:25 | |
| moritz | maybe we should call them "regression tests which coincide with the specs" ;-) | ||
| bacek | P6Invocation cache conflicting with my cache | ||
| jonathan | P6Invocation doesn't have a cache as such. | 11:26 | |
| bacek | jonathan: it is. | ||
| check VTABLE_invoke | |||
| jonathan | bacek: It wraps the invocation, and acts iterator-ish. | 11:27 | |
| bacek | ouch... | ||
| jonathan | That isn't going to change. | ||
| bacek | no cookies for me | ||
| jonathan | (As in, the need to do that.) | ||
| We can probably re-work the specifics somehow. | |||
| I'm curious how your PMCProxy caching causes issues though. | |||
| bacek | I'm curious either :/ | 11:28 | |
| jonathan | They sound fairly orthogonal to me. | ||
| Is it something in the way the P6Invocation is instantiated? | |||
| bacek | It's just call "root_new [...] | 11:30 | |
| jonathan | OK, but the notable part is that it passes something along to init with too. | 11:31 | |
| You sure there's no issues there? | |||
| (that is, we'll be calling init_pmc not just init | |||
| ) | |||
| bacek | of cause no... I suspect every single line of code | ||
| jonathan | everything is suspect! | ||
|
11:32
burmas joined
|
|||
| moritz blames the whitespaces | 11:32 | ||
| jonathan | moritz: It's not written in Python. :-P | 11:33 | |
| bacek | more like "brainfuck"... | ||
| jonathan | (Though it amuses me that if it were, that would be a valid thing to blame. :-)) | ||
| moritz | actually in Perl 6 ws carries some semantics too | 11:34 | |
| say(1, 2), 3 vs say (1, 2), 3 | |||
|
11:35
pfig joined
|
|||
| jonathan | moritz: Yes, true. :-) | 11:35 | |
| Of course, the Whitespace language wins. :-) | 11:36 | ||
| wayland | are socket.pasm and sockets.pasm different? | 11:43 | |
|
11:46
contingencyplan joined
|
|||
| bacek | jonathan: fine... Parrot's Undef clashed with Rakudo's Undef... | 11:49 | |
| jonathan | bacek: Oh, ouch. | 11:50 | |
| bacek: And that was the only test it showed up in? D'oh. | |||
| bacek | indeed... | ||
| purl | indubitably | ||
| jonathan | bacek++ # well found | ||
| I'm relieved it wasn't an issue with wrapping invocation. | |||
| bacek | Looks like "new "Undef"; <register rakudo's Undef>; root_new "Undef"" produces wrong results.. | 11:51 | |
| P6Invcations is fine. | 11:52 | ||
| hmm... But may be I was wrong (as usual) | 11:53 | ||
|
11:58
szbalint joined
|
|||
| wayland | bacek: Do you know if socket.pasm and sockets.pasm are supposed to be the same file? | 12:09 | |
| bacek | wayland: lemme check | 12:10 | |
|
12:12
Whiteknight joined
|
|||
| bacek | wayland: socketS.pasm is outdated and should be removed. | 12:16 | |
| wayland | Well, it still exists in my build from SVN :) | 12:17 | |
| Whereas socket.pasm doesn't get packaged | |||
| anyway, thanks for the info | |||
| bacek | socket.pasm is autogenerated from includes. | ||
| May be there is a problem. | |||
| wayland++ # For TT#705 | 12:21 | ||
| dalek | TT #705 created by bacek++: [cage] runtime/parrot/include/sockets.pasm is outdated and shoud be ... | 12:22 | |
| wayland | I'll work on the packaging | ||
| (well, maybe I shouldn't volunteer. I'll work on it, but I may not solve it :) ) | 12:27 | ||
| dalek | TT #706 created by mj41++: Out of mem (PASM, compreg, invokecc) | 12:35 | |
|
12:40
rg1 joined
|
|||
| Whiteknight | urg, #706 looks like a doozie | 12:42 | |
| bacek | Whiteknight: special gift for you :) | ||
| dalek | TT #705 closed by bacek++: [cage] runtime/parrot/include/sockets.pasm is outdated and shoud be ... | 12:45 | |
| rrot: r39177 | bacek++ | trunk (5 files): [cage] Remove obsoleted files. Closes TT#705 - runtime/parrot/library/tcpstream.pir |
12:47 | ||
|
12:57
gryphon joined
|
|||
| wayland | bacek: Just quickly, do you know which script generates socket.pasm? | 12:57 | |
| bacek | wayland: Configure.pl | 12:58 | |
| purl | i guess Configure.pl is not a spammy domain name. it's not even registered. | ||
| Whiteknight | purl forget Configure.pl | 13:03 | |
| purl | Whiteknight: I forgot configure.pl | ||
| wayland | Hmm. I'm really trying to find where the runtime/* lines get written to MANIFEST.configure.generated | 13:04 | |
| Because I want to add a [library] to the end of them | |||
| (it'll be one of the calls to append_configure_log, I think) | 13:05 | ||
|
13:13
bkuhn joined
|
|||
| wayland | Found it, don't worry :) | 13:15 | |
|
13:30
azawawi joined
|
|||
| azawawi | hi | 13:37 | |
|
13:38
skids joined
|
|||
| Whiteknight | hello | 13:44 | |
|
13:46
rakudohudson joined
13:54
patspam joined
14:06
azawawi left
14:08
Maghnus joined
|
|||
| dalek | TT #476 reopened by doughera++: Binaries should not contain rpath | 14:28 | |
| wayland | Thanks for your help bacek. 'night all | 14:36 | |
|
15:03
Andy joined
|
|||
| dalek | rrot: r39178 | NotFound++ | trunk/t/pmc/io.t: [tests] delete todo'ed stringhandle test in io.t, there is already a stringhandle.t file |
15:18 | |
|
15:20
donaldh joined
15:27
Austin_Hastings joined
|
|||
| dalek | TT #707 created by NotFound++: [RFC] StringHandle interface | 15:31 | |
| Austin_Hastings | moo | 15:33 | |
| Why does dispatch hang on multi-subs ok(_,_) and ok(_,_,_)? | |||
| (dynamically loaded, in the [] namespace) | 15:34 | ||
| Infinoid | Got a test case? | ||
| moritz | that sounds like a bug to me | 15:35 | |
| Austin_Hastings | I'm sure it's my problem, because I modeled it on t/pmc/multispatch_44.pir | 15:37 | |
| But it's irritating because I have no idea what's going on internally. :( | 15:38 | ||
| Here's a question: how does multi-dispatch interact with :optional params? | 15:43 | ||
| If I have a multi(_,_) sub, can I safely label the second param as optional? Is there some way to tell mmd that it can be 1-ary or 2-ary? | 15:45 | ||
|
15:46
rhr joined
|
|||
| NotFound | Austin_Hastings: Will not be cleaner to add a (_) multi? | 15:47 | |
| Austin_Hastings | I don't know. I'm coming at this from (_,?) | 15:48 | |
| Of course, right now the optional param works and the multi doesn't, so that's a problem. | 15:49 | ||
| NotFound | As Infinoid said: got a test case? | 15:50 | |
| Austin_Hastings | Nope. | 15:54 | |
| Util | join #parrotsketch | 16:04 | |
| Util sighs | |||
| NotFound | Thanks, I copy&paste it | 16:05 | |
| moritz too | 16:06 | ||
| though I don't know if I'll be around | |||
| and if, I won't have a report | |||
| Infinoid finds himself asking, once again, "did I do anything for parrot this week?" | 16:09 | ||
| NotFound | Ask Uncle Sam | 16:10 | |
| Austin_Hastings | #$P55 = iseq $P53, $P54 | ||
| That's my test case - uncommenting it causes load_bytecode to (apparently) hang when loading a pir file. | 16:11 | ||
| Infinoid | Running it with "parrot -t" will tell you what the classes of P53 and P54 were, which may help | ||
| Austin_Hastings | Umm, since it's loading, not executing, do they even have classes? | 16:12 | |
| Infinoid | Are you saying it fails at parse-time rather than run-time? | ||
| NotFound | load_bytecode can execute things | ||
| Infinoid | ah, yes | 16:13 | |
| Austin_Hastings | Nope. I'm saying it appears to hang when I load_bytecode a .pir file. | ||
| NotFound | Lots of things, in fact | ||
| Even more things if is a pir file X-) | |||
| Austin_Hastings | Aha | 16:17 | |
| Thanks, NotFound. | |||
| Infinoid | so anyway, iseq calls VTABLE_is_equal, so knowing which class it is calling is crucial to figure out how that vtable is implemented for that data type | ||
| Austin_Hastings | Trying to compile produces the culprit: The opcode 'iseq_p_p_p' (iseq<3>) was not found. | ||
| Infinoid | Okay. Try assigning the result to an integer register, rather than a PMC register | 16:18 | |
| NotFound | Uh, that's another problem. Parsing problems when load_bytecode a pir are not catched. | ||
| Austin_Hastings | Already there. | ||
| purl | that was quick. | ||
| NotFound | Well, almost any problem, in fact. | 16:19 | |
| Austin_Hastings | Plus, pir parsing problems produce poor performance. | 16:20 | |
| Infinoid | "failing to run" makes "poor performance" a bit of an understatement :) | ||
|
16:20
flh joined
|
|||
| NotFound | Hanging forever is very poor performance, certainly X-) | 16:20 | |
| moritz | writing a different PIR compiler would be a nice contribution ;-) | ||
| Austin_Hastings | I wouldn't mind "failing to run" | ||
| It's "going to sleep for a long time and not responding" that gets me perplexed. | |||
| NotFound | moritz: another one? | ||
| moritz | NotFound: one that actually replaces IMCC | 16:21 | |
| NotFound | moritz: pirc is supposed to be that. | ||
| moritz | NotFound: yes. And it does not. | ||
| NotFound: at least not right now, and I didn't see any work on it for quite some time | 16:22 | ||
| NotFound | moritz: starting write another one that also deoesn't is not a goo solution. | ||
| Infinoid | Austin_Hastings: It might just be that your pir's init code is doing something in a loop, and your commenting out the check just means the condition is never met and the loop keeps looping. I think parrot -t should help to determine that | ||
| moritz | NotFound: I don't mind how its done, as long as it gets done, and the result is more maintainable than imcc. | ||
| NotFound | We can write one in pir | 16:23 | |
| Surely will be more maintainable than imcc and pirc | |||
| Austin_Hastings | Infinoid: Nope. That *was* the check. I'm trying to implement ok(...) | ||
| NotFound | pir/nqp/pct/whatever | ||
| Infinoid | Austin_Hastings: Can you nopaste the full pir file? (Sorry if you've already done so, I must have missed it.) | 16:24 | |
| purl, nopaste? | |||
| purl | rumour has it nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) | ||
| NotFound | rafb.net/paste has been discontinued | 16:26 | |
| Austin_Hastings | nopaste.com/p/afPE8SM7Z | 16:29 | |
| (Sorry, had to break it and fix it again.) | |||
| pmichaud | good morning/afternoon #parrot | 16:31 | |
| Austin_Hastings | morning, pm | ||
| NotFound | Can we tell purl to forget only a part? | ||
| moritz | I think it supports s/// somehow | ||
| NotFound | purl: do what I mean | 16:32 | |
| purl | wish i knew, notfound | ||
| moritz | purl: nopaste =~ s/http:..rafb.net.paste// | ||
| purl | That doesn't contain 'http:..rafb.net.paste' | ||
| moritz | purl: nopaste =~ s{rafb.net/paste}{} | ||
| purl | OK, moritz | ||
| moritz | nopaste? | ||
| clunker3 | pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ | ||
| purl | nopaste is probably at nopaste.snit.ch/ (ask TonyC for new channels) or or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) | ||
| moritz | purl: nopaste =~ s{or or}{or} | 16:33 | |
| purl | OK, moritz | ||
| moritz | nopaste? | ||
| clunker3 | pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ | ||
| purl | it has been said that nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) | ||
| moritz | afk | ||
| NotFound | Now tell to clunker3, for extra bonus ;) | ||
| nopaste | "mj41" at 147.229.5.176 pasted "Segmentatio fault on PGE compiling on new TapTinder client (i386-redhat-linux on vmware). ttcopy.ro.vutbr.cz:4000/buildstatus.../rp-trunk" (43 lines) at nopaste.snit.ch/16667 | ||
|
16:39
davidfetter joined
|
|||
| dalek | kudo: 6953001 | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 394 files, 11343 passing, 0 failing |
16:39 | |
| Infinoid | Austin_Hastings: Your code seems to work fine here | 16:44 | |
| nopaste | "Infinoid" at 75.31.91.80 pasted "A pir file which loads Austin_Hastings's pir file and uses it (successfully)" (9 lines) at nopaste.snit.ch/16668 | 16:45 | |
| "Infinoid" at 75.31.91.80 pasted "The output I get when I run the previous nopaste" (8 lines) at nopaste.snit.ch/16669 | 16:47 | ||
| Austin_Hastings | Works fine here, too. It was the assignment into a $P instead of $I that messed everything up. | 16:50 | |
| Thank you for checking it. | |||
| Flush with that success, I believe I'll go eat lunch. Later, #parrot. | 16:53 | ||
|
16:54
Austin_Hastings left
16:55
rdice left
17:07
Theory joined
17:08
acajou joined
17:09
acajou left
|
|||
| dalek | TT #561 reopened by coke++: What are valid characteristics for 'inspect_str' vtable? | 17:21 | |
|
17:27
darbelo joined
17:30
rob joined
17:32
ruoso joined
|
|||
| dalek | TT #708 created by Util++: Trac ticket report {8} (Active Tickets, Mine first) does not work as ... | 17:48 | |
| TT #708 closed by Util++: Trac ticket report {8} (Active Tickets, Mine first) does not work as ... | 18:05 | ||
|
18:10
whoppix joined
|
|||
| Whiteknight | bacek: ping | 18:12 | |
| purl msg bacek can you take a look at TT #68? I think one of your commits earlier today may have resolved it. | 18:13 | ||
| purl | Message for bacek stored. | ||
| Infinoid | I've gotta go now; I pre-posted my #ps report | ||
| Whiteknight | Infinoid++ | ||
| Util | jonathan, and other Win32 testers: is there an known issue with PASM using `print` or `say` to output huge strings to the console? | 18:14 | |
| I have a simple test case that prints a huge string and then prints a short string. Only the short string appears in the CMD session. Redirecting to a file causes all the output to show up correctly. Running the test on non-Win32 also causes all the output to show up correctly. | 18:15 | ||
| Whiteknight | Util: How large is the "huge" string? | ||
| Util | 1MB certainly. In playing with it, I got it to trigger at around 54000 bytes, but that might vary per revision. | 18:16 | |
| Whiteknight | hmm, that's weird | ||
| Util | If this does not ring a bell for anyone, I will create a ticket. | ||
| Whiteknight | I've certainly never heard about anything like that | 18:17 | |
| I wonder if it's a Parrot problem or a Windows problem? Can you output huge strings like that from other programs? | |||
| NotFound | Util: can you nopaste the test case? | 18:18 | |
|
18:19
chromatic joined
18:20
barney joined
|
|||
| Util | NotFound: yes, working... | 18:21 | |
| purl | i guess working is a good approximation. | ||
| Util | Whiteknight: Perl 5 works as expected printing 1MB to console: perl -e "$_ = 'abcdefgh' x (1024*1024/8); print;" | 18:22 | |
| nopaste | "Util" at 68.191.99.24 pasted "Win32 huge string PASM test case" (9 lines) at nopaste.snit.ch/16670 | 18:25 | |
| pmichaud | #parrotsketch in 3 | 18:27 | |
| Util: does it fail just in printing the string or is the length also incorrect? | 18:28 | ||
| Whiteknight | I can imagine that a huge string printed all at once would overflow the DOS text buffer | 18:29 | |
| I wonder if the Perl executable breaks huge strings like that up into smaller chunks | |||
| Util | pmichaud: length is correct | 18:30 | |
| NotFound | DOS? We are in 2009, aren't we? | ||
| Whiteknight | the Win32 command prompt | 18:31 | |
| Util | My OS is Win2000, so... not completely, NotFound! | ||
| Whiteknight | I call it DOS, because it's about as modern a tool, and just as robust | ||
| NotFound | But the buffer lives in the Win32 console subsystem, not in cmd, command.com, or whateer | 18:33 | |
| Whiteknight | #ps | ||
| NotFound | Util: he's still learning to sing 'Daisy, Daisy'? | 18:34 | |
| Whiteknight | What's the status of the other GSOC project? I haven't heard anything about it in a while | 18:37 | |
| darbelo | There was another GSoC project? | ||
| Whiteknight | yeah, I thought there was | ||
| the LLVM one | 18:38 | ||
| moritz | seen tewk | ||
| purl | tewk was last seen on #parrot 6 days, 16 hours, 49 minutes and 47 seconds ago, saying: Infinoid: great, thanks, I don't want to butt in, you can run with it. If you need me to do anything let me know. [May 20 01:45:02 2009] | ||
| Util | NotFound: heh. Win2K does all I need. All the newer OSes add is singing "Slowly, Slowly, Upgrade and give Me your Cash..." | ||
| NotFound | Util: hey, I have win xp home ;) | 18:39 | |
| WriteFile fails with the huge string | 18:45 | ||
|
18:51
particle joined
|
|||
| Util | NotFound: Aha! In src/io/win32.c, sub Parrot_io_write_win32 calls WriteFile(), and fails silently on error. It is marked with FIXME. | 18:56 | |
| NotFound | I still don't find what is the error. | ||
| chromatic | Windows hates you and has a plan for your data. | 18:57 | |
| dalek | TT #709 created by whiteknight++: Pmc2c should generate mark and destroy VTABLES | 18:58 | |
| NotFound | Soemone has in memory what is error 8 in win32? | 19:00 | |
| ERROR_NOT_ENOUGH_MEMORY | 19:03 | ||
| Whiteknight | ah, so it is a buffer problem | 19:04 | |
| dalek | rrot: r39179 | whiteknight++ | trunk/DEPRECATED.pod: [DEPRECATED] Add branch_cs opcode to the list, per TT #470 |
19:05 | |
| Util | NotFound, Whiteknight: from MSDN: "The WriteFile function may fail with ERROR_INVALID_USER_BUFFER or ERROR_NOT_ENOUGH_MEMORY whenever there are too many outstanding asynchronous I/O requests." | 19:08 | |
| Whiteknight | Util, but you're only making one request, just a very large request | 19:09 | |
| Util | Whiteknight: Oh, right. | ||
|
19:10
iblechbot joined,
rdice joined
19:14
ZuLuuuuuu joined
19:20
donaldh joined
19:24
barney joined
|
|||
| Whiteknight | Infinoid: I'm planning lots of work in PDD22-world too, we should collaborate | 19:26 | |
| Infinoid | Sounds good, please keep me in the loop and I'll do the same | ||
| Whiteknight | I've definitely got a Select PMC in the works, although I was probably going to name it something like "Listener" or something | 19:27 | |
| dalek | rrot: r39180 | chromatic++ | trunk/src/pmc (2 files): [PMC] Replaced some unnecessary calloc() calls with regular malloc() calls. |
19:30 | |
|
19:33
Theory joined
|
|||
| Infinoid | pmichaud: PVMW? Parrot Very Much Works? | 19:33 | |
| Whiteknight | PVM Workshop | ||
| Infinoid | ah, cool | ||
| Whiteknight | it's the weekend before YAPC::NA | ||
| pmichaud | PVWM is the Parrot Virtual Machine Workshop at YAPC::NA 2009 | ||
|
19:34
Theory joined
|
|||
| moderator | Parrot 1.2.0 released | parrot.org/ | 304 RTs left | Weekly Priority: Profiling | 19:35 | |
|
19:38
whoppix joined
|
|||
| particle- | no, PVMW is the Parrot Virtual Machine Workshop at YAPC::NA 2009 | 19:40 | |
| szbalint | damn I really need a diffscript on topics | ||
| I never know what changed :Ć | |||
| :) | |||
| particle- guesses weekly priority | |||
| szbalint | yeah | ||
|
19:46
fperrad joined
|
|||
| Util | szbalint: See irclog.perlgeek.de/parrot/2009-05-24#i_1170927 ; it was the previous topic update | 19:52 | |
| szbalint: Oops! I mean irclog.perlgeek.de/parrot/2009-05-25#i_1171767 | 19:53 | ||
| dalek | a: 5b5682d | fperrad++ | t/io.t: add a test of io.popen (mode write) |
19:54 | |
| szbalint | Util: yeah, I just scrolled back in my scrollback buffer of this screened irssi, but that's already too much effort for a simple problem like this :) | ||
|
19:55
eternaleye joined
|
|||
| Util | grep the auto-log that irssi saves (if you have it turned on) | 19:55 | |
| NotFound | Util: docs also suggest ERROR_NOT_ENOUGH_QUOTA, buy I don't think that may happan on console, or that can be solved by retrying. | ||
| szbalint | /lastlog topic is faster | 19:57 | |
| NotFound | Util: have you opened a ticket? | 20:01 | |
| Util | szbalint: cool! | ||
| NotFound: Not yet. About 10 minutes, or have you found an existing ticket? | 20:02 | ||
| NotFound | Util: No. I just want one to mention in my attempt of fox. | ||
| fix | |||
| Util | Ticketing... | 20:03 | |
| purl | it has been said that ticketing is such a subjective application though. | ||
| Whiteknight | purl forget ticketing | 20:04 | |
| purl | Whiteknight: I forgot ticketing | ||
|
20:06
HG` joined
20:12
Austin_Hastings joined
|
|||
| jonathan | Util: Don't remember a bug along those lines, or at least don't rmemeber seeing one. | 20:13 | |
| Tene | pmichaud: ping | ||
| NotFound | I don't think there is a lot of people wishing to write hundred of thousands of charecter to console in one shot ;) | 20:14 | |
| particle- | $ yes 'parrot rocks!' | 20:15 | |
| Util | NotFound: ticket accomplished :) | ||
| Austin_Hastings | Question for anyone more knowledgeable than me: Is it meaningful to say ":multi" with no args? If so, what does it mean? | 20:16 | |
| dalek | TT #710 created by Util++: IO - On Win32, huge strings printed by Parrot do not appear in the console ... | 20:17 | |
| Util | NotFound: Actually, this bug tripped me up badly while trying to write the MSVC part of the pbc_to_exe bugfix. | ||
| jonathan: thanks! | |||
| jonathan | Austin_Hastings: You can legitimately have a multi-variant of arity 0. | 20:22 | |
| Austin_Hastings: Taking Perl 6 syntax: multi foo() { }; multi foo($a) { }; # arity 0 vs arity 1 | 20:23 | ||
| Austin_Hastings | jonathan: So that would be :multi and not :multi(), or is either form okay? | ||
| jonathan | I think :multi() | ||
| I've never seen/used :multi | |||
| Austin_Hastings | Okay. Thanks! | ||
| I used it for the first time earlier today, with predictable results. :( | |||
| jonathan | BTW, don't follow what Rakudo emits in terms of multis. | 20:24 | |
| Austin_Hastings | Okay. Why not? | ||
| jonathan | Because it doesn't use :multi(T1,T2,T3) style syntax to declare the variants, but instead works off Perl 6 signature objects. | ||
| Austin_Hastings | Hmm. So it works by just taking a single parameter, or is there some other hackery being done? | 20:25 | |
| jonathan | Other hackery. | ||
|
20:25
japhb joined
|
|||
| jonathan | We emit :multi() to get Parrot aware they are multis, but instead bless them into Perl6MultiSub, which is a subclass of Parrot's MultiSub. | 20:26 | |
| dalek | rrot: r39181 | NotFound++ | trunk/src/io/win32.c: [IO] On Win32, retry failed write of big size in smallest chunks on some conditions, TT #710 |
||
| Austin_Hastings | Gotcha. I'll be sure and not do that. :) | ||
| jonathan | And it calls .signature on the candidates etc. | ||
| Sure, just wanted to flag it up so you don't go look at Rakudo and come away thinking, "huh, wtf" :-) | |||
| Austin_Hastings | Oh. Well, that happens a couple of times a day. | 20:27 | |
| pmichaud | Tene: pong | ||
| jonathan | Couple is better than a few ;-) | ||
| Austin_Hastings | :-/ | ||
|
20:28
japhb_ joined
|
|||
| Tene | pmichaud: looks like the right place for a 'parrot' compiler would be runtime/parrot/languages/parrot/parrot.pir, do you agree? | 20:33 | |
| That's where "load_lang 'parrot'" looks, at least. | |||
| pmichaud | Tene: Sure. Although I somewhat expect the 'parrot' compiler to be loaded "for free" when loading PCT. | 20:35 | |
| Tene | OK. | 20:36 | |
|
21:12
particle1 joined
|
|||
| dalek | rrot: r39182 | chromatic++ | trunk/config/gen/makefiles/root.in: [config] Added Makefile dependencies on config.h for STRING encoding system; |
21:13 | |
| rrot: r39183 | chromatic++ | trunk/src/pmc/retcontinuation.pmc: [PMC] Replaced an unnecessary calloc() with a regular malloc(). |
|||
| rrot: r39184 | chromatic++ | trunk/src/pmc/sub.pmc: [PMC] Removed vestigial and bit-rotted code. |
|||
| rrot: r39185 | chromatic++ | trunk/src/pmc/object.pmc: [OO] Reduced the amount of work required to get an attribute's index in the |
|||
|
21:31
bacek joined
21:43
Whiteknight joined
|
|||
| dalek | cnum-dynpmcs: r64 | darbelo++ | trunk/src/pmc/decnum.pmc: Implement cmp VTABLE. |
22:03 | |
|
22:09
dolmen joined
|
|||
| janus | may i request a system install mode? having either /parrot in the prefix or adding it everywhere below prefix makes me patch like a monkey :/ | 22:09 | |
| or i did miss a new button | |||
| darbelo | janus: system install? what do you mean? | 22:10 | |
| janus | i want parrot installed like everything else | ||
| i don't want a versioned install path | 22:11 | ||
| maybe there is a switch or option i havent found yet... | 22:12 | ||
| but on my patch way through the configure scripts i didn't see any | |||
| (yet?) | |||
| NotFound | janus: if you want parrot, parrot_config et al to be available in PATH, just change your PATH, or use --prefix=/usr for example | ||
| darbelo | The default configuration puts parrot on /usr/local/. and the binaries are in /usr/local/bin/ like everything else. | 22:13 | |
| dalek | rrot: r39186 | chromatic++ | trunk/src/list.c: [src] Tidied code; no functional changes. |
||
| NotFound | darbelo: not everything else in this world, just gnu/autotools convention | 22:14 | |
| janus | hmmm, let me recheck. when i regenerated the packaging list i got massive of /parrot-1.2.0 showing up | ||
| *ouch* | 22:15 | ||
| --prefix is missing, i wonder that didn't hit me before | |||
| sorry for the (premature) noise and thanks for the fish ;) | |||
| darbelo | You might have seen the shared libraries and headers. Those *do* go to versioned dirs. | 22:17 | |
| And parrot is not the only one doing this: | 22:18 | ||
| $ ls -l `which python` | 22:19 | ||
| lrwxr-xr-x 1 root wheel 24 May 12 15:07 /usr/local/bin/python -> /usr/local/bin/python2.5 | |||
| janus | hmm | ||
| +lib/pkgconfig/parrot/1.2.0/parrot.pc | |||
| what?! | |||
| cotto | chromatic++ for making Parrot nicer to look at | 22:20 | |
| janus | i wonder how that will work... pkg-config parrot/1.2.0/parrot.pc --libs? | 22:22 | |
| previously in lib/pkgconfig/parrot.pc, which is the location everything else uses | 22:23 | ||
| darbelo | NotFound: Actually OpenBSD convention: /usr/bin is reserved to utilities shipped with the base system. Packages/ports get thrown to /usr/local/bin | 22:24 | |
| janus | darbelo: who cares if he can tweak/change it? ;) | 22:25 | |
| here's the complete packaging list diff: pastebin.com/m9d13fe0 | 22:27 | ||
| (from 0.9.0.1 to 1.2.0) | 22:28 | ||
|
22:30
skids joined
|
|||
| NotFound | darbelo: well, there are more systems with the same conventions. The point is that is not universal posix or unix. | 22:32 | |
| darbelo | Oh. Sorry. When I said that parrot went into /usr/local "Same as everything else" I meant "Same as everything else on my system" which is what I thought janus was asking. | 22:38 | |
| I'm pretty sure Windows doesn't install stuff into /usr/local :) | 22:39 | ||
| jonathan | Huh? What's /usr/local? ;-) | 22:41 | |
| Whiteknight | Infinoid: ping | 22:42 | |
| janus | NotFound: it wasn't the missing --prefix | 22:49 | |
| a mix of overriding VERSION_DIR via make flags and patched tools/dev/install_files.pl should get me back to the previous location; diff when it DWIM | 22:52 | ||
| pastebin.com/m3bc03d22 + VERSION_DIR="/parrot" | 22:54 | ||
| sigh, yes... i could have checked current svn first | 22:58 | ||
| seems my issue is already obsolete | 22:59 | ||
|
23:20
donaldh joined
23:24
eternaleye joined
|
|||
| chromatic | c'mon dalek.... | 23:26 | |
| dalek | rrot: r39187 | chromatic++ | trunk/docs/book/ch03_pir.pod: [book] Edited second third of this chapter. I added some editorial comments |
23:27 | |
| Infinoid | Whiteknight: faint-pong | 23:36 | |
| Whiteknight | Infinoid: I want to get a branch going to start refactoring IO PMCs | 23:37 | |
| Maybe we should put together a little task list first, so we don't step on each other's toes? | 23:38 | ||
| Infinoid | Okay | ||
| I was meaning to put together a proposal tonight, but I can see about throwing a quick version of it up on the wiki | 23:39 | ||
| Whiteknight | The big things on the agenda are (1) to refactor the PMCs to inherit common stuff, and (2) to change the IO API to not use PCCINVOKE method calls | ||
| and I think we can get those changes made by the end of the week | |||
| Infinoid | Does that mean all API functions will be vtables? | 23:40 | |
| Whiteknight | well, either that or GET_ATTR/SET_ATTR kinds of calls | ||
| Infinoid is thinking about connect(), listen(), bind() for Socket, and reader() and writer() for Pipe | |||
| Whiteknight | er, PARROT_IOHANDLE() | ||
| we break a little encapsulation for big performance gains | 23:41 | ||
| Infinoid | Can you declare vtable functions in pir subclasses? | ||
| Infinoid doesn't care about MULTI, but he does want subclasses (eventually) | 23:42 | ||
| Whiteknight | yeah, with the :vtable flag | ||
| Infinoid | great, that will be fine then | ||
| Whiteknight | the way to get PIR subclasses working is to have all ATTRs be inheritable, so STRING*, PMC*, INTVAL, and FLOATVAL only | ||
| if we can make that happen, inheritance will flow from it | 23:43 | ||
| Infinoid | Sockaddr will be a bit weird in that regard, but it's not an IO subclass (just some data used by some of the Socket API) | ||
| Whiteknight | Right, sockaddr probably won't be subclassable | ||
| Infinoid | one subclass of Sockaddr for each socket address family, and set_string_native to parse the address from strings, will work fine | ||
| Whiteknight | Right, but those subclasses can be defined in C, not PIR | 23:44 | |
| Infinoid | well, SockaddrInet, SockaddrInet6, SockaddrTipc, SockaddrIPX, SockaddrUnix, etc | ||
| yeah | |||
| Whiteknight | trac.parrot.org/parrot/wiki/IOTasklist <--- The page we can use for planning | ||
| Infinoid | ah, great. I was already halfway to creating a similar page with a capital L :) | ||
| so what's this you were saying about select() being part of the AIO work? | 23:45 | ||
| On win32, select() only works with sockets, not with files or terminals. That's been bugging me a lot | 23:46 | ||
| Whiteknight | Infinoid: On Win32 I was thinking about using IO Completion Ports, which do similar stuff but work with all IO handle types | 23:47 | |
| Infinoid | Which is awesome. I wouldn't mind abstracting select() on top of that kind of system | ||
| though I suppose poll()'s API is a little closer | 23:48 | ||
| Whiteknight | I've been planning an "IOScheduler" or "IOListener" type of PMC that would integrate with the scheduler | ||
| so we add handles to it that we want to monitor, and poll them every time the scheduler runs | |||
| Infinoid | hmm, ok. the Select interface I was thinking of is basically identical to perl5's IO::Select, if you're familiar with that | 23:49 | |
| Whiteknight | Yeah, I am | ||
| Infinoid | but as long as the functionality is there, I don't care what it looks like | ||
| Your implementation sounds like it would meet my needs very well | |||
| Whiteknight | I've been sort of trying to avoid syntax that is so closely tied to Perl, but if there is a lot of pressure to not do that, I won't bother | ||
| Infinoid | well, I guess the important part is to make it easy to use from PIR | 23:50 | |
| Whiteknight | right | ||
| How did Pipes get implemented, as a FileHandle or something separate? | 23:51 | ||
| Infinoid | it's currently a FileHandle, which I intend to fix | ||
| Whiteknight | okay, awesome | ||
| Infinoid | There are two things we want to call Pipes, though. NotFound++'s nice work is to open shell commands as pipes, which is the implicit way | 23:52 | |
| Whiteknight | I've been thinking that it was an awkward fit to force them into the FileHandle PMC | ||
| Infinoid | I also want the explicit IO::Pipe style, where you create a pair of Handles and then call methods to get the reader Handle and writer Handle | ||
| I want to convert the implicit stuff to use the Pipe object internally. | |||
| so it would create a Pipe, fork off and dup2() the writer to stdout and execute the command, and return the reader Handle | 23:53 | ||
| or whatever. | |||
| I've been moving all day, so I haven't had a chance to write any of this down yet | |||
| (let alone *do* any of it :)) | 23:54 | ||
|
23:55
tetragon joined
|
|||
| Infinoid | is it worth trying to mark the various Handle subclasses so they can does(seek) or does(connected) or whatever? (is it "does" or "has" or what? I'm not familiar with the notation.) | 23:57 | |
| Other than some special cases like http client classes that support resumes and chunked encoding, FileHandles are pretty much the only thing that can seek(). But I'm not sure how hard it is to tell the rest of parrot about that (or whether it's worth it) | 23:58 | ||
| Whiteknight | Using roles for that kind of stuff is an interesting idea | 23:59 | |
| I don't really know what the current state of the code is in respect to roles | |||