»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:07 _jaldhar joined, silug joined 00:09 LoRe left 00:16 silug left 00:17 silug joined 00:35 alester joined 00:41 LoRe joined
whiteknight Any Rakudo folks around tonight? 00:41
00:46 kid51 joined
sorear whiteknight: define "Rakudo folk" 00:46
00:46 GinoMan joined
kid51 If I wish to follow *one* Perl 6 list via NNTP (and am coming from the Parrot angle), which should I follow: perl.perl6.compiler? 00:47
whiteknight it's a genre of folk music with Rakudo influences
sorear kid51: yes .compiler is the main one where Parrot is discussed 00:48
dalek ecza: 69fc81c | sorear++ | lib/ (2 files):
Simplify calling convention for NewBoundVar
00:50
ecza: 22c5703 | sorear++ | / (4 files):
Make , and => inlinable
01:16 ymasory joined 01:19 kanishka left 01:22 alester left 01:31 ascent_ left, ascent_ joined 01:37 kanishka joined
colomon jnthn: any idea why changing PERL6_EXE doesn't seem to actually change the name of the executable it tries to build? (for r-nom, I mean) 01:37
01:41 s1n left 01:43 kid51 left
dalek ecza: 187ee75 | sorear++ | / (3 files):
Deinline most of the subrule calling logic
01:45
01:49 Helios left 01:50 gbacon joined 01:52 ascent_ left 01:54 ascent_ joined 01:59 Helios joined 02:01 drbean joined 02:08 whiteknight left 02:09 yinyin joined
dalek ecza: 964c1a9 | sorear++ | src/NieczaCompiler.pm6:
Fix stage time display
02:18
02:23 Transformer joined 02:24 Transformer left 02:32 yinyin left 02:33 yinyin joined, yinyin left, yinyin joined 02:50 GinoMan left 02:58 silug left 03:10 molaf joined 03:13 gbacon left 03:25 [particle]1 joined 03:26 [particle] left 03:35 kanishka left 03:36 molaf left
ingy seen patch_ 03:39
aloha patch_ was last seen in #perl6 19 days 2 hours ago joining the channel.
03:54 wamba joined 04:20 daniel-s joined 04:25 mberends left 04:29 satyavvd joined, nymacro joined 04:30 mberends joined
dalek ecza: 85c5cf8 | sorear++ | lib/ (2 files):
Remove LoadSubInfo calls to a data-driven loop
04:32
ecza: bc071de | sorear++ | lib/ (3 files):
Avoid insanely calling Array.new/Hash.new during metaobject thaw
04:35 birdwindupbird joined 04:37 [particle]1 is now known as [particle] 04:38 daniel-s left 04:42 kanishka joined 05:03 wamba left 05:08 ymasory left 05:14 silug joined 05:26 mberends left 05:32 lue joined 05:33 kanishka left 05:44 koban joined 05:47 kanishka joined 05:52 wtw joined 06:04 jfried joined 06:07 fhelmberger joined 06:12 mtk left 06:20 mtk joined
dalek ecza: 82fa631 | sorear++ | lib/ (3 files):
Start bringing package storage into the data age, too
06:24
ecza: 0a14ada | sorear++ | lib/ (2 files):
.HOW is built using runtime methods
ecza: a6e2cfe | sorear++ | / (2 files):
Start to simplify method call code
06:37 mberends joined 06:38 amkrankruleuen left 06:39 amkrankruleuen joined 06:42 BinGOs left, silug left, BinGOs joined 06:44 wamba joined
dalek ecza: 15c1085 | sorear++ | lib/CLRBackend.cs:
Enable unrestricted reordering of function argument evaluation
06:45
06:47 amkrankruleuen left 06:48 amkrankruleuen joined 06:58 amkrankruleuen left 06:59 amkrankruleuen joined, wamba left
sorear waits for the public outcry to that last one. 07:00
07:01 kanishka left 07:02 wamba joined
jdhore1 moritz, Good news! 07:11
moritz, I have the perfect name for Rakudo 2011.06 07:12
07:13 koban left 07:16 wamba left 07:19 orafu left 07:23 amkrankruleuen left 07:24 mj41 joined 07:25 Mowah joined 07:28 wamba joined 07:29 amkrankruleuen joined
dalek ecza: 16e033d | sorear++ | lib/CLRBackend.cs:
Treat constant pool values as constant
07:37
ecza: aaa3bbe | sorear++ | / (2 files):
Fix backward logic, also implement handling of void context optimizations in regexes
ecza: 90e4727 | sorear++ | lib/CLRBackend.cs:
Mark RxFrame as reorderable
07:49 wamba left 08:05 amkrankruleuen left 08:06 amkrankruleuen joined
sorear out for tonight 08:07
std's down to 1.51 mb. maybe improvable
tadzik re the yesterday named-positional discussion, I think when a function takes 8 positional params, like mysql_real_connect or something, that means one should probably think about making it accept named params instead. So fix the odd cases instead of fixing the language 08:16
Just my 5 gr.
jdhore1 sorear, Just my 2p, but IMO size isn't the best thing in the world to optimize. Diskspace is cheap. 08:17
tadzik loadtime is not 08:20
jnthn mornin'
tadzik hey jnthn 08:21
jnthn <= at $dayjob
perigrin me too! 08:22
except my day job seems to be a night job
:/
08:22 beppu left, lue left 08:23 lue joined, Yappoko__ left 08:24 beppu joined, Yappoko__ joined 08:26 dakkar joined, xinming joined
mberends <= also @work, and with plenty idle time between presentations :) 08:26
08:28 SHODAN joined
mberends for parameter passing, I like the Microsoft SQL (Transact-SQL) style, which seems not too far from the pre-manifesto Perl 6 style. 08:28
08:28 amkrankruleuen left
mberends positional by default, optional aliases, and when mixed in a single call, positionals first until exhausted, then nameds. 08:29
08:29 fhelmberger_ joined
tadzik aliases? 08:31
mberends names
tadzik oh, names for positional?
08:31 fhelmberger left
tadzik ($foo, $bar is also-named<babar>), or something? 08:31
mberends yes, kinda. func($foo, :name($bar)) 08:32
08:34 amkrankruleuen joined
jdhore1 related question (somewhat): Are P6 std macros intended to be more like C macros or LISP macros? 08:35
mberends I believe less like C macros (not plain textual) 08:36
jdhore1 ah, not bad 08:37
I like C macros for their simplicity, but LISP macros can be relatively simple but INSANELY powerful
arnsholt_ IIRC they're supposed to be hygienic macros like in Scheme 08:39
mathw they're not at all like C ones 08:40
much more like lisp ones 08:41
definitely in the line of parse tree transformation/grammar extension rather than text expansion and substitution
jnthn Indeed. 08:42
mathw jnthn: but they don't work yet! Chop chop! :P 08:43
jnthn :P
moritz jdhore1: (re name for rakudo) does Douglas Adam's home town has a .pm group? :-) 08:46
jdhore1 moritz, Unfortunately, no, nor does where he died or was buried (Well they do, but it's been used), but i have one just as good 08:47
moritz, Bruxelles, Belgium 08:48
moritz jdhore1: why?
jdhore1 moritz, en.wikipedia.org/wiki/Life,_the_Uni...Censorship 08:49
moritz :-) 08:53
tadzik hehe
jdhore1 I love that Belgium is the most offensive word in the universe
er, the galaxy 08:54
perigrin "Another Mother Belgian Release" 08:59
mathw In all places except one. Where they don't know what it means. 09:00
I also liked the idea that the game of cricket is considered to be in incredibly poor taste by everybody else in the galaxy. 09:01
09:02 silug joined 09:03 donri left 09:09 MayDaniel joined 09:20 daniel-s joined 09:34 wamba joined 09:39 agentzh joined 09:44 xinming left 09:47 wamba left 10:11 MayDaniel left 10:18 amkrankruleuen left 10:22 amkrankruleuen joined 10:29 snearch joined 10:30 am0c left 10:35 amkrankruleuen left 10:44 wamba joined 10:46 daniel-s left, amkrankruleuen joined 10:49 wamba left 10:55 koban` joined 10:57 ab5tract joined 11:01 xinming joined 11:06 Patterner left 11:07 Psyche^ joined, Psyche^ is now known as Patterner 11:12 snearch left 11:28 pernatiy left 11:31 amkrankruleuen left 11:32 amkrankruleuen joined, satyavvd left 11:35 MayDaniel joined 11:38 silug left, ab5tract left 11:39 silug joined 11:40 amkrankruleuen left 11:41 MayDaniel left, amkrankruleuen joined 11:42 Mowah_ joined 11:45 bacek joined 11:50 s1n joined 12:01 agentzh left
moritz wonders if MARC (MAchine-Readable Cataloguing) is so general that it's impossible to get useful information out of it 12:11
12:18 kanishka joined
takadonet morning all 12:22
jnthn o/ takadonet
takadonet jnthn: how are you sir? 12:26
jnthn takadonet: A little behind on sleep, but otherwise fine, thanks. :) 12:27
And you?
12:30 yinyin left 12:32 bacek left 12:34 x3nU joined, x3nU left
takadonet busy as hell but great 12:36
12:38 silug left
colomon o/ 12:39
12:40 silug joined, JimmyZ joined
colomon re Belgium and Hitchhikers -- I really think that's an example where censorship actually made the book better. Most Gratuitous Use of the Word 'Belgium' in a Serious Screenplay is just plain funnier than the original, IMO. 12:42
12:45 bacek joined 12:52 Holy_Cow joined, Holy_Cow left 12:58 wknight8111 joined 13:10 c1sung joined 13:19 pernatiy joined 13:25 daniel-s joined 13:49 xinming left
colomon jnthn: tried fixing the directory / executable mixup last night. failed miserably. looks like it should be trivial, but it isn't, somehow 13:50
13:52 Zapelius left
moritz just call the executable .exe on macos too :-) 13:52
13:53 Zapelius joined 13:54 MayDaniel joined
colomon moritz: I tried renaming the executable to nom, and that didn't work. :( 13:55
moritz colomon: what failed?
colomon it still tried to build an executable named perl6 13:56
I set PERL6_EXE = nom$(EXE)
but it still did c++ -o perl6 "perl6.o" ...
moritz colomon: because PBC_TO_EXE is called with perl6.pbc 13:57
colomon hmmm... so try to make PERL6_PBC nom.pbc?
oooo, different error! 13:58
moritz or maybe pbc_to_exe has some option for the output file name
colomon looks like "nom" built, but now it's failing when it tries to do something
moritz compiling the setting?
colomon Method 'compose' not found for invocant of class 'SixModelObject' 13:59
I believe so
moritz that's what I get too
colomon yay! 14:00
consistent failures!
14:00 mtk left
colomon of course, probably renaming PBC and exe to "nom" is not a good general purpose solution... 14:00
moritz right 14:01
colomon I tried renaming the Perl6 directory, but apparently it is actually being used internal to the code, maybe as a module lookup path? 14:02
moritz it is 14:03
14:06 amkrankruleuen left 14:07 amkrankruleuen joined, koban` left 14:08 mtk joined 14:13 amkrankruleuen left
jnthn colomon: Yes, it's used in use statements. :) 14:13
colomon don't suppose it could be lib/Perl6 ? 14:14
jnthn Maybe.
14:14 amkrankruleuen joined
jnthn Can even hack it as use lib::Perl6::Grammar. ;) 14:15
14:15 wtw left
jnthn colomon, moritz: Where does the "can't compose" occur? In ClassHOW.compose? 14:15
colomon gist.github.com/991058 14:16
14:16 kanishka left
jnthn hm 14:16
ok, the failure makes sense apart from it doesn't make sense that I don't get it also :/
Will take a look this evening when I get home. 14:17
I should toss the PIR dumping too now things work a bit better :)
moritz jnthn: I cleaned out everything before rebuilding... maybe you'd get the same error if you did too :-) 14:19
jnthn moritz: That may well be the case. 14:20
moritz: Anyway, you're getting most of the way through the build, which is something. :) 14:21
moritz wants MOAR 14:25
colomon wants it all, and he wants it now. ;) 14:34
14:34 JimmyZ left
mathw yeah yeah 14:34
mathw hears the screaming guitar solo 14:35
jnthn So do the first line of the first task in nommap. It's mostly just a use of "can" on the current $*PACKAGE.HOW, like we do for add_attribute. :)
14:38 xinming joined
moritz nommap still reads like an awful lot to do 14:38
jnthn moritz: It *is* an awful lot to do. :P 14:40
14:43 hercynium joined
TimToady wondered briefly what you guys have against mmap :) 14:49
PerlJam TimToady: heh, I thought that too at first glance :) 14:50
14:51 alester joined, Sarten-X left
colomon mathw: Was listening to Brian May on my walk this morning. 14:51
mathw :)
14:52 alester left 14:53 alester joined 14:54 mtk left 14:55 daniel-s left 14:56 kaare_ joined 14:58 nymacro left 14:59 mtk joined
jnthn home & 15:00
15:02 Sarten-X joined, baest left, baest joined, SHODAN left
mberends indeed, train & 15:12
15:15 am0c joined 15:17 jfried left, MayDaniel left 15:21 ymasory joined 15:22 mberends left 15:26 JimmyZ joined
TimToady wonders if the types for codepoint strings should be NFC, NFD, etc... 15:32
15:33 _jaldhar left
JimmyZ NFG? 15:33
15:38 GinoMan joined
TimToady NFG is called "Str" 15:41
15:45 ymasory left
TimToady or maybe they're "native" enough to be called nfc and nfd 15:50
but should they share the buf nature as the utf8 buf does? hmm...
rakudo: say utf8("foo").WHAT 15:52
p6eval rakudo 369665: OUTPUT«Could not find sub &utf8␤ in main program body at line 22:/tmp/J8ESx2Dm9L␤»
TimToady std: utf8 utf8
p6eval std 4b1b100: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/pE_HZb75A4 line 1:␤------> utf8 ⏏utf8␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 113m␤»
jnthn home :)
TimToady std: say utf8("foo").WHAT 15:54
p6eval std 4b1b100: OUTPUT«ok 00:01 113m␤»
JimmyZ std: utf8 utf16
p6eval std 4b1b100: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/Ezmv2Vezh2 line 1:␤------> utf8 ⏏utf16␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 113m␤» 15:55
TimToady perl6: say utf8("foo").WHAT
p6eval rakudo 369665: OUTPUT«Could not find sub &utf8␤ in main program body at line 22:/tmp/pZnO4C3QNP␤»
..niecza v5-75-g90e4727: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'utf8' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 413 (CORE die @ 2)␤ at /home/p6eval/niecza/src/STD.pm6 line 1143 (STD P6.comp_unit @ 77)␤ at
../home/p6eval/niecza/src/…
..pugs: OUTPUT«*** No such subroutine: "&utf8"␤ at /tmp/eul55G1XWr line 1, column 5 - line 2, column 1␤»
TimToady tsk tsk
it's hard to advertise the advantages of Perl 6's string type system when everyone is still faking it... :) 15:56
we're just not faking it as hard as Perl 5 is faking it... 15:58
jnthn Maybe us implementors just like to fake it easy. :) 15:59
16:00 REPLeffect left
TimToady has an appropriate amount of pun 16:00
16:08 kaare_ left 16:09 kaare_ joined
jnthn tries to reproduce the issue moritz and colomon are seeing 16:10
16:14 REPLeffect joined 16:18 ymasory joined, thou joined 16:20 kjeldahl joined
jnthn ah, a make realclean did it. 16:23
tadzik yeah, same hier
jnthn I wonder how it ever coulda worked... 16:25
pmichaud good morning, #perl6 16:26
JimmyZ morning pmichaud
tadzik good morning pmichaud
pmichaud: is there a chance you could rpbench master vs. gsoc-podparser? 16:27
nothing important, just my curiosity 16:28
16:28 MayDaniel joined, gbacon joined 16:30 molaf joined
pmichaud tadzik: yes, I can 16:32
16:34 kaare_ left
pmichaud (faking string types) we don't yet have the level of control over the vm that perl 5 does. Sad, that. 16:34
jnthn pmichaud: Potential for our own representations. We has it. :) 16:35
(e.g. we probably do have change to do such things in a decent way once 6model is in...given resources to make it happen, of course) 16:36
16:38 MayDaniel left 16:39 ymasory left
sorear good * #perl6 16:41
16:41 birdwindupbird left
sorear jdhore1: size is an exactly measurable proxy for loadtime (I measure that too, but only to 1.5 sig figures) 16:41
pmichaud tadzik: how does gsoc-podparser differ from master at this point? i.e., what features should I be comparing? 16:43
oh, I can just do everything, I guess. 16:44
tadzik pmichaud: it passes more spectests than master (some todos), I'm curious whether an additional parser nodes slowed down anything
pmichaud yes, spectests seem like the most likely items
none of the other tests evaluate comments or the like 16:45
(most of the other tests don't contain pod or comments)
sorear bah, looks like I broke something... full testing run last night failed 16:46
TimToady: it would help if the spec weren't so handwavey :P
pmichaud in lots of cases, "handwavey" just means "left as an exercise to the reader" (where "reader" == "implementors and users") 16:48
16:49 jedai_ joined
TimToady overspecified is often more dangerous than underspecified 16:50
pmichaud that's fer shure
dalek kudo/nom: 29b8987 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Add missing attribute compose method, to fix build breakage noticed by colomon++ and moritz++.
tadzik hi hi 16:51
colomon mostly by moritz++
16:52 jedai left 16:54 wamba joined 16:56 silug left
colomon jnthn: git pull & make got me the exact same error. I'm supposing a make clean & make will probably work, but presumably the makefile is supposed to make that unnecessary here? 16:56
jnthn colomon: hmm, yes 16:57
colomon: I'm curious what in the makefile is causing that issue. :/
tadzik colomon: try realclean
16:57 awoodland joined
jnthn I realclean'd. 16:57
tadzik oh, nvm, misread
colomon nom 17:00
> say 4+5
Can only use get_who on a SixModelObject
Still, seems like build worked!
17:00 cdarroch joined, cdarroch left, cdarroch joined, ymasory joined
colomon (after make clean) 17:00
> 4+5 17:01
Class 'Int' not found
that sounds like a job for....
jnthn heh
It doesn't have say or operators or literals yet. :)
17:02 saaki left 17:03 saaki joined
jnthn And literals need doing very differently than now anyway. :) 17:05
tadzik so this will end up being "say 9"? :) 17:06
jnthn Not yet :P 17:07
I just mean that in while $i < 10000 { $i := $i + 1 } then that 1 shouldn't be created 10000 times. 17:08
tadzik :O
that's sir yous
pmichaud yes, I still want to update PAST with a way to say "cache the object created here" 17:09
17:09 dakkar left
sorear suprisingly, this, appears to be my first time using git bisec 17:10
tadzik oh, the PASTknowers
sorear pmichaud: if you think you understand stuff like 'use graphs' versus 'use codes'... you're welcome to enlighten me. 17:11
tadzik I'm looking for a way to produce a global constant which I could append stuff to (an array), it's supposed to be per-file, but for now, whatever works. Where do I start looking at?
pmichaud sorear: no, I don't understand it yet. (Haven't looked yet, since it's not been high on the "need to solve this" list.)
benabik Adding things to the constants table via PAST is on my possible TODO list for GSoC. 17:12
pmichaud benabik: for rakudo, they definitely need to be created lazily I think 17:13
benabik pmichaud: Well, shoot. 17:14
17:15 spinclad left
pmichaud I could be wrong about that. But we definitely don't want to increase our startup time with a bunch of constant generation whenever a program begins 17:15
17:15 spinclad joined
pmichaud and it's possible that some constants will be affected by the scope in which they're created (not sure about this part) 17:15
17:18 molaf left 17:20 jevin joined
benabik pmichaud: That kind of constant doesn't sound very constant. 17:20
17:20 JimmyZ left
pmichaud it's constant once the full details of the scope are known at runtime, I think. 17:21
benabik I will continue to lurk here. How NQP and Rakudo use PAST will very much influence where I focus my work towards the end of summer.
pmichaud the challenge is that at compile time it takes a *lot* of analysis to determine the full scope of things that could be affecting an expression or constant
so it's likely easier to simply say "cache the (constant) value after it's created the first time" 17:22
the hurdle I've run into thus far is figuring out how to store/name the constants 17:23
17:23 mj41 left
benabik I'm trying to get PAST->POST->PBC to be as expressive as possible, but adding a caching layer seems a little out of scope. 17:24
pmichaud oh, I don't think it's a layer
I think it's a decoration on a PAST node
benabik (For GSoC anyway. I imaging I'll be puttering around in PCT for a while afterwards.)
pmichaud i.e., marking a PAST node with a 'cached' flag means that the code for the node is executed once and the results stored (cached) somewhere and re-used if the node is executed again 17:25
17:26 ymasory left, JimmyZ joined, ymasory joined, Chillance joined, JimmyZ left
benabik pmichaud: I'm not quite sure how that would be implemented, but I'd be tempted to do it as a tree-transformation that lifts the cached 17:26
17:26 bacek left
benabik Trigger-happy enter key... 17:27
pmichaud so that way a Perl 6 constant like 3.45 turns into a runtime call to Rat.new(345,100) where the resulting Rat object gets stored in the cache. If we later execute the statement containing the 3.45 constant, then we simply look up the Rat we cached earlier instead of making another call to Rat.new 17:28
benabik pmichaud: ...nodes up to (say) the top of the sub and stores them in a register, converting the other usages to a register reference.
pmichaud benabik: you're thinking of something entirely different, then.
benabik: for rakudo, that will only help where the same constant is used multiple times in a sub
which I suspect isn't often.
benabik pmichaud: I was thinking of jnthn's example with the 1 in a loop... 17:29
pmichaud benabik: in that example, the 1 is local to the body of the while
and the body is a separate execution each time anyway
17:29 wallberg joined
pmichaud (the body is a separate Parrot sub) 17:29
benabik pmichaud: Ah. Well, then, you'd need to add a new runtime storage area which is why I was calling it a layer. 17:30
jnthn pmichaud: I think we can quite safely create Num/Int/Rat literals at compile time.
pmichaud: Then stick them in the serialization context. 17:31
pmichaud jnthn: only if we have a way to seria.... okay.
jnthn And accesses to them will just go through that.
pmichaud: Then they'll get cheap deserialization when I finish implemented that chunk of stuff.
*implementing
pmichaud I'm not familiar with serialization contexts yet, or how they're implemented
jnthn pmichaud: Mostly it's ground work. :)
pmichaud but I'm also thinking of expressions with constant operands 17:32
jnthn pmichaud: What we *do* have now is a _lot_ more stuff to hand at compile time.
pmichaud the "cached" flag can help a lot with expressions with constant operands, too.
jnthn I suspect the constant folding can be done in the compiler also. Of course, it has to use the operators as they're defined in the correct scope. 17:33
pmichaud jnthn: right, which is why I figure it's easier to do it as runtime. I think TimToady++ speculated the same last week.
irclog.perlgeek.de/parrot/2011-05-09#i_3698464 17:34
jnthn Well, we already have to invoke the trait mods as they're defined in the scope of the thing that consumes them.
And the optimzer's gonna have to know about the scope stuff is in, otherwise it's going to have a hard time inlining. 17:35
pmichaud I again point to TimToady's comments. I'm hesitant to go far beyond that, just yet.
jnthn pmichaud: "I tend to disapprove of constant collapsing done by an interpreter other than the one that would be used if the constants weren't collapsed" ==> yes but I'm suggesting using the exact same interpreter with the exact same operator body that we'd run at runtime. :) 17:36
pmichaud I'm not so sure how "exact same" it will actually be.
It's two separate invocations of the interpreter.
(one at compile time, one at run time) 17:37
jnthn Can't argue that it ain't, but I may be able to argue that the two separate invocations had better produce the same result when running the same code with the same inputs. ;) 17:38
Though it all depends on the environment being the same and so forth.
pmichaud sure... I'm not sure you always know that the inputs are the same.
exactly.
benabik jnthn: All the cool interpreters are non-deterministic.
pmichaud environment could be different, a module could've changed, etc.
"the more polymorphic your dispatch is, the less you can rely on anyone else to figure out which operator they should really be folded" 17:39
anyway, the code to "compute once and cache" is really trivial to implement
if I can just come up with a good way to associate a unique identifier with the cached value 17:40
I'm wondering if it's even worth an opcode :-)
something like a "find cached value and branch" that is based on the current program counter
jnthn pmichaud: Mebbe something like that. SCs have some opcodes 17:41
17:41 slavik1 left
jnthn Anyway, I've no plans on doing constant folding any time soon. Just building the constants once will be a big win. 17:41
pmichaud indeed.
jnthn Also, I've unified the compile time and runtime representation of signatures and parameters. 17:42
17:42 mberends joined
jnthn We have one now. Not three. :) 17:42
pmichaud the way it always should've been :-) 17:43
17:44 MayDaniel joined
jnthn Yeah but now I have an object system that lays stuff out as efficiently as a C struct. 17:44
So it can be done without OMG SLOW :)
At one point I thought I may end up using representations to hold internal data structures but expose them as objects. But when P6opaque can give me the memory layout that a C struct would anyway, no need. :) 17:45
17:47 pmurias joined
pmurias sorear: i see you have been working on .net level stuff in niecza what's the direction of those optimalisations? (better startup time?) 17:48
17:50 molaf joined
sorear pmurias: largely yes 17:52
pmichaud latest rpbench results for 2011.05: github.com/pmichaud/rpbench-results 17:55
still running a few more
TimToady well, of course, if your constants are not constant, you're just hosed, but we're trying to define immutability such that most constant folding can be done (by the run-time) in the compile phase. P5 constants are defined not to depend on anything that will change at run time.
otherwise they're not constant, they're just some kind of temporarily readonly at best 17:56
and that's why we try to define our operators as lexically scoped functions, not as late-bound methods 17:57
jnthn TimToady: Well, the bigger concern with folding 5 + 4 is not so much about the 5 and the 4, but about what the + does
TimToady is always infix:<+>, and the candidate list is static
jnthn TimToady: We can know what definition of + is in effect of course, but we can't be sure it won't do anything insane :)
TimToady: Unless we tell people "your + override had better be sane" ;) 17:58
benabik infix:<+>($a, $b) { $a + rand($b) }
TimToady don't claim to be purer than you are
that's all
jnthn TimToady: How can something claim purity?
Is there a trait for that? 17:59
:)
17:59 donri joined
TimToady perl6: sub foo ($a,$b) is pure { say $a + $b }; foo(40, 2); 17:59
p6eval pugs: OUTPUT«42␤»
..niecza v5-75-g90e4727: OUTPUT«===SORRY!===␤␤Sub trait pure not available at /tmp/hj1xpAibL9 line 1:␤------> sub foo ($a,$b) is pure { say $a + $b }⏏; foo(40, 2);␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 413 (CORE
..die @ 2)␤ at /…
..rakudo 369665: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any
..:rw($rw)…
TimToady pugs gets it right :) 18:00
jnthn :P
.oO( is impure )
pmichaud pugs: sub foo ($a,$b) is puer { say $a + $b }; foo(40, 2); # checking
p6eval pugs: OUTPUT«42␤»
pmichaud I can get rakudo to do the same. :-P
jnthn oh noes :P
pmichaud it's easy if you're allowed to ignore the traits that you don't know about yet :) 18:01
TimToady except I think pugs actually does something with "is pure"
jnthn nom break, then some hacking :)
18:01 pernatiy left
TimToady something to do with making Haskell happy... 18:01
pmichaud
.oO( "nom" is already broken, so get to hacking! )
jnthn :P :P
TimToady you speak with forked tongue :) 18:02
I guess that would be :K though
18:02 slavik1 joined
pmichaud maybe :« or :< 18:03
TimToady errands & 18:04
18:05 bluescreen10 joined, bluescreen10 left 18:06 fhelmberger_ left
pmichaud tadzik: benchmark comparison of gsoc-podparser vs rakudo-master: gist.github.com/991539 18:19
looks like no significant difference
18:21 araujo left, gbacon left 18:30 donri left
perigrin pmichaud: :< is just you with a mustache 18:38
TimToady: :K would really just be fork-emulation wouldn't it? It's not really a seperate process like ':P :P' is 18:39
18:40 araujo joined 18:43 yegor joined 18:46 yegor left 18:47 MayDaniel left 18:48 drbean left, drbean joined 18:49 drbean left
tadzik pmichaud: it's funny that it's faster. It's quite irrational 18:51
sorear 187ee75b is the first bad commit \o/
18:55 Mowah left 19:05 silug joined 19:08 starcoder is now known as Starcoder|Testin, Starcoder|Testin is now known as starcoder, [Coke] left 19:09 mberends left 19:10 [Coke] joined
jnthn tadzik: 0.6% difference is probably noise. 19:11
tadzik yeah
PerlJam s/probably //
19:17 mberends joined 19:18 drbean joined 19:20 awoodland left
pmichaud tadzik: the differences in timing aren't significant here 19:20
so yes, noise.
tadzik yeah
still, fun :)
pmichaud I think we can safely say that whatever changes you've made thus far don't make things significantly worse 19:21
tadzik that's the good news, yes
pmichaud but that's also probably because the test files don't contain a lot of pod in them
if you want to contribute some files containing a good amount of pod, that would be a good test
or we can start adding pod to the core/*.pm files 19:22
(although I'd hate for that to get much slower :-)
s/contribute some files/contribute some bench mark scripts/
19:26 pernatiy joined 19:27 IllvilJa left
pmichaud so, for the past couple of weeks I've been musing that we should go ahead and make a 2011.05 star release, because of the poor performance characteristics of 2011.04 . I haven't seen anyone give a +1 or -1 to the notion, though. Comments? 19:28
to see the difference in performance, look at the files in github.com/pmichaud/rpbench-results . Compare the results of 2011.04/3.3.0 versus 2011.05/3.4.0. 19:29
generally a 20% difference. 19:30
sorear -1 it would come out very close to and distract people from niecza v6 :D 19:31
pmichaud when does niecza v6 come out?
sorear last monday in may
pmichaud
.oO( besides, we might as well throw in the towel now... DNF was released )
sorear 30th
I'm almost entirely joking. 19:32
I know this isn't really a zero-sum game
pmichaud sure... I'm just trying to decide if I can do something to make it even more annoying :)
like, releasing it *on* the 30th. :-P
19:32 awoodland joined
pmichaud (no, I wouldn't do that intentionally, unless we agreed it was beneficial :-) 19:32
sorear hmm, Jun 22 will mark 1y since the first commit to the niecza repo 19:33
I should do something for that day
PerlJam pmichaud: +1, but only if you do it quick :) 19:35
pmichaud afk, kid pickup
PerlJam: I'm thinking (a) fix up zavolaj and (b) release
so, probably release tomorrow or fri
that way sorear can still have the memorial release :) 19:36
19:40 GinoMan left 19:44 wamba left
jnthn blogs.perl.org/users/jlloyd/2011/05...-life.html # nice :) 19:45
colomon rakudo: say ~("A0A" .. "A9A) 19:47
p6eval rakudo 369665: OUTPUT«===SORRY!===␤Confused at line 22, near "say ~(\"A0A"␤»
colomon rakudo: say ~("A0A" .. "A0R")
p6eval rakudo 369665: OUTPUT«A0A A0B A0C A0D A0E A0F A0G A0H A0I A0J A0K A0L A0M A0N A0O A0P A0Q A0R␤»
PerlJam (that guy)++
moritz \o/ built nom, I can haz it! 19:54
jnthn++
jnthn \o/ 19:56
PerlJam installs a panda 19:57
moritz ... and the empty program already compiles
pmichaud is the goal still to have nom running in time for june release?
jnthn pmichaud: It's an ambitious goal. :) 19:58
pmichaud okay, that answers my second question :)
(and my first :)
jnthn pmichaud: Depends what "running" means :)
pmichaud seems reasonable, at any rate
PerlJam jnthn: when will nom be the default? :) 19:59
pmichaud probably with approximately the same criteria we used for alpha->ng
jnthn PerlJam: When there's reasonable consensus that it's ready to be.
pmichaud maybe a little higher bar so we have less regression
jnthn pmichaud: Yeah. We ain't starting afresh with the grammar this time. :) 20:00
Which helps.
pmichaud well, we also have a more stable language spec. Well, we did until the S06 changes. :-P
jnthn That also. 20:01
pmichaud I'm also wondering when TimToady++ will change the spec to require nfg/nfd/whatever implementation in order to even be able to compile a p6 program. :-P
20:01 soapyj joined
sorear pmichaud: the spec already requires true LTM in order to be able to parse a p6 program :P 20:05
moritz thinks rakudo does pretty well with faked LTM for now 20:06
20:06 starcoder is now known as StarCoder, StarCoder is now known as starcoder 20:08 GinoMan joined
sorear S02-lexical-conventions/unicode.t:61 requires (faked?) NFG in the parser itself 20:08
20:08 wamba joined
sorear or we can modify <identifier> to allow 0 or more combining chars after each \w 20:09
20:09 starcoder2 is now known as FooBar, FooBar is now known as starcoder2
moritz like \X in Perl 5 20:10
20:11 silug left, silug joined
sorear \C looks eeevil 20:13
moritz it is. 20:14
very much so.
I think dmq called it the craziest feature of the re engine
20:16 Mowah_ left
sorear I should make a detaled study of the Perl5 regex engine sometime 20:20
moritz only if you have a good health insurance that covers psychological problems :-) 20:21
sorear "how bad could it be?" 20:25
moritz like, very
polymorphic opcodes for the Unicode/non-Unicode cases 20:26
20:26 kjeldahl left 20:28 wknight8111 left 20:31 kjeldahl joined
sorear moritz: how familiar are you with it? 20:31
20:36 snearch joined 20:40 noganex joined 20:41 mj41 joined 20:42 wamba left 20:43 wamba joined, noganex_ left 20:44 snearch left
moritz sorear: not really much 20:45
dalek kudo/nom: 3294338 | jnthn++ | src/Perl6/ (3 files):
Little refactor to parameter handling to make implementation easier. Default invocant parameter for method, recognize the : as an invocant separator.
kudo/nom: bfe8be2 | jnthn++ | src/Perl6/Actions.pm:
Complain if we're not in a package type that supports methods.
sorear has been spending most of this morning trying to track down a bug in the regex engine which manifests as miscompiling the stage2 parser and thus failing to compile stage3 20:51
moritz: where to start? 20:56
moritz sorear: whatching a few -Mre=debug traces gives a bit of a feeling for the regex engine 20:57
20:57 ymasory left
sorear mm 21:02
21:06 silug left
sorear wtf? pluggable regex engines? 21:06
21:06 silug joined 21:07 bacek joined, drbean left
moritz since 5.10 21:09
21:09 Pathin joined 21:11 Pathin left, molaf left, drbean joined, jlaire left 21:13 Pathin joined, jlaire joined 21:14 Pathin left 21:15 Pathin joined 21:17 wamba left, Pathin left
dalek ecza: 3fd815c | sorear++ | / (3 files):
Partial revert of low-ranking optimization that broke build
21:17
21:18 Pathin joined, Pathin left, Pathin joined
sorear I am rather baffled. that last commit should have had no effect whatsoever. 21:19
21:20 silug left, silug joined
sorear aha, one of my invariants was being violated and I didn't notice until now 21:31
21:33 silug left 21:34 donri joined 21:44 thou left 21:46 mtk left
dalek kudo/nom: 39fa18e | jnthn++ | / (7 files):
Get the Stash type stubbed in. Make sure packages get a Stash.
21:48
moritz jnthn: did you forget to git add Stashing.pm ? 21:53
dalek ecza: 5773d70 | sorear++ | / (3 files):
Fix the real problem - <?foo> should never have been marked as backtrack-into-able
sorear \o/
dalek kudo/nom: 1abf123 | jnthn++ | src/Perl6/Metamodel/Stashing.pm:
Oops, forgot to add new file; moritz++ for noticing.
21:54
21:55 mtk joined
colomon doh! 21:56
nom changes coming too fast! ;)
21:58 thou joined
jnthn :) 21:59
21:59 lichtkind joined
jnthn Not *that* fast. :) 21:59
sorear o/ lichtkind 22:05
lichtkind hai sorear 22:06
22:06 hercynium left
lichtkind howsitgoingmaäan? 22:06
sorear fīne? 22:07
tadzik oh, nice way to say that 22:08
dalek ecza: 5abbd5f | moritz++ | t/spectest.data:
one more passing smartmatch test file
22:09
moritz -> sleep
22:11 GinoMan left 22:13 mj41 left 22:17 am0c left 22:18 GinoMan joined 22:20 awoodland left
lichtkind moritz: good night 22:24
sorear: glad to hear
sorear I've been improving the niecza codegen lately 22:25
also now studying the p5 regex engine
22:26 daniel-s joined
dalek p: 05bf809 | jonathan++ | src/pmc/sixmodelobject.pmc:
Make get_iter overridable.
22:26
22:33 donri left 22:45 GinoMan left 22:47 GinoMan joined
sorear there are a few cases where niecza's regex engine acts very stupid 22:53
e.g. ("x" x 1_000_000) ~~ /^a/
tests all 10^6+1 possible locations to find the ^a combination 22:54
22:54 quietfanatic joined
sorear hi quietfanatic 22:55
dalek kudo/nom: 61b9be5 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Make get_iter available on Stash.
22:56
kudo/nom: dc580c1 | jnthn++ | src/Perl6/Actions.pm:
Packages (roles aside) should have immediate blocks.
kudo/nom: 92b8dc9 | jnthn++ | src/Perl6/ (2 files):
Support package-scoped classes (didn't do multi-part names yet, though).
kudo/nom: b3871fb | jnthn++ | / (2 files):
A cheaty EXPORTHOW for the setting, so we can actually write classes with methods in programs and compile them now.
quietfanatic hi sorear 22:57
sorear welcome
quietfanatic I notice niecza supports make() and .ast in regexes 22:58
while rakudo doesn't
sorear that's weird, I'm pretty sure rakudo *uses* make() and .ast
quietfanatic perl6: "abc" ~~ /abc {make 3}/; say $/.ast
p6eval niecza v5-78-g5abbd5f: OUTPUT«3␤»
..rakudo 369665: OUTPUT«Any()␤»
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** '<HANDLE>' trapped by operat…
quietfanatic I know, that's what I thought
but this is what happens.
jnthn It uses it in action methods. 22:59
pmichaud may know if it not working in regexes is bug or intention.
quietfanatic I also couldn't seem to get ast from Grammar.parse();
23:00 cdarroch left
sorear quietfanatic: the issue is probably with make, not .ast 23:00
calling make before the regex finishes matching is a bit of an odd case, and one that had to be specially supported in niecza 23:01
alpha: "abc" ~~ /abc {make 3}/; say $/.ast
p6eval alpha : OUTPUT«Confused at line 10, near "make 3}/; "␤in Main (file <unknown>, line <unknown>)␤»
quietfanatic hm. 23:02
sorear oh right alpha didn't have perl 6 regexes
quietfanatic I thought it was supposed to be called before the regex finished
23:02 alester left
sorear make is normally called from action methods 23:02
quietfanatic how else would I call it?
sorear which are called immediately after the regex finishes
quietfanatic Okay, I'll look into action methods 23:03
Can you direct me to some documentation?
I can't find it in S05 23:04
sorear .... neither can I 23:06
that's weird
quietfanatic Well, maybe I can figure it out from the Rakudo source 23:07
sorear S05-grammar/action-stubs.t maybe 23:08
jnthn quietfanatic: Or look at a module like JSON::Tiny which uses grammar and action methods.
sorear although it's a little out of date
quietfanatic mkay
thanks guys
sorear ah, you were here last year, I thought I remembered you 23:09
quietfanatic yep
I've been away from the p6 scene for a while
but occasionally I really want p6 grammers for something or other 23:10
dalek kudo/nom: c9335fc | jnthn++ | src/Perl6/SymbolTable.pm:
Remove some development/debugging output.
23:12
kudo/nom: 70fac05 | jnthn++ | NOMMAP.markdown:
Update nommap.
23:15 pmurias left 23:21 whiteknight joined
sorear quietfanatic: well then, welcome back 23:22
quietfanatic: what do you think of the last few months of changes here? 23:23
quietfanatic I haven't looked into the changes really yet 23:25
I'm still using Rakudo Star 2010-07
sorear you seem to have at least discovered the new compiler 23:26
quietfanatic niecza?
yeah, I've played around with it a few months back
back when it was new
How is it coming along?
sorear very well
quietfanatic ooh, good to hear 23:27
is it beating Rakudo in performance?
sorear the perl 5 components have all been rewritten in perl 6, it passes 1000+ spectests
quietfanatic neat
sorear yes
it's still lagging on startup time though
quietfanatic I'll have to fiddle around with it some more
jnthn sleep & 23:28
23:29 Chillance left
sorear the current dev version has probably regressed on math quite a bit due to arithmetic overloading 23:30
23:36 wisemansword joined
quietfanatic Any hope of moving that overloading from runtime to compile-time? 23:36
23:38 daniel-s left
quietfanatic Oh, I have one more rakudo bug to report 23:38
though it's probably been noticed already
rakudo: grammar A { rule x-y { abc }; rule z { <x-y> }; } 23:39
p6eval rakudo 369665: OUTPUT«===SORRY!===␤regex assertion not terminated by angle bracket at line 22, near "-y> }; }"␤»
quietfanatic It can't parse hyphens in rule names.
sorear std: /<x-y>/ 23:42
p6eval std 4b1b100: OUTPUT«ok 00:01 113m␤»
23:42 wisemansword left
sorear quietfanatic: (moving to compile-time) not without a lot of type annotations, and my personal opinion is that it wouldn't help much 23:43
optimizing the existing code would get me much more bang/buck
just haven't done it yet
quietfanatic ah 23:44
23:44 silug joined
sorear rakudo: my $i = 0; $i++ until $i == 50_000; 23:46
p6eval rakudo 369665: ( no output ) 23:47
sorear rakudo: my $i = 0; $i++ until $i == 100_000; say "alive"
p6eval rakudo 369665: OUTPUT«(timeout)»
sorear rakudo: my $i = 0; $i++ until $i == 75_000; say "alive"
p6eval rakudo 369665: OUTPUT«alive␤»
sorear niecza: my $i = 0; $i++ until $i == 1_000_000; say "alive"
p6eval niecza v5-78-g5abbd5f: OUTPUT«alive␤»
sorear niecza: my $i = 0; $i++ until $i == 10_000_000; say "alive" 23:48
p6eval niecza v5-78-g5abbd5f: OUTPUT«(timeout)»
sorear niecza: my $i = 0; $i++ until $i == 5_000_000; say "alive"
p6eval niecza v5-78-g5abbd5f: OUTPUT«alive␤»
sorear niecza: my $i = 0; $i++ until $i == 7_500_000; say "alive"
p6eval niecza v5-78-g5abbd5f: OUTPUT«(timeout)»
sorear rakudo: say 5_000_000 / 75_000 23:49
p6eval rakudo 369665: OUTPUT«66.6666666666667␤»
sorear there you go, quietfanatic
perlesque: my $i = 0; until $i == 10_000_000 { $i++ }; say("alive")
p6eval perlesque: OUTPUT«alive␤»
sorear perlesque: my $i = 0; until $i == 1_000_000_000 { $i++ }; say("alive")
p6eval perlesque: OUTPUT«alive␤»
sorear finishes perlreguts 23:50
23:54 lichtkind left
quietfanatic impressive. 23:58