www.parrot.org | Parrot 1.6.0 "half-pie" released: The JIT is dead! | Testing priorities: Exception and MultiSub
Set by moderator on 20 September 2009.
darbelo Give it time to build. 00:00
dalek rrot: r41425 | japhb++ | trunk/runtime/parrot/library/Config/JSON.pir:
[library] Config/JSON.pir: Fix to use correct JSON parser
japhb "I want it all, I want it all, I want it all ... And I want it NOW!"
Austin Darbelo -?
You mean beyond "make install-dev" ?
darbelo It worked. 00:03
purl Of course it worked
Austin How do array iterators and delete-keyed-int interact? 00:04
japhb darbelo, excellent.
Austin Can I safely delete through the iterator, or must I do some shenanigans?
darbelo I didn0t realize you were changing a pir file. So I just blindly rebuilt parrot.
japhb is finally tanking on the sharable tasks.
darbelo I'll see about rolling a .json for decnum-dynpomcs later. 00:05
japhb darbelo, okie-dokie 00:06
Tene: It suddenly occurs to me that the most immediate task I could use help with is some filesystem "builtins" in Glue.pir. For example, I need mkdir(), chdir(), cwd(), stat() (and/or file tests), etc. String slinging and especially filesystem path string munging would be good, too. split() and join(), catdir(), catfile(), etc. 00:20
Austin I've got some of those.
darbelo japhb: you can get platform-correct mkdir chdir and a few others out of parrot_config 00:21
japhb The guiding principles are: 1. Do the most with the least. 2. It doesn't have to be perfect. 3. It's handy if the arguments are similar to the ones in Perl 6.
Austin code.google.com/p/close/source/brow...r/File.nqp
japhb darbelo, if possible, I'd like to use internal Parrot ops/subs/methods. Often the parrot_config versions just call out to Perl5 ExtUtils stuff. 00:22
Austin It's wrappers around the File.pmc
Also, there's OS.nqp, which does the same for OS.pmc
japhb It's not that any of this is difficult in the slightest. It's just that it's work that needs to be done, but that I can easily pass off to someone with PIR skillz. 00:23
nopaste "darbelo" at 200.49.154.173 pasted "Not on my box!" (21 lines) at nopaste.snit.ch/18031
japhb darbelo, heh. On mine, it's a mess of Perl calls.
darbelo But I do see you point.
And I probably won't commit that either, since I didn't get a measurable build speedup out of it. 00:24
japhb Austin, right now Glue.pir is (as the name implies) just doing straight PIR implementations for the builtins, because that was easiest for me, but I'm not opposed to adding NQP-implemented builtins as well. 00:27
Austin Ahh.
Sorry. Didn't want people to spend a bunch of time rewriting nqp I've written. (But you can be sure I'll steal whatever pir you code and wrap it...) 00:28
japhb For the stuff I coded so far, the NQP would have just been a thin wrapper around a big Q:PIR block anyway, so it didn't seem worth it at the time. ;-)
Tene, Also, I need a data structure merge utility -- In particular, I need to take a data structure of default configuration or metadata, overlay it with values from a "user defaults" JSON file, overlay that with values from a parsed JSON file for a particular project, and then overlay *that* with command line options or other runtime values. 00:34
darbelo japhb: Wiki that up somewhere. 00:35
japhb Tene, alternately, make a proxy object that can store references to several data structures, and any lookups in the proxy data structure are looked up in turn on each real structure in order until a matching entry is found. And sets to the proxy are passed on to only the first of those (which may start empty, for convenience in implementation). 00:37
darbelo, hmmm?
afk for a bit, will backlog 00:38
darbelo The tasks, put them in a wiki or something, irclogs can be a pain to search for.
00:43 Whiteknight joined
dalek TT #1059 created by petdance++: Run Parrot through cpplint.py 00:49
Austin Hello, whiteknight 00:50
Whiteknight hello, dependable Austin 00:51
Austin :)
"Ubiquitus, are you /here/, too?"
00:53 payload joined 00:54 rhr joined
japhb darbelo, I plan to put them in the TODO. Tene just asked me to ping him on IRC. 00:57
00:57 Austin joined
Austin So much for "dependable" 00:57
darbelo Even better!
Hm. It migh be a good idea to keep the source file inside a src/ directory, to differentiate from the built files. 00:59
Austin Ahhhh! Dammit! 01:02
darbelo Uh?
Austin Even scalars are pass-by-reference.
01:02 shockwave joined
darbelo Ouch. 01:03
Austin push(0 + $index)
Look, my gitorious email is here. 01:04
(Too late.)
01:04 patspam joined
darbelo Great! You can start throwing 'merge requests' at japhb, then. 01:05
pmichaud (make install-dev needed for hlls) imo, "make install-dev" is only needed to build languages, not to install them.
I suspect it would be very possible for rakudo to run without install-dev files present. (If not, then Parrot's "make install" is b0rken.) 01:06
darbelo Maybe, but plumage is a fetch-build-install machine.
pmichaud hmmm. I wonder what would be needed for build in that case...?
I guess dynops and the like. 01:07
anything that needs to create its own dynpmcs or dynops would need install-dev, yes.
that would seem to be about it, though. 01:08
dalek ose: r130 | Austin++ | trunk/ (5 files):
Set TreeRewriteV to delete empty initload subs.
darbelo I wouldn't mind it at all if install-dev became install. 01:09
And that would simplify the whole 'use a fake install dir in the source tree and then copy' thing people were talking about. 01:10
pmichaud perhaps a little bit, yes. not by much. 01:11
the current build and install system is really.... ugly. 01:12
darbelo You build a fake tree, and then every step of the build leaves it's result there. It get's copied wholesale to $PREFIX. That's simpler that what we have now. 01:13
pmichaud the "build a fake tree" isn't simple.
let me rephrase...
I started to do this in July. There are a *lot* of pieces of Parrot that depend on building in the current structure. 01:14
Changing those is going to be a pain.
darbelo Ew. Do you have a branch I can look at? 01:15
The word would be a better place wothout so many separate Makefiles, that's for sure. 01:19
ysth does building rakudo now depend on the parrot build dir being there? 01:20
darbelo ysth: Not since the last release IIRC.
ysth yay.
Austin pmichaud: Is there any way to get _dumper to sort the keys of hashes before dumping them? 01:24
pmichaud it doesn't do that already? ISTR that it did at one time. 01:26
but either way, I'd accept a patch that sorts the keys. Probably needs to be in runtime/parrot/library/PGE/Dumper.pir
oh, wait. hmmm. 01:27
Austin I think there was a hash-key randomization undertaken as part of the Key refactoring bacek did a few months back.
pmichaud might also want to look at the 'dump' method for PCT::Node
01:28 jsut_ joined
pmichaud anyway, it probably involves getting a list of keys, sorting them, and then iterating over that. 01:28
I don't see any problem with doing that... just a smop
Austin Finding the code seems to be the hardest part. 01:29
01:31 darbelo left
dalek rrot: r41426 | jkeenan++ | branches/auto_frames_refactor:
Create a branch to do a little refactoring on auto::frames and associated test file.
01:38
Coke wonders why we have data_json and JSON ? 01:42
dukeleto coke: data_json is the newer stuff, i think JSON is being deprecated 01:51
Austin Parrot supports unicode, but not uppercase.
01:51 [1]Limbic_Region joined
Coke dukeleto: as the author of JSON, I find that... disturbing. 01:51
one wonders why the author of data_json didn't just patch json.
Austin Where is JSON archived? 01:52
Coke and if it's deprecated, it needs a ticket.
archived?
Austin SVN?
purl i heard SVN was down for me
Coke it's in compilers/
Austin Yeah.
See? data_json is in git.
You've been forked.
Coke Austin: ... data_json is in compilers/ also, sir.
Austin Really?
Coke No, I'm lying.
Austin I thought japhb was doing that, and doing it in git 01:53
kid51 From DEPRECATED.pod:
JSON, JSON, and Config;JSON [eligible in 1.5]
<trac.parrot.org/parrot/ticket/508>
Austin Ok, you haven't been forked. You've been deprecated. 01:54
(I think I'd rather get forked.)
dukeleto Austin: me too
Coke kid51: that doesn't mention data_json at all.
and no, that doesn't deprecate JSON. It just renames them.
Austin W00t. Sanity tests pass again. 01:55
Coke so again I say... what's data_json? =-)
dukeleto i meant that the name JSON was deprecated and renamed data_json . sorry for the confusion
01:55 ruoso joined 01:56 jrtayloriv joined
Coke dukeleto: there are currently both data_json and json in the repo. 01:56
dukeleto yes
Coke that's duplication, not deprecation.
(and doesn't match what's in #508 at all.)
and why is "data_json" a better name than "json" ?
dukeleto i am just going by what I have heard in the channel. searching the #parrot logs will probably give you better info
Coke k. 01:57
I'll wait for the email.
Austin pmichaud: Is it meaningful to call a sub with :named but not :flat -- {{{ 'sub'(MyHash :named) }}} 02:09
dalek rrot: r41427 | jkeenan++ | branches/auto_frames_refactor (2 files):
Refactor so that (1) we only test $can_build_call_frames for truth once; (2)

be set.
02:16
Coke Austin: yes. 02:22
but I don't think that's the syntax.
Austin Hmm. I don't think PCT supports that. 02:23
Ah.
What's the syntax?
Coke 'sub'( 'someparam' => somevar ) 02:24
Austin Ahh, not what I had in mind.
That's 'sub'(somevar :named('someparam')) 02:25
Coke maybe that works too. Not what I'm using in tcl. 02:26
Austin There's a special case in PCT that I'm curious about. You can have :named(x) with a value, or you can have :flat + :named with no value, but it doesn't support :named solo.
But conceivably :named might be a way to signify that the parameter was a hash containing all the named parameters, without going through the hassle of flattening an unflattening them. 02:27
So I was curious.
02:30 dukeleto joined
dukeleto 'ello 02:32
Austin Hello, duke
Was geht?
Coke Was? not Wie?
yay, I have a cell phone again. 02:33
Austin "What goes" as opposed to "Wie gehts" - how goes it
Yay. How did you not have a cell phone? 02:34
Coke ich kann Deutsches nicht sprechen
Austin: turns out they're dry clean only.
Austin Ouch.
dukeleto Austin: Wie geht's ? is what the germans say 02:41
02:42 janus joined
dukeleto Coke: ich kann kein Deutsch ;) 02:42
02:43 rhr joined
jdv79 treed: around? 02:47
pmichaud Austin: afaik there's not a way to pass a hash containing named parameters w/o going through :flat and :slurpy 02:49
Austin So a :named by itself is bogus? 02:50
pmichaud according to pdd03, I think so.
I don't see any tests that use :named by itself
Austin Cool. Thanks.
pmichaud at one time it was possible to declare params using only :named (instead of :named('foo')), but I never found out exactly what it meant. That is, imcc would parse it and produce something, but it may have been non-sensical. 02:52
anyway, PCT only understands :named('...') and :named+:slurpy/:flat 02:53
Austin I wondered if it was a pass-through for all the named args. I guess declaring it 07:named would be implicitly :slurpy
pmichaud when the pcc refactors land, there's supposed to be a mechanism whereby one can get all of the arguments and do custom packing/unpacking
:capture, I think. 02:54
Austin yikes
02:54 rg1 joined
pmichaud I'm fairly certain that :named isn't implicitly :slurpy or :flat 02:55
Austin Is there any kind of error recovery in/planned for PGE?
pmichaud depends on what you mean by "error recovery" 02:56
Austin Some way to keep parsing when a syntax error happens.
foo(xxx; bar(x);
pmichaud PGE already supports that if your grammar does. 02:57
failure to match isn't an "error"
at least, not to PGE.
essentially when you detect that an error occurs, you just scan ahead to the next statement point that you can find and continue parsing from there. 02:58
Austin So attach a || .*? '}' or something?
pmichaud i.e., you probably don't want to use <.panic> but instead have some other sort of assertion that lets you record the error you've seen and then scan ahead to the next detectable starting point
yeah, something like that. But "next detectable starting point" is always the tricky part, in any grammar/parser. 02:59
Austin :)
pmichaud that's why Perl 6 and Rakudo now basically say "Confused" when it gets to a point where it's not really sure what's coming up next
japhb Coke, JSON is deprecated in favor of data_json because there was no obvious way to fix the case issue without screwing over Windows users and breaking deprecation policy.
Coke, also, data_json is compliant with the existing hll_interop standards. 03:00
Austin I like the way NQP identifies errors at the statement level.
japhb As of today, Config::JSON has been fixed to use data_json instead of JSON.
(I actually fixed it quite some time ago, but forgot to commit that patch.)
Coke which is what brought this to my attention. 03:01
this is the wrong fix, imo.
pmichaud fwiw, nqp and pge are likely to do similar things
Coke are you working from a ticket on this?
pmichaud i.e., create a new replacement version rather than try to migrate the old one
Coke pmichaud: what, change their name to data_nqp? =-)
Austin parrot_nqp 03:02
It's already started....
pmichaud well, parrot_nqp is just the name of the fakecutable binary
because I didn't feel comfortable installing "nqp" in a path just yet.
japhb data_foo is just a convention we informally came up with in this channel for "languages" that are just parsers for a data format with no executable bits. JSON, XML, etc.
Coke ok. deciding things in the channel is not always a good thing. would have been nice to have a ticket, or an email, or something. 03:03
<shrug> I consider myself outvoted.
carry on.
pmichaud I'm curious as to what you would prefer as the "right fix", Coke?
Coke pmichaud: fix json in place.
or have a plan that involves it eventually getting back to just "json". 03:04
a ticket with the plan would help me decide which bits I really disagreed with. =-)
pmichaud sure.
fix json in place is likely difficult to do because of backwards compatibility issues. People wouldn't be able to effectively use it until after the 2.0 release 03:05
japhb I'm not disagreeing with you as a general principle (re: making choices in channel), but sometimes that's what has to happen to allow people to JFDI with whatever limited time window they have available to hack.
Coke pmichaud: That depends entirely on what was being fixed.
japhb The deprecation policy is a major pain in the kiester.
Coke if it was just "add a 'compile' method", well, that's not that hard.
japhb Coke: changing the basic API by which you instantiate and use the language.
pmichaud Coke: fair enough. I'm taking japhb at his word that fixing it involved breaking backwards compat
Coke I'm not. =-) 03:06
japhb Coke, :-)
Coke but, like I said, i'll consider myself outvoted. I have other fish to fry.
like, why is partcl still segfaulting? 03:07
pmichaud oh, I still want to do the pge conversion for partcl
hmmmm
s/pge/pct/
japhb Coke, remember there were two changes: 1) become HLL interop compliant, 2) Fix the filename case issue. 2) was necessary because of 1 (Tene could explain in deathly detail why). 2) was the part that sucked.
Tene japhb: there's a ticket, isn't there? 03:09
japhb I tried to find ways around it, and Tene basically gave me gentle nudges for a while until he had successfully herded my into the cliff, and I went "Wow, this sucks." And he said basically, "Yep."
Tene japhb: also, wasn't json not installed to the right place?
Coke Tene: ticket #508 doesn't mention any of this.
japhb Tene, it wasn't being installed at all.
Coke installed or not has no impact on the rename. 03:10
Tene japhb: if it's not installed, would changes really be breaking compat? ;)
Coke why do people insist on continuing arguments I've given up on?
japhb Coke, sorry, nm
pmichaud because we respect your point of view and want to make sure we didnt overlook something? ;)
Coke you already did that.
<shrug>
pmichaud already overlooked something or made sure that we didn't? ;) 03:11
Tene Coke: 508 isn't about HLL interop issues, and I'm pretty sure japhb never mentioned it when he was working on json.
Coke for future reference, to rename a file by case only, do it in two steps, says the google. "svn rename FOO FOO_; svn renme FOO_ foo" 03:13
(this avoids the problem of having to have both the old and new copies present at the same time on a case-in. filesystem.)
japhb And this is guaranteed not to screw people who have checkouts and don't 'svn up' in between those two steps? 03:14
Coke japhb: easy enough to test.
japhb Coke, if I had any Windows boxen, sure. ;-)
Coke sighs. 03:15
japhb Why sigh?
I'm erring on the side of not screwing people, I would think that was a good thing. 03:16
If the answer is "Wait around for someone with Windows to come help test," that's violently opposed to JFDI. 03:17
I don't have time to be perfect, but I do have time to be "not completely evil". :-) 03:18
03:20 jrtayloriv joined 03:22 ash_ joined 03:23 Coke left
Austin pmichaud: When a grammar method (token, regex, rule) is called, what values are immediately available in the 'match' object? 03:23
ash_ umm i just wanted to let someone know that I just updated parrot and now make test won't run for me, i get a make: *** [test_pbc_annotation_persistence] Error 255 03:24
pmichaud Austin: whatever has been matched thus far 03:25
the 'match' object is the "work in progress"
Austin So right up front it's nothing but a starting offset and a source string? 03:26
pmichaud pretty much
Austin Is that in 'to'()? (I'm trying to grok the whitespace optimization hack)
pmichaud .'from'() contains the position of the beginning of the match
.'to'() contains the current position 03:27
Austin And initially to == from?
pmichaud yes
Austin So the shortcut compares .to versus .to -- what is that doing? 03:29
pmichaud it's two different .to's 03:30
Austin If I parse " a b", the first space caches a match {from = 0, to = 1}. (more)
The second space creates a new match {from=2 to=2} and compares them (fail), replaces the cache and executes the rule, producing {from=2 to=3}, right? 03:31
pmichaud yes, but that's not what the shortcut is for
Austin Okay. 03:32
What's it for?
pmichaud the shortcut is when we have nested rules that all call <.ws> (e.g. at the beginning)
for example, if I have
rule a { <b> }
rule b { <c> }
rule c { 'x' }
and then I want to match <a> against " x y z"
rule a starts with an implicit <.ws>, which grabs all of the whitespace before the 'x' 03:33
it then calls into rule b
Austin Ahhh.
pmichaud at the beginning of rule b, I don't want to go through all of the <.ws> logic again, because I already know that I just ate the whitespace
Austin So it's a quick check for zero length?
pmichaud so when b calls <.ws>, we short circuit, because our current .to position is the same as the .to position that we saved in rule a 03:34
that way we don't end up making all of the later calls to check for <.pod_comment> and <.unsp> and various other things that a complex <.ws> rule has to do
Austin Yeah, I see it now. 03:35
ash_ hmmm well, apparently the tests only failure to run when i do --optimize with my configure, if i don't do the optimize flag it works, thats odd... 03:36
pmichaud so essentially we just memoize the last <.ws> that we matched (from any rule), and whenever we make another subrule call to <.ws> we can short circuit if we've memoized the current position
Austin As long as the strings are the same. :)
pmichaud yes, it's not totally robust.
it wasn't intended to be the long-term answer
Austin On a somewhat related note, I got #include to 'work' 03:37
By making it a declaration, and requiring it only be at extern scope. (So it's not a general solution at all.)
ash_: It sounds like a new trac ticket: trac.parrot.org 03:38
pmichaud ash_: what platform? 03:39
ash_: did you try "make realclean" before building?
Austin (Although, not working with --optimize is kind of expected, isn't it?)
japhb Tene: Suggested tasks now in TASKS file: gitorious.org/parrot-plumage/parrot...ster/TASKS
pmichaud I hope not -- Rakudo just switched to always wanting --optimize
Austin :)
ash_ i am doing a fresh checkout in a different directory to make sure its a problem, and i am on OS X
Tene japhb: great.
pmichaud ash_: what version of gcc? 03:40
ash_ apple's gcc 4.2
Tene japhb: So, as I should have expected, after harassing you all day to give me something to do tonight, real life got in the way tonight. :P
japhb: will look at it tomorrow, though, or maybe later tonight.
pmichaud ash_: that's indeed odd -- it used to be that gcc 4.2 on macosx required the --optimize flag in order to work
oh, sorry, it was 4.1.2 and 4.1.3 03:41
wrong versions
japhb Tene, fine by me. I just wanted to feel like I was out of the way of anyone wanting to help. ;-)
pmichaud I wonder if it's related to the ASSERT_ARGS macro change made earlier today.
ash_ its building now, when its done ill run make test to see if it still throws an error without actually running the tests
pmichaud ash_: anyway, it definitely deserves a ticket.
(assuming the fresh checkout exhibits the same problem) 03:42
ash_ thats not comforting, i just ran make test and it immediately failed, then ran it again and it started running for a few tests then failed
its not very consistant...
it seems like t/op/annotate.t is failing at least half the time i run make test, but if it passes it finishes all the tests 03:47
and it seems to be doing it regardless of --optimize (which i guess is implied now) 03:48
dalek ose: r131 | Austin++ | trunk/t/language/08-conditional-expr.t:
Added conditional-expr test (new-style)
03:56
ose: r132 | Austin++ | trunk/t/08-conditional-expr.t:
Deleted old cond-expr test
ash_ okay, its the 16th test in t/op/annotate.t that is randomly failing, which stops the rest of the tests from finishing 04:03
i'll make a not of it in trac to see if anyone can track it down further
i am going to submit a bug for this one since its seems to be so inconsistent on OS X 04:08
treed jdv79: I am now. What's up?
04:14 quek joined 04:46 theory joined 04:48 theory joined
jrtayloriv Is there any way for me to validate my grammar.pg file? I don't have anything done in actions.pm, but I just want to make sure that my syntax is correct in grammar.pg before I begin. 04:55
hmm -- nevermind. I should just be able to ./perl6 ../path/to/grammar.pg, right? 04:57
04:59 TimToady joined 05:02 ash_ joined
cotto jrtayloriv, you can run the compiler with --target=parse 05:07
parrot compiler.pbc --target=parse input_file.txt 05:08
jrtayloriv cotto, Sorry -- I was AFK. I'm just trying to check the syntax of the grammar.pg file itself at this point, not to make sure that it parses the HLL correctly. 05:22
Austin jrtayloriv: $(PARROT) $(PARROT_ARGS) $(PERL6GRAMMAR) --output=$@ $< 05:23
cotto Hmmm. I guess running it as perl 6 would work then.
Austin Compile .pg ->$@
nopaste.org/p/aRCuW4Es4 05:24
jrtayloriv Austin, so? --> parrot compilers/pge/PGE.pbc languages/phemer/src/parser/grammar.pg ... correct? this runs but I'm getting no output, which I suppose is good? 05:27
05:27 Zak joined
Austin Try adding --output=phemer_grammar.pir 05:28
05:29 masak joined, flh joined
cotto night 05:31
jrtayloriv Austin, parrot compilers/pge/PGE.pbc languages/phemer/src/parser/grammar.pg --output=phemer_grammar.pir .... is still giving me no output, and the .pir file not being created.
cotto, Good night. 05:32
Austin put the --output flag *before* the list of tiles (grammar.pg)
Good night, cotto.
05:32 kyle_l5l joined
Austin Do you have 'make' on your platform? 05:32
jrtayloriv Austin, I have tried it in all three positions (following parrot) -- same result. 05:33
Austin, Yes.
Austin Is this a new language?
Did you do create_language.pl?
jrtayloriv Austin, Yes and yes.
Austin So you should have a makefile with the right mojo for this. What's broken? 05:34
jrtayloriv oops Yes, and no.
Austin Or is it because you're not using an installed parrot?
jrtayloriv I did mk_language_shell.pl
I ass-u-me-d that that's what you meant. 05:35
Austin Okay. I think they're two competing scripts that do roughly the same thing, except one of them is wrong.
I have no idea which is which.
purl i already had it that way, Austin.
Austin Thanks, purl. 05:36
Do you have anything in phemer.pg?
sorry, in src/parser/grammar.pg?
jrtayloriv Austin, Yes. 05:37
That's what I'm trying to validate the syntax of.
Austin So if you touch that file, and run make, what goes on?
jrtayloriv pastebin.com/d27de372b 05:38
Looks like it did find a syntax error in there at least ...
Once I've corrected the errors, I'll be back if there are other problems. Thank you.
Austin Happy to (not) help.
:) 05:39
jrtayloriv What is wrong here --> token string_element { [<-["\\]> | '\\\\\\\\' | '\\\\"'] {*} } ... It seems from the error message that the problem is with <-["\\]> ... (perl6regex parse error: Error parsing enumerated character class at offset 1474, found '*') 05:42
I'm trying to match any character that is not " or \\
Austin Do you know about the magic "string_literal" target? 05:43
Sorry, s/target/rule/ ?
jrtayloriv runs off to the Google machine 05:44
Austin It won't help.
jrtayloriv Indeed. 05:45
Austin code.google.com/p/close/source/brow...ens.pg#184
"ident" and "ws" and "string_literal" are built in rules that you get "free" with your grammar.
Except that "ws" is magickal and not to be trifled with lightly. 05:46
They do what you expect, except for when they don't quite do what you expect. But as long as what you expect is "C", they do it.
jrtayloriv Austin, Unfortunately, what I expect is Scheme. But I'll play around with it. 05:47
Austin I don't know scheme. What kind of backslash foo does it support?
05:47 JimmyZ joined 05:48 chromatic joined
jrtayloriv Austin, Nothing special -- string literals are always in double quotes, and you escape quotes like \\" and slashes like \\\\ ... that's all I was trying to do. 05:48
That is C, though, isn't it :) 05:49
Austin Okay. I think your problem was the first backslash, in ["\\], which maybe should be doubled?
jrtayloriv You have to double it in a char class?
indeed you do -- thanks again. 05:50
Austin The string_literal knows that double-quoted strings support \\r \\n \\x \\t \\help-help-im-being-oppressed and a bunch of others.
05:56 uniejo joined 06:13 fperrad joined 06:15 flh joined
jrtayloriv Night night #parrot 06:27
07:17 iblechbot joined
dalek ose: r133 | Austin++ | trunk/ (15 files):
More working tests.
07:18
07:24 donaldh joined 07:40 whoppix joined
dalek ose: r134 | Austin++ | trunk/t/ (2 files):
Converted t/04-declarations to new-style
07:44
07:59 quek joined 08:17 dukeleto joined 08:40 whoppix joined, masak` joined
dalek rrot: r41428 | mikehh++ | trunk/MANIFEST.SKIP:
manifest_tests failure - regenerate MANIFEST.SKIP
08:59
09:02 MoC joined 09:07 Austin_Hastings joined
moritz if anybody wants to hunt down a reproducible segfault, probably related to exceptions: rt.perl.org/rt3/Ticket/Display.html?id=69308 09:12
kyle_l5l moritz, what should we see? Exception() ? 09:21
moritz kyle_l5l: probably 09:22
kyle_l5l: any output that's not a segfault is better :-)
mikehh All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r41428 - Ubuntu 9.04 amd64 09:28
kyle_l5l it works here, so maybe I can dig out a reasonably sized patch 09:33
mikehh partcl r742 builds on parrot r41428 - make test PASS - Ubuntu 9.04 amd64 09:39
09:44 einstein joined 09:58 bacek joined
dalek ose: r135 | Austin++ | trunk/t/ (2 files):
Updated and moved prefix-expr tests(10)
10:04
mikehh rakudo (0220cc2) builds on parrot r41428 - make test / make spectest (up to 28374) PASS - Ubuntu 9.04 amd64 10:06
10:09 iblechbot joined
Austin pmichaud: ping 10:13
kyle_l5l moritz, that's a pretty good little bug there. 10:26
moritz quality bug-ware :-) 10:27
kyle_l5l it appears to tickle almost all the bugs that keep HLL threads from working. 10:28
ok, so I can have a "patch" up - one change to rakudo, a lot of changes to parrot. Should both of them go on that bug report? 10:32
moritz let's say "yes" for the moment 10:33
not sure about the normal procedure
kyle_l5l ok. I think the rakudo patch is reasonable. However, the parrot patch has a lot of really ugly fixes - I'm not sure of the "right way" to do it.
Austin message pmichaud If I compile this PAST: nopaste.org/p/agTSIRQNJ I get this output: nopaste.org/p/asBA7Nr2x - notice that $P12() does not pass $P13. What did I do wrong? 10:34
purl Message for pmichaud stored.
kyle_l5l they're pretty simple, but it requires a lot of rewriting of freeze/thaw. (handling of metadata is broken) 10:35
moritz I'm not familiar with the parrot internals, so I can't comment on that - but it's not really surprising that some of that is broken 10:36
kyle_l5l moritz, I think I need sleep before I can write a clear reply to that bug. But, see if these patches work for you: (rakudo) foobox.homelinux.net/~kyle/p6ms.patch (parrot) foobox.homelinux.net/~kyle/parrot.patch 10:46
moritz kyle_l5l: great, thank you, and sleep well 10:47
kyle_l5l moritz, welcome. time for sleep indeed. 10:50
10:50 tokuhirom____ joined
Austin message pmichaud Never mind. I needed to declare pirop 'inc' as 'inc 0*'. 10:55
purl Message for pmichaud stored.
10:56 fperrad_ joined 11:17 baest joined 11:18 tokuhirom____ joined
dalek ose: r136 | Austin++ | trunk/ (11 files):
Fixed up prefix ops
11:19
11:30 jsut joined 11:32 payload joined 11:34 tetragon joined 11:40 gaz joined
bacek o hai 11:53
12:00 bluescreen joined 12:13 whiteknight joined 12:16 ruoso joined
whiteknight good morning #parrot 12:17
bacek wave from future 12:18
dalek rrot: r41429 | bacek++ | trunk/runtime/parrot/library/Data/Dumper/Default.pir:
[cage][core] Sort Hash keys in Capture.dump to get predictive result.
12:19
rrot: r41430 | bacek++ | trunk/t/compilers/pct (2 files):
[t] Fix and unskip PCT tests.
jdv79 moritz: around? 12:34
moritz jdv79: yes
jdv79 moritz: nopaste.com/p/aqPAJZkVab 12:35
dalek rrot: r41431 | coke++ | trunk/runtime/parrot/library/Data/Dumper/Default.pir:
Fix typos.
12:36
moritz jdv79: thanks, applied 12:40
jdv79 thanks. forgot that bit.
dalek kudo: e9a7966 | moritz++ | t/harness:
submit smoker name to smolder, jdv79++
rtcl: r743 | coke++ | trunk/t/harness:
Report submitter to smolder, if present.

Patch courtesy justin@devuyst.com
12:49
12:58 bluescreen joined
fperrad message pmichaud About r41417, if NQP is a language, the executable must be named parrot-nqp (instead of parrot_nqp), like parrot-abc, ... ( see PDD30) 13:00
purl Message for pmichaud stored.
13:06 jsut_ joined 13:07 uniejo joined
whiteknight irclogs? 13:21
purl rumour has it irclogs is irclog.perlgeek.de/parrot/today or see also: infrared clogs
13:29 JimmyZ joined 13:50 whiteknight joined 13:59 Andy joined, iblechbot joined 14:13 whoppix joined 14:23 theory joined 14:27 diakopter joined
mikehh All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r41431 - Ubuntu 9.04 amd64 14:32
14:35 ash_ joined, Psyche^ joined 14:49 kjeldahl joined 14:50 bluescreen joined
jrtayloriv Any idea what this error means --> pastebin.com/d5db280f2 15:05
I don't have anything in actions.pm, if that matters. I'm just trying to make sure that the grammar.pg is correct. 15:07
dalek rrot: r41432 | NotFound++ | trunk/examples/nci/Mysql.pir:
throw when prepare statement fails
NotFound Uh... mistake, this must have been in parrot-mysql 15:08
whiteknight jrtayloriv: no idea, never seen that one before 15:10
moritz it happens when something[tm] receives more positional arguments than necessary, and expects named arguments too 15:11
jrtayloriv Do I need to declare stubs in actions.pm for each rule from grammar.pg, before I can do that? 15:12
moritz don't think so 15:13
jrtayloriv: try removing the {*}s
that's what makes PGE try to call the action method 15:14
and there's really no point in having them if you don't have action methods
15:14 chromatic joined
jrtayloriv moritz, Yes, I know they are useless right now, I just didn't want to have to come back and write them later. So can I comment them out like : <real_16> '@' <real_16> {*} #= complex_polar -----> <real_16> '@' <real_16> {*} # #= complex_polar 15:16
oops (move that # in front of the {*} ... 15:17
Basically -- comments work normally inside of rules/tokens right?
moritz right 15:18
jrtayloriv thanks 15:19
moritz anyway, I don't see any sense in putting {*} hooks into grammars before you write action methods, because you don't know where you need them 15:20
at some point in the future there will be an implicit {*} at the end of each rule
dalek rrot: r41433 | NotFound++ | trunk/src (2 files):
[nci] fix and simplify handling of 'p' arguments in frame_builder
rrot: r41434 | NotFound++ | trunk/examples/nci/Mysql.pir:
[examples] update Mysql.pir from the parrot-mysql repo version
moritz (at least the Perl 6 spec change that way, and I assume PGE will track that)
NotFound Now Mysql works in i386 built without --buildframes=0 :) 15:22
jrtayloriv moritz, I learned to put the {*} hooks everywhere from a book called "Teach Yourself Voodoo Programming in 24 Hours".
thanks again ;)
PerlJam jrtayloriv: does it error if you don't comment out the {*} ? I thought action methods were only called if they exist and otherwise silently ignored.
15:23 payload joined
jrtayloriv PerlJam, One moment, I'm commenting them out now. brb 15:23
PerlJam, Yes, if the backtrace is correct (i.e. if the error actually is occuring in the <symbol> rule, then removing them did not make the error stop occuring. 15:27
moritz ETOMANYNEGATIONS
the error continued to occur, right? 15:28
jrtayloriv moritz, Yes, sorry. --> I commented out the {*}'s and the errors are still occuring.
s/errors are/error is/ 15:29
15:55 darbelo joined
jrtayloriv moritz, I've gone ahead and commented/removed all of the {*}'s in grammar.pg, not just in <symbol>, and for some reason, it is still giving the same error about "positional inside named args" in <symbol> ... And I can't see anything wrong w/ my syntax --> pastebin.com/d76b6e2ae ... could it be that the error is not in <symbol> even though the backtrace says it is? 15:56
whiteknight jrtayloriv: aren't there supposed to be underscores in the names symbol_initial, symbol_constituent, and peculiar_symbol? 15:58
PerlJam whiteknight++ 15:59
jrtayloriv oh jeebus ... :S
whiteknight save me jeebus!
jrtayloriv sorry for the time waste ....
whiteknight no time ever wasted asking questions
jrtayloriv sweeet! works now -- whiteknight++ moritz++ Perljam++ 16:00
PerlJam jrtayloriv: Since you've seen the symptoms and now know the problem, you'll be more likely to notice problems like this in the future. Since I've just looked at your paste and see the problem and the symptoms, *I'll* be more likely to notice these in the future. 16:01
That is *not* time wasted.
whiteknight right, and now everybody can write lots of documentation about it!
and tests!
jrtayloriv PerlJam, True. 16:02
dalek rdinal: e1037c8 | treed++ | Rakefile:
Ensure that get_submitter always returns something. (jdv79++)
TimToady and I can think about whether this is possible to detect statically :) 16:11
16:11 payload joined
jrtayloriv Is there any situation where <foo bar> would be meaningful? 16:12
TimToady unfortunately, method names are dynamic, and bare words are just patterns
so we'd have to change the syntax somehow to make it catchable, probably not worth it 16:13
16:13 hercynium joined
TimToady but it's a small argument for requiring quotes on bare word patterns 16:15
16:16 davidfetter joined 16:19 flh joined
tewk TimToady, just saw your chicago google talk on youtube. 16:32
I asked pmichaud if he knew about derivative regular expression, he didn't have you heard of them?
16:49 iblechbot joined
dalek TT #1060 created by ash.gti++: Inconsistant test failures in t/op/annotate.t 16:51
whiteknight the phrase "inconsistent failures" sends shivers up my spine 16:52
especially on systems where I can't do any local testing 16:57
TimToady tewk: no, I've probably just re-invented them. :) 16:58
17:00 mokurai joined
NotFound whiteknight: especially when not providing a backtrace. 17:03
whiteknight true
tewk TimToady, yeah thats what I thought. They were invented/discovered in the 60s and have reappeared recently as a lexing mechanizm. 17:08
A professor of mine is extending them to Context Free Grammars as a unified lexing/parsing mechanism. 17:09
The orig 1960's paper - portal.acm.org/citation.cfm?id=321249 17:13
Recent paper - www.cl.cam.ac.uk/~so294/documents/jfp09.pdf 17:14
dukelet0 'ello 17:15
whiteknight hello duke 17:17
TimToady tewk: well, I'm doing it for Context Not-so-free Grammars too. :) 17:19
but does sound similar 17:20
NotFound Next step can be do it for Content-free.
dalek rrot: r41435 | NotFound++ | trunk (2 files):
[nci] use get_nci_p also when no buildframes
17:28
17:39 kyle_l5l joined 17:53 chromatic joined
darbelo Are the tests in t/tools/pmc2c.t actually useful? 17:58
chromatic Not really. 17:59
darbelo I'm about to break them. Should I fix or remove them? 18:00
chromatic Fix for now, then in #ps we can talk about pros and cons. 18:01
darbelo From DPERECATED.pod: =item "pmclass" with name not matching file's basename [eligible in 1.5]
Amusingly, all tests rely on this broken behaviour. 18:02
cotto_work gdb 7.0 looks unusually shiny 18:03
www.gnu.org/software/gdb/news/reversible.html
darbelo, many of those tests are broken anyway. 18:04
darbelo Yeah, but now they are warn()-broken, they're about to become die()-broken. 18:05
dalek nie: r87 | allisonrandal++ | trunk/Lib/test/ (2 files):
Rename 'parrot' tests to 'bootstrap' for clarity.
18:08
darbelo I'll make it a ticket.
18:09 donaldh joined 18:10 joeri joined
darbelo trac sloooooooow 18:14
correction: ISP sloooooooow 18:21
whiteknight oh wow, reverse debugging looks awesome 18:27
18:27 donaldh joined
cotto_work I don't usually get excited about gdb. 18:27
That feature sounds very useful, though. 18:28
18:29 bluescreen joined
cotto_work btw PyPy seems to be doing something similar to what we we're hoping to do with Lorito (compiling a subset of Python to C). Has anyone looked at it? 18:29
darbelo Not in recent years. 18:30
18:31 hudnix joined
darbelo "PyPy is an implementation of the Python programming language written in Python itself" 18:31
whiteknight I would be very interested to see what their performance numbers look like 18:35
I would imagine, depending on the number and types of ops that they write in C, that they could see very competitive performance to CPython
18:37 donaldh joined
whiteknight the idea of using a meta-circular interpreter is very attractive, i think 18:38
darbelo Skimming the web site it looks like they use a simplified dialect of Python to write a Python interpreter and then translate that interpreter to object code. 18:39
18:45 donaldh joined
cotto_work I'd dig into it but I don't have a proper Linux dev environment set up here yet. 18:46
I'm sure there are some lessons to be learned.
18:47 donaldh joined 18:50 mberends joined
whiteknight I do wonder how it's going to handle reverse execution through Parrot's runloop 18:50
dispatching to function pointers in an array by index is not a trivial thing to reverse 18:51
not impossible, of course 18:52
particle using the COMEFROM op i suspect
darbelo setjmp/jongjmp would make it rather difficult too,
whiteknight $P0 = whatwasIjustdoing \\n godothatthing $P0 18:59
darbelo undothatthing $P0 \\n gobacktowhatwasIjustdoing $P0 19:01
dukelet0 who is working on COBOL on Parrot? 19:05
NotFound dukelet0: Do you mean writing a parrot VM in COBOL? 19:08
darbelo COBOL on Parrot : a comprehensive continuation-based strategy for the migration of legacy business-critical procedural applications to next-generation laguage-level virtualization platform 19:10
dukelet0 kids 19:11
whiteknight dukelet0: I had looked at it in the past, hadn't actually implemented anything 19:15
it's a big grammar, but it's very doable I think.
NotFound No mention of Web 2.0 or clouds? What a bad PR! ;)
whiteknight dukelet0: I had actually planned an entire "Legacy Languages" project, which would contain compilers for all sorts of old languages 19:16
B, BCPL, ALGOL, COBOL, PL/1, etc 19:17
but, not enough tuits and more important work to do instead
darbelo I think ALGOL-on-parrot is pretty doable. I might try it some day. 19:18
NotFound Some day I'll write an INTERCAL
whiteknight INTERCAL would be nice too
darbelo But I want to ressurect our c99 parser before that.
whiteknight And it's not just pie in the sky bullshit either, there's real potential if we say "run all your existing code on Parrot in old dusty languages, and write extensions and things in cool new languages like Perl 6" 19:19
you don't need to hire an INTERCAL programmer to add features to an INTERCAL program. host it on parrot and write your updates in PHP or Python 3
NotFound I wonder if someone has been ever paid to write INTERCAL code. 19:20
Maybe in beers...
TimToady Can I be paid to NOT write INTERCAL code? 19:21
seems like the sort of thing the U.S. gummint would sign up to
19:24 flh joined
cotto_work gives TimToady a quarter not to write INTERCAL 19:33
Does that count?
TimToady can I start next quarter? 19:35
19:35 donaldh joined 19:37 donaldh joined
whiteknight darbelo: an algol compiler would be cool enough, but make sure it's a variant of algol that has quotes 19:40
darbelo quotes?
purl quotes is "what makes the world go round"
whiteknight "PRINT £HELLO WORLD£L??" is heinous and shouldn't be continued
darbelo Ah. 19:41
whiteknight I think it was Elliot Algol that didn't have quotes
but it actually worked on paper tapes, so it could have been killed in a fire 19:42
a flag that turns on or off stropping would be cool too
darbelo I'd probably target ALGOL 68, with the others lacking I/O and all. 19:45
print(("Hello, world!",newline)) 19:46
whiteknight yeah, that's better 19:49
darbelo You'll probably get a kick out of www.xs4all.nl/~jmvdveer/algol.html 19:50
PostgreSQL bindings!
TimToady phone 20:00
20:03 ruoso joined
Tene After I get plumage stuff worked out a bit more, pgsql bindings for Parrot are one of the next items on my list. 20:06
japhb *rez* 20:07
"a bit more"? Been hacking? (He says, ever hopeful ....) 20:08
particle summons chromatic 20:11
darbelo You didn't say 'optimize' or 'speed gains'. 20:21
You have to use the proper incantations :)
dalek rrot: r41436 | NotFound++ | trunk (3 files):
[nci] simplify handling of P and P-like arguments
20:24
darbelo NotFound++ # making the frame builder less ugly. 20:26
NotFound Now that JIT is off the way, is easier :) 20:27
20:47 jrtayloriv joined
einstein there is a memory leak in undef.pmc->set_pmc 20:49
first is PMC_data(clone) = PMC_data(SELF); which is good 20:50
20:51 cotto_w0rk joined
einstein but then PMC_data(clone) = NULL; set back to null losing the pointer to the self data 20:51
oh pmc undef has no attributes nothing :) 20:52
darbelo einstein: Undef is an empty shell. It has no data. 20:53
einstein yes i saw it later sorry
21:02 hercynium joined
mikehh All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r41436 - Ubuntu 9.04 amd64 21:03
21:07 slavorgn joined 21:09 chromatic joined 21:10 GeJ joined
darbelo seen Infinoid? 21:15
purl Infinoid was last seen on purl 1 days, 5 hours, 37 minutes and 2 seconds ago, saying: <private message> [Sep 22 15:30:16 2009]
darbelo purl: msg Infinoid Does dalek know how to handle gitorius repos? 21:16
purl Message for infinoid stored.
21:23 chromatic joined
dukelet0 darbelo: if you add your stuff to the languages page on the wiki you can find out 21:35
darbelo tis not a language :) 21:37
plumage
Infinoid darbelo: not yet. It needs a gitorious equivalent of github.com/Infinoid/dalek-plugins/b...bparser.pm
darbelo purl: plumage is the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth. 21:38
purl ...but plumage is all about that....
darbelo no, plumage is the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth.
purl okay, darbelo.
darbelo plumage is also git://gitorious.org/parrot-plumage/parrot-plumage.git 21:41
purl okay, darbelo.
darbelo plumage is also see trac.parrot.org/parrot/wiki/ModuleEcosystem
purl okay, darbelo.
21:45 chromatic joined
darbelo Infinoid: what do you use to test it? 21:53
Infinoid darbelo: "make test" 21:55
purl "make test" is probably possessed!
Infinoid I stick snippits of rss in the test scripts to validate the parsers and output 21:56
darbelo Time to dive in I guess.
Infinoid and I (badly) emulate the halfass module scheme used by botnix in order to drive the plugins
if you're sufficiently motivated, I certainly won't stop you. :) 21:58
dalek rrot: r41437 | chromatic++ | trunk/src/interp/inter_misc.c:
[src] Fixed interpinfo() runloop reporting case to avoid returning an

dynamically loaded runloops *yet*, but this avoids a compiler warning too.
22:00
rrot: r41438 | chromatic++ | trunk (2 files):
[ops] Fixed runinterp_p_ic op to switch to the appropriate segment when

constant table is wrong, leading to bizarre segfaults.) Unskipped a test in t/op/interp.t which demonstrates that this no longer segfaults.
nie: r88 | allisonrandal++ | trunk/runtests.py:
Update tests to new path of bootstrap test files.
22:13
22:13 bacek joined
bacek Goo morning 22:14
bah. "Good" (fsvo) 22:15
chromatic Hm, the runinterp opcodes could be crashy crashy. 22:20
Same as the branch and goto opcodes, though. 22:22
22:25 kid51 joined
dalek nie: r89 | allisonrandal++ | trunk/runtests.py:
Streamline tests to use pynie executable directly, instead of
22:49
mikehh All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r41438 - Ubuntu 9.04 amd64 22:50
darbelo It's nice to see pynie moving.
But I still think the definitive python on parrot compiler should be named quetzalcoatl. 22:51
japhb Do you have to sacrifice whitespace to it? 22:54
mikehh I thought that was something to do with dead parrots 22:55
darbelo If feeds upon the hearts tab-indenting infidels.
japhb darbelo++ 22:56
mikehh that should make some others indent properly 22:58
TimToady surely quetzalcotl indents meatspace 22:59
darbelo Ever wondered why all mayan codices are indented with spaces? Now you know.
mikehh you should inca that in gold 23:00
dalek cnum-dynpmcs: r182 | darbelo++ | trunk/Configure.pir:
New configure script now in PIR. This makes Configure.pl deprecated.
23:10
23:19 Zak joined 23:21 rhr joined
dalek rrot: r41439 | NotFound++ | trunk/src/pmc/continuation.pmc:
[pmc] check seg before dereferencig in Continuation set_pointer
23:27
23:40 patspam joined