www.parrotcode.org/ | Last release: 0.7.1 "Manu Aloha"
Set by moderator on 17 September 2008.
GeJ on my FreeBSD box, config's only looking in /usr/include/ so no gdbm or opengl for me. 00:00
unless I missed something obvious.
particle GeJ: perl Configure.pl --verbose is a firehose, but piped to a file and using ack may help without getting you wet 00:06
GeJ did that already (actually --verbose=2) 00:09
00:10 AndyA joined
GeJ test_72058.c:6:18: error: gdbm.h: No such file or directory 00:11
I wonder if cheating with CCFLAGS would do. 00:12
particle i'm not sure that's cheating, actually
that may be the right way. i'm too distracted to really look into it, though :( 00:13
GeJ adding -I/usr/include -I/usr/local/include to CCFLAGS and building 00:14
has_gdbm => '1', 00:16
*shiny*
00:17 Theory joined
GeJ Ah, probably not the smartest thing to do after all. Parrot won't build 00:20
00:41 bacek joined 00:51 Whiteknight joined
kid51 GeJ: If our smoke/smolder reports are to be believed, we've generally had very good results getting Parrot to build on FreeBSD. 00:57
And that, notwithstanding the fact that we don't really have a 'maintainer' on FreeBSD.
And I'm not sure which of the core developers, if any, work on *BSD (other than Darwin) as their *first* platform. 00:58
by any chance, are you concerned with finding libraries installed by the ports system?
Smolder report suggests that r31216 may be causing a failure in t/stm/runtime.t. 01:10
smolder.plusthree.com/app/public_pr...tails/5532
GeJ having a look at it 01:16
right now, parrot won't build successfully. (or is it my CCFLGS change that borks it?) I'll check. 01:18
kid51 Hmm. I couldn't reproduce that t/stm/runtime.t failure on my Linux VM. 01:19
01:23 jq joined
GeJ ./parrot -o runtime/parrot/library/Math/Random/mt19937ar.pbc runtime/parrot/library/Math/Random/mt19937ar.pir 01:24
error:imcc:get_codesize: non instruction with size found
01:26 grim_fandango joined
GeJ I modified get_codesize in compilers/imcc/pbc.c to show the instruction's line for this error. 01:37
result is : error:imcc:get_codesize: non instruction with size found: ins#4 line: 79
the line in runtime/parrot/library/Math/Random/mt19937ar.pir is : 01:38
seed &= 0xffffffff
s1n pmichaud: still working on the release? 01:41
japhb s1n: release happened yesterday, assuming you are speaking of September's release 01:45
s1n japhb: i am, guess i missed the notice out on the intertubes 01:47
cotto_work and in the topic 01:50
02:02 davidfetter joined
GeJ 0.7.0 builds fine 02:13
02:22 bacek joined
GeJ r31160 builds ok 02:26
02:32 mberends joined
Tene purl: nopaste 02:38
purl 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/
GeJ Ha! 02:47
r31200 breaks on FreeBSD
cotto_home crap. that's one of mine 02:49
GeJ yup, sorry :( 02:50
cotto_home how does it break?
GeJ The good news is that 0.7.1 is good.
cotto_home and 0.8.0 can be too if you tell me how 31200 broke. ;) 02:51
I thought that was about as innocuous as a fix could get. 02:52
I can't take the suspense. 02:54
nopaste "GeJ" at 202.22.227.235 pasted "Build failure encountered on FreeBSD 7.1-PRERELEASE (as of Sept. 17) since r31200" (31 lines) at nopaste.snit.ch/14096 02:55
GeJ sorry, I wanted to make it meaningful.
my C-fu sucks. It's already a miracle that I got the line. 02:56
cotto_home and it works with 31198? 02:57
GeJ yup, well trunk:r31199 built OK. I assume 31198 would too 02:59
cotto_home sounds like a safe assumption 03:00
did you make sure to do make realclean before testing? 03:01
GeJ every time, yes. 03:02
cotto_home which version of gcc?
purl which version of gcc is it
cotto_home no, which version of gcc is <reply>
purl okay, cotto_home.
GeJ gcc version 4.2.1 20070719 [FreeBSD]
cotto_home that's nothing odd 03:03
dalek r31217 | coke++ | trunk:
: [tcl] todo more spec tests instead of skipping them.
diff: www.parrotvm.org/svn/parrot/revision?rev=31217
cotto_home GeJ, thanks for reporting and getting the output of the failure. 03:04
I'm going to have to puzzle over it for a while. 03:05
GeJ++
GeJ well, I should be here for a while. Probably not keeping an eye on the channel at all time, but I'll check from time to time if I can be of any help. 03:07
03:08 bacek_ joined
cotto_home ok. I'll most likely set up a FreeBSD 7.1 VM at work to try to reproduce the problem. 03:09
Is there anything special about your setup I should know?
GeJ i386, 7-STABLE source retrieved yesterday. Rebuilt all my ports. 03:10
nopaste "GeJ" at 202.22.227.235 pasted "my build script" (16 lines) at nopaste.snit.ch/14097 03:13
dalek r31218 | tene++ | trunk: 03:36
: Merge exceptionmagic branch into trunk.
diff: www.parrotvm.org/svn/parrot/revision?rev=31218
r31219 | tene++ | trunk:
: Looks like I forgot to update a doc in the exceptions branch.
diff: www.parrotvm.org/svn/parrot/revision?rev=31219
03:40 tetragon joined 04:04 grim_fandango joined
dalek r31220 | robert++ | trunk: 04:08
: Replace dead link with wayback machine
diff: www.parrotvm.org/svn/parrot/revision?rev=31220
05:48 johbar joined 06:04 purl joined, uniejo joined
cotto_home GeJ, ping 06:06
can you get the same error running ./parrot runtime/parrot/library/Math/Random/mt19937ar.pir 06:07
06:13 Ontolog joined 06:22 baest joined 07:31 Debolaz joined 07:44 iblechbot joined
dalek r31221 | fperrad++ | trunk: 08:08
: [RELEASE]
: update LANGUAGES_STATUS.pod (18) from languages-smoke results
diff: www.parrotvm.org/svn/parrot/revision?rev=31221
r31222 | fperrad++ | trunk: 08:12
: [RELEASE]
: update LANGUAGES_STATUS.pod (8) from manual tests
diff: www.parrotvm.org/svn/parrot/revision?rev=31222
08:23 barney joined 08:39 Zaba joined
Zaba Failed Test Stat Wstat Total Fail List of Failed 08:42
------------------------------------------------------------------------------- 08:43
t/native_pbc/header.t 1 256 9 1 2
brb
dalek r31223 | tene++ | trunk: 08:48
: Revert my previous exceptions commit. It was wrong.
diff: www.parrotvm.org/svn/parrot/revision?rev=31223
09:18 Ontolog joined
jonathan ahojte 09:28
erm, hi all :-)
Tene Hi Jonathan. :) 09:29
moritz hi 09:32
Ontolog jonathan++ 09:34
any idea on the match mail i sent?
jonathan Ontolog: Not got to it yet - will take a look. 09:35
09:36 Ademan joined
jonathan Ontolog: Interesting... :-) 09:44
I wonder if there is a modifier to stop that...
Ontolog also, there is an impl of match in any-str.pir but that impl returns a Match object. Shouldn't Str.match(/rx) return a List of Str's or in case of having capture groups, a list of Match's? 09:48
dalek r31224 | kjs++ | trunk: 09:50
: [book] yacc should be spelled at least with a first capital (possibly all), and Yacc/Bison use a bottom-up algorithm, not top-down.
diff: www.parrotvm.org/svn/parrot/revision?rev=31224
jonathan No, it should return the Match object.
Match object contains all of the captures.
09:51 kj joined
Ontolog where in the spec does it say this? 09:52
if you take a look at S29, comb 09:53
it says a couple of things. $string.comb(/pat/, $n) is equivalent to $string.match(rx:global:x(0..$n):c/pat/)
and, If there are captures in the pattern, a list of Match objects (one per match) is returned instead of strings.
implying that if there are no captures in the pattern a list of strings is returned 09:54
jonathan Hmm...I was expecting S05 to clarify that. 09:57
But it doesn't appear to mention .comb...
Agree that this makes sense for comb. For match, I'm not so sure. 10:00
I think pmichaud is the right person to run this by - he knows the regex bits much better than I. 10:01
Ontolog ok well hopefully he'll see the mail... just intuitively i would expect $string.match(/pat/) to return a list of strings, and that's also the way it's written in S29 but I see see that in S05 "A match always returns a Match object..." 10:02
actually I'm not sure I mailed on this point haha 10:03
my mail was about another aspect of match... i'll send another mail about this seeming conflict in the docs
jonathan OK, sounds good. 10:04
I don't see anywhere, an explicit mention of what Match should do.
10:10 masak joined, GeJ_ joined 10:12 Themeruta joined, sjn_ joined 10:14 MagNET joined, uniejo joined 10:15 nopaste joined, kj joined, PacoLinux joined, pjcj joined, Zaba joined, jonathan joined, leo joined, Maddingue joined 10:19 bacek joined 10:21 Zaba joined
dalek r31225 | jonathan++ | trunk: 10:29
: [rakudo] Handle the case where a fractional part of a number contains underscores; PIR doesn't allow this, so just whip 'em out. Resolves RT#58998.
diff: www.parrotvm.org/svn/parrot/revision?rev=31225
10:37 TiMBuS joined
Zaba hm 10:39
spectest_regression gives a lot of Use of uninitialized value's 10:40
jonathan Zaba: Yes, some clean-up work required in the tests, I believe. 10:41
10:47 Zaba joined
dalek r31226 | jonathan++ | trunk: 10:47
: [rakudo] Make use happen at BEGIN time. This lets us use modules that contain classes. However, we still have various issues to follow up on with this (for example, making it work when you use a module that does a use itself, which gives very odd errors at the moment, and making this play well when a pre-compiled module does a use).
diff: www.parrotvm.org/svn/parrot/revision?rev=31226
bacek g'localtime everyone 10:53
hi purl ;)
10:54 Whiteknight joined
nopaste "bacek" at 114.73.60.162 pasted "Test.pm patch to avoid "Use of unitialized values" messages (for moritz/pmichaud/jonathan for review)" (23 lines) at nopaste.snit.ch/14103 11:10
dalek r31227 | jonathan++ | trunk: 11:12
: [rakudo] Sort out keys, values and kv on mappings (and thus hashes) by exporting them, as we do for List. Gets us passing another 8 TODO'd spectests.
diff: www.parrotvm.org/svn/parrot/revision?rev=31227
11:14 bacek joined
jonathan bacek: That Test.pm patch looks quite sane - I'd like at least someone else to agree with me on that before it goes in, though. :-) 11:15
bacek jonathan: just ping moritz. Even if pmichaud disagree we will 2-to-1 ration :) 11:16
will have 11:17
jonathan ;)
bacek ouch... My English is very bad today... 11:18
hmm... still got "Use unitilized warning"... 11:21
jonathan The same amount? I'd expect that chnage to maybe fix some of them. 11:23
But not all of them.
purl not all of them are modifying my brain
jonathan Some will want changes in test files themselves.
bacek much less 11:25
jonathan OK, much less is good. :-) 11:29
11:38 iblechbot joined 11:43 Ontolog joined
dalek r31228 | jonathan++ | trunk: 11:44
: [rakudo] We currently always store subs in the namespace without sigil, so if we get a sub parameter with the & sigil then we need to strip it off. Resolves RT#58828.
diff: www.parrotvm.org/svn/parrot/revision?rev=31228
jonathan woo, 2 more and we're back down to 150 tickets... 11:46
bacek ok. I can fix last "Use undefined" in Test.pm, but it will be wrong
jonathan Wrong is not good. ;-) 11:47
bacek It causes by undefined values for $type in isa_ok. And we should definitely have this types in place
E.g. StrPos.
jonathan Ah. 11:48
jonathan can haz lunch...brb 11:53
barney ping cotto 11:57
purl I can't find cotto in the DNS.
bacek ping bacek.com 12:01
purl 10 packets transmitted, 0 received, +10 errors, 100% packet loss, time 8999ms
bacek holy sh*t... 12:02
It's bad
nopaste "bacek" at 114.73.60.162 pasted "Trvial patch for simproms from #58818 (cloning of attributes)" (12 lines) at nopaste.snit.ch/14105 12:05
bacek I'm not sure about this patch... Should we clone values in Object.new? 12:06
afk #probably sleep... 12:08
12:13 Zaba joined
moritz disagrees, that patch shouldn't be applied. Instead the test suite and rakudo should be fixed 12:29
is() traditionally does string comparison
and it's plain wrong to compare undef values with string semantics 12:30
pmichaud I'm in agreement with moritz -- we fix the tests and not Test.pm in this case 12:36
I suspect that is() will eventually get 'eqv' semantics.
moritz that goes against the grain of leaving Test.pm rather simple 12:37
pmichaud why is that? 12:38
moritz because eqv isn't simple
jonathan If eqv was so easy, we'd maybe have implemented it by now. ;-)
morning pm :-)
pmichaud I can certainly "shim" an eqv that does string comparison until I have the full one.
moritz pmichaud: if we settled on .perl to sort hash keys, we could fake one very simply with .perl
which would be 95% effect with 5% work, or something ;) 12:39
pmichaud making 'eqv' act like 'leg' would be even easier, though.
"sort hash keys" sounds like more work than implementing a stub 'eqv' that does string comparison.
Zaba looks like rakudo got stuck somewhere in spectest_regression, something related to open, test 1/9... 12:40
had to ^C it..
pmichaud or even a stub 'eqv' that sorts hash keys as part of .perl and does a comparison :-)
moritz or that, yes
pmichaud 'eqv' is the natural way to say "these two things are the same", we should use it.
12:40 Debolaz joined
pmichaud a budding implementation can always cheat on eqv until it's ready for the full implementation. 12:40
moritz ok 12:41
actually for the tester it's much easier this way
pmichaud correct.
jonathan pmichaud: Just been doing fixes this morning, while I woke up properly. Just having to sort out flights and stuff now, then will read your thing. 12:43
pmichaud jonathan: okay. I saw the "remove underscore" fix -- that will have to be redone soon. You just happened to do the cheat before I could get an answer for the "real fix" :-) 12:44
jonathan Oh? What's the real fix? :-) 12:46
Oohh, hang on - this relates to the precision issues with PIR?
pmichaud yes.
jonathan OK, that's a different problem. ;-)
Though related and yes, will probably touch the same bit of code. 12:47
Well, would certainly touch...
pmichaud It should be done the same way we do integers -- we place the item into a Str (or Perl6Str) object, numify it there, and then pass that to PAST
but we can't do it that way now because when PAST gets it and stringifies it back into PIR it loses a ton of precision 12:48
I'll write my message to p6i (but make it a ticket instead of a message) and then link the underscore ticket to that so we can do a real fix. 12:49
Ontolog c'mon guys nobody's gonna respond to my perl6-compiler and perl6-language mails? 12:51
12:51 Zaba joined
pmichaud Ontolog: I _just_ woke up and I'm in the middle of processing emails and reading scrollback. 12:51
I'm maybe 25% done. 12:52
Ontolog ah sorry i guess i'm ina different timezone then all of you haha
pmichaud (okay, I didn't just wake up -- I've been up for an hour feeding kids and getting them to school and just now started reviewing everything that has happened since yesterday afternoon.)
Ontolog i see 12:53
do you work on perl6 full time or something?
who pays you??
pmichaud pseudo-full time. Nobody pays me.
Ontolog you are rich!
pmichaud I might be richer if I wasn't doing perl 6. :-)
Ontolog haha 12:54
yes
pmichaud I'm not sure if I'm rich or just financially naive. :-P
Ontolog haha maybe working on perl6 will make you rich in the future
you will be famous
jonathan Argh! Plug in USB device => reboot?! 12:55
moritz perl5 surely made Larry famous, but not necessarily rich I think ;)
jonathan: let me guess - windows? ;)
pmichaud jonathan: windows?
purl hmmm... windows is thready.
Ontolog hey, well at least he's getting paid to develop perl now
by o'reilly i tihnk
pmichaud Ontolog: I don't think that's the case, although I could be wrong. 12:56
jonathan Windows!
purl rumour has it windows is thready
moritz it was the case, but not anymore
Ontolog damnit O'Reilly! why did they fire Larry?
pmichaud "Windows is so fragile that when I plug a usb device into my linux box her Windows machine reboots." :-P 12:57
moritz because they had financially difficult times
afk &
jonathan :-P
pmichaud I think we can safely say that O'Reilly has been (and continues to be) a very strong supporter of Perl
Ontolog i have a Safari subscription
yeah, they printed a book on Perl 6 & Parrot in 2004! 12:58
so i think they must be
pmichaud they also sponsor (Perl) conferences, and quite a variety of efforts that go beyond "publish books" 12:59
Ontolog oh yes... i've never been to a Perl conference
i would like to
but i'm like so incredibly poor
don't have the travel money
pmichaud the fact that there hasn't been a Perl 6 book since 2004 has more to do with lack of authors and writers than with a publisher choosing not to publish, I think 13:00
(I could be wrong about that -- don't know what the current market would be for updated Perl 6 books.)
Ontolog oh my point about the book was that I was surprised they would even print one before any of this stuff is even half way finished
pmichaud well, that was back when we expected things to be finished much more quickly than reality allowed. 13:01
or, put another way, people thought we were already half way. -P
Ontolog haha... the falacy of each and every software project ever endeavored
the unrealistic schedule
jonathan OK, so it's cheaper to book a return flight that a single. :-S 13:05
jonathan doesn't really understand the world.
13:20 kj joined
pmichaud Ontolog: reply to "match" sent. 13:26
jonathan OK, flight emergency *hopefully* sorted out. 13:28
jonathan has never known so much hassle
Ontolog pmichaud: so 'match' should behave this way even as a Perl 6 builtin? 13:29
pmichaud: I can understand why you would want a kind of lower-level match function to work like this
pmichaud: but what about the high-level one that Perl 6 users will use?
pmichaud I don't quite understand the question
I thought you were specifically dealing with the case of trying to get a list of matches 13:30
not the .match method itself.
(thus I changed the name)
Ontolog well i want to that and i want to understand how Perl 6 code: $string.match(/regex/) is suppose to work 13:31
pmichaud I suspect that the .match method should simply be 13:32
.sub 'match' :method :multi(_, 'Sub')
.param pmc regex
$S0 = self
.return regex($S0)
.end
Ontolog hmm... i have a strong feeling that it should be returning a list of strings that match the regex 13:33
but you are the expert... 13:34
pmichaud no, that would be the .comb method.
.match should perform a single match.
Ontolog did you see the docs on comb?
it says that comb is equivalent to a certain kind of match
jonathan pmichaud: I agree with you on what .match does, but the docs on comb can be read as implying something else.
Ontolog and that both should return lists
pmichaud match should return a list if the :global flag is present. 13:35
Ontolog i see
so what is the idiom for just getting back a list of strings that match the regex?
pmichaud in Perl 6?
Ontolog yes
pmichaud @list = $foo.comb(/regex/); 13:36
Ontolog ok then so it is just using comb
pmichaud currently PGE doesn't handle the :global flag directly -- it expects the caller to do that. I'm thinking that ought to change.
Ontolog sorry i misunderstood the whole thing :p anyway now i'm set straight
pmichaud since most of S05 has the :global flag attached to the regex
13:37 gryphon joined
Ontolog so as it stands now our existing match method is incomplete? 13:37
jonathan pmichaud: URL to your proposal again?
pmichaud which match method -- the one I just gave or the one that is in the repo?
jonathan pmichaud: oh, no worries, found it
pmichaud jonathan: www.pmichaud.com/perl6/references.txt
Ontolog pmichaud: the one in the repo 13:38
pmichaud I don't know what the one in the repo looks like -- I didn't put it there and haven't reviewed it yet. But I suspect it's incorrect. 13:39
Ontolog pmichaud: it's the same i think
it returns just a match object like you showed
my point is, if it doesn't handle :global
can we say it is complete?
pmichaud I'm now thinking the regex needs to handle :global
instead of trying to make .match do it 13:40
so .match is complete and Regex isn't.
Ontolog makes sense
pmichaud I'll be back in 15 -- have some cleanups to do 13:41
13:54 Zaba joined 14:00 johbar_ joined 14:01 mberends joined 14:03 Andy joined
pmichaud back 14:04
jonathan pmichaud: Scribbling comments on your thing, will nopaste them in a moment 14:06
Well, maybe more than a moment. A lot to think about! :-)
pmichaud okay, no problem. We could do this wiki if that would be better, or I could go ahead
and check it into the repo.
jonathan Maybe. 14:07
Let me give initial feedback, then maybe we discuss and then put it into repo and do smaller tweaks there? 14:08
pmichaud okay
whatever's easiest for you :-)
jonathan (I've not yet found anything that I think makes it unworkable.)
lvalue.'!ASSIGN'(rhs) 14:17
The !ASSIGN here doesn't appear to be explained anywhere.
pmichaud it will depend on the lvalue, I think
but essentially it says "lvalue, take whatever values you think appropriate from rhs"
jonathan OK. It appears that the pseudo code loses a value.
14:18 Lorn joined
jonathan oh, no 14:18
It doesn't.
Mis-read the jump.
pmichaud for an array, it will slurp up (lazily?) all of the values from rhs
TimToady is still working on the assignment semantics, I think.
jonathan ...ouch!
I think that basically the list assignment part falls quite naturally out of the item part. 14:21
pmichaud you mean for the !ASSIGN method, or are you talking about something else?
jonathan No, I mean in your doc, once you make the assumptions/work out doing the item assignment correctly, the list assignment part of it is quite straightforward/natural. 14:22
That's a good sign. :-)
pmichaud yes
jonathan Thus I've not really got much to say about the list assignment part itself. :-) 14:23
pmichaud the one piece that I really wish was available would be to have a convenient flag on PMCs to indicate "this is a container/lvalue PMC"
jonathan I think we're using all of the PMC flags, and we can't steal any of the 7 user flags because the PMCs themselves may use them.
pmichaud oh! 14:24
I think we can steal a user flag, then
oh wait, no we can't. hrm.
jonathan Yes. We run the risk of conflicting. 14:25
pmichaud I don't mind if we use a property for it on individual variables such as $s or @a, but there's not a convenient way to find out that @a[2] is a container. 14:26
and if we put a properties on @a[2], then we're back to the "every element has multiple GC-able elements"
er,
"every element of an aggregate requires multiple GC-able parts"
(I'm assuming that the properties hash is a GC-able thing.) 14:27
jonathan Yes, it is, but
Just because of that doesn't mean we need an extra GC-able element per array entry. 14:28
pmichaud it doesn't?
jonathan We can just have a property "container" or something, that points back at the array.
container = constant string
the array we're in = one object
pmichaud don't we have to attach that to each PMC in the array?
otherwise, how do we get from the PMC (element) back to the array? 14:29
jonathan We'd have to attach the property, yes.
pmichaud when we attach the property, doesn't the element get a new Hash for that?
jonathan Ah, OK, yes, it'd get that.
pmichaud :-(
that's the Hash I was referring to :-(
jonathan Unless we are extremely, extremely naughty and instead make the _metadata point to something other than a Hash - e.g. the container. But that's probably really sick and wrong. :-) 14:30
pmichaud is there a way to get all of the elements PMCs to point to the *same* property table?
jonathan (_metadata is the pointer the properties hash would hang off)
Well, it's just a pointer, so yes.
pmichaud that doesn't sound quite so evil
jonathan I'm not sure how we'd manage that today.
pmichaud it also would make it very very (very) simple to put type constraints on the individual elements
jonathan Yes, indeed. 14:31
pmichaud what if we just did setprop $P0, hash ?
or something like that?
or setprophash
jonathan It'd be a new opcode, yes.
Though we can haz dynop at first if need be.
While we experiment.
But yes, there's no reason why we can't do that.
pmichaud there's already a <prophash> opcode
jonathan Oh? 14:32
To get it though?
pmichaud =item B<prophash>(out PMC, invar PMC)
Get a hash for the properties invar PMC $2 and put it in $1. If the property
hash doesn't exist, the C<Null> PMC is returned.
jonathan OK. Adding setprophash isn't a big step then.
pmichaud I think I could convince allison to do setprophash
moritz jonathan++ # many fixes
jonathan Yes, me too.
pmichaud that would be *very* cool.
jonathan Yes.
pmichaud that would solve a ton of issues
Ontolog can I do this? match = regex(self, start_pos) 14:33
jonathan Right.
pmichaud Ontolog: match = regex(self, 'pos'=>start_pos)
Ontolog right now I'm getting an error: positional inside named args at position 2
i see
pmichaud :pos is a named argument.
nopaste "jonathan" at 85.216.151.226 pasted "pmichaud - some feedback" (42 lines) at nopaste.snit.ch/14106 14:34
pmichaud many of the flags work such as :p, :c, etc (and their longname counterparts)
Ontolog error:imcc:syntax error, unexpected IDENTIFIER ('pos')
jonathan pmichaud: Those are my initial thoughts. I'd not a lot to list assignment, since it follows on naturally. 14:35
pmichaud here's my responses :-)
jonathan <@pmichaud> WTF are you thinking?!
pmichaud type checking: I didn't put it in the document, but I'm thinking that "get the !VALUE, do type checks and readonly checks, etc." would be a method
it could be a dynop
but yes, essentially all of that would be analogous to what we do with 'infix:=' now. 14:36
as opposed to being repeated in generated code everywhere.
jonathan I'd rather a dynop. I don't want to do performance freakery, but calls are not cheap.
kj Ontolog: probably you forgot to quote the word 'pos'?
jonathan And it is easier to do trickery in C. ;-)
pmichaud I need to look at what is involved with creating dynops -- never done one yet.
Ontolog kj: yeah that's right
jonathan We're already using at lesat one, so see that for an example. :-) 14:37
That means the build stuff for them is all in place for Rakudo already too.
moritz jonathan: I can un-TODO the newly passing tests... but first I wanted to be sure that you didn't do that locally already and forgot to commit
particle pmichaud: regarding float precision, in earlier parrot history, there was a pragma to set it for your program/hll. i wonder if that still exists... 14:38
jonathan moritz: I didn't.
moritz jonathan: ok, then I'll do
jonathan moritz: Please go ahead.
Thanks.
delegation++ :-)
pmichaud okay, next item
(chain of wrapper PMCs) I don't think we need a chain of wrappers 14:39
I'm thinking a wrapper simply takes the constraints of whatever it wraps and adds its own constraints to it
sorry, I said that wrong
a wrapper builds its own constraints as a junction of the local constraints plus the constraints of what it wraps 14:40
but we never have a wrapper refer to a wrapper
it would always "collapse" the chain down so that we have one wrapper pointing to one value 14:41
jonathan Thing is, if we do clone...well, of course we'd have our own op that could check if the target is a wrapper...
pmichaud although it would be good if we could somehow detect that we don't need to add a constraint (because it already exists)
jonathan Or method or however we do it.
pmichaud no, not clone.
jonathan oops, I menat copy
Not clone.
pmichaud or copy
neither.
jonathan OK, I mean assignments are copy
If we have a wrapper and we do copy $P0, $P1 and $P0 is a wrapper... 14:42
pmichaud basically we take the constraints of whatever param PMC came in, and construct a new wrapper object having those constraints junctioned with the additional ones
jonathan Needs to copy to the thing the wrapper holds.
Oh, sure, that bit works fine.
pmichaud oh. wrappers don't copy.
same as we don't really copy scalars.
jonathan OK, so how do we know what to emit? Don't fancy static analysis... 14:43
pmichaud it would always be the same thing
jonathan As you said, a method could do it.
Or a dynop that says, "is this a wrapper".
pmichaud yeah -- I'm thinking something similar to how we use get_pmc on Scalar now 14:44
jonathan OK. We can make it work, anyway.
pmichaud what I'm talking about there isn't really all that new -- we were going to have to solve the same problem under the Scalar approach anyway 14:45
jonathan And I think if we construct a new junction in the wrapper consisting of that in the outer wrapper and any new constraints, that'll fly.
pmichaud recursion does become a bit of a pain though, as our junctions get larger and larger.
jonathan Yes.
But OTOH, the constraints are the same. 14:46
So some later optimization could help.
Also, junctions are meant to be sets, IIRC.
So a good junctions implementation may just somehow be able to give us what we want (each thing once) cheaply anyway. 14:47
pmichaud do we currently create a new junction for every invocation?
jonathan Yes, I believe so.
pmichaud we should fix that.
jonathan Well, it's not always so simple maybe.
pmichaud that should be static to the sub and referenced.
instead of constructing a new one
jonathan If we have just one constraint, we never bother building a junction at all, I think.
particle are junctions bags now?
jonathan particle: They're internally just lists.
particle ok, which is basically a bag instead of a set 14:48
pmichaud okay, I guess I meant "constraint"
we should attach each constraint (which could be a junction) to the sub once at compile-time, and then have each parameter refer to that constraint.
jonathan I use constraint to mean two things sometimes. :-)
Yes, I agree that'd be better.
pmichaud rather than build a new constraing object on every invocation
jonathan And far more optimal.
Well, actually 14:49
We already *are* doing that.
The signature object contains all of them.
And is built once and attached to the sub.
pmichaud so, we just need to get the constraints attached to the lexicals?
or is that happening already too?
jonathan So we really should just pull them out of that.
pmichaud yes,
jonathan We're building the signature object.
pmichaud bingo.
signatures++ jonathan++ 14:50
particle ship it!
pmichaud you just completely sold me on the need for a signature object with that. :-)
jonathan Phew! At last! :-)
(Also you will be glad to know, this will simplify the code in signature...
)
pmichaud yes, it will.
PerlJam good morning #parrot people 14:51
jonathan morning PerlJam
pmichaud I need to go look at the structure of signature objects at some point
PerlJam I see you guys are already doing great and wonderous things today :)
(at least talking about doing them)
pmichaud okay, so wrappers sounds workable to you, or at least like a "this is a reasonable approach"?
jonathan PerlJam: Well, I've had a lot of the day already to do them, being European and all. ;-) 14:52
Yes.
pmichaud "PMCs representing array and hash variables have an implementation type property that points to the protoobject of the correct implementation type."
jonathan I'm a lot happier with that, than trying to attach extra stuff to the scalars themselves.
pmichaud We need this because we can have
jonathan Erm
pmichaud my @a is MyArray; my %h is TiedHash;
jonathan well, you know what I meant. I like it better than option 1. :-)
Ah, yes.
pmichaud it also becomes a convenient way to know "This is a container" 14:53
but it also tells us what kind of container it is.
PerlJam jonathan: Don't go to sleep so that this parrot day lasts a little bit longer than usual :)
jonathan Hmm.
PerlJam: Actually I messed up - I have .pm group tonight. :-|
I am giving a Perl 6 talk there though. 14:54
pmichaud just throw up an irc channel on the projector and we can all do your Perl 6 talk :-)
PerlJam heh
moritz lol
jonathan pmichaud has already seen the talk I'm giving anyway. :-)
The folks at my PM group decided to skip my talks at YAPC and go to others, then get me to repeat them at PM group! 14:55
PerlJam then let pm give it by proxy via IRC while you just sit there hacking
pmichaud "PAY NO ATTENTION TO THE MAD ENGLISHMAN!"
jonathan :-P
Could be a good idea.
pmichaud that probably wouldn't work, because I tend to proxy to Jonathan for anything dealing with the subjects he's presenting tonight 14:56
jonathan But the hacking that results from the current discussion is Hard, so I'll leave it to PM. ;-)
particle telepresentation++
jonathan On the "is MyArray" thing
Hmm. I'm not convinced about this. What about if there's multiple "is" delcarations? Then what do we attach? 14:57
pmichaud can there be multiple 'is' declarators?
jonathan Yes, I'm pretty sure there can be.
pmichaud boggles
what would that mean?
jonathan Well, if you think about what happens when you write an is and what it (should!) compile down to. 14:58
pmichaud maybe remind me :-)
oh, it's a composition
jonathan my $x is Foo; ends up doing a call to traint_auxiliary:is(Foo, $x)
Well, it's up to whatever that multi decides to do.
But yes, it may decided to do a composition. 14:59
pmichaud so, my $x is Foo is Bar might do something like make an anonymous class that $x ties to
jonathan I'd imagine for tied arrays, that the role it composes will implement postcircumfix:[ ]
PerlJam How do you compose the "is" declarators that affect the container type? Or is that how you get Capture-like objects that may have slots missing?
jonathan Probably as an l-valued routine.
pmichaud well, my @a can be "is anything" that does the Positional role (S02, I think) 15:00
never mind, that's binding.
sorry.
jonathan Yes, but @ sigil means that what is there always does the Positional role. 15:01
PerlJam: Since it's a call to a multi, I can only imagine that they are composed linearly.
Like mix-ins.
But that's only if it actually decides to do a mix-in.
As S12 puts in, well-behaved traits will tend to do such things. But you could have "is SayHi" which just prints "hi" at the point of delcaration. ;-) 15:02
Ontolog What is the difference between `match = regex(self, 'pos' => 0)` and `match = regex.'ACCEPTS'(self)` ?
pmichaud okay, so "my @a;" defaults to "is Array", but other "is Foo" could change its implementation type
jonathan Yes.
pmichaud that does affect the copy semantics for item assignment a bit
because if we have 15:03
my $x is Foo;
jonathan (Please don't assume I 100% understand all of this, I'm just giving the best grip on all of this that I currently have.)
pmichaud we don't want an assignment to $x to wipe out its Foo-ness
PerlJam jonathan: I thought that's what everybody is doing :)
jonathan Yes.
Hmm
pmichaud that's the other reason I was thinking we might want/need a container property 15:04
jonathan This is an issue, and I think why we separated container and value PMCs in the first place.
Ah. That also could maybe work.
pmichaud I separated container and value PMCs so I could get binding to work
jonathan And .VAR just hands back the property.
pmichaud we might still end up with a Scalar container for scalar variables, though. 15:05
if we can get setprophash for aggregate elements then that might resolve a lot of the "container" issues. 15:06
jonathan Yes. 15:07
pmichaud anyway, I think we've got that one cleared for now
last item: reference capability a-la Mutable
we need it to be able to implement ObjectRef
15:07 Zaba joined
jonathan PerlJam: To answer your question from earlier, quote from S12: Unlike compile-time roles, which all flatten out in the same class, compile-time traits are applied one at a time, like mixin roles. You can, in fact, apply a trait to a container at run time, but if you do, it's just an ordinary mixin role. 15:08
pmichaud in fact, it may be that "Mutable" is more properly named "ObjectRef" 15:12
jonathan Yes. 15:13
It sounds like it does what ObjectRef needs to, or thereabouts. 15:14
pmichaud it's pretty close, yes.
jonathan OK.
Sounds like we've got something workable.
pmichaud how hard to implement setprophash? 15:15
I'm thinking "trivial." :-) 15:16
jonathan Easy. 15:17
Like, longer to run make test than to write it. :-)
pmichaud I'll send the message to the list asking for the opcode. :-)
but I think we should ask forgiveness rather than permission :)
jonathan If we want to make sure we ask forgiveness, I can always check it in first. ;-) 15:18
pmichaud yes, that's what I'm thinking
purl Oooh he is soooo fine!!!
Ontolog anyone on my regex woe?
jonathan is disturbed
pmichaud let's just go ahead and add it, and if someone doesn't like it we can discuss it
jonathan OK, sure.
I kinda need to go to my PM meeting in a few minutes. 15:19
pmichaud no problem, I think we're done for now
jonathan Forgot about it, and that I was presenting!
$DAYJOBs + Russia mess has been exhausting me.
pmichaud I think we're in agreement on the overall structure and where things will go -- I'll flesh out what I wrote and add it as a design document for rakudo
moritz Ontolog: I can try... what's your exact woe? 15:20
pmichaud Ontolog: just a sec, I can answer
Ontolog: I want to close up the conversation with jonathan first :-)
jonathan OK
And it'll be implemented before I come back from vacation? ;-)
pmichaud very likely.
jonathan w00t
I am also trying to put together a grant application. 15:21
purl okay, jonathan.
pmichaud I mentioned to particle in a conversation last night (voice) that list assignment and lexicals are the two items that I think really need some attention
Ontolog moritz: What is the difference between `match = regex(self, 'pos' => 0)` and `match = regex.'ACCEPTS'(self)` ?
jonathan Oh, how I'd love to come back to see those fixed! :-)
pmichaud .'ACCEPTS' really should be defined in terms of .match
jonathan Is there anything specific you'd like me to include in it to work on?
pmichaud not the other way around
Ontolog i don't understand 15:22
pmichaud jonathan: I'll know better when I see a draft :-)
moritz Ontolog: .'ACCEPTS' might do things that you don't want, like setting the $/ variable to the match object
Ontolog i see
pmichaud .ACCEPTS is the standard mechanism for handling smart match
Ontolog but when i do the former, i don't get a match... match.'text'() is empty
jonathan pmichaud: OK.
pmichaud jonathan: for example, I added a few items to particle's proposal last night :-) 15:23
(or, more precisely, I suggested a few extra items) 15:24
I recommend *not* doing match = regex(self)
also, I think I mis-spoke earlier, you probably want to use 'c' or 'continue' instead of 'pos' 15:25
:pos anchors to a position, :continue starts scanning at a position
moritz in terms of Perl 6 that's correct
jonathan suggests all of the hard stuff for particle's proposal 15:26
Ontolog ok
jonathan ;-)
pmichaud jonathan: I think we all have different ideas of "hard stuff"
Ontolog so you recommend match = regex(self, 'continue' => start_pos)
particle kicks dirt on jonathan's shoes :P
pmichaud except for the 'self' part, yes.
Ontolog if i don't provide self
pmichaud 'self' might not be a string.
Ontolog it is given implicitly? 15:27
dalek r31229 | moritz++ | trunk:
: [rakudo] added tests for the fix in r31228 to spectest_regression
diff: www.parrotvm.org/svn/parrot/revision?rev=31229
Ontolog so how does regex know what to do then?
pmichaud $S0 = self
match = regex($S0, 'continue' => start_pos)
Ontolog this demotes self to a String? 15:28
i mean
what do i mean...
ok i'll do it that way
pmichaud $S0 = self says "give me the string value of self"
note that the .match method belongs in any-str.pir, not in Str.pir
say 1234.match(/\\d$/); 15:29
(note that the invocant is not a string.)
Ontolog i see
15:32 s1n joined 15:36 peepsalot joined
jonathan OK, off to pm group, bbl 15:39
Ontolog should split be returning empty strings?
pmichaud thanks, jonathan++
Ontolog: depends on the pattern being split
Ontolog say "<frag>char</frag><tag>soup</tag>".split(/\\<\\/?.*?\\>/).perl;\\
with my code I get: ["", "char", "", "soup", ""] 15:40
pmichaud in that case, yes.
Ontolog ok just checking
purl i'm still here, Ontolog.
moritz that looks bright
Ontolog bright? thanks ;-)
moritz purl, forget just checking
purl moritz: I forgot just checking
pmichaud there's an empty string before <frag>, one between </frag> and <tag>, and one after </tag>
Ontolog yes
just making sure split is suppose to return them 15:41
ok i'll send my new diff 15:42
this one should work!
pmichaud ...does it pass any tests? ;-)
moritz pmichaud: the tests all rely on is_deeply
pmichaud: I plan to clean them up a little, but so far haven't found the tuits
pmichaud well, if we implement eqv and change is() to use eqv then we'd be there. :-) 15:43
dalek r31230 | julianalbo++ | trunk:
: miscellaneous fixes
diff: www.parrotvm.org/svn/parrot/revision?rev=31230
moritz hm, perl 5 seems to place an implicit (?:...)+ around the pattern 15:44
uhm, no
moritz just can't read
pmichaud split /PATTERN/,EXPR,LIMIT
split /PATTERN/,EXPR
split /PATTERN/
split Splits the string EXPR into a list of strings and returns that
list. By default, empty leading fields are preserved, and
empty trailing ones are deleted. (If all fields are empty,
they are considered to be trailing.)
Ontolog pmichaud: 3 small tests yes 15:45
oops
only handled the split /PATTERN/ case
pmichaud I don't know what the perl 6 spec says on this
Ontolog empty trailing fields are deleted?
moritz pmichaud: it's silent on that matter... 15:46
particle the "spec" for split is likely s29
moritz Ontolog: that was perl 5
particle which means "not official"
moritz pmichaud: but TimToady's stance seems to be to recommend Str.comb when one wants more intuitive/magic behaviour
pmichaud I thought that .comb returns the things that match instead of the things that don't match
moritz pmichaud: exactly 15:47
pmichaud: so if you want the old magic split ' ' behaviour, you use $str.comb(/\\S+/)
pmichaud: or just $str.comb, because \\S+ is the default
pmichaud S29 says "Null trailing fields are no longer trimmed by default."
So there. :-) 15:48
Ontolog cool
moritz couldn't read agian
and not write either ;)
Ontolog so all i really need to do is add support for limit?
pmichaud I don't know if that's "all", but it would be a good thing to do :-) 15:49
Ontolog ok 15:50
moritz well, the current patch gets us a big step forward to usability
Ontolog+++
Ontolog cool thanks, i'll work on the limit the same way I did for comb. unless limit needs to be a named param?
which i am not sure how to do yet
moritz no, it's not
Ontolog ok so it's just an optional second param; i'll do it the same as comb 15:51
moritz it's a positional which can also be used as a named, which we ignore for now because we don't have the infrastructure
Ontolog oh yes, i remember someone said that before
moritz Ontolog: minor nit, the sub should really go into src/builtins/any-str.pir, and convert its invocant to string 15:52
Ontolog: reason is, we want it to work on non-strings as well, like numbers
Ontolog yes makes sense
ok then let's not commit that patch
i'll move it over and add the limit
moritz great
pmichaud many of the methods in Str.pir, Hash.pir, and Mapping.pir may still need to be migrated to the any-*.pir stuff 15:53
moritz the november hackers will love you ;)
pmichaud: does it really make sense to do that? I think it's more efficient to do it when we write builtins in Perl 6
pmichaud well, they'll still be a part of Any :-)
and I expect Any to be split up among several files. 15:54
moritz no problem if 'is also' on classes is in place
pmichaud yes, that needs to be implemented
moritz (open classes)++
pmichaud anyway, you're correct that it's not urgent to move everything to any-*.pir, but if it causes tests to pass or helps with hacking then we should probably do it 15:55
and we need to get people out of the habit of thinking that methods like match and split belong in Str
moritz the easiest way to do it is to fix S29 15:56
Ontolog man moving it over breaks it 15:59
if it has to work on non-strings, does that mean i can't use substr?
pmichaud you can use substr, yes. But you shouldn't need to use substr :-)
moritz Ontolog: it means you have to convert self to a string first 16:00
Ontolog moritz: i did that
pmichaud: hm? how do I do it without substr?? 16:01
pmichaud this is for split, yes?
moritz yes
pmichaud instead of using start pos and end pos, just do tmpstr = match 16:02
oh, I see
you need the part that didn't match
moritz split, not comb ;)
pmichaud just use substr on $S0, as the latest patch does 16:03
that will work.
Ontolog yes i'm doing that now but when i move the method to any-str.pir it stops working, the entire string is returned instead of the parts
pmichaud it shouldn't make a difference. 16:04
Ontolog if you see the patch i sent to the mail you can see the method, it should be ok
pmichaud make sure there's not another 'split' lying around somewhere.
Ontolog yes that seems to be what's happening
hmmm why is it calling the other one?? 16:05
moritz there's a .sub split without any multi declaration
that seems wrong in the first place
Ontolog there the split in Str.pir that splits on a string
moritz yes, but it needs to be a multi nonetheless 16:06
Ontolog the test shows that this one is getting run
moritz just about every builtin needs to be a multi
Ontolog because of the missing slot of self in the multi
in Str.pir it has :multi('String') which is matching on the object not the param
moritz aye 16:07
Ontolog i changed it to :multi(_,'String') to test if mine now gets run, however now I get no applicable methods
pmichaud the .sub 'split' in Str.pir:369 needs to be removed or fixed.
Ontolog: can you send me an updated diff? 16:08
or nopaste it
purl nopaste it is See /who is nopaste for the URL.
Ontolog paste what's in any-str.pir?
pmichaud yes
Ontolog k
pmichaud paste a diff of any-str.pir would be best.
16:09 Whiteknight joined
dalek r31231 | Whiteknight++ | trunk: 16:09
: [Book] Added short sections about make_language_shell.pl and driver programs for new compilers
diff: www.parrotvm.org/svn/parrot/revision?rev=31231
cotto_home GeJ_, ping
pmichaud there's probably also a problem in that the Str.split is being exported as a global 16:10
GeJ cotto_home: pong
pmichaud so it may be hitting that one first.
cotto_home Does r31230 fix the build for you?
pmichaud I don't know if that's the case -- just a guess. 16:11
nopaste "Ontolog" at 119.122.54.227 pasted "any-str.pir" (45 lines) at nopaste.snit.ch/14110
GeJ can't tell right now. I don't have access to my box. The missus is asleep. Will try first thing tomorrow and will provide feedback. 16:12
pmichaud also, fwiw, I'm trying to keep the method definitions in alphabetical order :-)
Ontolog i see
i'll keep that in mind hehe
cotto_home ok. Thanks.
pmichaud any-str.pir looks fine, depending on how it's being called. 16:13
GeJ cotto_home: no, thank you
Ontolog i still forgot to do something with that method, it seems i must return the entire string on no match?
pmichaud: i'm calling it the same way i was when it was in Str.pir
say "<frag>char</frag><tag>soup</tag>".split(/\\<\\/?.*?\\>/).perl;
pmichaud as a method or as a function?
Ontolog method
pmichaud ok, as a method.
Ontolog but it should still work yes?
kj Whiteknight: maybe it's a good idea to write the usage of make_language_shell.pl 16:14
pmichaud yes, unless there's some other .split method that is taking precedence for strings.
moritz adding a debug print shows that it's never called
Ontolog pmichaud: there was, the split on a string in Str.pir, but I changed the :multi and now the above line yields the error "no applicable methods"
moritz: which is never called? 16:15
moritz Ontolog: the one in any-str
Ontolog moritz: i also added debug prints and it is certainly called unless you change :multi to :multi(_,'String')
oops 16:16
sorry
i mean the one in Str.pir stupid me anyway you don't get that 'no applicable methods' error?
moritz I get that if add change the multi of Str.split(Str) to (_,'String') 16:17
s/add/I/
cotto_home GeJ, what time is it for you right now?
Ontolog moritz: *and* apply the any-str diff? 16:18
in any case, it seems not to work just moving the split on a regex into any-str.pir
perl is not finding the method 16:19
moritz Ontolog: yes
GeJ cotto_home: 3AM. I'm coding on the laptop some Python + Wx app for a meeting with a client in the morning.
cotto_home: feels like ball and chain.
pmichaud on my system:
GeJ If only chocolate perl existed when I started this thing. 16:20
pmichaud > say 4123.split(/12/).perl;
["4", "3"]
so it does find the method if the invocant is not a string.
Ontolog huh?? i'll try
that's funny, why would it do that?
pmichaud so the problem has something to do with the fact of the invocant being a string
> say "4123".split(/12/).perl; 16:21
["4123"]
(this is without changing the :multi in Str.pir)
Ontolog i see
pmichaud if I change the :multi, I then get "no applicable methods" 16:22
Ontolog right
pmichaud so, the split in any-str.pir is correct, since it works for things other than strings
something in the string object class is hiding the .split on Any, though.
aha!
it's the fact that there's a .split method in Str
since we define .split on Str, it hides the one from .Any 16:23
Ontolog and it's suppose to work this way?
moritz so the next step is to move that one to any-str as well?
Ontolog even though they are multis with different sigs?
pmichaud as far as I know, yes -- defining a method in a subclass hides all of its superclass methods.
i.e., if I define 'foo' in a subclass, then that hides any 'foo' from the superclass 16:24
Ontolog but they are two different multi's
pmichaud but they're in different classes.
16:24 Theory joined
moritz Ontolog: that seems to be a parrot design choice 16:24
I don't think it works that way in Perl 6
Ontolog ok well we should be clear then how Perl is suppose to work 16:25
moritz we should, yes ;) 16:26
pmichaud in this case, since we're talking about a builtin, it really should be that the other .split method should go into Any
moritz and I'm sure it's defined in S12 + a bunch of other synopsis
pmichaud regardless of what Perl 6 says.
moritz pmichaud: I'm doing the move here now
NotFound In c++ that problem is solved by putting a 'using' clause if you want to inherit the parent versions. 16:27
kj NotFound: I thought using was related to namespaces...
NotFound kj: yes, but it has other meanings. 16:28
moritz so it's an overloaded keyword ;)
kj NotFound: oh ok, I guess I forgot that already
NotFound Don't make a new keyword when you can reuse ;) 16:29
pmichaud S12: In contrast, multi routines can have only one instance of the long name in any namespace, and that instance hides any outer (or less-derived) routines with the same long name. It does not hide any routines with the same short name but a different long name. In other words, multis with the same short name can come from several different namespaces provided their long names differ and their short names aren't hidden by an only declaration in some int
so, correct, defining a multi in a derived class should not hide a different-long-name (signatured) version of the multi from the parent class
Parrot doesn't work that way, no, so we'll have to fix the dispatch semantics 16:30
at any rate, at least we know why Str.split is hiding Any.split :-) 16:31
particle c++ went a little far with overloading
NotFound By the way, someone build parrot with c++ other than me? Or they are all too lazy to fix when someone broke it? ;) 16:32
pmichaud I don't know how many others are building parrot with c++ 16:34
particle should split remove the trailing empty results?
pmichaud no.
at least, not according to the current S29.
particle ok, so that's a p5 diff
Ontolog i sent an updated diff of any-str.pir, it also contains corrected behavior on a non-match 16:37
oops i didn't alphabetize it 16:40
pmichaud afk for a bit 16:42
Ontolog afk for 8 hours 16:43
going to bed 16:44
purl You and me, of course. or a goat
Ontolog please let me know if there are any more problems with that split method; if not i look forward to a commit and i'll go on to the limit parameter
goodnight
16:47 Whiteknight joined
dalek r31232 | Whiteknight++ | trunk: 16:49
: [Book] expand section on operator precidence parser, more to do.
diff: www.parrotvm.org/svn/parrot/revision?rev=31232
kj Whiteknight: it's 'pasttype', not 'pasttyle', in line 489 of your patch 16:56
16:58 Juerd left
dalek r31233 | Whiteknight++ | trunk: 16:58
: [Book] Add more specific information about compilers as per a suggestion from kjs++
diff: www.parrotvm.org/svn/parrot/revision?rev=31233
r31234 | moritz++ | trunk: 16:59
: [rakudo] implement Any.split(/regex/), Ontolog++
: Patch courtesy by Chris Davaz, <cdavaz at gmail dot com>
: Note that currently Str.split(Str) mask this method for strings, which should be
: fixed by moving that to Any as well.
diff: www.parrotvm.org/svn/parrot/revision?rev=31234
r31235 | Whiteknight++ | trunk: 17:01
: [Book] one more addition about compilers.
diff: www.parrotvm.org/svn/parrot/revision?rev=31235
r31236 | moritz++ | trunk: 17:02
: [rakudo] fixed trailing whitespaces
diff: www.parrotvm.org/svn/parrot/revision?rev=31236
r31237 | cotto++ | trunk: 17:07
: [imcc] refinement and further explanation of r31230
diff: www.parrotvm.org/svn/parrot/revision?rev=31237
17:36 Zaba joined 17:40 Theory joined 18:07 jhorwitz joined
PerlJam Is it just me or does that split() patch to any-str.pir not work properly? 18:15
18:15 johbar joined
PerlJam (or is that just the masking that mortiz was talking about? Does "abc123def".split(/\\d+/) trigger split(Str) ? ) 18:16
18:29 isop joined
moritz PerlJam: exactly 18:32
PerlJam: it works on non-string invocants, though 18:33
PerlJam oh, I see. I was forgetting about the invocant 18:35
moritz rakudo: say 1234.split(/2/).perl 18:36
polyglotbot OUTPUT[["1", "34"]␤]
18:44 jan joined
isop pmichaud: ping 18:58
pmichaud pong 19:07
dalek r31238 | julianalbo++ | trunk:
: escape string DATA in pdump and show empyy strings as such
diff: www.parrotvm.org/svn/parrot/revision?rev=31238
isop I figured out what was wrong with my augmented assignment thing
19:07 Zaba joined
isop though it's still probably not the best way to do it 19:08
where do I put a patch?
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, like, 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/
isop heh
pmichaud can also submit patches to perl6-compiler 19:09
or parrotbug@perl.org
isop thanks 19:10
pmichaud maybe we should create a launchpad project for pynie
particle damn, coordinating events for the weekend is really sucking up my time 19:11
pmichaud anyone have any recommendations about project management in launchpad or some other system? 19:12
19:13 ruoso joined 19:15 ruoso_ joined
particle launchpad is good for high-level pm tasks 19:16
pmichaud I'm thinking bug tracking.
particle i prefer hiveminder/rt for todo/bugs
pmichaud and patch management.
purl hmmm... patch management is very offbeat also
particle obra likely has some opinions
summon obra 19:17
pmichaud rt will be great if I can get an rt instance that would run the pynie tickets
pmichaud takes a look at hiveminder, since allison seems to like it 19:19
PerlJam hiveminder fits well with perl people I think. 19:21
I used it briefly when I was going to contribute something to svk
particle loves hiveminder for work and home todo lists
PerlJam using it is very simple and that's probably its most important feature. 19:24
pmichaud simple++
particle i love that i can get to it from my phone, irc, im, web, mail, etc
PerlJam If I were more organized, I'd probably use it for todo lists :) 19:25
pmichaud I'll play with it some more. Anyway, setting up a launchpad project was easy, so it exists for the moment: www.launchpad.net/pynie
NotFound Hey, what an idea. "To open a ticket send SMS to 555 with the word TICKET and a description. Send more messages to more priority. Cost for message, 0.50 €" 19:27
19:27 purl joined
isop pmichaud: I'll submit it to launchpad, then 19:33
pmichaud: bugs.launchpad.net/pynie/+bug/271874 19:34
19:47 baest joined 19:56 braceta joined
pmichaud isop: got it, thanks! 20:03
isop :)
pmichaud maybe a patch for README that tells others to submit bugs through launchpad? ;-) 20:04
isop ok 20:06
dalek r31239 | pmichaud++ | trunk: 20:08
: [pynie]: Patch for augmented assignment, isop++
diff: www.parrotvm.org/svn/parrot/revision?rev=31239
r31240 | pmichaud++ | trunk: 20:09
: [pynie]: Forgot to add t/10-augop.t (isop++)
diff: www.parrotvm.org/svn/parrot/revision?rev=31240
isop pmichaud: bugs.launchpad.net/pynie/+bug/271889
dalek r31241 | pmichaud++ | trunk: 20:12
: [pynie]: Update README with location for patch/bug submittals (isop++)
diff: www.parrotvm.org/svn/parrot/revision?rev=31241
20:13 Theory joined
dalek r31242 | julianalbo++ | trunk: 20:14
: Xlib examples: add Drawable class, make Window his child, and move draw methods to Drawable
diff: www.parrotvm.org/svn/parrot/revision?rev=31242
cotto_work OOey
moritz pmichaud: I get a parse failure in 10-augop.t 20:21
isop moritz: the test should fail 20:22
purl well, the test should fail is hires time and time differ by more than a second.
isop moritz: I mean
moritz: you're right but it should be failing instead
pmichaud I didn't bother to run 'make test' -- I figure someone else can patch. If someone else wants to take over commits for pynie, that'd be great. :-) 20:23
isop pmichaud: should I change the tests to use the perl test thing? (I mean the tests themselves, not the harness) 20:25
pmichaud isop: you mean Test.pm ? Probably not.
isop I think so 20:26
moritz isop: I don't quite understand... should it give a parse error?
isop moritz: it doesn't parse yet
moritz: but I guess that's not a very nice way to fail the test
moritz: as far as the test goes
moritz isop: so it's a TODO test but you have no way to mark it as "todo"?
isop didn't know about todo tests 20:27
moritz isop: you can comment out the test code and do print 'not ok 6 # TODO implement **=' 20:28
GeJ cotto_work++ 20:29
NotFound++
cotto_work it worked?
purl Of course it worked
GeJ cotto_work: as of r31242 it builds fine.
cotto_work NotFound++ 20:30
isop moritz: got it
GeJ will make a test run a little later.
cotto_work That makes me happy.
GeJ got some python to write now.
thank you both.
NotFound Hey, is my first pir usage of child classes ;)
cotto_work even though it's an odd bug, thanks a ton for reporting 20:31
isop pmichaud: why not use Test.pm?
cotto_work failing earlier is always better than failing later
pmichaud because I don't think pynie will be able to parse it
because Test.pm is written in Perl 6 :-)
moritz isop: well, Test.pm is written in Perl - you'd have to writing something similar for python...
isop: and implement an import mechanism
isop pmichaud: well, I guess they'd be in perl and just call pynie, no?
isop is looking at the lua tests 20:32
NotFound Do it, I want to be able to write xlibtest.py
moritz welcomes our new nci overlord
NotFound You can kiss my ring 20:33
cotto_work in fact, "Fail early, fail often." would make a good motto.
NotFound Faily tale. 20:34
cotto_work purl++ 20:47
Tene NotFound: have you written xlibtest.rb yet?
NotFound Tene: Don't know enough ruby.
cotto_work GeJ, did you run make test? 20:48
Tene NotFound: it's pretty simple. You should be able to pick it up by looking through t/
jhorwitz Tene: are cardinal's objects regular parrot objects or is there a metamodel on top of it, a la rakudo? 20:50
NotFound Tene: there is some example of loading and using pir modules?
Tene jhorwitz: copied from rakudo 20:51
NotFound: same as rakudo. it precompiles test.rb down to test.pir and uses that for the test suite 20:52
require 'xlib'
will look for xlib.rb, then for xlib.pir, then for xlib.pbc
jhorwitz hm. so like rakduo i should be able to register a parrot class as a cardinal class?
NotFound Will try 20:53
Tene jhorwitz: I don't understand the question.
jhorwitz in rakudo, if i have an existing parrot class from some library, rakudo can't see it b/c of the metamodel. i have to "register" the class as a perl 6 class. where's pmichaud for the *real* explanation? :) 20:55
NotFound jhorwitz: I don't register anything, and xlibtest.p6 works
pmichaud ...rakudo can't see it because classes in Perl 6 are located via their protoobjects
'register' creates the appropriate protoobject
jhorwitz so the question is, was that also ported over to cardinal? 20:56
pmichaud (it also creates a metaclass instance)
the real question is "how does cardinal locate its classes?"
jhorwitz is glad pmichaud is here :)
Tene get_hll_global $P12, "ClassName" 20:57
looks like
then $P12."new"()
pmichaud okay, that's the same as Rakudo.
moritz NotFound: the mysql example module isn't very usable because the rows aren't Perl 6 lists... 20:58
jhorwitz Tene: basically i want mod_parrot's classes (written in PIR) to be instantiated from cardinal.
moritz NotFound: maybe with that registering black magic you could improve that
NotFound moritz: I think that I'm not the better person for that work. 20:59
pmichaud jhorwitz: how about using P6object to create mod_parrot's classes?
then it would happen "automagically"
jhorwitz i let the HLL modules do the HLL-specific things 21:00
Tene jhorwitz: you could use P6object's 'register'?
jhorwitz but i can just have the cardinal module do it
that's all i needed to know. :)
pmichaud P6object doesn't think of class registration as being hll specific
it just says "give me a class and set up the protoobjects"
jhorwitz gotcha
pmichaud for example, PGE and PCT all use P6object to create their classes
(and they aren't HLL-specific) 21:01
21:01 Whiteknight joined
pmichaud eventually (like very soon) P6object will also deal with exporting protoobjects into other namespaces 21:01
er, into other HLL namespaces
moritz NotFound: of what (parrot) type are the mysql rows that your module returns?
NotFound How can I call Xlib::DisplayName() from cardinal?
jhorwitz pmichaud: thanks for the explanation. helps a lot. :) 21:02
NotFound moritz: Mysql::Row class
jhorwitz pmichaud: i'll be hackathoning with you in pittsburgh
particle jhorwitz: tiny chance i'll be there, too 21:03
pmichaud jhorwitz: looking forward to it.
21:03 purl joined
jhorwitz particle: that would be sweet. haven't seen you in all of 2 months. ;-) 21:03
moritz NotFound: could that thing be made a subclass of ResizablePMCArray or some such? 21:04
NotFound moritz: I suppose it can, but don't know what to do to not let corrupt it via unexpected vtable or method calls. 21:05
pmichaud what does it return now?
moritz NotFound: hm... maybe I'll just write a Perl 6 wrapper class, although it's not very efficient 21:06
Tene NotFound: actually, I don't know if that's supported yet. Lame.
I'll try to get to that namespace stuff tonight.
Really.
I've been busy and not sleeping well lately. :(
NotFound Tene: I need to be able to call functions in a namespace for both Mysql and Xlib.
Tene Yeah, I really should have realized that. 21:07
particle joins in: cardinal is a lame hll. i can't do something cool, 'cause your language sucks.
NotFound But I can export the required ones to root namespace with a longer name, if that helps using from more langauges.
moritz NotFound: don't remove the incentive for adding namespaces ;) 21:08
Tene I've got a pile of cardinal stuff to work through.
NotFound moritz: a long and ugly name is not so bad incentive. 21:09
moritz ParrotNCIMysqlSampleRow?
NotFound ImTooLameToUseNamesapaces_Mysql_init X-)
moritz ;)
Tene Please no. I'll do it tonight. I promise. 21:10
NotFound Ok ;)
Tene ;)
particle tene++
sleep--
Tene purl: karma tene
purl tene has karma of 206
moritz karma sleep 21:11
purl sleep has karma of 106
Tene 103*2 Nice.
jhorwitz karma purl
purl purl has karma of 8218
jhorwitz that can't be right
particle purl karmas herself when nobody's looking 21:12
purl particle: sorry...
Tene purl++
NotFound Method 'DisplayName' not found for non-object -> At least the error message is clear. 21:13
moritz (clear error messages)++ 21:14
jonathan is back from PM group 21:27
pmichaud wishes todo.pl were installed on feather 21:28
jonathan todo.pl?
pmichaud command line interface for hiveminder
that way I could add todo items from my irssi window :-) 21:29
moritz pmichaud: I can install stuff on feather... 21:30
pmichaud cpan -i App::Todo :-)
jonathan pmichaud: Anything in backscroll I should read? :-)
jonathan is lazy
pmichaud not that I can think of 21:31
jonathan Most of it looks to be about Cardinal being a lame HLL ;-)
pmichaud I went to lunch shortly after you left and have been doing other non-programmy things since
isop pmichaud: if I want to make a PynieList class, should I have listmaker create one of those, or is there some way to set the HLL to use those instead of ResizablePMCArray?
pmichaud isop: when we get HLL mapping in place much of it will happen automatically. But normally you'd have listmaker create those. 21:32
jonathan I gave my Perl 6 OO talk, and have been doing mostly beer since.
pmichaud I did help with the implementation of .split(Regex) :-) 21:33
moritz ii libapp-todo-pe 0.96-1 Provides todo.pl, a command-line interface t
jonathan is so tempted to reply to ajr's message with "DO NOT WANT"
pmichaud heh 21:34
moritz jonathan: I thought about "too late, $url_to_pmichauds_lightning_talk"
bacek morning...
jonathan :-D
pmichaud attempt to expunge lolspeak: FAIL
NotFound Talking about using pir modules from HLL.... CAN I HAZ XLIB??
pmichaud [pmichaud@feather ~]$ todo.pl 21:35
Can't locate Number/RecordLocator.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/bin/todo.pl line 21.
bacek my kidz hatez me. They woke me up at 6:30...
pmichaud my kidz hatez me also. I wake them up at 6:30
Tene NotFound: if you show me the spec for using modules and namespaces in lolcode, or make a proposal, I'll implement it.
bacek pmichaud: :)
NotFound Tene: LOL
moritz pmichaud: I either install or test software, but never both ;) 21:36
pmichaud sounds like me
moritz pmichaud: better now?
pmichaud (re: pynie patch)
todo.pl WIN 21:37
bacek pmichaud: what do you think about nopaste.snit.ch/14105 ? This is quick fix for [perl #58818] [BUG] Problem when directly assigning object attributes for self.new
pmichaud thanks thank thanks
yay, I can haz todo items in irssi
moritz dh-make-perl++ # build deb packages from CPAN without much trouble 21:38
bacek moritz: where did you get libapp-todo-perl???
oh.
pmichaud bacek: I'd have to review how Object.new is implemented -- I didn't write that code.
bacek moritz: This is an answer ;)
pmichaud: ok.
jonathan pmichaud: I have a ticket that needs changes to Object.new.
As in, one I looked into. 21:39
moritz bacek: FYI, in stable it's pretty basic, but in Lenny dh-make-perl is pretty good
jonathan 58818
Basically, should create container and then assign to it.
bacek moritz: I use Lenny anyway ;)
jonathan Rather than blindly assigning whatever's passed in.
(I think that code predated .item, .list and .hash and Perl6Scalar too...) 21:40
pmichaud anyway, I delegate the nopaste to jonathan :-)
jonathan I know how to fix it, just need to do it. :-) 21:41
pmichaud afk, dinner
bacek pmichaud: bone appetite
moritz
.oO( does pmichaud eat bones? ;-)
jonathan lol 21:42
NotFound Talk about language interoperability ;) 21:43
use French;
moritz no French; 21:44
# recovered from that desease
cotto_work use Awesome;
NotFound Use Spanish; 21:45
# Como si lo desease
bacek bareword "Use" found where operator expected 21:46
NotFound Urgh
bacek afk # breakfast 21:49
purl let's see how this goes 21:53
jonathan purl, perl 6 junction fetishism? 21:55
purl umm....
Infinoid purl, hot junction webcam action?
22:00 isop joined
Whiteknight purl, hot junction webcam action is super hot for a dirty bot like me. SEXY! 22:00
hot junction webcam action? 22:01
cotto_notpurl ENOPURL
Whiteknight damnit!
EGETPURLBACKHERESOICANSCREWWITHIT
cotto_notpurl I don't make a convincing bot. 22:04
isop does parrot have some reflection mechanism atm?
cotto_notpurl probably. What do you want to do? 22:05
isop see what methods an object has
I think I got it
Whiteknight you should be able to extract that list from the objects namespace, if there isn't an easier interface to get it 22:10
I'm sure there are attributes floating around that contain the information you want
isop how about the properties attached to an object?
to a specific instance?
Whiteknight that may work too, I'm not an expert in objects and properties 22:11
isop ok, I found that, too 22:13
Tene isop: 22:14
$P1 = class $P0 22:15
$P2 = $P1.methods()
isop thanks 22:17
22:20 bacek joined
jonathan isop: also $P2 = inspect $P1, "methods" # if you don't want to do a method call - this calls the v-table method 22:24
pmichaud moritz++ # I can now do hiveminder task management from IRC! 22:37
that's a big help, since I generally have an irc window open somewhere 22:38
22:53 Lorn joined 23:00 tetragon joined
cotto_work does anyone know what the plans are for integrating ncigen into Parrot? 23:01
isop pmichaud: how do I set the signature for the 'not' pirop to accept 2 PMCs and return a PMC? pynie's using the version that doesn't return anything 23:02
particle isn't it PPP ?? 23:04
particle tries to remember
Whiteknight PP->P? 23:07
isop particle: that worked 23:08
particle sweet! i remembered something useful!
23:17 Lorn joined
Ontolog P->NP? 23:32
Whiteknight hopefully NP->P
and if you prove it, you'll be a famous person 23:33
cotto_work parrotvm.org is s l o w 23:39
Whiteknight maybe you're just really fast? 23:44
cotto_work not today 23:45
jonathan sleeps 23:48