#parrot Parrot 0.5.2 Released | parrotcode.org/ | see www.parrotcode.org/misc/parrotsketch-logs/ for logs
Set by moderator on 11 February 2008.
00:19 slightlyoff joined 00:23 gryphon joined 01:15 slightlyoff joined, mire joined, cj joined, kid51 joined, wknight8111 joined, Limbic_Region joined, arbingersys joined, parrot-poke joined, grim_fandango joined, Ademan joined, teknomunk joined, Theory joined, po_boy joined, Coke joined, mncharity joined, integral joined, Maddingue joined, nopaste joined, marmic joined, dwave_ joined, c9s_ joined, klapperl_ joined, jq joined, dalek joined, cognominal_ joined, skv_ joined, mj41_ joined, bgeron_ joined, Alias_ joined, jjore joined, lbr joined, diakopter joined, amoore joined, buildbot joined, svnbotl joined, cotto joined, cotto_ joined, particle joined, silug joined, Dave joined, avar joined, GeJ_ joined, cout joined, nnunley joined, bphillips joined, ewilhelm joined, jdv79 joined, arcady joined, kismet joined, peepsalot joined, Crassworm joined, shamu joined, TimToady joined, lidden joined, rblackwe joined, rhr joined, slavorg joined, cognominal joined, clunker joined, Khisanth joined, confound joined, spinclad joined, purl joined, workbench joined, leo joined, Piper joined, pmichaud joined, PerlJam joined, jonathan joined, jrockway joined, Sartak joined, rjbs joined, Tene joined, BitPoet joined, tewk joined, zostay joined, zev joined, drforr_ joined, pfig joined, cxreg joined, dngor joined, wolverian joined, Juerd joined, TonyC joined, MagNET joined, pjcj joined, szbalint joined, shorten joined
nopaste "kid51" at 70.107.2.179 pasted "from: svn.perl.org/parrot/branches/tcif/l...s/Test.pm" (24 lines) at nopaste.snit.ch/12395 01:24
shorten nopaste's url is at xrl.us/bgrbk
kid51 Hmm, wrong channel for that paste. 01:25
01:43 Andy joined 02:20 Theory joined 02:48 DarkWolf84 joined
svnbotl r26063 | petdance++ | trunk: 02:49
: a little consting
diff: parrotvm.org/svn/parrot/revision/?rev=26063
Andy 3yay me!
Tene yay andy! 03:30
For c99, we can steal the locally installed C preprocessor. We don't care about supporting platforms with no C preprocessor, right? ;) 03:33
03:53 cj joined 04:04 Patterner joined 04:06 slightlyoff joined 04:14 mire joined
cotto Hmmm. I'm noticing that my PHPArray PMC has more loc than the biggest of the built-in PMCs, and I've still got about 20 methods to implement. 04:23
Something's not quite right.
Andy Is anyone doin' work in Eclipse? 04:29
04:39 grim_fandango joined 05:00 x joined 05:01 nina29 joined 05:10 mire_ joined 05:38 Theory joined
svnbotl r26064 | petdance++ | trunk: 05:53
: Modified some function parameter modifiers
diff: parrotvm.org/svn/parrot/revision/?rev=26064
06:07 Theory joined 06:13 Ademan joined 06:39 mire_ joined 07:14 uniejo joined 08:05 dduncan joined
dduncan I don't know if this is a known problem, but with the new Parrot 0.5.3 on CPAN, I find that the make is just stopping at certain times, where a ctrl-c unsticks it ... the first place is in perl Configure where it is checking for exuberant ctags ... system is Mac OS X Intel 10.5.2 08:08
I didn't have any such problems with Parrot 0.5.1 on slightly older OSs
10.5.1 I think
is this known or should I try and narrow down a test case? 08:09
it also froze at a point during make
froze as in CPU usage is none, either case
08:11 iblechbot joined
cognominal_ dduncan, I get that problem wen I get parrot with git, another when I get it with svk, it runs fine when I use rsync or svn. 08:21
I have so much to read to get in speed that I don't bother to investigate right now. 08:22
dduncan in my case, I'm using the CPAN package
no worries
still if the cause is yet unknown, I could help more by trying 0.5.1 again under the current OS, to help rule out that the OS change was the problem 08:23
cognominal_ also the prompt when using rakudo interactively has disappeared
lathos How's Parrot at cross-compiling? 09:15
Or being cross-compiled.
Oh, heck, looks like I'm going to need a native compiler anyway. Stupid stuff time. 09:21
09:30 ruoso joined 09:37 contingencyplan joined
cognominal_ lathos: parrot is VM that can be JITted, I don't understand where cross-compiling fits here 09:42
09:42 wknight8111 joined
lathos I know what Parrot is. I don't know how to compile it for a machine I'm not currently running. 09:57
09:59 AndyA joined
lathos Ah well, here we go: Links are now set up to build (on i386-apple-darwin9.0.0) a native compiler for arm-apple-darwin. 10:02
This can only end in tears.
10:11 mire_ joined 10:12 dduncan left
svnbotl r26065 | fperrad++ | trunk: 10:25
: [WMLScript]
: - add a pod coda
r26066 | fperrad++ | trunk:
: [Lua]
r26067 | fperrad++ | trunk: 10:32
: [Lua]
: - PCM LuaThread : add getfenv/setfenv methods
r26068 | fperrad++ | trunk:
: [emacs]
10:55 mire__ joined 11:20 mire_ joined 11:29 mire__ joined
svnbotl r26069 | jonathan++ | trunk: 11:41
: [rakudo] Make it so you can write expressions such as my $x = <-> $y { ... }. Note that it should work for -> as well as <->, but at the moment the first is a parse error; my guess is that it's going for prefix:- rather than the longer token ->.
diff: parrotvm.org/svn/parrot/revision/?rev=26069
r26070 | jonathan++ | trunk: 11:54
: [rakudo] Make .foo call $_.foo.
diff: parrotvm.org/svn/parrot/revision/?rev=26070
12:01 kid51 joined
lbr lathos: iphony parrot? 12:12
12:20 GeJ joined 12:42 dwave joined
svnbotl r26071 | fperrad++ | trunk: 12:49
: [Lua] 12:50
: - fix PMC LuaThread (sorry)
diff: parrotvm.org/svn/parrot/revision/?rev=26071
cognominal_ jonathan, in grammar.pg, is :name('$def'), some kind of placeholder? 12:54
lathos iphony parrot indeed.
And my native-compiler build didn't work. Not sure why not though, but I don't have much more time to play with it. 12:55
13:00 wknight8111 joined 13:13 kj joined 13:38 anna30 joined 13:50 cognominal_ joined
Coke lathos: thank you for not abusing the young ones. =-) 13:59
I think you're the first person who's tried to cross compile. or at least, all the others failed and ran away never to be heard from again. 14:00
14:00 Andy joined, cj joined, arbingersys joined, diakopter joined, buildbot joined, cotto joined, cotto_ joined, bphillips joined, ewilhelm joined, peepsalot joined, shamu joined, rhr joined, purl joined, workbench joined, Piper joined, pfig joined 14:01 Piper joined
Piper Hi there. I am Piper. I am now publicly logging this channel. If you don't want to be logged, please leave now. 14:01
14:04 jhorwitz joined 14:05 gryphon joined
lathos Coke: It's not possible with Configure in its current form, since it tries to run the C programs it compiles. Which obviously won't work on a cross-compiler. 14:12
kj anybody who knows what this means: "positional inside named args at position 2" ?? I keep getting this when trying to parse string literals. 14:15
14:29 silug joined
particle kj: it's a pcc error 14:34
lathos: i believe you can manually create a Parrot::Config::Generated with the values you want... but you may also need to create config.fpmc and config.h 14:35
kj I thought so; I have a language that has a rule quote, generated by the mk_language_shell script
but somehow it's failing on that. If i replace <string_literal: "> by <-["]>, it goes away 14:36
obviously, I just want to use the built-in string_literal rule
it seems there's something wrong with string_literal, but OTOH, that's hard to imagine, as it's so widely used, and apparently noone else has had problems 14:38
particle this is before pir is generated? 14:42
kj yeah 14:43
particle do you mean to use quote_expression? 14:44
kj ehm. not sure what you mean. 14:45
I just used mk_language_shell
and then extended that generated grammar
particle <quote_expression: ...> .... ah.
kj (trying to implement the example language for the DLR, ToyScript)
mostly done, butthe operator table doesn't like me today, and string handling doesn't work 14:46
pmichaud good morning
purl Is it morning again? YAWN...
kj morning
14:50 ruoso joined
pmichaud particle++ # removing fudge-deprecated compiler directives 14:57
particle i'd like to have the time to do real work on rakudo :( 14:58
pmichaud me too. I'm hoping things clear up this week. But it's not looking promising :( 14:59
kj ah. note to self: DO NOT name a rule "new" 15:00
*i knew it* 15:01
pmichaud yes, I need to get PGE to use MMD for the rules it generates
kj I was planning to check out the DLR, but I got distracted by their example language, toyscript. figured it'd be nice to know what is easier to use: PCT or DLR's stuff 15:02
15:03 Andy joined 15:04 cognominal_ joined
wknight8111 have the parrot group applied to google's summer of code? 15:09
or would that be through the perl foundation?
particle tpf
pmichaud in the past we've done it via tpf
wknight8111 that's what 15:10
i've figured
purl That's *WRONG!*
wknight8111 sorry purl
15:15 camgirl29 joined, lola22 joined
lathos Whoa, who made this #spambot? 15:16
15:22 iblechbot joined
Tene Aw, lathos scared away the camgirl. 15:28
particle jhorwitz: poke 15:39
jhorwitz particle: ouch
particle I CAN HAZ MOD_LOLCODE?? 15:40
Tene A friend that I'm visiting in Detroit is trying to persuade me to give a presentation on Parrot at penguicon. 15:41
jhorwitz I CAN HAZ TUITS? :)
pmichaud presentation++
particle VISIBLE TUITS 15:42
kj pmichaud: when running a langauge on a command line, would it be useful to have a special TOP rule for that?
pmichaud kj: I don't quite understand
jhorwitz particle: thanks!
kj well, when you run a language on a commandline, so in interactive mode... 15:43
jhorwitz particle: i can slap together a registry-style lolcode pretty quickly
kj there's usually some special rules available
for instance, handling line-oriented languages
and some languages print the result
so for instance, python, when entering "42", it will print the result
pmichaud languages/abc does that
so does languages/APL 15:44
kj let me check if that's what i'm thinking of.
pmichaud well, the real tricky part to interactive mode is being able to deal with multi-line inputs
kj right, handling for instance the "\\", (to continue on the next line) 15:45
pmichaud well, in some interactive modes there isn't even a \\
(for some languages)
kj yeah. right.
particle jhorwitz: registry-style is enough for now
pmichaud they just know based on context that there's more to get
kj right. for instance, Lua i think will print the 2nd commandline prompt, which is "..." instead of ">>" (or somehting like that)
pmichaud at the moment I'm encouraging such things to be handled in hll-specific subclasses of HLLCompiler, rather than try to get HLLCompiler to handle it. At least until we have an idea of a generic way of doing it. 15:46
Tene How possible would it be to implement something like "This text started to match this rule, but ran out of input" and throw a resumable exception that can be resumed when there is more input to continue matching?
pmichaud might be able to do something in the <ws> rule 15:47
Tene I might have hacking time tonight... was too exhausted last night when I finally got back to my hotel. 15:53
pmichaud essentially I think that <ws> could detect end-of-input and throw an exception that gets caught by the interactive mode of HLLCompiler. The interactive mode could then get more input, add it to the source string (this part might be tricky), and then resume the match from where it left off. 15:54
actually, as I'm thinking about it, this is a *really* good idea
in fact, we might not even need the exception, since matching is resumable 15:55
although the exception makes it a bit easier to track
15:59 peeps[work] joined 16:12 marmic joined
svnbotl r26072 | kjs++ | trunk: 16:35
: [c99] minor grammar fixes.
diff: parrotvm.org/svn/parrot/revision/?rev=26072
Coke Folks, I will be in meetings this afternoon and will have to miss parrotsketch. 16:49
pmichaud: HLLCompiler stuff ; that's basically what tcl is doing now. 16:51
real tcl (not sure about partcl) goes further and changes the prompt for secondary input.
17:01 Theory joined
Coke yawns. 17:25
Tene props Coke's mouth open with a blue marker. 17:26
17:26 cotto__ joined
Coke yawns totorically. 17:26
17:27 parrot-poke joined 17:34 cotto_ joined 17:44 Theory joined 17:49 Theory joined 17:50 kjs_ joined 17:53 Psyche^ joined, kj joined 18:06 sjansen joined
TimToady pmichaud: I've just added a <vws> rule to STD that makes it possible to capture control at the vertical whitespace boundary via either context var or method override. 18:07
18:09 Theory_ joined 18:20 barney joined
pmichaud TimToady: excellent 18:26
jonathan hi all 18:27
pmichaud hello, jonathan. some terrific patches to rakudo this week -- thanks
jonathan pmichaud: Welcome, it's fun. 18:29
Am sure some will need tweaks...
spinclad #ps? 18:30
purl i guess #ps is where I can say "okay, these issues are really troubling/annoying/blocking"
jonathan I'm pondering working towards refactoring the type hierarchy so we have stuff under Any.
pmichaud well, when I first looked at most of them I thought "oh, that's not quite right -- need some tweaks"... then after starting to add the "tweak" I said "oh, it's right after all."
spinclad purl, #ps is also #parrotsketch, where committers can talk and bystanders can listen
purl okay, spinclad.
jonathan I've been meaning to do that for a while, and keep putting it off in favor of easier stuff. :-) 18:31
pmichaud there's quite a bit of object/class refactoring that needs to be done 18:32
jonathan Aye. 18:33
pmichaud I looked at .HLL mapping on the trip to brussels, and decided we can't really do it effectively until we get all of the class stuff cleaned up
so, getting classes implemented more properly is high on my list
18:33 chromatic joined
jonathan Examples of what needs cleaning up? 18:33
I may be able to do some bits of that. 18:34
pmichaud well, I don't like having the "!keyword_has" methods in Object. They work for now, but class construction really needs a more holistic view
in particular, we need to make sure that protoobjects are created after each of the attributes are added
(or after all of the attributes are added)
maybe that's happening already, but it didn't look like it on my first scan
chromatic #ps time 18:35
jonathan I had to make sure instantiation was after attributes.
oops
I had to make sure the protoobject was created after all the attributes where added.
If you add more after the call to make_proto, you get a "class already instantiated" error.
pmichaud correct 18:36
jonathan OK, that's what I *think* I've implemneted.
pmichaud I want to clean up make_proto to be able to handle that more cleanly also
anyway, Object/Any just need a re-think
jonathan Any isa Object, and Any is what things inherit from by default?
Other than Junction? 18:37
pmichaud yes, but I also mean for the private methods
i.e., what methods exist for creating new classes, adding attributes, establishing protoobjects, etc.
jonathan Ah, the !has_keywords and make_proto stuff?
pmichaud yes
Tene orite, it's tuesday. 18:38
jonathan I was going on S12's mentioning that the meta-class was responsible for evaluating the keywords in a class definition. 18:41
But it felt a bit hand-wavey.
pmichaud oh, I hadn't seen that. Is it newish?
jonathan Don't think so.
pmichaud I'll have to go and look for that. 18:42
jonathan "In either case, the code represented by ... executes at compile time as the body of a method of the metaclass, which is responsible for interpreting the keywords of the class definition. (And since a class is also a module, it also handles any module-oriented keywords. You can export subs from a class at "use" time, for instance.)"
In the Classes section, really near the start.
pmichaud ah
jonathan Well, the classes section is near the start. That paragraph is towards the middle/end of the classes section.
I can't find anything more specific, but I figure that this is the way that you get to implement your own class system. 18:43
pmichaud my reading caught the "executes at compile time" part but missed the "as the body of a method of the metaclass"
"executes at compile time" is the same for module bodies as well
chromatic (Broke MANIFEST) -- he's one of us now! 18:45
18:45 Theory joined
jonathan I'm not entirely sure what the "as the body of the metaclass" really means. 18:45
pmichaud as the body of a method of the metaclass :-) 18:46
particle i'm sure TimToady's lurking and will help clear up the spec
jonathan Ah, a method of... 18:47
Which method? :-)
pmichaud we get to define that :-)
jonathan Aha.
pmichaud at least, so far we get to define it :-)
jonathan I say we define some worker methods like keyword_worreva too. ;-)
pmichaud I see now where you came up with "!keyword_has" though 18:48
that clears things up for me a bit, so I can review with that in mind
jonathan Sure. It's one of my "it may not be right, but it should be in the right kinda direction" things.
pmichaud anyway, I need to refactor Object and Protomaker and a few other items in order to work well with .HLL, so I'll probably tackle Any at the same time
also I want to get rid of Perl6Str and just make it Str 18:49
particle need hll for that
TimToady really, all that's trying to say is that somebody somewhere has to decide what words like "has" mean, and that's probably the metaclass somehow
since, for instance, a role provides a different meaning of "has" that delays interpretation to composition
particle wonders if trait_auxiliary:is can be easily made to support 'is export' 18:50
pmichaud which means that jonathan's implementation is following the spec
so, jonathan++, again
TimToady: your explanation makes sense, thanks
18:50 IllvilJa joined
TimToady and in theory a user can define a "myclass" keyword that redefines even the keywords that are recognized inside, but then we're actually tweaking syntax, not just retargeting semantics 18:51
jonathan particle: I think is export is not hard; I demonstrated how it can be done before.
TimToady and, in fact, in the current grammar, "has" is recognized everywhere, but just has no meaning outside of class/role
pmichaud TimToady: would "has" outside of a class or role toss an exception? 18:52
jonathan I guess compile time error?
TimToady yes
pmichaud same for things like "method"?
TimToady and sub, and pretty much all declarators 18:53
jonathan TimToady: Should you be able to write "self" and $.foo outside of a class or role definition?
pmichaud well, "sub" is good inside of any block, isn't it?
jonathan Like, $x = -> { self.bar(); }; $obj.$x();
TimToady sure, but that just means there's always a way to interpret it
something is doing the declarational semantics at compile time somewhere 18:54
chromatic vague!
spinclad but precisely vague
TimToady jonathan: sure, you can write self outside of a method, if you want an error :) 18:55
jonathan A compile time one?
TimToady we know the signature of the current &?ROUTINE, so we know whether it has an invocant parameter 18:56
jonathan Ah, good point.
TimToady so I would think it would be detectable at compile time pretty easily
jonathan OK.
TimToady I don't think we want to go down the route of self being so smart it outsmarts the optimizer 18:57
jonathan Agree.
I need to re-do the way "self" works.
pmichaud well, PCT needs a good representation of "self", also
jonathan The current way I implemented it is...very...wrong.
pmichaud I haven't decided if "self" is a ::Val, ::Var, or ::Op 18:58
jonathan Though I only just realized that.
TimToady and $.foo is just rewritten to $(self.foo)
jonathan Sure, that's what I implemented it as; both should make the same PAST.
But $.foo(...) doesn't work yet.
Need to peek at STD to see how it's parsed. 18:59
TimToady on export, with pugs we found it convenient to simply alias the exported item into a subpackage with the same name as the export tag
then importing a tag is simply reading the symbols out of the subpackage
and aliasing those into the current context 19:00
besides being simple, makes it really easy to introspect the subpackage 19:01
perhaps we could refine that
Tene parrot-poke?
TimToady given the tweak I just made to S11 19:02
chromatic parrot-poke 53280, 0
TimToady all tagsets could alias to Interface::TAG
pmichaud mmmmm
TimToady so that the Interface subpackage is all of the collected external interface in one spot
much like Ada separates into externals and internals 19:03
but Ada forces this on the user
whereas we just distribute the info via "is export"
and let the compiler pull out the interface for us
pmichaud I like
TimToady maybe Export::MyTag and such 19:04
or better, export::MyTag
jonathan thinks there is more to "is export" than creating a multi-sub from a method
TimToady to not conflict with user-define subpackages that are generally capitalized
I suspect multies are automatically exported 19:05
probably... 19:06
is export is for other stuff that wouldn't automatically be exported
jonathan Aha, OK.
particle to prevent that, you'd do is !export??
jonathan I only remember the reference to it in S12.
TimToady there's no spec about autoexporting multis 19:07
chromatic It depends on how multi the multi is.
jonathan "However, you may use is export on a method definition to make it available also as a multi sub."
TimToady lemme think about that a bit more
yes, ordinarily a method is not exported
so it falls into the "ordinarily not exported" case 19:08
methods don't need to be exported to another symbol table
since the dispatcher can find them right where they are
(given appropriate typology)
particle only my method (...) { ... } 19:09
Tene Does anyone think that diagrams like pleasedieinafire.net/~tene/perl6.png are useful enough that it would be a good use of time to write a script to generate directly from grammar definitions?
pmichaud depends on how hard it is to write the script :-) 19:10
TimToady it's possible we shouldn't overload "is export" on methods
particle shouldn't be too hard to write
TimToady and use "is multi" or some such 19:11
pmichaud there are some rule calls that aren't "obvious" from a simple reading of grammar.pg
TimToady but we probably want to discourage aliasing of methods into other classes
pmichaud for example, rules written in PIR
but if there's a way to have those manually added to the ones automatically found in grammar.pg, it'd probably work
particle approximations are better than nothing
TimToady people should use roles to write generic methods, not method aliases
biab & 19:12
particle pmichaud: and the pir rules could be colored or have a dashed border to show that they may be incomplete
parrot-poke Tene: question for me? I'm just a hanger-on so far who only plays with stuff, but very interested in parrot and rakudo
Tene parrot-poke: I was just curious about who you were. The name seemed to suggest a utility bot of some sort.
particle ...until there's a better parser. 19:13
Tene particle: that would be completely possible, especially if they're manually added.
particle has created DAGs from free-form data before 19:14
pmichaud there aren't that many "manually added" ones
mostly having to do with quote rules
Tene I have three or four hours per day while I'm teaching class that I'm just idly sitting around while students work on labs. I haven't been able to do real parrot work then, though, as I always have to have some minimal concentration focused on watching for signals from students. 19:15
TimToady oh, hey, it's already specced to use the EXPORT module, so some earlier me already thought of this. :) 19:19
s/module/subpackage/
jonathan TimToady: Which synopses? 19:20
particle tene: you should probably weight TOP so it shows up first 19:21
TimToady S11 "Exportation" 19:22
jonathan Thanks, will try and get that stuff into my head. 19:29
pmichaud me too 19:30
particle *phew* then i can ignore it for a while
:)
pmichaud I have to figure out how to match it with what we're doing in Parrot
but that just takes a bit of thinking time
oh, I had a STD.pm question 19:31
any particular reason that anglewords and shellwords aren't using quotesnabber?
svnbotl r26073 | kjs++ | trunk: 19:44
: [docs] update pct docs to mention 'infix:<<' as a way of writing instead of french quotes, which are hard to write.
diff: parrotvm.org/svn/parrot/revision/?rev=26073
jonathan pmichaud: Did you see my commit message about the -> parse issue? 19:45
No hurry on it, just wanted to make sure you'd spotted it, because I think you'll be able to deal with it much more easily than i could. 19:46
19:48 wknight8111 joined
svnbotl r26074 | bernhard++ | trunk: 19:57
: [Plumhead]
: Update notes about Plumhead antlr3.
: Regenerate Java classes with antlr.3.0.1
diff: parrotvm.org/svn/parrot/revision/?rev=26074
20:00 dngor joined 20:01 cognominal_ joined 20:07 schmalbe joined
TimToady pmichaud: just removed anglewords and shellwords entirely; quotesnabber(":qq",":ww") and such should be supplying the proper split semantics 20:13
thanks
20:14 workbench joined
TimToady (also, the circumfix defs were redundant with the quote defs) 20:20
pmichaud TimToady: yay! 20:23
you have no idea how happy that makes me :-)
svnbotl r26075 | chromatic++ | trunk: 20:24
: [src] Improved performance of utf8_set_position() by about ten percent.
: Avoided calling it from the two hottest paths in NQP when unnecessary.
: The result is that generating Rakudo's parser actions is a whopping 2.5%
: faster. Further improvements may have to come from upgrading to fixed-width
TimToady pmichaud: yes I do :P
chromatic Can you kill variable-width encodings too? 20:25
pmichaud he did -- see S02.
chromatic and I quote: yay
pmichaud Parrot just hasn't caught up with it yet. :-P
chromatic: what files changed for your utf8 patch -- was it encodings/utf8 ?
chromatic Yes. 20:26
pmichaud okay, good, we shouldn't conflict then
chromatic A quarter of the time we spend generating PIR from NQP when building Rakudo goes into skipping ahead in UTF-8 strings.
... but now it's time to try to profile PIR. 20:28
pmichaud well, I'm not surprised at the skipping-ahead cost -- every 'substr' operation essentially requires a skip 20:30
chromatic I tried to reduce the need for some of those.
pmichaud converting to fixed with should be a huge improvement
chromatic Definitely.
purl Absolutely!
pmichaud *width
chromatic I even unrolled a loop by hand to see if there were any possible improvements there. 20:31
(made things worse)
Coke chromatic++ 20:54
chromatic For making things worse? 20:57
We'll call that the Tcl syndrome.
Coke no, for the speed improvements. 21:01
I despair of tcl ever passing all tests in two concurrent releases.
chromatic It's a huge wad of code right now. 21:02
Coke yesssss?
chromatic I just have an easier time profiling and fixing bugs that Rakudo or Pheme tickle than I do Tcl or Lua bugs is all. 21:05
Coke ah. yup. 21:06
chromatic: when I get [oops; continuation 0x75a3f8 of type 23 is trying to jump from runloop 530 to runloop 1]
... what does this mean to me, the HLL implementor.
chromatic Something's wrong in Sub, Continuation, or RetContinuation.
Coke so, I'm tcling a bug in parrot, then? 21:07
chromatic Almost certainly.
purl somebody said almost certainly was likely probably causing some problems, maybe
chromatic Unless you have a TclSub PMC or something.
jonathan I see that in Rakudo occasionally, too.
Coke chromatic: ... i do1
chromatic rgrjr's probably the best one to ask, then leo.
I looked at the context code and fled for the relative safety of the GC. 21:08
... which should scare even you.
Coke it's a PIR subclass of Sub.
chromatic No fiddling with the gooey pink innards of the C data structure inside Sub?
Coke nope. just adding attributes to a sub.
chromatic That's probably not it then. 21:09
Coke (like "here's my HLL source".)
Ok.
jonathan If it's any help, I only ever saw it in Rakudo on an exception throw.
chromatic For annotation on a wiki or in documentation somewhere: the easiest way to debug Parrot problems from an HLL is to dump the HLL source to PIR, then cut down the test case based on that.
Yeah, exceptions do weird things with contexts. 21:10
jonathan I suspect that'll be where the bug is.
Coke chromatic: for HLL's that use the PCT, sure. =-) 21:11
chromatic For all HLLs.
Unless the HLL calls Parrot's C functions directly, it has to generate PASM or PIR somehow.
Coke yes, but if they're not using PCT's, it no longer is the "easiest" way, necessarily, from the HLL tsandpoint. 21:12
But yes, certainly, if we can provide a PIR example, surely.
chromatic Sure, I'm sympathetic to that point of view. 21:14
kj any lolcode developers around?
Coke vaguely. 21:15
kj i'm missing a file builtins/math.pir
is it me, or is it just missing
Coke I blame Tene! 21:16
(yes, I don't see it in src/builtins/math.pir here on a recent update)
kj i just updated. nothing.
Tene looks 21:17
21:17 cotto__ joined
Tene I guess I forgot to commit it? 21:18
That doesn't seem likely.
kj RLY
well. it's not here :-)
Tene I thought I remembered seeing it...
Coke perhaps you forgot to svn add it?
(in which case the commit would happily ignore it.) 21:19
Tene Looks like.
purl looks like is a type of verb
Coke purl, forget looks like
purl Coke: I forgot looks like
Coke chromatic: if I use tcl's --pir option, I can't seem to regenerate my runloop error.
Tene 'kay, I'll commit it shortly. Thanks, kj. 21:20
chromatic Those are the ones I hate the msot.
most
particle where's our disassembler? 21:22
kj tene: istr lolcode had a try/catch using "oh noes" or whatever syntax. guess I'm wrong
Coke wtf. I had, apparently, an unneeded clone that was screwing me up. 21:24
chromatic Or it could be that.
jonathan Hmm. We have... 21:28
INTVAL does(STRING* method)
But not a does_pmc variant of that.
Like isa and isa_pmc
svnbotl r26076 | bernhard++ | trunk:
: [Plumhead]
: Slight beautification of GenPastPir.g
: Regenerate Java code with antlr
diff: parrotvm.org/svn/parrot/revision/?rev=26076
Tene pleasedieinafire.net/~tene/generated_perl6.png 21:36
generated by:
pleasedieinafire.net/~tene/gg.pl
Someone propose a syntax for comments to indicate a PIR call to a rule. 21:37
Coke chromatic: found another place where I'm getting the runloop error. 21:40
(same error, found another way to trigger it.)
chromatic It's because you're calling clone too many times again.
svnbotl r26077 | bernhard++ | trunk:
: [Rakudo]
: Rakudo does not use PAST-pm, so don't mention it in ROADMAP.
r26078 | tene++ | trunk:
: Oops. Forgot to add builtins/math.pir for lolcode.
: kj++
diff: parrotvm.org/svn/parrot/revision/?rev=26078
Coke but I can only trigger it in interactive mode, or when using tcl.pbc; if I generate the pir and run that, I get the expected exception. 21:41
chromatic Curious.
purl gives the small curious key to Bilbo. Thorin sits down and starts singing about gold.
Coke most curious.
chromatic One difference between PBC and PIR is that what we thaw out of PBC may not always completely match what's in memory as PIR. 21:42
... if we don't restore as constant.
jonathan On Rakudo, it only ever occurs in interactive mode too.
chromatic The way to debug that is to catch the exception in gdb, figure out which thing is getting called incorrectly, and then trace whatever creates that PMC to figure out where it gets created and why. 21:43
My guess is that it'll get created from thawing PBC and it should be constant.
But that's just a guess.
Coke good thing I use a custom op to throw my exception. should make it easy to gdb. 21:44
nopaste "coke" at 72.228.52.192 pasted "?" (4 lines) at nopaste.snit.ch/12401 21:46
Coke ah. should have stepped instead of nexted. 21:47
chromatic A cast to nothing? 21:48
or is the expression on the next line?
leo chromatic: I'd recommend to just for now ignore that constant flag on PMC/String creation and sort out other (maybe) bugs first
hi all btw
Coke chromatic: it was on teh next line.
chromatic leo, that should prove if we're marking all PObjs appropriately anyway...
Coke Ok. the issue is in throw_exception (src/exceptions.c:567) address = VTABLE_invoke(interp, handler, exception); 21:49
run that line in this scenario, and I get the runloop error.
chromatic handler may be wrong
leo the state of current constant pools is just adding another level of complexity, which isnƄ'tpropriate at this time
it's an optimization anyway 21:50
Coke anything in particular I could poke at in handler?
leo ignoring the flag for now is easy
just keep the code and fix it later
my 2 c 21:51
chromatic See what creates handler, and what it should be, and if it looks invalid.
leo, I'll try that.
svnbotl r26079 | bernhard++ | trunk:
: Set svn properties for new file.
diff: parrotvm.org/svn/parrot/revision/?rev=26079
leo well, some PMCs might need mark vtables which they don't have yet, because these PMCs where all constant now - but as mailed - the mark vtable is really needed (except when the marking is defaulted inside dod.c) 21:53
s/where/where/
arg were
chromatic What did you think of rgrjr's purify() idea? 21:54
cotto__ purl, karma for bernhard 21:55
purl bernhard has karma of 1489
leo as he said their are more levels of the term "constant"
cotto__ purl, karma for Coke
purl coke has karma of 1745
leo currently just the GC issue is interesting for me
cotto__ purl, karma for purl
purl A hell of a lot more than you cotto__, that's for sure!
leo constant_pool allocation that is
nothing else 21:56
purl nothing else is that big
Coke purl, forget nothing else
purl Coke: I forgot nothing else
leo immutable or not doesn't change that
cotto__ purl--
purl cotto__: what?
leo _but_ a constant (GC-wise) PMC _shall_ not have non-constant items#
svnbotl r26080 | bernhard++ | trunk: 21:57
: [lolcode]
: Make PIR coda codingstd happy.
r26081 | jonathan++ | trunk:
: [rakudo] Implement smart-match for classes.
leo when it's impractical then don't allocate constant PMCs
chromatic It's the two-phase header allocation and initialization that makes this troublesome.
leo but for internal structures you know what you are doing, then you _might_ allocate _all_ children as constants too
if this isn't given then don't allocate constant items - of if later some shorter-lived stuff might be added or ... 21:58
chromatic Yeah, but everything that allocates children within a PMC has to check if the parent is constant and use a different allocator/initializer for the children. 21:59
leo nope - if children are added the 'adder' (inside parrot core code) has to know, if the parent is a _true_ parrot constant PMC 22:00
chromatic I think we're saying the same thing. 22:01
leo no checking and such IMHO
that's a matter of internal structure policies
chromatic The Sub PMC doesn't create all its children as constant right now.
Maybe that's a bad example.
The String PMC doesn't create its STRING as constant now by default. 22:02
leo last when I checked Namespace inside Sub was such a thingy
oh ...
yep
chromatic If the String PMC gets created as constant, it has to contain a constant STRING.
leo STRINGs aren't constant
yep
chromatic If we used rgrjr's idea, we could take a PObj we know needs to be constant and, after constructing it fully, promote it and all of its PObj children recursively to constants. 22:04
leo if there ist the slightest chance that a non-constant item might be added to a const PMC, then don't allocate that PMC as a constant - my advice
chromatic Exactly.
leo you can't prmote it - that would change the address of that PMC which is a nono 22:05
chromatic You can promote it if you're the one who created it and you know nothing else has a pointer to it yet.
Coke (tangent) (strings aren't constant) there was a proposal at one point to eliminate strings and just have Strings. Is that still on the table?
leo not without another indirection in PObj structures
yes, just in that case - but are still constructing that PMC and haven't returned the address of it 22:06
chromatic This would be after the construction. 22:07
When storing a Sub into the packfile structure, for example.
leo then the next instruction might have already "published" the address
chromatic PIR instruction or C instruction? 22:08
leo this looks rather error-prone to me
opcode
chromatic I agree, we can't do it reliably between opcodes.
I meant from the C level.
leo from C code level, the C code has to know, if a constant object shall be constructed or not - by delivering on the constant flag 22:09
that's it IMHO
chromatic Yes, but that pushes the responsibility of allocating all children PObjs as constant to every place in every PMC that might allocate children. 22:10
That includes dynpmcs.
leo siteds of construction of internal structures should know that policy 22:11
if not then just don't use constant PMCs ;) 22:12
chromatic Sure, we can publish the policy... but I don't want to debug dozens of dynpmcs that accidentally get that wrong.
I'd like to make it so easy to do the right thing that people don't even have the temptation to do the wrong thing even by accident.
leo you can check that with GC_DEBUG, if these PMCs have a mark vtable, which is walking the children
chromatic Sure, I know how to debug this type of problem. I don't want to have to think about having to debug it though. 22:13
If we can design the system such that these types of problems never occur, even better.
leo with refcounting you got this problem on each allocation, with our GC system the problem is minimized to crate a proper mark vtable 22:14
but it can't reduced beyond that IMHO
particle no constants, no problem.
chromatic Or only constants in places where you *know* that it's safe to promote a PObj to a constant. 22:15
leo except performance and space troubles later - yes ;)
particle yes, when we get to 0.50+ we'll need performance and space optimizations
then constants++
leo chromatic: yes, indeed - that might need some changes in e.g. Sub internals to fix current problems 22:16
chromatic I'm sure it will. 22:17
spinclad (but we're already at 0.5+?)
chromatic 5 < 50
leo *g*
chromatic With regard to getting mark() right, I think we can almost always autogenerate it from the new PDD 17 attribute declarations.
spinclad (will we *ever* hit 50?)
(before we jump to 1?) 22:18
chromatic 0.50 is probably the point TPF rents me for a month and locks me in a room with various snack foods and won't let me out until I either say "We need to fix these things" or "Where's Leo? He needs to fix this one."
leo I'll take a sabbatical then a dayjob ;) 22:19
spinclad (ah. 0.50: the boundary between the first two 80%s) 22:20
leo anyway - roger has brought up a point of the term constant:
leo is seeing these defs:
constant PMC: allocate in constant pool - a GC tern 22:21
term
immutable: contents doesn't change - is sharable threadwise
these 2 concepts are orthogonal
. 22:22
some internaļæ½l parrot structure have both properties - some don't
chromatic Aren't constants also immutable? 22:23
But not vice versa.
leo no
you can add as many constant items to a constant PMC as you like, as long as these items are constant too 22:24
it's just a GC term
as long as PObj_constant_FLAG = POBJ_FLAG(12), 22:25
... involved
chromatic Oh. I was thinking of swapping to the RO vtable when purifying a constant.
leo this would be ok for immutable := r/o constants, yes 22:26
chromatic That's what I had in mind.
leo but as said, currently it's a matter of not considering these PMCs during GC, not more
chromatic Right. 22:27
leo it's a policy thingy what is long living in the interpreter that it might be constat
e.g. the packfile with all the Subs 22:28
but not the 'eval'ed code
chromatic Right.
Probably Class PMCs. 22:29
leo yep
but what about dynamically built clases
and so on
this needs a clear policy
reflected in C-structures and code 22:30
chromatic and lots of revising the PackFile code.
leo Sub was ok some time ago, then Namespaces arrived and the first breakage did happen
chromatic Which is kind of a mess anyway.
leo yep
packfile code the started marking Sub structs 22:31
then
chromatic I looked at mark_1_sub or whatever it is.
leo so some C structures aren't yet capable of dealing with constant PMCs
chromatic I can't convince myself that it's getting all constants in all PackFile segs.
leo yep that one
chromatic mark_1_seg
leo yep
chromatic If walking the pointer from the first packfile really works... maybe. 22:32
leo well, subs are marked from context code too
chromatic True.
and I suppose we could walk the constant pools during sweep and flip the live flag back to zero, but why have constant pools then? 22:33
leo and should be cleaned up if the context vanishes because of some eval-ish code
chromatic Anyone want to write a Scheme VM instead? 22:34
leo chromatic: indeed - if it's not totally clear that these PMCs are persistent for the interpreter lifetime then don't create these constant
chromatic I can live with that rule. I can't live without some food now though.
Thanks for the thoughts, leo.
leo welcome
jonathan
.oO(WTF?)
22:43
particle ...riffing on chromatic's nick... 22:45
jonathan ... 22:55
:-)
Hmm. Looks like vtable method does isn't implemented anywhere. 22:57
23:02 Andy joined 23:04 zaphod joined 23:08 x joined 23:10 peeps[work] joined 23:17 kid51 joined 23:26 Limbic_Region joined 23:32 Theory joined
zaphod I haven't been able to find anything in the docs or tests about this so far. How is :multi(...) in PIR supposed to interact with inheritance? 23:36
23:37 DarkWolf84 joined
chromatic Right now it uses Manhattan distance, so... not well. 23:43
zaphod right now I'm getting that when a subclass declares a multi of the same name as the superclass the super's versions of the method are not in the subclass 23:45
chromatic Probably because of how we store them in namespaces. 23:46
Yick.
I could give you a workaround, but you probably don't want it.
jonathan This comes back down to the issue of, we do the real dispatch on invoke. 23:47
zaphod is the workaround to make a copy of the parent's Multisub for the child class?
chromatic Yep.
zaphod ugh
chromatic Could be worse.
purl Could be Java.
jonathan purl++ 23:48
chromatic You don't want to know what it takes to make exporting multis into a namespace where you already have variants of that multi.
zaphod I tried getting around it by putting a default multi in the child class and then calling to the super with callmethodsupercc...then I discovered that callmethodsupercc wasn't implemented :P 23:50
Then I found the Super PMC (and then discovered that it is deprecated) which solves it as well 23:52
23:57 iblechbot joined