Parrot 0.6.2 "Reverse Sublimation" Released | parrotcode.org/ | 6/661 new/open tix | logged in irclog.perlgeek.de/parrot/today
Set by moderator on 10 June 2008.
DietCoke is there any pir syntax to call something directly from another namespace? 00:01
00:06 donaldh joined
jonathan DietCoke: Not that I know of; you need to look it up and then $P0(...) 00:06
00:07 Zaba joined
jonathan sleeps 00:09
00:09 AndyA joined 00:13 bacek_ joined 00:14 bacek_ joined
DietCoke ... you can't use [] in a macro!? 00:17
DietCoke cries.
(oh, right, this is why I haven't hacked on tcl in ages. =-)
(... because I keep making wild claims about things that aren't true?) 00:20
00:25 Whiteknight joined
Whiteknight what is qpsmtdp? 00:43
dalek r28228 | coke++ | trunk: 00:47
: [tcl] Delete unused file.
diff: www.parrotvm.org/svn/parrot/revision?rev=28228
00:53 chromatic joined 00:58 Whiteknight joined, bacek__ joined 01:02 rdice joined
DietCoke hey,c. 01:13
01:15 gmansi joined
bacek__ morning... 01:20
chromatic pong 01:25
DietCoke you get my cell? 01:32
ohloh-- 01:41
tewk chromatic: tewk.com/nci.callgrind.out 02:12
I ran it without any special commandline parameters 02:13
02:15 kid51 joined 02:21 particle1 joined 02:22 Eevee joined 02:38 kid51 joined 02:46 schobes joined 02:47 schobes left 02:53 grim_fandango joined
chromatic tewk, a lot of bsr calls. Those can get a little expensive. 03:09
36% of all GC runs are due to those. That's probably something worth optimizing in your grammar.
Looks like 20% of all GC runs are due to get_string calls on PMCProxy. 03:10
90% of those are getting object attributes, which I'd like to make somewhat cheaper.
Another ~10% of GC runs come from calling name on Object PMCs. 03:11
Looks like 3% of the immediate runtime costs come from converting String PMCs to STRINGs in the calling conventions. 03:12
Avoiding that could get you 5-7% improvement. 03:13
My (informed) guess is that you have a lot of backtracking in your grammar, and a couple of careful optimizations there could speed things up significantly. 03:15
03:23 tetragon joined 03:39 petdance joined 03:54 bgeron joined
pmichaud (backtracking grammar) -- yes, while tracking down a bug in PGE earlier today, I noticed quite a few bsr calls that I think we could improve on 03:57
also, things will be *much* better when we have protoregexes and ltm 03:58
because we can eliminate a ton of branches and backtracking
chromatic If you want another speedup in Rakudo parsing, fix a couple of those easy bsrs. 04:01
pmichaud yes 04:02
currently each alternation in rules stores another backtrack point (bsr)
at least, I *think* that's what happening, based on the trace I did
so, an alternation with five branches ends up with four bsrs, where only one (at a time) is really needed. 04:03
with protoregexes we can eliminate quite a few of those alternations
but we can also generalize alternation to be a list operator instead of binary 04:04
chromatic If any of those are an hour or less of work, you could save a fair amount of amortized development time. 04:06
(The rules change when pdd25cx merges though.)
pmichaud protoregexes are definitely more than an hour. Fixing Alt may be O(hour)
what changes in pdd25cx merge?
chromatic There's no bsr/Stack_Chunk_t mess in pdd25cx. 04:07
So the GC characteristics of backtracking have changed somewhat.
pmichaud ah, yes. But what we have instead is a bit heavier, so avoiding bsrs (or their replacement) is an even bigger win, I should think
at any rate, I'm sure there will always be grammars that take the alternation approach instead of the protoregex approach, so this is a particularly useful optimization to add. 04:09
chromatic It's a good policy in general, but I'm not going to guess until I measure it.
pmichaud I was a bit surprised to see strings of 11 or so bsr's in a row. :-)
chromatic That's not good. 04:10
pmichaud anyway, that'll be a good project for tomorrow. far too many interesting things to work on these days :-) 04:12
and I need to write some journal posts.
chromatic Me too. 04:14
dalek r28229 | chromatic++ | trunk:
: [lib] Fixed a memory leak in isa_hash initialization for PMCs;
: parrot_new_hash() allocates Hash memory already, so there's no need to allocate
: it here.
diff: www.parrotvm.org/svn/parrot/revision?rev=28229
pmichaud afk for a while 04:17
dalek r28230 | chromatic++ | trunk: 05:17
: [src] Changed several runtime constant strings to compile-time constant strings.
diff: www.parrotvm.org/svn/parrot/revision?rev=28230
05:48 Zaba_ joined 05:53 Eevee joined 06:00 donaldh joined
dalek r28231 | chromatic++ | trunk: 06:12
: [PDDs] Cleaned up PDD formatting errors from the codingstd tests.
diff: www.parrotvm.org/svn/parrot/revision?rev=28231
06:15 Eevee joined, uniejo joined 06:16 Psyche^ joined 06:36 Eevee joined 06:43 Zaba joined 06:47 Zaba_ joined
spinclad BREAKING NEWS: Parrot hijacks CPAN, attacks New York! # search.cpan.org/~simon/parrot-0.0.1/ 06:55
[as noted by particle earlier] 06:56
06:57 allison joined 07:08 iblechbot joined 07:12 Zaba joined 07:22 ruoso joined 07:40 Zaba joined
cizra I tried to generate a new test language, but its Makefile wasn't generated. 08:16
08:16 Zaba_ joined
cizra (using the tools/dev/mk_language_shell.pl) 08:16
Running parrot on the test PIR didn't succeed either. 08:20
error:imcc:No such file or directory
Tene: Try running echo 'i = 0; i.upto(5) {|j| puts j}' | parrot cardinal.pbc --target=parse -- it's freakin' HUGE. Is it supposed to be so complex? 08:29
08:31 braceta joined
TiMBuS cizra 08:48
if that freaks you out, you better not try: echo 'my $i = 0; for $i..5 -> {say $^j}' | ../../parrot perl6.pir --target=parse 08:49
08:52 Eevee joined 09:02 Ademan joined 09:26 Eevee joined
cizra TiMBuS: doesn't parse 09:33
purl ?SYNTAX ERROR
TiMBuS .. really? 09:34
cizra Statement not terminated properly at line 1, near "5 -> {say " 09:35
TiMBuS odd, it works for me.
this is rakudo im talking about not cardinal
cizra I tried running it in languages/perl6 09:36
Dunno what rakudo is
TiMBuS languages/perl6 is rakudo. strange that doesnt parse for you
the point i was making is any large language has a pretty huge syntax tree
its about the same size as the one cardinal produces 09:37
cizra OK
TiMBuS 226 lines for cardinal, 197 for perl6. nothing to fret about. 09:39
cizra OK 09:40
Is that tutorial at www.parrotblog.org/2008/03/episode-...-guts.html supposed to be current and correct?
shorten cizra's url is at xrl.us/bhy43
cizra The tools/dev/mk_language_shell.pl script didn't create a makefile for the new test language.
TiMBuS i do believe so, but if theres any updates they would be in languages/squaak/docs
oh, yeah the 'executable' flag isnt set on it 09:41
use 'perl tools/dev/mk_language_shell.pl'
cizra nono 09:42
I did that and the new language was generated,
but it lacks a makefile.
TiMBuS oh
ooh yeah i had that problem
did you run configure for parrot again?
cizra Think so.. wait 09:43
yep, nothing
TiMBuS well try Configure.pl --languages="yourlanguage" 09:44
thats what i had to do i think
cizra works
thanks 09:45
TiMBuS kewl
cizra Ougt to update the doc.
Will you commit if I make you a patch?
09:45 pjcj joined
TiMBuS oh, i dont have commit 09:45
haha
but im sure someone would commit a change to it 09:46
cizra Hey, folks! Anyone got SVN commit permissions? 09:49
pastie.org/212876 09:50
09:58 slightlyoff joined 10:08 Eevee joined 11:08 MagNET joined 11:24 Eevee joined 12:09 Zaba joined 12:21 tetragon joined
DietCoke cizra: applied with tweaks, thanks. 12:34
cizra \\o/
dalek r28232 | coke++ | trunk:
: Clarify mk_language example
: cizra++
diff: www.parrotvm.org/svn/parrot/revision?rev=28232
DietCoke For anything more serious, a patch is probably better so it doesn't get lost. =-) 12:35
cizra You mean, mailing a patch to the list? 12:38
12:40 IllvilJa joined
DietCoke ya. (docs/submissions.pod); just that IRC isn't always monitored, is all. 12:41
thanks for the patch. 12:42
cizra (=
TiMBuS hmm, when you append a pmcarray to another pmcarray, is the appended array copied? 12:46
hmm i think i might have to iterate the second array and copy every element or something.. 12:50
jonathan TiMBuS: How are you appending it? 12:51
TiMBuS array."append"(otherarray)
but it seems like changes made to the first array apply to the second 12:52
which also happens if i clone the second array and append what is supposed to be the clone. 12:53
12:54 clunker3 joined
jonathan That may work...heh...I didn't know there was an append method. 12:54
DietCoke ew. append should probably be reworked to use the vtable methods. 12:55
(or an iterator)
(solely, that is) 12:56
bacek found crash in parrot...
TiMBuS ill just manually copy and append each element, im not fussed
bacek 1 ~~ Perl6Scalar
jonathan bacek: I'm not sure what that should do, I guess maybe other than returning a false value...it shouldn't segfault. 13:01
Make a ticket. Or a patch. ;-)
13:04 IllvilJa joined
bacek jonathan, probably :) But there is already few my patches in RT... 13:06
TiMBuS heh, 1 ~~ Perl6 13:08
segfault
purl rumour has it segfault is xkcd.com/371/
13:10 jhorwitz joined 13:13 iblechbot joined
TiMBuS Perl6* pmc's/whatever they are shouldnt be directly accessible from perl 6, should they? 13:14
or are they considered an actual type? 13:16
nopaste "bacek" at 202.7.166.164 pasted "jonathan: there is a patch for crash in '1 ~~ Perl6Scalar'" (42 lines) at nopaste.snit.ch/13229 13:39
jonathan bacek: Looks sane - I am tied up doing $DAYJOB at the moment, so please send in patch (as Parrot one, not Rakudo) 13:43
pmichaud (append array): I've been using splice, myself. 13:44
TiMBuS hmm 13:45
ill give that a shot
pmichaud Perl6* pmc's won't generally be accessible, no -- we just haven't worked to clean up those loose edges yet.
TiMBuS oh, gewd 13:46
pmichaud + "Method '%Ss' not found for non-object", meth);
isn't really describing what's happening. The error should probably be "Null PMC in callmethod" 13:47
13:47 particle joined
pmichaud or, better: "Null PMC access in callmethod '%Ss'" 13:48
bacek pmichaud, It's copy-pasted from existed check. But I can change it 13:49
TiMBuS the parrot opcodes need a search function or a list i can ctrl-f over =/ 13:50
bacek but it actually is not NULL PMC, AFAIU
pmichaud ohhhhh
you're right.
13:51 gryphon joined
bacek (jfyi #55620) 13:51
pmichaud ....but every PMC has a class.
or should have one.
bacek this is mathian PMC without class :)
Martian
Zaba are there exception objects in perl6?
pmichaud In this particular instance ( 1 ~~ Perl6Scalar ) I'm guessing that the problem is that the symbol Perl6Scalar doesn't exist (i.e., PMCNULL). 13:52
the code then attempts to invoke .ACCEPTS on PMCNULL, and that's the segfault.
so, perhaps PMCNULL doesn't have a class. But AFAICT every other PMC should respond with some value to VTABLE_get_class 13:53
if PMCNULL is the only PMC w/o a class, though, it would be better to check for it directly.
bacek pmichaud, hmm. Just a sec. 13:54
pmichaud I can add my comments to the ticket.
(if it would help.)
bacek run 'git reset HEAD~1; make' to test
but I think is was NameSpace... 13:55
pmichaud oh, you're right there.
bacek++ bacek++ # correcting my silly mistakes
TiMBuS Zaba, theres a 'Failure' if that helps..
pmichaud Zaba: yes, Perl 6 has Exception types. 13:56
bacek pmichaud, :)
DietCoke pmichaud: ifnull ...
pmichaud so, is VTABLE_get_class returning null on NameSpace objects?
Zaba pmichaud, nice.. 13:57
DietCoke pmichaud: return PARROT_NAMESPACE(SELF)->_class;
bacek (gdb) p object->vtable->whoami->strstart
$45 = 0xb7e740d3 "NameSpace"
this one without ->data. 13:58
And it cause crash in error report.
oops. No. Its with data...
13:58 IllvilJa joined
DietCoke pmichaud: looks like _class is an attribute on the namespace. 13:58
bacek (gdb) p object->vtable->get_class(object) 13:59
$48 = (PMC *) 0x0
DietCoke (and it's only set via a call to set_class, which isn't called elsewhere in teh pmc.
bacek DietCoke, make sense. 14:00
pmichaud I wonder if NameSpace needs some sort of PMC Proxy instance
jonathan I originally intended that everything had a PMCProxy instance that it, by default, returned from the get_class vtable method. 14:05
pmichaud oh, I see where bacek++ got the code from for the patch.
just copied it from callmethodcc into callmethod
14:05 Zaba joined
pmichaud works for me. Pay no attention to the ravings of the just-waking-up Rakudo guy. 14:06
bacek "<bacek> pmichaud, It's copy-pasted from existed check. But I can change it" :)
pmichaud bacek: I was looking at a different "existing check"
I didn't see the one you were referring to. Anyway, as I said, I'm messed up on this one. 14:07
pmichaud slinks off into a different developing cave for a while.
14:09 Whiteknight joined
TiMBuS finally! 14:11
dalek r28233 | Whiteknight++ | gsoc_pdd09: 14:13
: [gsoc_pdd09] updating to trunk r28232
diff: www.parrotvm.org/svn/parrot/revision?rev=28233
TiMBuS i just ended up cloning every pmc in the array then appending it to the other. oh well function calls now work so ive pretty much written the parrot version of 'joy' 14:14
awesome 14:15
next time ill write an imperative language using pct since its deigned to compile, you know, imperative languages, 14:16
14:17 Zaba joined
DietCoke should just bite the bullet and see how tcl works (without rename) using PCT. 14:23
er, [rename] 14:24
NotFound Latin?
purl well, Latin is an "inflected" language. instead of using word order to denote subjects and objects like we do in english, latin puts different endings on their words. or a horrible waste of time. or not something on Babelfish's menu
14:33 Zaba joined, rdice joined
dalek r28234 | kjs++ | trunk: 14:42
: [squaak] implement return statement. Not sure if it's complete now, think so.
diff: www.parrotvm.org/svn/parrot/revision?rev=28234
14:46 Zaba joined 14:47 sjansen joined
NotFound I've read the discussion about _class in namespace. A problem is that in zero initialized structure PMC * members are filled with NULL, not PMCNULL. 14:52
Attempts to use PMCNULL can throw exceptions, with NULL usually just segfaults. 14:55
dalek r28235 | kjs++ | trunk: 15:01
: [squaak] fix action method for try. Apparently, seting viviself and isdecl flags need PAST::Val nodes instead of just literal constants.
diff: www.parrotvm.org/svn/parrot/revision?rev=28235
15:14 davidfetter joined 15:17 Infinoid joined 15:35 Zaba joined 15:38 bacek joined
dalek r28236 | kjs++ | trunk: 15:39
: [squaak] update README a bit; return is now implemented.
diff: www.parrotvm.org/svn/parrot/revision?rev=28236
15:42 particl1 joined
dalek r28237 | Whiteknight++ | gsoc_pdd09: 15:43
: [gsoc_pdd09] adding some basics for root-at-a-time increments and an optional threaded mode
15:43 IllvilJa joined
dalek diff: www.parrotvm.org/svn/parrot/revision?rev=28237 15:43
tewk I ran it without any special commandline parametersq 15:46
oops 15:47
16:18 cotto_home joined 16:22 peepsalot joined 16:27 Zaba joined
dalek r28238 | Whiteknight++ | gsoc_pdd09: 16:27
: [gsoc_pdd09] some changes, mostly a lot of comments
diff: www.parrotvm.org/svn/parrot/revision?rev=28238
16:38 Zaba joined 16:41 Theory joined 16:54 Zaba joined 17:11 Zaba_ joined 17:16 Eevee joined
particle jhorwitz: ping 17:38
jhorwitz particle: pong
particle did you get mod_lolcode working?
i know somebody who wants to put up a monster.com ad for it :) 17:39
jhorwitz yes, but persistence didn't work
of globals, that is
particle that seems appropriate
jhorwitz i wanted to say "i can haz X cheezburgers?" 17:40
particle i wonder why that's broken
jhorwitz it was cuz you couldn't use or test the value of a variable w/o declaring it
particle ooh, ff3 has a search bar in the download window
17:40 barney joined
jhorwitz i made a small fix for that, but it caused other problems. can't remember. 17:40
particle is distracted by shiny things 17:41
particle I CAN HAZ FAIL CASCADING?
DietCoke we do have folks kind of maintaining lolcode, feel free to submit bugs. 17:43
tcl is far more important though. =-)
jhorwitz obviously. ;-)
Whiteknight DietCoke, are you going to get Tk working with it? 17:44
DietCoke So... pct is designed to work with languages with syntax. Tcl doesn't really have that, per se. I am thinking that for a first pass at implementing tcl on pct, I need to pretend that the 'if' command is really syntax.
(Tk) It's not on my radar, no. 17:45
Whiteknight okay
DietCoke (pct) so, once I get all that working, I can then dynamically replace the grammar if someone redefines 'if'.
but that seems kind of hacky to me. :| 17:46
Anyone have any better ideas? I'd like to keep something like the PGE grammar I have now, but still be able to take advantage of the ast/ost/pir chain; right now that chain is all handrolled in tcl. 17:47
(I wonder if I can just work on replacing those bits rather than returning my handrolled PIR)
17:47 IllvilJa joined
DietCoke Whiteknight: (tk) to do that, I think I'd need to support the C level Tcl APi as well. 17:48
and I'm just going for the tcl language level stuff atm.
particle DietCoke: you can define your own compiler chain with pct
Whiteknight Okay, that's fair. I know the Tk lib is going to be used eventually for perl6 too, I personally would prefer to see a Gtk2 library in there, but I dont have the time or tuits to implement it 17:49
DietCoke well, I can already call out to parrot stuff, so if there's a wrapper in lib/ I can use the gtk2 stuff. 17:50
Hurm. actually, I'm not sure I can, because all my namespace access is rooted at ['tcl'] atm.
particle all your namespace are belong to ['tcl'] 17:51
DietCoke particle: so here's my thing: the first parse for tcl is always "break this into commands". Each command can start out with handrolled PIR, or something I've compiled, but I have to be able to swap it all out at runtime.
particle lexical redefinition, or global? 17:52
DietCoke We have bits that actually return the PIR necessary to run some of those commands (analagous to PCT, but done differently). We also have runtime versions of most things.
(so if someone calls [for ...], they're getting a runtime version written in PIR.)
particle perl 6 does this with begin 17:53
DietCoke particle: global.
particle you can redefine the grammar
DietCoke if you replace the main [if] sub, you replace the whole thing.
but it's not really a grammar.
er, a grammar change.
the grammar is just "break this into commands"
Like I said, I can cheat and actually flesh that out more. It does feel like cheating atm, though. hurm. 17:54
particle you look up via arity?
i mean, look forward
DietCoke ?
There's no arity involved. dispatch to named sub in the appropriate namespace.
particle i mean, to determine how to evaluate 17:55
how many args does this sub expect
DietCoke so [if {$a == $b} {puts hi}] is invoking 'Tcl'; '&if'
particle ah, ok, brackets delimit commands
DietCoke well, there's only one choice, if the sub name is present, dispatch to it.
yes.
(just a way to show I'm quoting tcl code here. You'd not write the brackets around a top level command.) 17:56
Hurm. I guess it's not cheating that bad. :| 17:57
One other problem I have: I need to evaluate each command immediately. 17:58
(which I'm not doing now, but need to fix in any major rewrite). Is there a way to do that with PCT? 17:59
I know it's theoretically possible with my current setup by changing my grammar to be a single command and then looping over the input, but I would love to have that baked into the toolkit.
18:00 donaldh joined
particle sorry, phone call :( 18:05
18:12 Ivatar joined
dalek r28239 | coke++ | trunk: 18:12
: [distro]
: Follow the convention of naming files consisting only of POD with .pod
diff: www.parrotvm.org/svn/parrot/revision?rev=28239
barney I'm wondering whether the Perl6 object model fits PHP. '=&' in PHP seems to be the same as ':=' in Perl6
DietCoke oh, wait. PCT doesn't support HLL yet, does it? 18:16
pmichaud =& in PHP is really two tokens, I think. 18:25
PCT doesn't support HLL yet, no. But it shouldn't be too hard to add it. 18:26
cotto_work pmichaud, yes 18:31
18:33 gmansi joined
barney pmichaud: I don't understand PHP semantics yet. '$a =& $b' is the same as '$a = &$b' but don't mean: Store reference to $b in $a. 18:34
It feels more like a single op. $a is now an alias for $b 18:35
18:38 Zaba joined
cotto_work barney, $a = & $b; means $a refers to the same thing $b refers to, afaict from the docs 18:39
pmichaud in this sense, yes, it's like a bind. 18:40
avar barney: it means $a now refers to the same variable as $b, it's like a hardlink 18:41
(not a reference)
18:42 Eevee joined
barney Yes, that's why I probably should change assignment in Plumhead for pasttype('bind') to pirop('assign') and use pasttype('bind') only for '= &' 18:45
s/for/from/
18:56 Zaba joined
jhorwitz particle: what exactly is the deal with lolcode & monster? 19:02
19:02 grim_fandango joined
dalek r28240 | bernhard++ | trunk: 19:09
: [Plumhead]
: Remove unused for src/pct/Plumhead/Grammar.pir
diff: www.parrotvm.org/svn/parrot/revision?rev=28240
barney s/for/file/ 19:10
pmichaud DietCoke: ping 19:15
DietCoke pong
19:16 Zaba joined
pmichaud you might not be able to answer this, but ... 19:16
19:16 gryphon joined
pmichaud I want to use "store_lex $S0, $P0" to create a new lexical 19:16
because there's not a .lex $S0, $P0 option
i.e., create a lexical at runtime instead of compile time
pdd20 says this should work if the :lex flag is present (as Tcl requires), but I can't seem to get it to work
any clues? 19:17
purl Dee Dee Dee!
pmichaud phrased differently -- how does Tcl create lexicals at runtime?
NotFound bacek: please take a look at my answer on #55620 19:18
DietCoke moment.
pmichaud: languages/tcl/runtime/variables.pir 19:19
dalek r28241 | Whiteknight++ | gsoc_pdd09:
: [gsoc_pdd09] modify the arena allocator for better spacial locality. A few other misc changes
diff: www.parrotvm.org/svn/parrot/revision?rev=28241
DietCoke you are probably interested in __store_var, the lexical path.
pmichaud ah, stick it directly into the LexPad 19:20
let's see if that does what I need.
DietCoke except that it looks like we're manually managing our call chain to get the lexpads; if you have a lexpad handy, that might work.
avar barney: is =& logically distinct from just assigning to something prefixed with &? 19:21
I.e. does it need to be special cased?
NotFound bacek or any other interested in the "say 1 ~~ Perl6Scalar" bug.
pmichaud it appears that :lex forces generation of a lexpad 19:23
DietCoke hokay. so that trick works for you, then? 19:24
pmichaud but I don't seem to be able to add an entry to it.
DietCoke odd.
barney avar: I think it is distinct
DietCoke There is magic going on with the call_chain[] call there; I think mdiep did that work, I don't recall what's going on in that code path.
pmichaud I would think that obtaining the lexpad and then doing lexpad['symbol'] = $P0 would create the entry 19:25
DietCoke we do have separate paths for creating and updating. 19:26
sub 'make', perhaps?
pmichaud oh. 19:27
afaict, none of Tcl is making use of Parrot's lexical features.
i.e., Tcl is mantaining its own complete stack of lexpads.
DietCoke Very likely because at one point nothing worked and we had to roll out our. =-) 19:28
dalek r28242 | bernhard++ | trunk:
: [Plumhead]
: Get rid of unused vars in Makefile.
diff: www.parrotvm.org/svn/parrot/revision?rev=28242
DietCoke "roll our own"
we don't have declared variables, so our lexicals were never using :lex
pmichaud okay, that answers my questions about Tcl then. Thanks for pointing me to the right places to look.
DietCoke we alwyas had to do it the hard way. If there's an easier hard way, I'm all for updating. =-) 19:29
I had thought we were using whatever the fallback version for lexicals was.
pmichaud I think the answer is that Parrot's lexical support isn't supporting what you need
at least, not yet.
Tene jhorwitz: feel free to harass me about lolcode. I have a standing policy of working on anything anyone finds important enough to bother me about.
DietCoke tene: my lawn needs mowing. get on that.
pmichaud I'm finding I want something similar but can't find the right incantation to get that working. 19:30
19:30 pjcj joined
jhorwitz Tene: bringing up mod_lolcode shortly. i'll know soon how much i need to harass you. :) 19:30
pmichaud I'll poke around the lexpad.pmc guts a bit and see what's up there. 19:31
ah, looks like that was left unimplemented. At the least the code doesn't match the documentation in the code. 19:32
19:34 Zaba joined, IllvilJa joined
Tene DietCoke: Sure, I'll do that the next time I'm in NY. 19:35
19:37 davidfetter joined
dalek r28243 | bernhard++ | trunk: 19:44
: [Plumhead]
: Add an empty actions.pm,
: prepare for migrating PAST generation from TGE to NQP.
diff: www.parrotvm.org/svn/parrot/revision?rev=28243
19:47 Zaba joined
Tene DietCoke: as long as you close >=10 tickets while I'm doing it. 19:49
DietCoke I've already closed that many this week. =-| 19:51
particle crap, i have bad ram.
now i have to find out which of four modules or four slots is bad
Tene I'm sure you won't need your system while running memtest86 on it for the next day, right? 19:52
DietCoke is this the machine that was coming to OH? 19:53
particle memtest86 just froze 19:57
OH?
this is my desktop, 6GB dual quad-core xeon monster
jhorwitz you should see his laptop 19:59
19:59 smash joined
smash hello everyone 20:00
Tene Hi!
particle: froze, eh? Maybe you've got bad ram. 20:01
;)
DietCoke er, IL. 20:02
DietCoke geographizes GUT
dalek r28244 | Whiteknight++ | gsoc_pdd09: 20:04
: [gsoc_pdd09] modify the arena allocator for better spacial locality, again. Requires some voodoo pointer arithmetic, which is probably buggy.
diff: www.parrotvm.org/svn/parrot/revision?rev=28244
particle tene: :P 20:07
20:10 cjfields joined, donaldh left 20:11 barney joined 20:13 Eevee joined
jonathan 6GB dual quad core?! WANT! 20:13
(with non-faulty RAM, kplzthnx)
cotto_work good for teing make -j 20:14
s/tesing/testing/
Infinoid hooray for voodoo pointer arithmetic
ptr += sizeof(dead_chicken)
jhorwitz particle: mod_lolcode lives 20:22
particle HORRAY!
link?
jhorwitz on my dev box at home right now
Tene nice
particle link?
:P
jhorwitz hold yer lolcats
particle sheesh, i can debug ram problems faster... 20:23
jhorwitz kthxbye
;-)
particle :D
jhorwitz particle: www.smashing.org/sandbox/cheezburger.lol 20:28
particle joy! 20:29
cotto_work yuo can haz win
20:29 Zaba joined
cotto_work are you going to keep an example page up? 20:29
jhorwitz cotto_work: yes, trying to have all that up by YAPC
particle: i think everything's a lexical right now, so not much we can do w/ persistence (cheezburger counters, etc.) 20:30
Tene: can you confirm?
NotFound No one wants to take a look at #55620 ? I'm in discussing mood. 20:31
Tene jhorwitz: sounds right to me. Feel free to tell me what you'd prefer. 20:32
DietCoke crap. I missed the call again, dinnit i.
jhorwitz Tene: either globals or file-scoped lexicals would be nice (a la perl's "our"). then i can write a cheezburger counter. 20:34
DietCoke NotFound: that last variant looks best. =-)
NotFound DietCoke: I like both.
Tene jhorwitz: give me aproposal for how they should work and I'll implement it. 20:35
jhorwitz can do. probably not real soon though. :)
NotFound I know the first gives less informative messages, but I think that when more descriptive messages are needed an explicit check is the way to go. 20:36
DietCoke it's the sort of patch I would normally defer to someone more comfort with parrot guts to apply. 20:40
20:40 Zaba joined
NotFound And can't be applied as is, several test must be addapted before. 20:41
But the last can be applied indepedently of the decission about the first mine or the original one. 20:43
The NULL _class is an open call for segfaulting bugs. 20:45
20:53 Zaba joined
NotFound By the way, this code segfaults: $P0= get_root_namespace | $P1= get_class $P0 20:53
particle DietCoke: i think pmichaud nominated you for something in your absence :) 20:55
DietCoke which is what, now? 20:56
particle summarizing list mail and irc traffic or something small like that...
i'm kidding, of course.
but we did discuss the Great Need 20:57
Whiteknight what is the Great Need? 20:59
particle summarizing list mail and irc traffic or something small like that... 21:02
~8-10h/week
cotto_work I'll have to think about whether I'd have time to do that, since it looks like I'll be in code purgatory for a while still. 21:05
21:07 rdice left, Zaba joined
cotto_work something like www.perl.com/pub/a/2004/04/p6pdiges...40425.html ? 21:08
particle yes 21:09
and there's the *possibility* for some funding, from tpf or parrot
we'll definitely be talking about it at yapc 21:10
cotto_work funding would be a secondary concern
particle and i know ann barcomb well, who did perl 6 summaries for a while
cotto_work (at least for me)
particle she and nothingmuch developed some tools to make it easier to manage
cotto_work good thing to talk about at yapc 21:11
particle ya
DietCoke whee, more "perl6 is going to suck" crap to wade through. 21:16
jonathan I'm not sure if that beats the "perl6 is a failure" or "perl6 is vaporware" crap... 21:18
jonathan will be hacking Rakudo tomorrow.
DietCoke I think it's harder to defend against. Though they're ranting about the initial apoc, I think. 21:20
Tene DietCoke: where?
21:21 Zaba joined
DietCoke private online community 21:24
I just quit that channel.
Whiteknight perl 6 is going to be the bee's knees
I'm so excited about it, I could plotz
DietCoke heh. If I was personally more excited about perl6, I could probably defend it. As it is, it's just a drain to talk to these guys. 21:25
Whiteknight The proof will be in the pudding, as it were. When we get a working product and start doing amazing stuff with it, people will cut out their crap 21:26
jonathan I've found some people you can have a reasonable technical discussion with. And even if you end up disagreeing, at least it was a discussion. Others, frankly, aren't going to change their mind no matter what you say and aren't worth the time to argue with. 21:29
DietCoke jonathan: and since I'm not a perl6 expert, I can't even have that discussion, typically. =-) 21:30
Whiteknight I'm not a perl6 expert, but I am an enthusiast. It's perl 6 that lead me to Parrot in the first place 21:31
jonathan Same.
...5 years ago. 21:32
Whiteknight let me tell you what, my C-foo has gotten more of a workout today then it has in years
doing C pointer arithmetic really makes me appreciate dynamic languages even more 21:33
Tene Hm. I could really enjoy some lolcode hacking tonight.
I'm usually just a bit too tired to really get any hacking done unless I'm excited about something specific, or someone else harasses me to do it. 21:34
Caffeine helps a lot, but then I have trouble sleeping for the next two to three days. 21:35
DietCoke I've spent the last several years building up an immunity to caffeine power. 21:36
powDer
Whiteknight I can harass you! 21:37
Tene It's not worth the trouble for me if I end up sleeping in through the start of class, and I'm in different timezones regularly, so I'm more sensitive to that than I used to be.
21:38 Zaba_ joined
Tene I think I figured out how to solve a problem I've been having with cardinal in my sleep last night, though. 21:38
I'm still not sure what I'm going to do about the "no syntactic difference between variable and nullary sub" thing and the "no syntactic difference between attribute access and nullary method call" thing 21:40
DietCoke tene: is there a mailing list for generic LOL code stuff? 21:41
Tene DietCoke: I have no clue whatsoever.
DietCoke needs mdiep back to hack on tcl more.
Tene I just read some stuff from the spec page.
There are web forums, I know. 21:42
NotFound DietCoke: almost any mailing list and web forum in the world have a lot of LOL people.
DietCoke Happy to create a mailing list on coleda.com if you need one.
NotFound: specifically looking for lolcoders, though. =-)
(mailing list) probably better off to do that via google groups, though. 21:44
Tene DietCoke: why do you ask? 21:45
DietCoke because I assume you are having trouble resolving a spec question, not an implementation detail.
NotFound Created #55640 with the segfault found when discussing #55620
Tene I was talking about cardinal there, not lolcode. 21:46
DietCoke missed the context switch 21:47
->
Tene in ruby, "a = b + c", both b and c could be either variables or nullary subs.
NotFound Less than an hour to locate, fixing, testing and creating the ticket, not so bad :) 21:48
21:53 Auzon joined 21:57 Zaba joined 22:04 cjfields left 22:09 Limbic_Region joined 22:18 Auzon joined
dalek r28245 | Whiteknight++ | gsoc_pdd09: 22:39
: [gsoc_pdd09] more modifications, add a cardmarking function, will probably be inlined later
diff: www.parrotvm.org/svn/parrot/revision?rev=28245
jonathan Whiteknight: I'd guess most compilers will spot it, but card = card + (hdr->index / 4); is maybe better to use ">> 2" instead of potentially slow "/ 4"? 22:57
And bitwise of instead of the modulo too. 22:58
22:59 japhb joined
NotFound jonathan: if the values are unsigned, you can trust the compiler will optimize it. 23:05
(and if not, the compiler is so bad that those microoptimization will not be noticeable) 23:06
We already have too many attempts of premature optimization, IMO. 23:09
23:10 particle joined 23:13 IllvilJa joined
japhb NotFound: sure ... but given that the compiler should DTRT, the choice of /4 or >>2 should depend on what the actual *intent* of the code is. If it's an integer getting scaled, /4 is the correct code. If it's a bitmask, >>2 is the correct code. 23:18
japhb hates it when people mix /(2**n) and >>n without thinking ... 23:19
cotto_work premature optimization?
purl premature optimization is the root of all evil or when you make the mistake of optimising for speed when really you should optimise for maintainability and correctness, in the first instance. or unnecessary optimization is premature by definition. or hacking with tequila in preference to wine
japhb ... but I'm also in the "code is prose" group
NotFound japhb: yeah, but I haven't seen yet a / 4 used when >> 2 will be desirable.
japhb I like that last definition for premature optimization ...
NotFound: sadly, I have. 23:20
Someone doing a clbuttic reactionary conversion, I think
jonathan Fine, fine, leave it as it is.
japhb jonathan: OH, I hadn't looked at the original patch in full, so I don't know which is correct in that instance. I was just trying to say that /4 ==> >>2 is not *necessarily* the best choice. 23:22
jonathan Given it's doing the cardmarking stuff, I suspect bitwise would be more natural.
japhb Fair enough.
Tene: So how does *ruby* resolve the 'a = b + c' syntax ambiguity? 23:23
Is every variable name really syntactically a nullary accessor, that just might be optimized away? 23:24
jonathan Also note, we tend to run Parrot unoptimized much of the time, and I'm guessing this is a hot code-path. Given bitwise seems clearer anyway (though I didn't mention that originally), and doesn't need an optimizer to make it run that tiny bit faster (which may add up), I thought it might be a sensible change.
NotFound Well, then I can't say no more don't heave seen that ;) 23:25
japhb jonathan: nodnod
<insert parrot should be built optimized rant here>
particle parrot is optimized for development atm 23:26
jonathan I may be wrong, but I think some compilers won't let you have debugging symbols *and* optimized build together.
NotFound jonathan: we also tend to run parrot undertested, and bugs introduced by attempts of optimization are difficult to find.
japhb particle: I think that's the intent. I'm not sure it's truly working out that way.
jonathan: Now that I would believe
NotFound See all tickets non-null related, for example.
particle japhb: msvc can't do optimized debug iirc
japhb rolls his eyes in frustration with all things Microsoft ... it's been one of those days 23:27
jonathan particle: that was the compiler I was thinking of, but didn't want to say it without checking, and am too tired to be bothered to go look it up and check. :-)
particle jonathan: i'm pretty certain, but not 100%
and if you and i are both thinking it, there's greater chance that it's true, i'd like to believe :) 23:28
japhb heh
particle thinks perl 6 is cool
NotFound Sometimes the problem is that people only looks at the IDE options, but the command line have more.
jonathan I think mswin32.pm in hints has something to make sure we don't try and do debug and optimized.
23:28 slightlyoff left
japhb reads through mswin32.pm, feels rather sick to his stomach 23:30
jonathan :-) 23:32
Tene japhb: pretty much, yeah. 23:33
japhb: optimized build on amd64 is broken, iirc
japhb Oy, and it looks like Borland's Win32 compiler *forces* -O2 ... 23:34
Or rather, we force -O2 when detecting bcc ...
particle hrmm, borland is one compiler i don't have for windows.... 23:35
yet.
japhb Tene: That's one reason that I think always building with no optimization is bad. Because no one has a strong enough incentive to fix that problem, instead delaying it until much later ... when the fix may be much more painful. 23:36
particle japhb: same can be said for jit, and alternate runcores
we *need* a smoke environment and toolset 23:37
TimToady a Perl 6 programmer is going to be surprised when they put in a breakpoint at infix:</> and don't hit it on /4 :)
japhb particle: Yep. Which I've commented similarly about.
(jit and alternate runcores)
TimToady Postmature optimization is the leaf of all evil... 23:38
japhb Nice.
jonathan TimToady: The only time we could ever optimize that is when we can infer from the type that we actually have an int...and I'd hope in the case of lowercase int type we're not compiling down to a multi-dispatch. 23:39
That's my I-need-sleep guess anyway.
particle postmature pessimisation is the square of all evil... 23:40
NotFound In the C case, I think there is no debugger that allows to put a breakpoint in / operator. 23:41
23:42 ank joined
particle wonders if the perl 6 debugger will have protobreakpoints 23:42
jonathan isn't sure whether to ask for an explanation 23:43
ank proto?
purl proto is probably to start at the lowest and use the first available. The client should be configurable.
japhb particle: do you mean a breakpoint that activates on any one of a multi?
particle yep
japhb nice feature idea, that 23:44
particle like protoregexes
jonathan Oh, OK.
That makes sense.
particle i think it could be quite useful
jonathan *nod*
particle can't build perl6 :( 23:45
jonathan: have you built rakudo lately?
NotFound All optimized build bugs have seen solved recently were caused by the non-null issues.
jonathan particle: No, have been snowed under with $DAYJOB since weekend. 23:46
particle notfound: i expect after all those are fixed, optimized build should be much more stable
jonathan Tomorrow I get full day on Rakudo that $OTHER_JOB won't interupt, though. :-)
particle ok, well the build dies during dynpmc gen
NotFound particle: I start to think that the only reasonable way to solve all is to completely drop non-null parameters. 23:47
particle .\\perl6str.c(1288) : error C2275: 'PMC' : illegal use of this type as an expression
NotFound: the decorators were added probably without testing optimized build
they're worth having, as long as they're correct and complete
jonathan Heh. I get "error:imcc:syntax error, unexpected DOT ('.')", but I only updated my Rakudo, not my core Parrot
japhb particle: re: smoke environment and toolset ... I keep seeing mentions of smoke tools here and there, but always in passing. What is the current state of things?
NotFound particle: and wthout testing if the compiler can warn about misuse. 23:48
particle notfound? there's a configure step to detect those attributes
jonathan particle: On svn up, I see
U lib\\Parrot\\Pmc2c\\PMCEmitter.pm
particle jonathan: yes, i remember reading a commit msg from chromatic about that 23:49
i bet he broke it
NotFound particle: detect what, if the attributed functions are called with possible null arguments?
particle but i need to concentrate on mk_language_shell.pl
jonathan particle: Yup, after getting that, my Rakudo is now hosed too.
particle NotFound: detect whether the compiler has the ability to use those attributes
NotFound: i believe only gcc can do that now 23:50
23:50 bacek_ joined
NotFound particle: when there is not such ability, there are no problems caused by it. 23:50
particle correct
jonathan particle: Will do a realclean.
particle jonathan: doesn't help, but go ahead
jonathan damm 23:51
OK, then I'll go and sleep and have nightmares about the pmc2c fix I might have to do tomorrow.
23:51 IllvilJa joined
particle yeah. 23:51
enjoy.
jonathan hopes it magically gets fixed before he wakes up
NotFound And even if the compiler were able to warn about possible misuses, it will lose it in jit generated code.
particle not everyone will run jit 23:52
NotFound particle: I fixed some bugs detected with jit.
So at least the people that filled the ticktes does. 23:53
particle right
the matrix of platforms and configurations under which parrot will run is huge 23:54
dalek r28246 | Whiteknight++ | gsoc_pdd09:
: [gsoc_pdd09] add all allocated objects to the free list. Some simplifications and refactors
diff: www.parrotvm.org/svn/parrot/revision?rev=28246
particle the better-defined our api is, the easier it will be to extend and maintain that matrix
NotFound particle: and that's the main reason to avoid to write potentially dangerour code.
particle if we can guarantee and document and test that certain parameters and functions allow or disallow null, it makes maintenance easier 23:55
NotFound particle: yes, and the problem is that the api definitions are somewhat nebulous.
To say the least.
particle yes, that's what needs correcting 23:56
NotFound Write code that meets the specification is as easy as walk over water...
particle prefers to write tests that meet the spec, then write the code
NotFound You just need that both are frozen. 23:57
particle the more of parrot we get implemented, the closer that is to happening
sometimes the implementation informs the design
or, using my method, the tests inform the design 23:58
bacek_ morning everyone...
particle when will you get this right, bacek_, it's almost evening here! :P 23:59
Tene EVENING
Limbic_Region localtime()
purl rumour has it localtime() is Y2K compliant, read the doco phule