Parrot 1.2.0 released | parrot.org/ | 304 RTs left | Weekly Priority: Profiling
Set by moderator on 26 May 2009.
Infinoid You at least know what to call them, which gives you an advantage over me. :) 00:00
Whiteknight For operations that aren' common, like seek(), peek(), etc, we could use methods still
and then throw an exception when the method doesn't exist
dalek tracwiki: v12 | whiteknight++ | IOTasklist 00:01
tracwiki: trac.parrot.org/parrot/wiki/IOTask...ction=diff
Infinoid foresees himself catching a lot of exceptions, but that's ok
Whiteknight or a role would work too, I just need to make sure the code is there to support it
we could have an INTVAL flags field in the IO handle base class that has enum_IO_seek, enum_IO_socket, etc 00:02
although that's particularly inelegant
Infinoid eew. I'd prefer to just have the subclass implement seek() and the base class toss an exception 00:03
Whiteknight yeah, I think we can definitely use VTABLE_does for that kind of stuff. Just need to decide what different roles we want to support
Infinoid The first major one: seek 00:04
Whiteknight if(VTABLE_does(interp, self, CONST_STRING("file")) would return true if we have file operations like seek, peek, etc
Infinoid I'm not really sure how to differentiate connected sockets from connectionless (SOCK_DGRAM, SOCK_RDM and so forth), but I'm not sure roles are it
00:04 wayland joined
Infinoid perl5 has a whole separate subclass (IO::Seekable) to represent the seek role 00:04
I do think that's a bit overboard. (perl5's I mean)
Whiteknight do the different types of sockets have substantially different APIs?
I'm most familiar with TCP/IP, not other types of sockets 00:05
Infinoid Okay. UDP sockets use sendmsg() and recvmsg(), which take and return a Sockaddr along with the data buffer and length
so in other words, you're explicit about the target address for every UDP packet you send
send() and recv() do not work with connectionless sockets. Nor do read() and write(). 00:06
(well, read() might work on some OSes, but you won't be able to find out where it came from.)
so basically, connectionless sockets break the whole IO API
you can use select() with them, but that's about it
Whiteknight okay, I remember some of this stuff from my networking class years ago
so we can have a PMC that does "Socket" AND does "Connection" or "Connectionless"
Infinoid it's true of any SOCK_DGRAM or SOCK_RDM socket type. UDP is just the most common example, but you can do this in AF_UNIX and AF_TIPC as well 00:07
Whiteknight ...or whatever you want to call them
Infinoid yeah. If it's even worth doing that 00:08
I'm not really sure
Whiteknight we could just have a "write" function that differentiates sockets based on the PMC base type
Infinoid The thing is, this kind of thing has to be application-specific by definition, so I'm not sure there's any point to adding tools so generic code can try to be smart with them
Whiteknight or have a mode flag in Socket that says whether it's TCP or UDP
Infinoid I suspect they're just going to be orthogonal, no matter what I we do 00:09
s/ I/
Whiteknight you're the expert here, you just say what we need and we'll do it
Infinoid ok. we need seek()
Whiteknight if we need to have a dozen different types of Socket PMCs, we'll do that
Infinoid and we need Socket to stop subclassing FileHandle :)
wayland I missed the start of this conversation, but I presume you've seen S32/IO in the Perl6 doco?
Whiteknight Sockets don't seek(), right? I don't think so just sanity checking
Infinoid we will probably have a dozen different types of Socket PMCs, just to make Sockaddr handling easier (like IO::Socket::INET and IO::Socket::UNIX do) 00:10
correct
Whiteknight wayland: a while ago, I don't venture into Perl6 land as often as I like
wayland Ok. The basic idea is, they have different roles for all kinds of things
IO::Readable, etc
Infinoid Great, that sounds very relevant
Infinoid googles for s32
Whiteknight wayland: Yeah, that sounds exactly like what I am planning
purl well, planning is what it's all about. :] or www.moderndrunkardmagazine.com/issu...anning.jpg
Whiteknight purl forget planning
purl Whiteknight: I forgot planning
wayland perlcabal.org/syn/ 00:11
That link has links to the different sections of S32
As well as the other stuff
dalek tracwiki: v13 | whiteknight++ | IOTasklist
tracwiki: trac.parrot.org/parrot/wiki/IOTask...ction=diff
wayland Keep in mind that S32 is still in Draft mode
Whiteknight well, we're not going to track the synopses too close anyway, because our implementation needs to support all languages
but Parrot does have a role facility that we should be able to make good use of 00:12
our implementation will probably be similar, but not perfectly symmetrical, with the P6 version
Infinoid Yeah. I was just wondering whether we should conform to that, or if we should stay as far away from it as possible (It seems like Rakudo generally tries to do everything their own way)
At the very least, I didn't have nearly as many roles in mind
Whiteknight I think we're going to find that borrowing a good amount from the P6 version will help us a lot towards working an elegant solution 00:13
Infinoid ok, Socket will have a few extra methods for getsockaddr(), getpeeraddr(), setsockopt(), getsockopt() and all of those fun things 00:14
Whiteknight right, and FileHandle will have methods for seek() and whatever else files do
do pipes need anything special?
Infinoid Pipe isn't a subclass of Handle, but it will have reader() and writer() which return subclasses of Handle 00:15
Pipe is just a container object.
in fact, it might just return Handle directly, the underlying fds are pretty generic
wayland Argh! Have to recompile parrot because I referred to a MAINFEST in a makefile (instead of a MANIFEST like I should've)
Infinoid I'd love a way to do socketpair() in the same way, as it gives you the same thing as pipe() except the handles are bidirectional, but I don't want to add yet another class just for that 00:16
Whiteknight I finally got my copy of "Unix Network Programming" from my parent's house, so I have a good reference book here to guide me through all this 00:17
I can be so useless without the proper references
Infinoid oh. does FileHandle do fcntl() yet? I want to put that in Handle 00:18
Infinoid wants O_NONBLOCK
Whiteknight I don't see any calls to fcntl anywhere in src/pmc/
we'll get that added as a method if we need 00:19
Infinoid k, I'll add that when I extract Handle
Whiteknight w00t
Infinoid and some constants
Whiteknight are we interesting in supporting XTI at all?
dalek cnum-dynpmcs: r65 | darbelo++ | trunk/src/pmc/decnum.pmc:
Implement a method for comparations following the IEEE 754 total ordering of

Simplify the pmc VTABLE.
Infinoid XTI? 00:21
Whiteknight it's in this book as a networking API
I'll assume that the answer is "no"
Infinoid ah, docsrv.sco.com/SDK_netapi/sockC.sock2XTI.html 00:22
sockets is the portable one, I'm not even sure I have an OS that supports the XTI API
Whiteknight okay, forget I mentioned it (again, I'm definitely no expert)
purl Whiteknight, I didn't have anything matching i mentioned it (again, i'm definitely no expert)
Whiteknight thanks purl, just rub it in my face 00:23
Infinoid well, I've never heard of it before, but I'm not authoritative :)
Whiteknight better then I am
Infinoid in fact, if we came across an OS that supported XTI but not berkeley sockets, I'd be more inclined to convert sockets calls to the XTI backend, to maintain portability 00:25
Whiteknight okay
00:28 eternaleye_ joined
Infinoid So okay. To sum up my task list: 00:28
1. Split out Handle from FileHandle (but you're welcome to beat me to it; I've still got at least one more day's worth of moving work to do.)
2. Convert socket to be a subclass of that, add some nifty methods to Handle and Socket (and some parrot-level constants for portable PBC) 00:29
Whiteknight I'm going to create the branch tomorrow, give us tonight to just stew on the design
Infinoid 3. Add Select (but I'm keen on seeing whether your work will satisfy that need) 00:30
Whiteknight and then we're separating out Pipe from FileHandle?
Infinoid 4. Add UDP and nonblocking operation
yeah, Pipe is a separate task, which only depends on #1 in that above list
Whiteknight Yeah, let's hold off on Select just for now, if I can't do it soon enough as part of AIO we can implement it separately
Infinoid no problem. I can bang on Pipe first 00:31
Whiteknight great, this is a good plan I think
and I think performance will be much better then it is
irclogs 00:32
Infinoid once we have nonblocking operation and some form of select or poll or aio, I can start writing big intarwebs servers
Whiteknight irclogs?
purl irclogs is irclog.perlgeek.de/parrot/today or see also: infrared clogs
Whiteknight Infinoid: I'm hoping to land all these cleanups within two weeks, and have AIO in place by 1.3
Infinoid cool! Will you be blocking on any of the tasks I listed?
Whiteknight I'm going to be working on them with you, so no 00:33
Infinoid ok, I'll try not to disappear then
Whiteknight You can if you need, there are plenty of parallel development pahs here 00:34
paths*
nothing is going to block me, I'm too determined to make all this shit work
Infinoid Whiteknight++
AIO is really interesting. I've been drooling over the manpage and dancing around it for years, but never actually got the chance to play with it 00:35
A whole lot of scalability problems just vanish when you switch to AIO 00:36
Whiteknight yeah, that's what I'm hoping for 00:50
the problem is making sure we get it right, a system that is portable transparently across many platforms, and still has the functionality that people need 00:51
Infinoid Testing that it works well with threads might get a little weird 00:54
Whiteknight yeah, I imagine we are going to run into a lot of issues 00:57
00:58 ilia joined
Whiteknight I'm getting excited about this, lots of good things are going to result from all this work! 01:00
wayland No manual entry for AIO 01:03
What's the manpage called? 01:04
is it on fnctl or whatever?
Infinoid wayland: on linux, it's aio(3)
man 3 aio
wayland Not on Fedora, it's not
What package is it part of?
Infinoid you might need to install manpages-dev or whatever it is on fedora.
wayland I'll investigate 01:05
Infinoid purl, aio?
purl well, aio is asynchronous input and output
Infinoid purl, aio is also a push (callback)-based I/O system
purl okay, Infinoid.
Whiteknight here's the reference I've been using: www.ibm.com/developerworks/linux/li...index.html 01:06
not a manpage, but very informative. Plus, pictures!
does a good job of explaining several different types of IO too, all four of which I want Parrot to support. 01:07
Infinoid IBM has been doing something very similar to AIO in os/390 and various other mainframe-type products for decades
that chart is interesting. I don't find select very useful without O_NONBLOCK, and vice versa :) 01:08
My normal model is in the block of their chart occupied by AIO... but would call AIO that + 1 01:09
01:10 Coke joined
Coke Anyone want to try to reduce a tcl segfault to parrot? =-) 01:10
wayland MENE MENE TCL U-PARROT 01:11
Infinoid Whiteknight: Do you think AIO will be useful for PIR code without having to define a class? Will we be mapping AIO callbacks to Continuation objects, or to class methods, or what? 01:12
wayland (apologies to all those who haven't read the Book of Daniel)
Infinoid Coke: Whatcha got? 01:13
wayland Don't seem to be able to find relevant man pages. I have a man-pages package installed, and there doesn't appear to be a man-pages-devel
Coke Infinoid: parrot latest, partcl latest, on feather, "make test" segfaults in t/cmd_array.t; I'm trying to track it down.
Infinoid got a backtrace?
Coke was trying to get the PIR first. lemme get a backtrace.
Infinoid oh, ok
Infinoid kinda assumed the pir would be huge 01:14
wayland: On my gentoo box, the manpage came from the dev-libs/libaio-0.3.106-r1 package
nopaste "coke" at 72.228.52.192 pasted "segfault" (46 lines) at nopaste.snit.ch/16673 01:15
wayland Oh, ok, thanks
Whiteknight Infinoid, I'm forseeing it will be almost seamlessly usable from PIR
Coke Infinoid: if I run with -G it runs through all 50 tests before segfaulting. :| 01:16
Whiteknight We might need a special open flag, so like '$P0 = open "filename", "nr"', where "n" makes it asynchronous
Coke Infinoid: I also get a ton of # got : 'get_attr_str() not implemented in class 'TclArray''
Infinoid cute, your Class object has a corrupt attr
Whiteknight: *drool* 01:17
Coke I suspect this is a result of Whiteknight's fix to the assign problem I was having.
Whiteknight but once we have an asynchronous stream, you'll be able to pass that to a normal read/print opcode, with an optional callback
Infinoid Coke: is your gdb still open?
Coke I can rerun. what do you need? 01:18
Infinoid well, "up" and "print _class->_namespace" should give you an 0x11, but that doesn't tell us *why* it is 0x11
Coke $1 = (PMC *) 0x11
is 0x11 undef?
01:18 bacek_ joined
Coke oh, no, that's not the type. 01:18
Infinoid no, it's supposed to be a pointer to a Namespace object 01:19
...or NULL
is TCL subclassing Class and screwing up the attr list and overwriting the field with something numeric?
Coke not on purpose. =-)
TclArray, which you see when the segfault is averted with -G, is just a PIR class. 01:20
code.google.com/p/partcl/source/bro...larray.pir
Infinoid are you doing anything complicated to a TclArray object to trigger the class? Or just creating one and letting the GC run? 01:23
trigger the crash, not class.
Infinoid tired
Coke "running all of tcl"?
Infinoid I'm hoping to reduce it a little farther than that. :) 01:24
Coke it might be a result of the assign to Undef trick that Whiteknight ran.
s/ran/fixed/
I'm now trying to get some pir to duplicate.
Infinoid oh, hmm
Whiteknight urg, I hope all that code doesn't cause new problems
Infinoid Whiteknight: See that? You fix something, now you get blamed for all subsequent bugs. :)
01:24 patspam joined
Coke Yup. 01:24
well, it's working better than it /did/
slightly larger test case incoming. 01:25
Whiteknight so you're subclassing Class, then assigning that Class to an Undef $P register?
Coke no. 01:26
Whiteknight The only case where any of my TT #696 code gets invoked is when we assign an Object to an Undef 01:27
the assign and set_pmc vtables in Undef were the only things I really changed
Coke Whiteknight: yes, I'm doing that. 01:28
Whiteknight oh, okay then
Oooh, I have a weird recursion relationship in my head now
because the Class of an object of your Class subtype will be an object of your class Subtype 01:29
Coke TT #711 has the revised (failing) case.
Whiteknight well, it would be if the hll_map bindings are established after the subclass is defined
Okay, so #711 is basically just #696 but with attributes? 01:30
Coke basically.
Whiteknight that's weird, I copied all the attribute copying logic from Object:clone() 01:31
Coke my original test was the bare minimum to duplicate the error.
This is slightly more like real tcl.
if you tackle this one, feel free to just run "make test" in partcl. =-)
dalek TT #711 created by coke++: can't assign class with attributes to undef 01:32
Whiteknight urg, I haven't even checked TCL out in months
Coke well, at least it'll build now. =-)
Whiteknight that's a step up
I'll take the ticket, but I am going to sleep soon and won't work on it tonight 01:33
Can I ask why you are vivifying the destination register to Undef anyway?
dalek rtcl: r369 | coke++ | wiki/ParrotIssues.wiki:
fixed one bug, found another
01:34
Whiteknight seems like a useless step to me, unless I am missing something
Coke It might already be Undef by the time I have a new value to assign to it. 01:36
Infinoid is pmichaud's comment to #696 regarding the "copy" opcode relevant here?
Coke Maybe. the parts of tcl that are doing what they're doing predate rakudo. 01:37
This all used to work. :|
let me try a global s/assign/copy/ 01:38
pmichaud The "copy" opcode is intended to replace an existing PMC with a copy of another PMC.
it somewhat replaces the "morph to Undef and then assign" that we used to do.
Whiteknight I was looking at the copy opcode today, after you mentioned it in #ps
does it really do this operation that Coke needs it to do? 01:39
pmichaud I don't know what Tcl needs/wants, I just know that the description sounded a lot like "copy"
Whiteknight (in either case, what he is trying should not segfault, whether it's the Right Way or not)
pmichaud and that previously Rakudo and other languages were also trying to assign things to Undef, which is when we came up with the "copy" opcode.
(the assign to Under trick having been taken from Tcl, fwiw :-) 01:40
Whiteknight and Copy handles all attributes?
pmichaud Copy just does a clone.
whatever clone does, it uses.
basically the copy opcode is "clone into an existing PMC"
Whiteknight yeah, I'm reading the source now 01:42
The work I did earlier for TT #696 basically just abstracted the guts of clone, so the two ideas are very similar
I don't understand why copy maintains the metadata from the destination PMC though 01:43
dalek rtcl: r370 | coke++ | trunk/Configure.pl:
slightly better error message if "install-dev" wasn't run.
01:44
Coke as I recall, it was a hack. =-)
Whiteknight does clone on an RPA do a deep clone or a shallow one? 01:45
Coke I see -t4 is still (*)!@#&$#()@$& broken.
pmichaud clone on RPA is shallow, iirc
clone on Hash is deep, though. 01:46
because PMCs are considered "containers"
and in Rakudo, at least, the properties of a container are independent of its value
i.e., we consider the properties to be properties of the PMC, not of the value it contains. 01:47
Whiteknight okay
This copy opcode doesn't look right to me. it looks like it's leaking memory
and it NULLs out the pmc_ext pointer, but never replaces it 01:48
pmichaud we first clone the source
Whiteknight oh, nevermind. I see what it's doing 01:49
so metadata is container-based, and attributes are data-based? 01:50
or are they one and the same?
pmichaud they're separate, afaik
"properties" aren't the same as "attributes"
Whiteknight right, okay
I CAN HAZ TERMINOLOGEE! 01:51
Okay, Ive hit my Parrot quota for the day. Now it's time for some union-mandated sleep 01:52
later
wayland My sleep is sometimes intersection-mandated :) 01:53
01:54 Maghnus_ joined
dalek rrot: r39188 | jkeenan++ | branches/pbc_info_remove:
Create pbc_info_remove branch to work on
02:12
wayland developers++ :) 02:14
02:28 Theory joined 02:35 janus joined
dalek rrot: r39189 | jkeenan++ | trunk (2 files):
Make this file conform to linelength coding standard.
02:39
rrot: r39190 | jkeenan++ | branches/pbc_info_remove (15 files):
Move src/pbc_info.c to examples/c/. As part of deprecation plan, remove pbc_info targets from Makefile and remove pbc_info and related files from files governing ports.
02:45
tewk I know I've asked before but what is the most reliable quasi-offical git mirror for the parrot project? 02:46
Coke git-svn? 02:48
purl git-svn is amazingly great
Coke infiniod git?
infinoid?
purl infinoid is, like, Mark Glines <mailto:mark@glines.org> or likes shiny things
Coke git mirror?
it's in there somewhere. =-)
tewk I use git-svn, but if I based it off Marks mirror it may be easier for other git users to follow. 02:49
tewk goes to search irc logs
Infinoid oh 02:54
I think it's git://quack.glines.org/parrot-trunk/, let me verify that
yep. 02:55
purl, git mirrors of parrot is git://quack.glines.org/parrot-trunk/ 02:58
purl OK, Infinoid.
Infinoid purl, git mirrors of parrot is also git://repo.or.cz/parrot.git (not always up to date) 02:59
purl okay, Infinoid.
03:20 donaldh joined 03:48 darbelo joined 04:44 Andy joined 04:55 tetragon joined 05:06 flh joined 05:08 buildbot joined 05:16 davidfetter left 05:23 darbelo joined, masak joined
dalek kudo: 14b8735 | pmichaud++ | src/classes/IO.pir:
Update IO.get to return a single line. Remove obsolete IOIterator class.
05:50
05:56 patspam joined 06:10 chromatic joined 06:36 cotto joined 06:51 cognominal joined
Austin_Hastings Good morning, #parrot. 07:10
parrot Awk! 07:16
07:17 iblechbot joined 07:21 donaldh joined
cotto well, this is awkward 07:25
moritz not seductivve?
wayland Stop that, or I'll bash you both :) 07:29
(Which reminds me. Hash! Bang! Bin! Bash! Is this a shell script, or a Batman comic? ) 07:30
btw, how do you do "bold" in IRC
cotto test
wayland (bold font formtting)
cotto in my client, it's ctrl-b
moritz wayland: in irssi you press Ctrl+b
wayland test
moritz then some text
then again Ctrl+b 07:31
wayland Hmm. Konversation doesn't do that
cotto Hmmm. Apparently I can do all kinds of silly and ill-advised stuff.
moritz www.mitja-schmakeit.de/wordpress/wp...garten.jpg 07:32
wayland Αλλ Ī™ ψαν Γο ισ Ļ„Ī·Ī¹Ļƒ
mj41 Good morning. Any ideas how to compile Parrot on VMWare virtual machine? ... Problem is probably here ttcopy.ro.vutbr.cz:4000//file/cmdout/19239.txt ... auto::jit - Determine JIT capability...p = 0x8920000 PAGE_SIZE = 4096 (0x1000) failure: Permission denied
wayland (All I can do is this)
cotto mj41, are you using selinux or something to prevent executing malloc'd memory 07:34
(also, I can't access that site) 07:35
wayland mj41: ...and are you running linux in the VM? 07:36
mj41 hmm, selinux, rebooting 07:37
wayland: yes, linux in the VM
cotto istr a similar issue with recent versions of Fedora Core 07:38
mj41 cotto: thanks, without selinux configure pass 07:39
wayland Do we have a trouble ticket for that? 07:42
cotto #581 is the closest I can find, but in that one Configure.pl works fine and something in PGE explodes. 07:43
fwiw, it's still open 07:44
actually, Lu's error looks almost exactly like yours, mj41 07:45
mj41 Anybody else has problem access ttcopy.ro.vutbr.cz:4000 ?
cotto mj41, can you compile and nopaste the output from trac.parrot.org/parrot/raw-attachm...ght-work.c 07:46
it'd probably be helpful to get that tt moving again
wayland mj41: I can access your site fine from here (Australia, good ISP)
mj41 cotto: I just disable selinux.
cotto right. silly me
but our general solution to this shouldn't be "put selinux in permissive mode" 07:48
mj41 cotto: but no problem :-) 07:50
cotto mj41, apologies for my isp, which I assume is blocking that site 07:51
mj41 cotto: And tt.ro.vutbr.cz is ok ?
nopaste "mj41" at 147.229.5.176 pasted "output from /ticket/581/test-jit-might-work.c" (10 lines) at nopaste.snit.ch/16674 07:54
cotto mj41, nope 07:56
mj41 cotto: :-( and www.vutbr.cz/ ? 07:57
cotto that one works
don't even ask my why 07:58
wayland Different Class C subnets, probably 07:59
Austin_Hastings Anyone know how to dump a namespace from PIR? There seem to be "lookup name" ops, but there is no "gimme the names you have" op, and the "default exporter" is NYI. 08:00
Could it be as simple as treating the PMC as a hash? 08:07
mj41 New TapTinder client (32bit linux) is online tt.ro.vutbr.cz/buildstatus/pr-Parrot/rp-trunk . Thanks. 08:22
08:45 bacek joined
chromatic Austin_Hastings, that's exactly what to do. 08:57
08:58 Maghnus joined
Austin_Hastings chromatic: Thanks, it's harder than it looked. 09:09
Woo-hoo! A crapload of stuff! 09:12
09:14 mikehh joined
Austin_Hastings If I want to decode "what" a thing is, do I use the .type() method on the PMC or is there some higher-level opcode for that? 09:15
chromatic typeof $P0 09:17
$S0 = typeof $P0
09:20 bacek joined
bacek good evening 09:21
Austin_Hastings That doesn't seem entirely useful.
I get key "crt_init" pointing to 09:22
wayland I find good evenings quite useful myself :)
(sorry :) )
Austin_Hastings Good evening, bacek.
wayland bacek: o/
I've now gotten to the point where Rakudo builds on a Parrot TPM 09:23
RPM
Austin_Hastings Nevermind.
Didn't indirect far enough.
OTOH, what's the C<typeof Null> ?
wayland Now I just need to make Rakudo work as an RPM
Austin_Hastings (Hint: Null PMC access in get_string()) 09:24
Is there an official pod format for tables?
dalek TT #68 closed by bacek++: runtime/parrot/library/tcpstream.pir broken 09:25
chromatic POD doesn't support tables. PseudoPOD does. 09:31
09:32 skv joined
wayland Had to smile at PseudoPOD :) 09:32
Austin_Hastings Okay, what is parrot::Null ? 09:40
It's not "null" according to the unless_null opcode.
So it's a ... PMC that "does landmine"?
bacek Austin_Hastings: yes. It's called.. erm.. Null 09:45
:)
Austin_Hastings Right. 09:47
But when I do "typeof $P0" I get an exception :(
And checking unless_null doesn't work. So what do I use -- "issame" ? 09:49
bacek if_null 09:50
it should work...
unless_null should work too
Austin_Hastings I think if_null tests for uninitialized $P0, while in this case $P0 = get_global 'Null' 09:52
bacek Austin_Hastings: no. if_null checks that pmc is NULL or Null 09:53
Austin_Hastings Hmm...boxing $S0 09:58
Now everything is a NameSpace.
Aha. Not everything is a Namespace. Only the first hundred or so. Then things are "Sub" or "close;Grammar" or "FixedPMCArray" or whatever. 10:04
Woot.
How do I get the PMC for a class, if the namespace PMC is going to be rturned by its name? 10:06
Ahh. nsp.get_class() 10:07
Wayland, what's new on the other side of the world? 10:08
wayland Other than making the Parrot RPM cover everything Rakudo seems to need at the moment, nothing springs to mind 10:15
Austin_Hastings I saw you mention that earlier. Did you include all the perl modules?
(Does that even make sense?)
wayland I think the Parrot RPM already included those 10:18
I know for sure it includes lib/Parrot/Install.pm
The only downside is that it probably also includes stuff we don't need
But I'm willing to live with that at the moment.
Austin_Hastings :) 10:19
10:29 bacek joined
dalek rrot: r39191 | fperrad++ | trunk/README_win32.pod:
[win32] update with ICU 4.2
10:33
Austin_Hastings Welcome back, bacek.
bacek Austin_Hastings: OH HAI
bacek wish to have good internet at new home. 10:34
And ./parrot -t4 working.
see also: opny
pony
Austin_Hastings :) 10:36
Where is your new home, Bacek?
bacek Austin_Hastings: closer to $dayjob
dalek rrot: r39192 | bacek++ | trunk/src/packfile.c:
[cage] Don't try to deref NULL interp->pdb pointer during tracing.
Austin_Hastings But with poor internet?
wayland Well, Australia has blackspots 10:38
Basically, there's a piece of telco equipment called a RIM that's used to multiplex multiple phone lines over one set of copper wires 10:39
and it's incompatible with ADSL, which is basically the only cheap fast internet available in most of .au
bacek Austin_Hastings: technically - without any internet. I'm using 3G now 10:40
Austin_Hastings Ouch! Iphone = modem? 10:42
Here's a question: when you import a namespace, you don't get sub-namespaces, right? 10:43
10:43 wayland76 joined
wayland76 Sorry about that -- xorg died on me :) 10:44
10:49 bacek joined
bacek oh hai... 10:49
It was bad idea to check model of this 3g modem...
wayland76 Austin_Hastings: Are you jinxing me and bacek? :) 10:50
Austin_Hastings If a Sub (PMC) was not declared :multi, does it still have a MMD signature?
Rarf. 10:52
Let's try that question again: Given that I have a Sub PMC, how can I find out information about its signature?
Apparently I can discover the arity(), and I can inspect() it to find the number of positional+required, pos+optional, named+req, named+opt, and slurpy args. 10:53
But I see nothing about types.
bacek Coke: around? 11:17
11:20 donaldh joined 11:47 whoppix joined 11:48 tetragon joined
bacek msg Coke -t4 now (almost) works 11:52
purl Message for coke stored.
dalek rrot: r39193 | bacek++ | trunk (2 files):
Factor out debugger_or_interp helper function to fetch debugger or interp itself during tracing.
11:55 burmas joined
bacek msg Coke ignore my last message. It doesn't crash, but doesn't work 11:57
purl Message for coke stored.
jonathan Austin_Hastings: Types as in, what Parrot registers? 12:03
12:03 Whiteknight joined
jonathan (erm, register types I mean) 12:04
I'm can't immediately recall how that's exposed.
Or if that's exposed
12:04 burmas left
wayland76 kid51: I've had an idea 12:18
Austin_Hastings jonathan: that would do for a start. 12:19
wayland76 Maybe we can replace the %metatransforms, etc, in the install_files.pl, etc, with a text file that contains a source/dest translation table
Austin_Hastings I looked in the sub.pmc code, and it's glossed over. The code parses that data in order to compute the number-of-positional type info
wayland76 purl: tell kid51 I've had an idea. Maybe we can replace the %metatransforms, etc, in the install_files.pl, etc, with a text file that contains a source/dest translation table
purl wayland76: huh?
wayland76 purl: help 12:20
purl #perl is not a help channel, and I'm not a help bot. If you want Perl help, try #perl-help or #metallica. or (see the 'help channel' factoid as well) or
Austin_Hastings wayland: try "msg" 12:21
moritz wayland76: it's "msg $nick $message" here
wayland76 msg kid51 I've had an idea. Maybe we can replace the %metatransforms, etc, in the install_files.pl, etc, with a text file that contains a source/dest translation table
purl Message for kid51 stored.
wayland76 Thanks! :)
Austin_Hastings 8-)
jonathan: I put it on my list of things to do later. 12:22
Coke bacek: pong.
bacek Coke: unping :)
-t4 still failing. 12:23
Not so miserable as before, but...
wayland76 msg kid51 Oh, also, I'm depending on Parrot::Install for Rakudo, but using a modified version of install_files. I uncovered a place where Parrot::Install maybe to give an error message. 12:24
purl Message for kid51 stored.
wayland76 everyone: it seems to me that it would be a good idea to make /usr/lib/parrot/<version>/dynext work like /usr/lib does, ie. have a separate directory for each package (ie. parrot, rakudo), and softlink to them from the main directory 12:26
Thoughts?
purl i like cheese
wayland76 Cheesy thoughts?
Coke test 12:27
bacek;I already fixed -t4 once. I don't think I can do it again. =-) 12:29
bacek imaging "job security" in open source world 12:30
Coke I don't WANT job security!
(not in open source, anyway)
bacek In Soviet Russia job secure you! 12:32
oh wait...
12:37 iblechbot joined 12:40 rg1 joined 12:47 ruoso joined
wayland76 msg kid51 Ok, I have a working Rakudo RPM on the Parrot RPM. This needs some more changes to the build scripts. Want to help me review these too? 12:47
purl Message for kid51 stored.
Coke is happy to see codetest smolders clean. 12:49
Coke looks at ali.as/top100/, and wonders how many of the FAIL 100 are owned by folks who frequent this room. 12:51
bacek Coke: not me! I'm not CPAN "commiter" :) 12:54
whoppix Coke, that thing uses strange metrics. 12:59
Coke anyone know who the AIX smoke system belongs to? 13:00
dalek TT #712 created by wayland++: Some changes are needed to the install system so that Parrot installs in a ...
Coke it is tempting to start skip/todo'ing those. 13:01
dalek rrot: r39194 | whiteknight++ | branches/io_rewiring:
Creating a new branch to fix up the IO system
wayland76 Coke: not me either :) 13:03
msg kid51 if you're interested in helping me with the Rakudo RPM ticket, trac.parrot.org/parrot/attachment/ticket/712 13:04
purl Message for kid51 stored.
Austin_Hastings wayland76: At some point, you should maybe switch to email... 13:07
Coke kid51 does tend to respond to messages here. YMMV.
wayland76 Austin_Hastings: Well, I think I'm done now, until he responds :) 13:08
Coke I personally tend to prefer emails, and I monitor the trac mailing list.
wayland76 I prefer e-mails too :)
Austin_Hastings Sure, but the poor guy has been typing these messages for an hour or more, with no hope of editing...
13:08 gryphon joined
Austin_Hastings Is there any way to mark a class as "private"? 13:09
Or is it just a case of exporting nothing?
Coke hey, I can 'make tclsh' again. 13:10
Austin_Hastings: the latter, I believe. 13:11
Austin_Hastings thx
Coke oh. I still have the build dir around. :| 13:12
13:14 skids joined 13:15 Andy joined
Whiteknight purl msg Infinoid I created the io_rewiring branch, started moving some stuff around in src/pmc/. Feel free to start playing around 13:20
purl Message for infinoid stored.
dalek tracwiki: v14 | whiteknight++ | IOTasklist 13:28
tracwiki: Add two idle thoughts about IO to the page
tracwiki: trac.parrot.org/parrot/wiki/IOTask...ction=diff
rrot: r39195 | whiteknight++ | branches/io_rewiring/src/pmc (3 files):
[io_rewiring] Create Handle PMC type, start abstracting stuff into it.
13:29
Coke ah, the good ole days; program behaves differently with -G 13:31
Austin_Hastings :-D
No dangling pointers here, sir! 13:32
Nothing on the stack but us chickens...
Coke Whiteknight: I'm getting my segfault on copy. 13:36
Whiteknight: aha. my .cloneable helper is a problem. Never used to be. 13:46
Whiteknight on copy? you mean the copy opcode? 13:47
Coke yes. 13:48
but if I remove .cloneable, I get virtually no errors in make test.
let me show you the code:
code.google.com/p/partcl/source/bro...ros.pir#83 13:49
Whiteknight .cloneable is a method?
Coke it's a macro that implements the clone vtable on objects.
it used to be required. Now it segfaults.
(or causes them later.)
Whiteknight hmmm, that's very weird 13:50
Coke I'm guessing that class or object or default is now cloning properly, so I don't need it. Not sure why it would totally screw things up, though.
Whiteknight So you ARE using the copy opcode with this?
Coke I mainly switched over to copy some time ago, it seems.
so in my segfaults, the copy opcode is the last one shown with -t1. 13:51
13:51 Andy joined
Coke but if I remove .cloneable, no more segfaults. 13:51
Whiteknight because the copy opcode calls VTABLE_clone internally, but the "set to undef" assignment there in your clone also calls clone on Object
Coke down to 19 errors in make test now.
Whiteknight w00t 13:52
Coke (from about 200)
Whiteknight progress++ 13:54
dalek rtcl: r371 | coke++ | trunk/src/ (5 files):
Remove the .cloneable macro

necessary, but default or class or object or whatever needed it seems to have a workable default now anyway. less code, less segfaults.
13:57
Coke next bug: set a 3; incr a -1; puts $a 13:59
that should print "2" (a tclint), but instead prints "2.0" (a tclfloat) 14:00
Whiteknight what does the incr op do?
Coke += 14:01
s/op/command/
Whiteknight try: set a 3; puts $a. is it a tclint at that point?
what I mean is, what does it do internally 14:02
Coke code.google.com/p/partcl/source/bro...n/incr.pir
I see that I'm returning a clone. No idea why, let me see if I can remove that. 14:03
it's a MMD problem. TclInt + TclInt is returning a TclFloat 14:06
s/returning/converting to/?
Whiteknight weird
Coke it's really TclInt += TclInt; that's converting the TclInt to a Float.
Whiteknight MMD is one of those systems that I haven't gotten my grubby paws into yet
Coke I blame bacek. =-) 14:07
seems to work with core parrot types. 14:08
sadly, since this involves PMCs, making a test case becomes less trivial. 14:11
Infinoid most of what I know about MMD is to avoid it wherever possible 14:13
Coke code.google.com/p/partcl/issues/detail?id=81, if anyone can help me whittle that down to a parrot test case, awesome. 14:15
14:18 Andrey_Grehov joined
Andrey_Grehov hi guys, I was trying to `make` parrot and got this error, any ideas ? pastebin.com/d37fd3e27 14:20
Infinoid Integer.i_add(PMC*) doesn't recognise the base_type from TclInt, so it calls VTABLE_set_number_native() as a generic fallback (because it can't know whether the second PMC has a decimal component, and doesn't want to reduce precision. 14:21
unfortunately, TclInt inherits from TclObject, and TclObject's set_number_native() automatically morphs to TclFloat.
Whiteknight Andrey_Grehov, that's a very interesting error 14:22
Infinoid Coke: So that's why you're getting that behavior
Coke Infinoid: "this used to work"
Whiteknight what platform are you on?
Andrey_Grehov (gcc version 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9))
Infinoid hmm... 14:23
Infinoid appends a ")" to one of his lines above
Coke Infinoid: I also extend inInteger.
"Integer"
did MMD and multiple inheritence recently change/break?
Infinoid Reversing the order of those "extends" lines might make a difference
pmichaud Coke: fsvo "recently" 14:24
although I don't know about multiple inheritance
Infinoid Integer.set_number_native seems to do the right thing, so if you can somehow convince it to call that instead of TclObject.set_number_native without breaking everything else, it should be progress 14:25
Coke if I reverse the lines, I get TclInt+=TclInt morphing to /Float/, not TclFloat, which is even worse. :|
Infinoid oh, I was wrong 14:26
Coke "stable for HLL developers my shiny metal ass."
Infinoid Did this work in 1.0?
particle1 partcl didn't work with parrot 1.0
so it is stable :P
wayland76 purl, remember, dead is stable 14:27
purl OK, wayland76.
wayland76 purl, dead
purl "God is dead." - Nietzsche "Nietzsche is dead." - God
Coke parrot broke so much for partcl since 0.9 I am just now (post 1.2) getting it working again.
Infinoid Coke: Okay. Next idea, implement i_add method in TclInt and add a switchcase so it recognises TclInt PMCs
14:27 NotFound joined
Coke but I think this points out that bacek's change is probably not safe to go in without a deprecation warning. :| 14:28
Infinoid ...or just call SUPER() for everything other than TclInts
I'm not so sure bacek's change was the cause of this. He consolidated the previous MMD stuff, but did the behavior actually change?
Coke I'd have to bisect, which I can't do without a minimal test case, since parrot and partcl didn't work together for 3 or so revisions. =-) 14:30
wayland76 'night all, and thanks :)
pmichaud afaik, there are still quite a few unresolved issues from the mmd changes that occurred in the past few months
do an RT search for "parrot mmd" and look for the open tickets.
Infinoid iiuc, all he did was move the type-switching logic out of MMD and into actual switch() statements
Coke Infinoid: did he test with HLLs? multiple inheritence? it's possible that MMD was handling a case that his simple switch fails at. 14:31
<shrug> i'll see if I can provide a test case, but it's just a PITA, is all.
s/he/the parrot test suite/ 14:32
</vent>
Infinoid I tested it with rakudo
so I know he was at least *aware* of the failures :) 14:33
nopaste "Infinoid" at 24.182.55.77 pasted "I think TclInt needs this vtable" (13 lines) at nopaste.snit.ch/16685
Andrey_Grehov Whiteknight: any ideas why that can happen ?
Coke hurm. my $Id$ strings are still reflecting parrot. whoops. 14:34
Infinoid: EW.
Infinoid Coke: please try my above nopaste, but I don't understand dynpmcs very well, so the enum_class_TclInt may need to be replaced with something more dynamic.
Coke I don't want to hardcode every single kind of integer out there. =-) 14:37
and, as you noted, enum_class_TclInt doesn't work.
Infinoid Integer assumes you've given it a float unless it recognises the type as an integer
Coke then Integer's integer recognition is wrong.
Infinoid Patches welcome. 14:38
purl rumour has it patches welcome is ponies welcome or Set Objectives, Achieve Results! or swahili for "Put up or shut up."
Infinoid I don't know of a better way, but I'm certainly open to suggestion
trac.parrot.org/parrot/browser/tru...r.pmc#L428 is the current way 14:39
Is this something that would work as a role? 14:42
14:42 Theory joined
Infinoid ah, I guess the right value is dynpmc_TclInt 14:44
Whiteknight NotFound: ping 14:45
NotFound pong
Whiteknight NotFound: Infinoid are doing some refactoring in the IO subsystem that will probably mix nicely with your work on StringHandle 14:46
trac.parrot.org/parrot/wiki/IOTasklist and the "io_rewiring" branch
NotFound I was just reading fperrad message abou Lua using StringHandle 14:47
dalek TT #713 created by coke++: Too little MMD? i_add doesn't know about subclasses.
Coke Infinoid: there. my suggest is to revert that commit. =-)
"suggestion"
Whiteknight We're trying to refactor out the PCCINVOKE calls from the IO system, and use inheritance to group IO PMCs 14:48
Infinoid Coke: Does reverting it locally have an effect on partcl?
NotFound Whiteknight: using vtable functions instead of methods? 14:49
Whiteknight NotFound: VTABLEs are too limiting for this, probably poking at the Parrot_*_attributes structures directly
we're going to try it, don't know if it will work out. We have high hopes! 14:50
Infinoid Coke: Also, this was cotto's r38000, bacek's tt452_reduce_mmd branch hasn't hit trunk yet
NotFound Whiteknight: and what attribute type can be used to the handlers?
pmichaud I wonder to what degree TT #713 is related to RT #60036
Infinoid Coke: But if we find a better way of resolving types for one, we should review the other as well 14:51
pmichaud I should note that Rakudo's "solution" to the mmd issues with the inplace opcodes has been to avoid them altogether. 14:52
NotFound Whiteknight: the problem I'm looking now is that the StringHande has no mean for setting or getting the string other than read or write. So you need to always open for rw or reopen... or just ignore the mode as the current status does. 14:53
Coke Infinoid: Yes, reverting r38000 (which was integer only) fixes the partcl bug. 14:55
NotFound Solving that anomaly may simplify testing of any refactor.
Coke Infinoid: documented confirmation on 713. 14:56
pmichaud: do you create a new pmc and then copy it over the old one? 15:00
I'll use whatever the /right/ solution is. that just seems to change too often to keep up. =-)
pmichaud Coke: yes, that's what we effectively do. 15:03
I don't know that that's the "right" solution, but it's the only reliable one at the moment.
Whiteknight NotFound: okay, that makes good sense
NotFound Whiteknight: using methods can be the safer way for a now, to leave vtable clean in case we want to use it for generic handles 15:05
dalek rtcl: r372 | coke++ | wiki/ParrotIssues.wiki:
another parrot bug
15:05 exec-kula joined
NotFound So I plan to add get_string and set_string methods, and fix examples, test and Lua to use them before any other change. 15:06
Coke with that patch to parrot, down to 11 errors.
Whiteknight in the refactor, I'm planning to use roles like "read" and "write" to determine behavior
so your StringHandle will always return true for "does 'read'" or "does 'write'"
and then you don't need to open it specially 15:07
Coke (6 of which will go away when auto-loading of commands written in tcl works again.)
NotFound I don't think that is a good idea. Allowing writing in a StringHandle intended only for reading is a source of difficult to catch bugs. 15:08
awoooe Question: Does Parrot have VM services to handle network stuff?
jonathan awoooe: It has socket support.
awoooe jonathan: thanks 15:09
NotFound Whiteknight: but we can make rw the default, if we find that is the most common usage. 15:10
Whiteknight NotFound, the default rw works too. Whatever you think is best 15:11
NotFound The current examples seems to like rw, but this is just beacuse of not having other way to get the result after writing on it. 15:12
Whiteknight right
jonathan awoooe: I think there's some examples of it in the examples directory.
Whiteknight NotFound, we could use add_role and remove_role to change it's behavior without having to close/open it 15:13
dalek kudo: 5e132db | moritz++ | lib/Safe.pm:
crude initial safe mode
awoooe jonathan: Is there a list of what the win32 binary variant *doesn't* have? 15:14
jonathan awoooe: Not quite sure I follow - you mean what isn't included in the Win32 Parrot binary package on SourceForge? 15:15
If so I guess check its wiki...but I think the script used to produce the binary is also there. 15:16
awoooe Well no, it's not that, but it just doesn't have examples or anything and I'm not really 100% sure how parrot is setup yet. I mean if only abc, befunge and squaak are setup by default that's fine and I have to figure out how everything else is working, but if the *nix setup has more stuff and it's stripped out I have to fill in the gaps. 15:18
15:20 donaldh joined
NotFound awoooe: there is no *nix setup. Any binary package is a thing under control of the people that creates that package. 15:20
awoooe NotFound: I meant the svn co /config/make chain by that setup 15:22
NotFound awoooe: the parrot svn repository now doesn't have a buch of languages. Most migrated to their own homes. 15:24
awoooe Ok thanks 15:25
dalek kudo: b6640c2 | moritz++ | lib/Safe.pm:
[Safe.pm] remove debugging statement; add documentation
15:30
15:32 Andrey_Grehov left
Infinoid Whiteknight: None of the packfile* tests pass in the io_rewiring branch, is that expected? 15:37
nopaste "infinoid" at 65.18.171.17 pasted "[PATCH] TT #713: try to be a little smarter about Integer subclasses" (42 lines) at nopaste.snit.ch/16686
Whiteknight Infinoid: I can't imagine it's expected, but I haven't run any tests yet 15:39
Have to double-check all the packfile stuff to make sure FileHandle.freeze() isn't being borked by these changes
Coke Infinoid: trying now. 15:40
dalek rrot: r39196 | whiteknight++ | branches/io_rewiring/src/pmc (2 files):
[io_rewiring] add a prototype does() vtable for FileHandle
Infinoid I'm out of parrot tuits for today, I didn't manage to get any nifty I/O stuff done :(
bye all &
Whiteknight Don't worry about it, we have plenty of time
later
Whiteknight out to lunch
Coke Infinoid: ping! 15:41
Coke updates the ticket. (Infinoid++'s patch works) 15:43
16:05 darbelo joined 16:17 iblechbot joined
Coke finds YA BUg. 16:20
dalek TT #714 created by coke++: can't copy undef to null
rtcl: r373 | coke++ | wiki/ParrotIssues.wiki:
Edited wiki page through web user interface.
16:23
Whiteknight Coke: TT # 714 is nonsensical. an error message is what it should do 16:32
Coke again, "this code used to work."
Whiteknight then it was working mistakenly, and should not have been working
Coke what is nonsensical about it?
Whiteknight you can only copy a PMC to existing storage. No storage, no copy 16:33
16:33 dukeleto joined
Coke PMCNULL has storage, no? 16:33
Whiteknight not in the normal sense, it's a singleton
and you don't want to be overwriting that for the entire Parrot core
NotFound Coke: PMCNULL is just a NULL on steroids.
Coke no, but THIS USED TO WORK. =-)
Austin_Hastings Copy-on-write? 16:34
purl it has been said that Copy-on-write is difficult to force..
NotFound Is a NULL that can catch bad usages and throw nicely.
Whiteknight Coke: again, should not have worked
Coke Whiteknight: Patches Welcome for partcl.
Whiteknight I'm happy to help you work around it, but I can't think of a sane way to make it do what you think it should do 16:35
maybe sombody more knowledgable then myself has a better answer 16:36
Coke wow, svn-bisect has horked my checkout dir.
NotFound First argument of copy is inout, so it looks like it can be made to work. 16:38
Coke "again"
16:39 flh joined
NotFound If we decide to make it work, we must definitely add a test for it. 16:40
Coke bah. going back so far, languages/ just re-appeared. 16:43
NotFound And if not, we must also a test. 16:45
Whiteknight I really don't like this copy opcode 16:46
Coke neither did chromatic, as I recall, and he wrote it. 16:47
NotFound Whiteknight: I'm looking at it, and the memmove smell bad to me.
Whiteknight I'm convinced it's borking up handling of pmc_ext
and it obviously doesn't support null properly
Coke NOW. 16:48
sorry to keep harping on that. :|
Whiteknight Coke: did it "work" previously, or did it just not fail like this?
because there's a difference between it being essentially a no-op, and it being a failure condition
Coke "make test" passed. 16:49
now it don't.
NotFound Making it a no-op might be a good solution.
Coke So it may very well have been a do nothing in my case before. I can't tell you without finding the version where it used to work.
Whiteknight I don't know that this particular use-case ever "worked" 16:50
awoooe Question: Is there an opcode for spawn but don't wait?
Whiteknight where "worked" means something different from "just didn't fail"
urg, this is a pain. I'm going to have to make a branch to get this fixed 16:56
need to edit too many functions in too many files
awoooe: like a fork?
awoooe Whiteknight: yeah. I want to be able to call a proc without blocking and just pass through. 16:58
Whiteknight awoooe: We do have pipes now, but I don't think we have a non-blocking stand-alone spawn 16:59
awoooe This makes me sad. :(
NotFound awoooe: Why do you need that? Maybe there's a easy workaround 17:00
Whiteknight it's probably a feature we need to add eventually
awoooe NotFound: the particular case I want to do is to have my program running on the VM to open a ssh tunnel to a remote server 17:01
NotFound awoooe: What OS?
awoooe so ssh somehost.org using a cert -L5900:127.0.0.1:5900
Win32 hopefully
(so techinically plink, but same thing) 17:02
17:03 davidfetter joined
Coke wonders where the karma is. 17:05
awoooe I mean in theory I can embed it but I would rather hook it up via PIR or a language on top of PIR instead of embedding it in an executable and dealing with writing a config manager. I don't know, it just seems roundabout that way. 17:06
NotFound Mmmm... I don't know if there is a windows equivalent of the setsid command
Coke moritz: I am having the same trouble with tcl against parrot head.
(and I'm not using PCT at all.)
moritz Coke: which troubles?
dalek rtcl: r374 | coke++ | trunk/runtime/builtin/array.pir:
Whiteknight++ points out it doesn't make sense to try to replace a Null
17:07
rtcl: r375 | coke++ | wiki/ParrotIssues.wiki:
avoided a not-quite-a-bug.
Coke moritz: perl#66050
hit ^D, it's just like hitting enter.
I suspect something in IO changed recently.
moritz Coke: seems like 17:08
Coke exit doesn't work for me either.
awoooe There is a Win32 set pid function, I guess I could dll load it and strip it out all backwards but I don't know. It seems sort of roundaboutl
Coke oh.
which means it's probably not IO but exception handling.
moritz Coke: is exit a tcl function?
Coke moritz: yes. moment.
NotFound awoooe: I mean the setsid command, not the function
awoooe Then no. 17:09
Coke code.google.com/p/partcl/source/bro...n/exit.pir
line 26 is the important one. =-)
awoooe winders does not have proper command line handling of processes
Coke down to 10 failures in partcl, thanks to Whiteknight++'s suggestion.
awoooe which is why I am toying with the idea of having the VM shore up the weak points. 17:10
Whiteknight Don't thank me, I was being a curmudgeonly naysayer 17:11
NotFound awoooe: using the setsid command, or an equivalent, has the advantage that parrot doesn't need to take care of child processes hanging around. 17:12
awoooe NotFound: but what if I want to take care of child processes? 17:16
:(
NotFound awoooe: here lies the difficult: to implement want you want, we need a way to tell if we want to take care of them or not. 17:17
17:20 flh joined
Coke Whiteknight: it's my way of apologizing for getting pissed at the messenger. 17:20
awoooe I mean all I really want is spawn to pass through and continue running and give me a kill command and I'm happy. 17:21
Coke last failure seems to be namespace related.
[namespace children] used to return ::tcl ; now it seems to be returning lots of things under ::parrot.
17:22 HG` joined
NotFound I've tested two ways of copy to PMCNULL: doing a clone, and doing nothing. Both pass all test. 17:24
Coke NotFound: might make more sense to throw an error as WK suggests. 17:25
making null as infectious as it is elsewhere.
NotFound EXCEPTION_NULL_REG_ACCESS? 17:26
EXCEPTION_INVALID_OPERATION?
Coke probably the former.
purl i guess probably the former is good enough
NotFound EXCEPTION_UNEXPECTED_NULL?
Coke (whatever you get when you do something like null $P1; $P1 = 3)
at a aguess. 17:27
Any idea why I have a Codestring namespace in my HLL 'tcl' namespace? 17:28
ah. wonder if I need to update to use root_new. :|
NotFound NULL PMC vtable functions throws EXCEPTION_NULL_REG_ACCESS "Null PMC access in ...." 17:29
Coke ayup. 17:31
pmichaud: does that make sense to you? "new 'CodeString'" was infecting the top level 'tcl' namespace, but root_new doesn't. 17:32
(and <broken record> this didn't use to happen.)
Austin_Hastings I have a PCT question. 17:36
NotFound Coke: root_new has been introduced to clean up that things 17:37
Austin_Hastings In the current PGE/PCT system, I know you can pass parameters to rules, like <string_literal: X>
Coke NotFound: what things? =-)
Austin_Hastings Can you pass more than one parameter? If so, what's the syntax?
Coke will find the root_new thread and comment on it. :|
pmichaud Coke: yes. 17:38
NotFound Coke: infecting hll namespaces, doing inconsistent things, or broke code.
pmichaud Coke: using new 'CodeString' causes a new PMCProxy to be placed in the current HLL namespace
(which is bad)
so, the solution is to use root_new ['parrot';'CodeString'] instead 17:39
NotFound And hopefully, in future releases will not work.
pmichaud what is worse, when run from an HLL other than Parrot, "new 'CodeString'" creates a new PMCProxy object on each invocation
that's what caused Rakudo to become so slow. 17:40
(when it switched to its own HLL)
Coke pmichaud: It didn't use to do that. when did that behavior change?
pmichaud Coke: I suspect it has always done that.
NotFound The alternative was to always look for the PMC in the parrot namespace. root_new is a shorthand of that.
Coke pmichaud: again, no.
as with most of my other complaints today, "tcl used to work. now it doesn't." =-)
pmichaud Coke: then I don't know. There have been a number of "fixes" to Parrot_oo_get_class to try to get it to work properly with namespaces 17:41
most of them stemming from trying to use strings as class identifiers.
(passing parameters to rules) -- at present can only pass one parameter 17:42
and the parameter needs to be quoted
<string_literal: 'x'>
<string_literal: X> # works, but is deprecated
Austin_Hastings Okay, thanks. I'll split the param 17:43
NotFound Testing now throwing EXCEPTION_NULL_REG_ACCESS, "Null PMC in clone". I think is safe to commit it right now, anyone objects? 17:44
pmichaud if it passes tests, I see no problem :-)
Coke pmichaud: followed up to your root_new post. 17:47
dalek rrot: r39197 | NotFound++ | trunk/src/ops/set.ops:
[cage] cleaner fail when dest of the copy opcode is null, TT #714
17:49
Coke NotFound: should that error say "in clone" or "in copy" ? 17:50
NotFound Oooopsssss :-X
Coke NotFound++ 17:51
pmichaud Coke: making "new" work the way it used to is probably not a good idea.
$P0 = new "Integer" could mean something different depending on whether the HLL has defined its own Integer class 17:52
I agree that the existing creation of proxies in the HLL namespace is broken and needs fixing.
fixing that should correct the problems you're seeing with NCI, Sub, and MultiSub 17:53
Coke ok. I again posit that whenever we broke new (and before we said "root_new is the new new") we should have gone through a deprecation cycle. 17:55
but at this point will settle for a workaround.
s/workaround/something that works/ 17:56
dalek rrot: r39198 | NotFound++ | trunk/src/ops/set.ops:
[cage] fix a silly mistake in r39197
Coke I look forward to actually being to run partcl's test suite just before the 1.3 release. =-)
pmichaud it's completely valid to claim that 'new' is broken and should be fixed to work the way it did before
NotFound Coke: the deprecation cycle is the reason that it keeps creating proxys. If not, it just will fail.
pmichaud we aren't deprecating 'new' itself, nor has anyone made an intentional change
Coke NotFound: it did not used to fail. =-) 17:57
pmichaud 'new' still doesn't fail.
it just creates proxies where youdon't expect them.
Coke pmichaud: it fails to not cram stuff into my namespace.
where it did not used to do that.
NotFound Coke: I think still not fails, just does a bad work.
pmichaud okay, and that's not a desired feature
nobody is expecting new to do that
afaik, nobody wants new to do that
nor does anyone rely on new doing that
Coke ok. saying "it doesn't fail" is just wordsmithing.
NotFound I'm the Spanish Inquisition
pmichaud if you're saying "we should fix new", I'm 100% with you 17:58
NotFound But to fix it, we need the deprecation cycle
Coke hokay.
pmichaud if you're saying "we should fix new to work exactly like it did before", I need to know which "before" you're referring to
Coke NotFound: *THWAP*
pmichaud NotFound: do we?
NotFound: that would depend on when it broke, wouldn't it?
Coke I hope he's just funning with me.
NotFound pmichaud: I don't see any other reason for not making it fail now. 17:59
pmichaud NotFound: okay, that's a different "fix new" then
one fix would be to make sure that new 'Something' doesn't create PMCProxies in the HLL namespace
that would make it work like it did before
Coke yes, if the current broken behavior shipped in 1.0 (which is entirely possible), we need a deprecation notice. 18:00
pmichaud another fix would be to cause new 'Something' to fail completely
that definitely requires a deprecation notice
if creating PMCProxies in the HLL namespace is a behavior that was introduced after 1.0, then we can fix that without having to make a deprecation notice
because that shouldn't happen regardless
NotFound pmichaud: ah, yes, I forgot that possibility, but I don't think we want that. 18:01
pmichaud I do.
As Coke points out, there are places where we cannot easily switch to 'root_new', and where it's currently broken.
For example, Sub, MultiSub, and NCI.
The only way to fix those will be to fix the behavior of the existing PMCProxy creation so that it does them in the 'parrot' namespace.
and that is independent of whether or not new 'Something' fails from PIR. 18:02
Coke I'm glad pmichaud understood my bug report, as I'm just starting with "my test fails and it didn't used to." =-)
pmichaud It would be good to know at what point the Parrot behavior changed there. 18:04
NotFound Are we sure the behavior changed? Maybe just no one noticed the problem. 18:05
Coke NotFound: Let me repeat myself: "Tcl used to pass this test."
"it no longer does".
pmichaud Given what Coke says, I'm about 80% certain the behavior changed.
Coke so, yes, I'm fairly certain that some behavior has changed. this particular behavior looks pretty incriminating.
NotFound Ah, sorry, I thing I was mixing problems. 18:06
pmichaud I _know_ that there have been quite a few changes to proxypmc handling over the past 4 months.
18:06 japhb joined
Coke I do wish I had been able to keep up with all the parrot changes that occurred as 1.0 was getting prepped so these sorts of things could have been caught as they happened. 18:09
pmichaud Coke: if it makes you feel any better, keep in mind that I get to deal with changes on two fronts (both parrot and Perl 6) 18:10
18:10 contingencyplan joined
Coke pmichaud: nah. I've had to upgrade through six versions of tcl 8.5. =-) 18:12
I still have todo tests where I implemented something and they changed the spec on me. =-)
granted, they move a LOT slower than @Larry does.
pmichaud :-)
18:14 nixfreak joined
Coke so if that issue is fixed, it just leaves [auto_load] failing. 18:15
nixfreak are there any docs for compiling pyton on parrot ?
Coke pynie?
purl pynie is going to be nqp-ized as well
Coke no, pynie is code.google.com/p/pynie/ or a Python implementation for the Parrot virtual machine 18:16
purl okay, Coke.
nixfreak yeah I read that already
Coke just feeding the bot.
nixfreak can you run python on parrot yet 18:17
Coke nixfreak: code.google.com/p/pynie/source/brow...unk/README has docs on building pynie. not sure if they're up-to-date after the 1.0 parrot release.
pmichaud is listed as a maintainer, though; I'll defer to him; I haven't hacked on pynie at all. 18:18
pmichaud There have been a number of changes to pynie in the past couple of months, so I don't really know what its current status is. 18:19
I would expect it to be "perl Configure.pl; make" if it matches other languages
Coke nixfreak: at a guess, the lib/Test/parrot/*.py files passed at one point.
Austin_Hastings Is there a way to express if-then inside a rule?
nixfreak so do iI need to d/l pynie then , or does parrot already have a python compiler in it ? 18:20
Austin_Hastings I'm looking to say that if this pattern is true, this other pattern must match, else never mind.
NotFound pmichaud: last time I checked, it wasn't
Austin_Hastings It's not quite [ A B ]?
Coke parrot doesn't ship with python, no.
dalek rrot: r39199 | NotFound++ | trunk/t/op/copy.t:
[test] add a test for copy to null, TT #714
18:20 Theory_ joined
pmichaud Austin_Hastings: why isn't it [A B ]? 18:20
Austin_Hastings Because they can fail, and it doesn't have any effect. 18:21
nixfreak is parrot only used for perl6 and NQP at the moment ?
Austin_Hastings What I need is, "if A, then B is required. If not A, nevermind
pmichaud oh, I see
Coke nixfreak: no. there's a bunch of languages in various states of done-ness. moment. 18:22
pmichaud [ A [ B || <.fail> ] ]?
Austin_Hastings I think there is some talk about & in the grammar spec, but I don't know if it's there yet.
NotFound nixfreak: several languages used to be in the parrot repository. Now most of them migrated, you need to install them separately
Coke nixfreak: trac.parrot.org/parrot/wiki/Languages
Austin_Hastings Is || working ? 18:23
pmichaud Yes, it's | that doesn't quite work properly.
(The | fails to understand LTM)
currently | and || are identical in PGE
Austin_Hastings [ <?decl_mode_is: 'param'> [ <!before ')'> || <.fail> ] ]? 18:24
Coke yay, I can run partcl on osx again. 18:29
(still get a ton of linking issues, but they are not fatal now.) 18:30
pmichaud Coke: reply sent. 18:31
Coke already read. danke.
nixfreak looks like lua is being activly developed
Coke yes. lua is pretty much the poster child. 18:32
fperrad++
pmichaud: based on your comments in the email, the /right/ way to create a CodeString if you're not sure you're in the root NS is root_new ? 18:35
(and if root_new always works, why do we need new at all?) 18:37
(ignoring my proxy issues)
nixfreak It looks like pirate is still being developed
PIRATE TEST RESULTS last run: Wed May 27 08:00:41 EDT 2009 this file is generated daily from the latest versions of pirate and parrot. 18:38
18:39 iblechbot joined
NotFound nixfreak: that message just means that is actively tested 18:39
Coke pretty much everything is still "under development", yes.
oh, great, tcl 8.6 is in beta.
Coke sees an APL comment perl6-l and refrains. 18:40
nixfreak so why did all the languages get taken out of parrot
Coke packaging, encouraging development against stable releases of parrot, licensing, copyright... 18:42
NotFound 'Because the bosses said so' X-)
darbelo nixfreak: it also avoids bloating the parrot realeases with languages you don't care about. 18:45
nixfreak ok makes sense , is there going to be a "package manager" for parrot for installing other languages ?
pmichaud Coke: one could use root_new exclusively and avoid new altogether. However, 'new' is slightly faster.
Coke in all cases? wasn't root_new also a speed concern? 18:46
er, implemented because of speed concerns?
pmichaud root_new was a speed concern because 'new' was generating the extra PMCProxys
root_new itself is slower than 'new'
(slightly, but slower)
if 'new' hadn't been generating the extra PMCProxys, then speed likely wouldn't have been an issue. 18:47
Coke pmichaud: any chance you could convert the conversation on list to a closable trac ?
pmichaud probably multiple closable tracs, yes.
I need to build a test case for the incorrect PMCProxy creation
I'm about to do that but have a couple of other things that need doing first
that's an obvious trac
dalek rkdown: fb85fc4 | fperrad++ | config/makefiles/root.in:
[config] update variable name (doc_dir -> docdir)
18:49
l: 3db549f | fperrad++ | build/Makefile.in:
[config] update variable name (doc_dir -> docdir)
pmichaud nixfreak: (package manager) - in general, I think that we expect individual distributions (linux, bsd, windows, other) to handle packaging, instead of a parrot-specific package manager. 18:50
dalek a: 1a2aa57 | fperrad++ | config/makefiles/root.in:
[config] update variable name (doc_dir -> docdir)
lscript: 6fdee41 | fperrad++ | config/makefiles/root.in:
[config] update variable name (doc_dir -> docdir)
nixfreak I was just curious , just trying to learn more about parrot , I really think the vm is going to take off and I hope it works out better then mono /.NET / jvm 18:51
Whiteknight nixfreak: we hope so too!
nixfreak and its all open that's the best of it all 18:54
Tene pmichaud: you recommended storing exported symbols for the 'parrot' compiler internal to the compiler... how would you like that indexed? join the namespace keys with ';' and put stuff in a hash?
19:20 donaldh joined
pmichaud Tene: joining namespace keys with ';' -- No. 19:26
I'm really against string representations of namespaces/classes unless/until there's a definitive separator.
for the 'parrot' compiler itself, I wouldn't be against following the way rakudo/Perl 6 is managing its exported symbols (as custom namespaces) 19:27
but I don't know if other parrot libraries will like that.
I'm in the process of refactoring 'use' and 'import' in Rakudo today -- perhaps I'll have some better ideas when I complete that.
Tene pmichaud: I wanted to store them in the namespace like rakudo does, but you suggested using an internal hash instead. I was asking for more details on how you imagined I'd do that. I don't like the stringification either. :) 19:29
I'll wait for your refactors.
pmichaud my apologies -- I misunderstood what you were asking before
for the generic HLLCompiler interface, I think it should not rely on namespaces
but for the 'parrot' HLLCompiler, namespaces would be okay with me. 19:30
Tene OK
19:34 ZuLuuuuuu joined 19:42 davidfetter joined
pmichaud phone 20:00
20:07 Austin_Hastings left 20:45 rdice joined 20:46 bacek joined 21:09 comet joined
afk_coke oh, hay, that's 2 things I missed this week. 21:10
pmichaud Coke: as a useful data point -- whatever happened to cause the PMCProxy objects to start showing up in the HLL namespace has happened since 1.0.0 (i.e., it wasn't occurring in 1.0.0 itself) 21:12
which means we can fix it without a deprecation cycle.
Indeed, it means we would officially need a deprecation cycle to keep the incorrect behavior.
(which we don't want)
NotFound Coke: do you want a partcl patch with a lot of new -> root_new changes? 21:13
21:14 szbalint left
NotFound BTW, the creator of the Sub, MultiSub and NCI proxies is the isa_s opcode. 21:14
isa calls Parrot_oo_get_class_str 21:15
pmichaud oh!
in that case, those need to be changed.
the correct way to test 'isa' would be
$P0 = get_root_namespace ['parrot';'Sub'] 21:16
$I0 = isa $P1, $P0
21:17 szbalint joined
NotFound Sorry, I don't explain well. The calls to VTABLE_isa are. 21:17
And they are done from C.
pmichaud I'm not seeing that. 21:18
(from my PIR code)
NotFound src/pmc/namespace.pmc line 250 21:20
pmichaud I'm still not able to get it to fail. 21:23
NotFound In this function checks with VTABLE_isa the three offenders: Sub, MultiSub and NCI
The fail is the namespace test in partcl
pmichaud I've got another small test that should fail if that's the culprit. 21:24
NotFound Let me see it
nopaste "pmichaud" at 72.181.176.220 pasted "test for pmcproxy creation via vtable_isa" (23 lines) at nopaste.snit.ch/16692 21:25
bacek morning, good morning
nopaste "pmichaud" at 72.181.176.220 pasted "example of incorrect pmcproxy creation" (13 lines) at nopaste.snit.ch/16693 21:26
mj41 TapTinder is back online with 32bit FreeBSD and Linux (on VMWare) ... tt.ro.vutbr.cz/ 21:30
night, good night 21:31
Coke NotFound: Sure, patches welcome. I'll even give you commit bits if you want.
pmichaud afaict, the NameSpace PMC inherits VTABLE_isa from Hash.pmc, which inherits it from default.pmc
and VTABLE_isa in default.pmc doesn't call Parrot_oo_get_class_str, afaict
21:31 Whiteknight joined
NotFound pmichaud id isa in the Class PMC 21:32
s/id/is
21:33 skids joined
pmichaud oh yes, because it's from value 21:33
which would be a Sub in this case
NotFound I don't know why this examples don't fail, but when I tweaked it to avoid creating Sub proxies, worked fine.
pmichaud I can get one that fails.
Just a sec.
bingo 21:34
nopasting.
21:34 nixfreak left
nopaste "pmichaud" at 72.181.176.220 pasted "example of incorrect pmcproxy creation" (15 lines) at nopaste.snit.ch/16694 21:35
pmichaud so, the real problem seems to be VTABLE_isa in the class.pmc
NotFound That depends. If we avoid to call isa 'Sub' from namespace, maybe the problem disappears without touching class. 21:36
pmichaud no, that's not it.
more nopastes coming.
nopaste "pmichaud" at 72.181.176.220 pasted "worked correctly in 1.0.0" (24 lines) at nopaste.snit.ch/16695
"pmichaud" at 72.181.176.220 pasted "another failure in trunk, not involving the NameSpace PMC" (14 lines) at nopaste.snit.ch/16696 21:37
pmichaud the problem isn't the NameSpace PMC 21:38
(as nopaste #16696 demonstrates)
the *real* problem is that Parrot_oo_get_class_str builds PMCProxy objects in namespaces it has no business doing so. 21:39
NotFound Yes, looks like that is the main problem
pmichaud making a ticket for it. 21:42
nopaste "NotFound" at 213.96.228.50 pasted "parctl root_new patch" (1133 lines) at nopaste.snit.ch/16697 21:43
NotFound Coke: here is 21:44
Coke NotFound: testing... 21:52
21:55 kesselhaus joined
kesselhaus hi, does someone here maintain SF net packages? 21:56
Coke do you mean 'parrotwin32' ? 21:57
kesselhaus: do you mean 'parrotwin32' ?
kesselhaus actually, setup-parrot-1.2.0-rakudo-17.exe 21:58
SF net says, there is none available
pmichaud Coke: TT #715 should be your friend, if someone will address it :-) 22:00
afk # dinner
NotFound pmichaud: I'm checkin a dirty quick fix
pmichaud I really worry about the "dirty quick fix"es 22:01
I suspect it's a "dirty quick fix" that led to this problem in the first place.
NotFound I can clean it after testing, I hope ;) 22:02
dalek TT #715 created by pmichaud++: [bug] various operations create (incorrect) PMCProxy objects in HLL ...
rrot: r39200 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Fall to MMD in default case of Integer.i_op.
22:13
rrot: r39201 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Refactor Integer.i_divide to the same style as other i_op methods.
22:15 wayland76 joined
kesselhaus pmichaud: its not in parrot-1.1.0 22:18
NotFound With my previous partcl patch and the quick fix, partcl namespace tests pass 22:20
kesselhaus took the code from TT#715 -> codepad.org/CWLW3618 22:21
pmichaud kesselhaus: the bug isn't in parrot-1.1.0 ? 22:22
kesselhaus seems like it
purl seems like it is, like, creating a conflict somewhere, which then creates a requires condition
pmichaud okay, that's good to know.
nopaste "NotFound" at 213.96.228.50 pasted "Testing quick fix for TT #715" (31 lines) at nopaste.snit.ch/16698
pmichaud NotFound: that patch *has* to be wrong. 22:24
oh wait, maybe not.
looking.
NotFound Maybe the universe is wrong ;) 22:25
pmichaud yes, it looks wrong to me.
kesselhaus pmichaud: how would you proceed to find it? go backwards from 1.2.0 in the patchlist, until you find the causing patch? ;)
NotFound kesselhaus: bisection is usually faster than going 1 by 1
dalek kudo: 5ac642b | masak++ | src/setting/Any-str.pm:
[setting/Any-str.pm] implemented the .bytes method
22:26
pmichaud kesselhaus: I might look at commits that affected src/oo.c, though
since that's where the problem likely lies. 22:27
Coke NotFound: that reduces the leakage in my namespace tests to sub/multisub/nci (your patch for partcl) 22:28
NotFound pmichaud: coretest pass
Coke: same here 22:29
Coke NotFound++
(applied)
Seriously, if you want commit bits...
NotFound Coke: I'll tell you tomorrow, now I'm tired
dalek rtcl: r376 | coke++ | trunk/ (39 files):
Switch to using root_new where applicable.
22:30 rg joined 22:32 kid51 joined
wayland76 purl: ping 22:35
purl wayland76: huh?
pmichaud NotFound: I'll give you the test case where your patch fails... just a sec 22:43
but the biggest problem is that it *still* wants to create PMCProxy's in the HLL namespace. 22:44
oh, wait
NotFound pmichaud: the intention is to look for it and create in the PMC namespace 22:45
The code is not clean, I reused variable names. 22:46
The HLL namespace of the PMC, I mean 22:47
pmichaud Yes, I see that now.
I overlooked the line
hll_ns = interp->vtables[type]->_namespace;
okay, the patch looks pretty good to me now. 22:52
NotFound Needs cleaning and comenting, but I must go to bed now 22:53
Feel free to clean and apply if you want. 22:54
'night
Whiteknight the "does" vtable gives me carte blanche to abuse the english language 22:57
dalek rrot: r39202 | whiteknight++ | branches/io_rewiring/src/pmc/handle.pmc:
[io_rewiring] a few fixes, and handles now does 'IO'
23:00
rrot: r39203 | whiteknight++ | branches/io_rewiring/src/pmc/socket.pmc:
[io_rewiring] socket now does socket
23:03
23:06 cognominal joined
darbelo OpenBSD/amd64 is tickling the gc again. 23:16
23:16 tetragon joined
darbelo I got failures in several places (that move arround from a commit to the next) caused by segfaults in mark_special() 23:17
23:20 donaldh joined
nopaste "darbelo" at 200.49.154.172 pasted "Backtrace of OpenBSD/amd64 t/pmc/sub.t failure" (92 lines) at nopaste.snit.ch/16699 23:21
kid51 Am I correct in thinking that Smolder is working again? smolder.plusthree.com/app/public_pr..._reports/8 23:30
dalek rrot: r39204 | bacek++ | branches/tt452_reduce_mmd/src/pmc/integer.pmc:
[pmc] Reuse dest PMC in Integer ariphmetic ops.
23:36
rrot: r39205 | bacek++ | branches/tt452_reduce_mmd/src/pmc/scalar.pmc:
[pmc] Reuse dest if possible in Scalar ops.
cnum-dynpmcs: r66 | darbelo++ | trunk/build/Makefile.in:
Update DOCDIR in the Makefile.
23:47
23:57 patspam joined