»ö« | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 25 June 2010.
00:00 Psyche^ joined 00:05 Psyche^ is now known as Patterner, tylercurtis left, lest_away is now known as lestrrat 00:07 daemon joined
sorear interesting that Pm no longer uses feathe 00:11
Tene How is that interesting? 00:12
sorear it means people don't tend to trust feather anymore 00:13
the person who theoretically is supposed to be available to manage feather, uses it for IRC 00:14
so I can't even use proper channels to complain
Tene I don't know that one person choosing to use something else for his personal IRC needs is necessarily representative of a sea change in general attitudes. 00:15
Juerd using IRC on feather is a problem, however.
sorear TimToady: What's the right way to handle Any.WHICH in a compacting environment? 00:18
TimToady compacting? 00:20
are you asking for a small serializable repr for type objects?
sorear no 00:21
I mean that Mono is allowed to move objects at any time for any reason
so an (address space, address) pair is unsuitable 00:22
TimToady then (symbol-generator-space, symbol) will have to do, I imagine
or (unlikely-to-collide-type-space, unique-derivable-value) 00:23
which is the spirit of the ObjAt type, even if "at" is meaningless 00:24
even a sufficiently large, sufficiently random number is usually good enough for an identity 00:25
pmichaud_ I still use feather -- my connection to feather died. 00:26
in the middle of the conversation.
so I had to connect with a different client.
(my connection to feather is still dead) 00:27
TimToady pugs repo is timing out 00:28
jnthn pmichaud_: Just discovered that some nqp tests use a plan/ok and others don't. :-)
pmichaud_: Also, I have 05-comments.t failing with parrot-nqp
pmichaud_: Do you get that also?
(thought something was screwed up in the cross-compiler, then found I got it on Parrot NQP too...) 00:29
TimToady sorear: of course, value types are immutable and don't care if they get moved, since their .WHICH is their value 00:30
does Mono not provide any sort of object identity?
wolverian I wonder why perl5(.12.1) make test says "Failed 1 test out of 1695", and a few lines later "scripts=1695 tests=350092" 00:31
00:31 cotto_work joined, ruoso joined
wolverian for a moment I thought I was missing a lot of tests. :) 00:31
sorear TimToady: it provides a reference equality operator and a reference -> int32 hash code function 00:32
TimToady hmm, 32 bits seems a bit skimpy 00:33
sorear you think hash tables with >4G buckets are going to be important soon?
oh, you mean for WHICH.Numeric 00:34
TimToady no, but if there's some chance of collision, and .WHICH is used to distinguish objects that fall in the same bucket, you're somewhat at the mercy of the hash algorithm
don't care about numeric, only unique 00:35
00:35 fod left
TimToady or unique enough 00:36
and performance, if you use a symbol generator, it's a multi-thread bottleneck 00:37
in such a case, random numbers may be more performant
assuming enough available multi-threaded entropy, of course
sorear is $a.WHICH === $b.WHICH allowed to ever return True for distinct objects? 00:38
TimToady well, I suppose per-thread symbol generators would work
sorear if not, then I think the sane thing to do is to use lazy symbol generation 00:39
the first time WHICH is called on an object, create an ObjAt object and bind it to the object
perhaps using weak references so that the ObjAt can be collected
TimToady do weak refs have some kind of internal identity? maybe make a weak ref from obj to itself. :) 00:41
sorear simultaneously, and unrelately, I'm asking #mono how to implement WHERE (integer memory address, you are at the mercy of the GC) and getting the classic "why would you possibly want to do that"
pmichaud_ jnthn: 05-comments.t passes for me, last I checked. 00:42
pmichaud_ checks.
sorear to which I realize... I don't know
pmichaud_ yes, it passes for me.
jnthn pmichaud_: OK, I'll try and fathom what's going on. 00:43
pmichaud_: Thanks.
pmichaud_ is feather still up? I seem to be unable to reach it from here.
TimToady can't see it from here 00:44
pmichaud_ twitter.com/TimToady/status/21444365173 # I could never get along with this guy :-) 00:46
jnthn ;-) 00:47
00:48 plobsing joined
pmichaud_ just converting Nil to be undefined is having some interesting implications for the code :) 00:49
nothing serious yet, but definitely interesting.
00:49 drbean joined
sorear is vaguely bothered by the current definition of Nil 00:50
TimToady: Weak references have no more identity than any other object, sadly 00:51
TimToady it's always a bit hard to define something negative as something positive...
sorear TimToady: How are .WHICH values compared?
TimToady eqv or ===, shouldn't matter, since .WHICH is always supposed to return a value type
sorear How is === defined? 00:52
TimToady $a.WHICH === $b.WHICH :)
or eqv
one can see either eqv or === as the more primitive notion... 00:53
sorear 1 === 1 -> 1.WHICH === 1.WHICH -> 1 === 1 -> ...
TimToady hence the smiley
sorear How does eqv interact with user-defined types? 00:54
TimToady I tend to think of eqv as more primitive, at least here
eqv is defined in terms of "would these objects canonicalize to the same serialization", assuming a sufficiently smart canonicalizer that, say, hashes don't have to be stored in exactly the same order to be eqv 00:56
of course, a really stupid way to implement eqv would be to serialize both halves and then use eq
you're like to do it piecemeal such that it will falsify rapidly without all that work 00:57
chances are this gets somewhat incestuous with the responder interface for the actual repr 00:58
sorear it also needs to work with stuff that can't be serialized, like ObjAt in some environments...
TimToady eqv is snapshot equivalence; two objects that are eqv right now might not be in the future
sorear what is the point of WHERE? 00:59
TimToady no much, just spec the api if it is ever wanted
*not much
in any case, probably relatively meaningless under NUMA (or compacting GC) 01:00
=== is not snapshot equivalence, but comparing the "essence" of an object that determines its eternal identity
jnthn ...and before I stay up eternally...goodnight o/ :-)
TimToady \o
so unless you want identity theft, it's better if .WHICH values don't collide accidentally 01:01
non-serializability of ObjAt is not a problem insofar as the .WHICH of such an object does not participate in eqv 01:03
since the main point of eqv is to be able to compare objects with different identities 01:04
01:08 dalek joined 01:09 ChanServ sets mode: +v dalek
TimToady ohh, featheration 01:10
dalek ecza: b4ad6c2 | sorear++ | /:
Resolve lexicals as a separate pass before to_anf
ecza: a6dcd31 | sorear++ | /:
Add a storage class for ro names like classes
ecza: 2fa3d4e | sorear++ | /:
Handle type objects as true-readonlies

  -36K testsuite (and 13s -> 9s)
ecza: c766146 | sorear++ | /:
Handle named subs as readonlies

  -20K testsuite
01:10 pmichaud joined, dukeleto joined 01:11 PerlJam joined, Util joined 01:12 dalek left, chromatic left, dalek joined, ChanServ sets mode: +v dalek, Infinoid joined 01:13 pmichaud_ left, pugssvn joined, ChanServ sets mode: +v pugssvn 01:15 redicaps joined, Juerd joined
pugssvn r32028 | lwall++ | [STD] add clone as reasonable method to use .= on 01:19
01:35 _madmax_ joined 01:39 ShaneC joined 01:47 ash_ joined 01:52 whiteknight left 01:53 drbean left 01:56 justatheory joined 01:59 justatheory left, justatheory joined 02:00 drbean joined 02:01 Italian_Plumber left 02:09 ShaneC left
dalek p-rx: a528b79 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to 2.7.0 release.
02:09
02:10 alc joined
dalek kudo: 67778a6 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to Parrot 2.7.0 release, freeze until Rakudo release.
02:11
rcfox I'm having some trouble with a grammar. 02:12
gist.github.com/533111
I'm trying to parse sentences based on the lexical categories of the words. 02:13
Some words might be a noun in some case, or a verb in other cases, etc.
sorear you're aware rules don't backtrack, right?
rcfox :\
I am not.
How does STD work then? 02:14
sorear when you say rule you are giving an explicit instruction to turn off backtracking
the basic form is "regex"
rcfox Oh.
I thought they were the same thing. 02:15
And that fixed it. 02:16
Thanks!
Hm, so pinging Wordnet for every word that I haven't recorded a lexical category for seems to be a bad idea. 02:31
It works, but it's very slow. 02:32
sorear perl6: my %a = (x => 2); my %b = (x => 5); sub foo(:$x) { say $x }; foo(|%a, |%b);
p6eval pugs: OUTPUT«*** No compatible multi variant found: "&foo"␤ at /tmp/joV6FWb8zg line 1, column 62-75␤»
..rakudo 037f68: OUTPUT«5␤»
02:33 alc left 02:34 drbean left 02:40 alc joined 02:44 Eevee joined
dalek p-rx: 8b38129 | pmichaud++ | src/ (4 files):
Refactor cursor_debug output a bit to allow some simple profiling.
02:55
02:57 lestrrat is now known as lest_away 02:58 japhb joined
rcfox In case anyone's interested, here's my English parser: github.com/rcfox/Perl-6-English-Parser 02:58
02:59 tylercurtis joined
nperez rcfox, how successful is it? 03:02
If I split an infinitive will it gripe? :)
rcfox nperez: I haven't thrown a whole lot at it yet.
github.com/rcfox/Perl-6-English-Par...1-basics.t
nperez How does it handle unknown words? can it infer from context what part of speech it is? 03:03
rcfox nperez: It looks up unknown words on WordNet. :D
nperez fancy
rcfox But it does figure out which version of the words to use based on context though.
ie: 'dog' can be a noun or a verb.
03:04 Holy_Cow joined
nperez that's slick 03:04
rcfox The problem with looking up the words on WordNet is that it's really slow.
03:04 Holy_Cow left 03:05 molaf joined
nperez Maybe cache a database? 03:05
rcfox Yeah, I'm planning to do that.
sorear I can't help but think Perl6 grammars are the wrong tool for the job 03:06
rcfox I just finished a linguistics course, and we learned so BNF for sentence structure. (Of course, we didn't call it BNF, but it looks very much like it.) 03:09
I don't expect to parse every conceivable sentence with it. It's just a toy. :P
03:10 drbean joined
ingy rcfox: have a look at pegex 03:11
sorear have a look at marpa too ;)
ingy super fast adaptation of p6r for other langs
rcfox "MARPA is the non-profit trade association that represents the Parts Manufacturer Approval (PMA) community." 03:12
ingy yeah, what's marpa?
sorear #10 03:13
search.cpan.org/dist/Marpa/
ingy i wonder if marpa has a test suite I can borrow... 03:15
03:15 jhuni left
rcfox I've used this before: search.cpan.org/perldoc?Parse::Yapp 03:16
03:28 leprevost joined 03:34 estrabd joined 03:47 lest_away is now known as lestrrat 03:52 molaf left
dalek ecza: 1ad3b55 | sorear++ | / (3 files):
Binder support for named parameters
03:59
ecza: a5cebf1 | sorear++ | Niecza/Actions.pm:
Implement parsing of named parameters
ecza: 055d9ad | sorear++ | / (3 files):
Codegen support for named and flat arguments
sorear Infinoid++ 2 second response time, wow
04:03 agentzh joined 04:04 am0c joined 04:06 am0c left 04:07 jhuni joined 04:08 rgrau__ joined 04:24 am0c joined 04:47 alc left 05:08 drbean left 05:18 alc joined 05:19 drbean joined 05:26 lue joined 05:28 Guest23195 joined
dalek ecza: 5eb127a | sorear++ | / (4 files):
Implement named arguments
05:38
rcfox Does longest-token matching work? 05:39
In Rakudo, that is.
sorear No. 05:41
05:46 justatheory left
sorear Could somebody with a Win32 Perl 5 install run q< use Data::Dumper; print Dumper(\%INC) > for me and tell me the key and value path syntaxes? 05:50
For the purposes of STD's orientation code
05:53 wtw joined
sorear in particular, I think that $INC{'STD/CursorBase.pm'} will always return a native path 05:54
05:59 jhuni left 06:00 Italian_Plumber joined 06:03 Italian_Plumber left
pugssvn r32029 | sorear++ | [CursorBase] Find uniprops more robustly 06:09
r32029 | No longer depends on $PERL6LIB or any other environment variable; simply
r32029 | relies on the file being alongside an uninstalled CursorBase.pmc or in
r32029 | the File::ShareDir otherwise.
06:23 uniejo joined 06:37 am0c left 06:39 jfried joined 06:41 masak joined
masak oh hai, #perl6! 06:41
rakudo: subset Foo of Mu where Str | Int; my $foo = Foo.new; say $foo.WHAT 06:42
p6eval rakudo 67778a: OUTPUT«Mu()␤»
moritz_ good morning 06:43
tylercurtis rakudo: subset Foo of Mu where Str | Int; my Foo $foo .= new; say $foo.WHAT 06:44
p6eval rakudo 67778a: OUTPUT«Type check failed for assignment␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/n1KWJoIu36␤»
masak tylercurtis: aye, that's part of the problem. 06:45
tylercurtis: or at least a symptom. 06:46
I don't think subset types should be instantiable.
jnthn: I'd argue that one can't actually polish things 'shiniLY'. that's one reason we have both adjectives and adverbs. :P 06:51
sorear hi masak! 06:52
masak o/ 06:53
sorear TimToady: what considerations do I need to consider when redoing syml/ ?
06:53 simcop2387 joined
masak invests two more hours on studying 06:54
sorear TimToady: I'm trying to come up with a better way to manage the caches, that's usable from installed code
07:01 plobsing left 07:05 Tene joined
tylercurtis is also opposed to subset types being instantiable. 07:06
Good night, #perl6. 07:07
sorear good night
The main choices I see are:
07:07 tylercurtis left
sorear * .syml files live alongside .pm files 07:07
07:07 drbean left
sorear * There is one syml database in each @*PERL6LIB root 07:07
* There is one global syml database which STD can find (perhaps in $HOME/.perl6/std) 07:08
07:08 foodoo joined
TiMBuS code.google.com/p/gerrit/ has anyone seen or tried this? 07:16
a few people are migrating to it from github because it works better than pull requests 07:18
07:19 _madmax_ left 07:24 [particle] left 07:26 [particle] joined 07:27 nadim_ joined
nadim_ moring, is there a method (by which I mean an URL with an example) that shows how to globally override .perl? 07:31
I, and I guess other Dat::Dump* authors, want to port a dumper module to p6 07:33
Tene nadim_: Please don't do that. 07:34
rcfox perlcabal.org/syn/S12.html#Open_vs_...ed_Classes
Tene nadim_: You really don't want to do that. .perl already has a meaning. If you want to write a dumper, just write a function. 07:35
There's no need to take your dumping function and stomp all over other classes.
nadim_ Tene: please is polite and nice but not a reason. and yes there are reasons
Tene erm, what? What are your reasons? 07:36
moritz_ you can't globally override methods, because they are defined in many different places
nadim_ Tene: I'd ask what's the reason not to do it then 07:37
moritz_: this is going to send us back to the time where we couldn't override some core function in p5. bad!
Tene nadim_: because .perl already means something. If you're wanting to do something else, call it something else. 07:38
nadim_ Tene: and thats a very bad reason because you think that the meaning would be changed. Did I ever say that I wanted .perl to print the weather in London? 07:39
Tene nadim_: Why do you want to take away existing behavior to add your own behavior?
mathw Good morning 07:40
nadim_ morning
Tene You want to write a serialization library, and you also want to forcibly mutate all other existing uses of the standard serialization library in other code that might happen to be included or called from any other libraries you might use? 07:41
nadim_ Tene: there are many dumpers available in p5, whatever they do, and that's something we probably want to do in p6 too, is something deemed good by the person using the module.
Tene I don't see how those two are tied together at all?
nadim_ Tene: that was a valid example or it could be that I want the format to be different
Tene nadim_: You can certainly reimplement any of the dumpers from Perl 5. Nothing at all is stopping you from writing a library that exports a function called "Dumper", just like Data::Dumper, for example. 07:42
nadim_ I'd rather still have enough rope to shoot myself in p6. even a little bit more rope
Tene You do not need to stomp on all uses of .perl just to write a function that serializes.
nadim_ the difference is that when a module I don't have contol over uses .perl, I can't force the module author to use another dumper 07:43
in anycase, this is more about the possibility to override core functionality (as much as possible) 07:44
I'd be hard pressed to find a single p5 dev that never wanted to override print
I'd rather see an universal, clean, method than a proliferation of hacks 07:46
Tene nadim_: to poke into another otherwise-closed class, you first have to use MONKEY_TYPING; 07:47
rcfox nadim_: Every class implements .perl. You're free to override all of them, but it won't be very much fun.
Tene Well, if you're going to use augment, which I don't think you are. 07:48
nadim_ we've got a grammar that is hackable, right?
Tene rakudo: Array.WHAT.^methods.perl.say
p6eval rakudo 67778a: OUTPUT«[{ ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ...
..}, { …
Tene rakudo: Array.WHAT.^methods.join(', ').say 07:49
p6eval rakudo 67778a: OUTPUT«perl, delete, at_pos, splice, new, Bool, pop, rotate, Num, perl, Capture, of, elems, Str, munch, list, shift, map, exists, push, unshift, batch, ACCEPTS, hash, eager, at_pos, fmt, flat, sort, new, iterator, Int, list, elems, fmt, item, Num, Str, asin, split, match, exp, cosh,
..acosh…
Tene Oh, that's not helpful. :P
rakudo: Array.WHAT.^methods(:local).join(', ').say
p6eval rakudo 67778a: OUTPUT«at_pos, splice, new, perl, delete␤»
Tene Also not helpful.
mathw nadim_: .perl is supposed to produce something which, if fed back to the compiler, reproduces the original value. Overriding it to do something else would be immensely confusing. Better to add another method that serialises how you want to, surely.
sorear nadim_: .perl is not a generic dumper, it is an anti-eval 07:50
Tene mathw: there are multiple formattings that could produce the original value.
sorear nadim_: eval $x.perl === $x
mathw Tene: as long as it does, does it matter which exact one it is?
Tene mathw: not as far as I can tell from the specs.
sorear nadim_: if you want to break Perl, you certainly can; augment class Mu { method perl() { ... } } 07:51
but I *strongly* recommend using a different name
.perl is taken
you wouldn't call a new arithmetic operator +
Tene Sure, but that's declarative. If you're going to walk over a bunch of classes, that's less-appropriate. I'm not sure of what the actual meta-model calls are, though. 07:52
nadim_ I think you have to factor in what context dumpers are used in, inclusive .perl. There are, probably many, times where the result of .perl is supposed to be re-evaluated at later times but many dump data because they are debugging. That a very valid use case and if there are so many different dumpers on cpan its because there is a need for them
so maybe it is breaking things up but in that context things are already broken and the facility of changing the default dumper is useful 07:53
and temporary
sorear: its nto a new operator + I'd need but an enhanced one 07:54
rcfox Dude. 1) What you want would require a significant redesign for little gain. 2) Why can't you do that with a Dump() function? Why are you so set on using .perl?
Tene If you *really* want it in the method 'perl', I'd suggest adding multi variants to the method.
augment class Mu { multi method perl(:$lang! where { $lang eq 'json' }) { ... } } 07:55
sorear it's not our business to stop newbies from hanging themselves
nadim_ Tene: I have nothing agains using a function. I just want to know how I can override .perl would it be necessary
Tene Then call .perl(:lang<json>)
sorear nadim_: I already told you.
rcfox nadim_: perlcabal.org/syn/S12.html#Open_vs_...ed_Classes
sorear Tene: that's spelled .json
Tene sorear: I mostly agree. There's something ot be said for the paralell to eval(..., :lang<json>) though 07:56
sorear eval doesn't have the word "perl" in it
rcfox .perl *means* give me Perl code for this. 07:57
sorear .deparse(:lang<json>) I could go along with
Tene sorear: Sure. Like I said, I agree.
Huh. No instances of 'add_method' in the specs. 07:58
07:59 lestrrat is now known as lest_away
nadim_ Then .perl should be sold as an universal dumper! But it doesn't matter. I'm sorry guys but there's too much Java mentality going on. If someoe wants to break perl (temporarely or not) by overriding something, so be it. 07:59
sorear nadim_: If you don't want to read the example I gave, that's your problem.
Not ours.
Tene nadim_: We're just making sure you understand what you're breaking, exactly. :)
nadim_ The one thing that defines our community is that we don't want someone to hold your hand all the time.
rcfox nadim_: Listen! 08:00
Tene nadim_: We've answered your question more than once, I thought? What is still unanswered?
rcfox We're telling you you can break Perl.
08:00 [particle] left 08:01 alc left
moritz_ btw I don't see why a dumper needs to be a method 08:02
08:02 [particle] joined
moritz_ you can do the same with multi subs equally fine 08:02
08:02 jhuni joined
sorear moritz_: You must have missed this: 02:43 < nadim_> the difference is that when a module I don't have contol over uses .perl, I can't force the module author to use another dumper 08:02
08:02 mmmpork joined
moritz_ and have the benefit of not needing to introduce methods to everybody's objects, just in the namespace you import into 08:03
08:03 alc joined
moritz_ you can't either way 08:03
nadim_ and that most of the time dumper are just temporarly used for debugging purpose not breaking perl
sorear nadim_: I apologize for the popular reaction here; I for one beleive rope is a great thing to share
08:03 Grrrr joined, drbean joined
nadim_ no problems, it's just a discussion 08:04
sorear Who should I talk to before adding .pretty to the spec a la recentish Haskell threads?
nadim_ you got used to .perl meaning something and got the impression I wanted it to be something else 8all the time). 08:05
moritz_ sorear: just do it. pmichaud and I are your side.
sorear Heh. S29:798 is completely wrong 08:07
moritz_ not surprising for S29
sorear it calls .perl the replacement for perl5 CORE::dump
nadim_ hehe! 08:08
Tene heh
moritz_ std: my $1
p6eval std 32029: OUTPUT«===SORRY!===␤Can't declare a numeric variable at /tmp/vYcoWRBLB2 line 1:␤------> my $1⏏<EOL>␤Parse failed␤FAILED 00:01 112m␤»
08:09 thebird joined, Grrrr left
pugssvn r32030 | sorear++ | [S29] An entry for CORE::dump's *actual* purpose 08:11
nadim_ anyone having a link to the haskell/pretty discussion (was it here or via mail?) I can't seem to find it. 08:13
moritz_ we had a discussion in here some days ago, in the context of dumping match objects 08:14
08:15 Grrrr joined
sorear nadim_: it was on one of the haskell lists, long ago 08:17
2-3 years
not a perl6 forum
nadim_ ah, a few days ago or 2-3 years ago?
sorear not less than 6mo
not more than 4y
moritz_ turns out we were talking about different things :-)
sorear Haskell has a deparser interface, Show 08:18
a big discussion of overriding like this one, eventually came to the conclusion that having a single method for serialization and pretty printing was a tragic mistake
nadim_ I agree
mathw Show is mostly useful for debugging 08:19
I always thought
08:19 ash_ left
Tene sorear: Just commit a spec change, IMO 08:20
nadim_ although sometimes you want to override the serialization for debugging purpose.
08:22 jferrero joined 08:27 uniejo left
pugssvn r32031 | sorear++ | [S02] Split .pretty's role off from .perl, includes a lot of conjectural ideas for .pretty functionality 08:28
08:29 uniejo joined, azawawi joined
azawawi hi 08:29
phenny azawawi: 17 Aug 19:34Z <sorear> tell azawawi make dist should probably be retired
08:34 _madmax_ joined
sorear azawawi: would you complain if I pulled out make dist entirely? 08:38
azawawi sorear: no problem if you provide me with an alternative :) 08:39
sorear azawawi: search.cpan.org/~pmurias/STD-0.05/ 08:40
azawawi sorear: will see it. thx 08:41
azawawi tests it
08:42 dakkar joined, autin joined 08:43 drbean_ joined 08:45 ash_ joined
nadim_ rakudo: class A {} class B is A {} say A.perl 08:46
p6eval rakudo 67778a: OUTPUT«===SORRY!===␤Confused at line 22, near "class A {}"␤»
nadim_ rakudo: class A {}; class B is A {}; say A.perl;
p6eval rakudo 67778a: OUTPUT«A␤»
nadim_ yup we definitely need a .pretty or .show 08:47
sorear mm?
you wanted to see more?
nadim_ yes, I am reading about the introspection in S12 08:48
but I need to see more without typing too much code (keepin mind that this would be a typical debug session)
azawawi sorear: STD works perfectly even on win32. I will re-use it. Thanks (pmurias++). 08:49
pugssvn r32032 | sorear++ | [STDeco] Simplify build again, removing quite a few outdated optimizations 08:51
nadim_ sorear: I wonder if information about where roles are coming from are kept somewhere. That is an interresting information piece. 08:52
08:56 azawawi left
pugssvn r32033 | sorear++ | [STDeco] Retire make dist and associated Makefile complexity - Dist::Zilla::Plugin::STD does the same job better 09:06
sorear moritz_: what command does 'std: ' use? 09:08
moritz_ github.com/moritz/Mu/blob/master/mi...ot.pl#L188 09:09
tryfile
sorear in a snap?
moritz_ in a snap 09:10
sorear I see
moritz_ should put all the build scripts into svn
09:15 drbean_ left 09:20 kiffin joined, drbean left
pugssvn r32034 | sorear++ | [STDeco] Move rarely used tools to a subdirectory and kick vill out of src/perl6 entirely. 09:21
moritz_ sorear++ # kennel cleaning 09:22
09:22 ruoso left
pugssvn r32035 | moritz++ | [bench] ignore sql data file 09:25
r32036 | moritz++ | remove outdated build script
r32037 | sorear++ | [STDeco] Fix snap & snaptest for new build 09:26
r32038 | moritz++ | [lib] remove more pugs fossiles 09:29
09:31 Infinoid left 09:36 justatheory joined
pugssvn r32039 | moritz++ | [utils] update URL in IRC log fetcher 09:37
r32040 | moritz++ | [util] remove more outdated tools
09:40 hexagon06 joined
pugssvn r32041 | sorear++ | [STDeco] Don't rely on the ability to pass environment variables down from make (diakopter says this doesn't work on Strawberry's dmake.exe) 09:42
09:42 hexagon06 left 09:43 M_o_C joined
pugssvn r32042 | moritz++ | remove empty dirs and parrot_pge_tests, which are maintained elsewhere 09:46
sorear moritz_: Think we could conspire to free Mu from the shackles of svn.pugscode.org? 09:50
std: 2 + 2
p6eval std 32032: OUTPUT«ok 00:01 114m␤»
moritz_ sorear: I'd love to
daxim hopefully, then, with a git conversion worthy the praise of nothingmuch 09:51
moritz_ since the pugs repo has no branches, that's easy 09:52
github.com/moritz/Mu/ # that's the current git mirror 09:53
daxim you can say it's easy once you've collection the identities of the committers ;)
09:53 redicaps left
moritz_ daxim: commitbit.pugscode.org/admin/project/Pugs/people 09:53
a nick name and email address for every committer 09:54
daxim I can't login there, but if you have the data, that's splendid
moritz_ daxim: you don't have a commit bit? 09:55
same login as pugs svn
daxim ah ah
. o O (what was the damn password)
moritz_ just grep for pugs in .subversion/auth/ 09:56
or I can re-send you the password, if you want
anyway, that data comes from an sqlite3 database, to which I also have access
daxim that helped moritz_++
anyway, see conferences.yapceurope.org/gpw2010/talk/2544 09:57
moritz_ daxim: I didn't attend that talk 09:58
daxim then follow the outline from padre.perlide.org/trac/wiki/GitMigration
moritz_ and I don't see a link to slides or to a video
09:58 autin left 10:00 meppl joined 10:01 Italian_Plumber joined
moritz_ anyway, there are other questions that need to be answered first 10:01
like, if we want to split the repo or not
how to handle handing out commit bits
daxim split: yes, it didn't really make sense for svn either, but convenience trumped sanity. with git, you can't argue for one massive repo anymore 10:02
give bits to trusted people, anyone else can send pull requests first to establish trust 10:03
moritz_ well, you can still argue for a massive repo
because some of the projects in the pugs repo rely on the spectests being in the same repo 10:04
and they would need to have an alternative way of obtaining it first
masak traditionally, the wonderful thing about the Pugs repo was the liberal handing-out of commitbits. but maybe that time is past.
moritz_ I don't see why it should. 10:05
10:05 Grrrr left
daxim svn's model made that necessary, with git people can publish their changes without approval 10:05
moritz_ daxim: and risk fragmentation 10:06
masak daxim: it's not so much about git/svn as I see it. it's about a direct route to the actual repo.
moritz_ anyway, I don't see drawbacks of liberal commit bit policies, even for DCVS
daxim the linux kernel is doomed, then. shub-internet help us
moritz_ daxim: don't troll. There's a huge difference between the pugs repo and the linux kernel 10:07
masak daxim: I'm not really sure why you're arguing against a model that's worked well for five years.
moritz_ for example that there are several people working basically full time on merging stuff for linux
daxim hey, you guys want to migrate
masak migrate while keeping the good bits.
moritz_ I just forsee that if we don't hand out commit bit, but tell people to pull, nobody will feel responsible for merging their commits back in 10:08
and their commits get lost, in the sense that nobody knows where to find them
that has happened to rakudo, because we decreed that the canonical way to submit patches is RT. people still use pull requests, and sometimes I apply them, but often they are just ignored 10:09
and since the number of people feeling responsible for the repo is rather low, that's a dangerous route
I'd rather have everybody feel responsible for the integration
10:16 Grrrr joined
sorear Alias_: Any chance you could show up for the weekly #perl6 core team meeting next Wednesday at 19:00 UTC in #phasers irc.freenode.net? We need a proper discussion of these issues 10:23
re. #p5p discussion
10:23 leprevost left
sorear crossposting here in case any rakudodevs want to object 10:23
Perl6 CPAN design for reals
10:24 timbunce joined
masak sorear: it's on Wednesday next week, rather than Tuesday as usual? 10:24
sorear masak: #phasers was today, so I looked at my clock. (it's 3am) 10:25
Alias: sorry, Tue
masak sorear: doesn't work that way :P 10:26
pugssvn r32043 | sorear++ | [CursorBase] Factor out the syml-cache to one file section 10:30
10:31 agentzh left
jnthn afternoon, #perl6 10:33
sorear hello jnthn 10:35
masak: you're in charge of cpan6 right? can you make next week's phasers? 10:36
masak sorear: not in charge of any such thing. I should be able to make next week's phasers.
as far as I'm aware -- and I'm not very aware in this case, I think -- there's no single person "in charge" of cpan6, whatever cpan6 happens to be when the question is asked. 10:39
jnthn masak: My grammar isn't so shinily pollished. :P
masak jnthn: :)
10:42 Italian_Plumber left, timbunce left 10:43 M_o_C left
pugssvn r32044 | sorear++ | [CursorBase] Remove support for Perl-initializer settings and make NULL the special case it should be 10:52
sorear mildew is going to be very broken after I get done with this
:(
10:54 jhuni left 10:57 Italian_Plumber joined 11:02 Italian_Plumber left
sorear phenny: tell pmurias I'm redesigning STD's syml cache and I'd like your input on what mildew needs (expect breaking changes in any case) 11:08
phenny sorear: I'll pass that on when pmurias is around.
masak jnthn: the 'shiny' in 'to polish sth shiny' ought to qualify as a sort of resultative complement, methinks. 11:11
jnthn masak: In English I guess those are normally done with like "until it's" or "in order that it's" or "so that it'll be" and things like that. But I couldn't be bovvad. :-) 11:14
pugssvn r32045 | sorear++ | [CursorBase] split out sys_find_module from sys_load_module
11:14 wamba joined
sorear std: 2+2 11:16
p6eval std 32044: OUTPUT«ok 00:01 114m␤»
sorear out. 11:17
sorear wants to see pmurias' thoughts before much more anyway
masak jnthn: not always. cf 'scared stiff', 'elected chairman', 'painted red'.
sorear phenny: tell pmurias in particular, I'm trying to get some kind of real search path thing going
phenny sorear: I'll pass that on when pmurias is around.
arnsholt Those are predicatives to the object, probably, not complements
jnthn masak: Oh, troo. 11:18
arnsholt Except they're subject predicatives, not object predicatives >.< 11:19
jnthn masak: That's probably why it didn't feel so wrong to me. ;-)
masak jnthn: neither 'painted shiny' nor 'painted shinily' are gramatically incorrect. it's just that the latter makes no sense to me. 11:20
er, s:g/painted/polished/ 11:21
good thing moritz_++ implemented the :g adverb :)
jnthn masak: It made enough sense for you to correct it. :P 11:22
But yes, it shoulda been an adjective, not an adverb. :-)
arnsholt Probably because the adverb (like in the second example) often tend to describe the process
masak right.
'in a shiny way'.
arnsholt And I'm not sure what polishing something in a shiny manner is ^^
masak maybe it's doing it with a shiny smile :) 11:23
jnthn It might be that I wear brightly coloured clothing whenever I work on it. :-)
masak clothes with those blue diode lights in them.
arnsholt But I'm a bit curious why English doesn't use the "polish something shiny" construction 11:24
Possibly more restricted use of object predicatives
masak arnsholt: I think I'd use it without hesitation. I'm not a native speaker, though. 11:27
arnsholt: I think it's analogous to 'paint something red'.
arnsholt Yeah, which is why I'm not sure why the polish version isn't as normal
jnthn I didn't write it to deliberately be awkward. :-) 11:28
arnsholt Could just be lexical, I suppose
jnthn It didn't feel weird to me. :-)
masak arnsholt: that's just a cop-out. :P
masak loves to pretend he knows this stuff :) 11:29
arnsholt Yeah, "it's lexical" is a cop-out. But sometimes it's the only viable option
11:30 thebird left
masak anyway, in Mandarin, complements are explicitly marked with the particle 得. so it's easy to see what's a complement there. :) 11:30
arnsholt Unless you start doing things like "9 is a prime on some underlying level of representation" =)
masak .oO( base 12... )
11:31 thebird joined
masak oh wait :) 11:31
jnthn masak: That sound skinda neat. :-)
masak no, I can't find such an underlying representation.
jnthn s/sk/k/
11:31 rcfox left
masak jnthn: it is. that's how I became aware of complements in the first place :) 11:32
arnsholt Yeah, it's a quite sane way to do it 11:33
Unlike complex synthetic morphology =)
11:34 rcfox joined
Alias sorear: Backl 11:35
11:37 pmurias joined
masak jnthn: If I input 'He runs fast' into Google Translate en->ch, it gives me back 他跑得快 -- 'he run 得 fast'. 11:37
Alias sorear: So basically, 5am Wednesday
It's no wonder I've never been at one of these
masak :)
moritz_ I kinda expected en->ch to produce "er rennt schnell" :-)
Alias I'll be at Microsoft TechEd on the Gold Coast that week
masak Alias: there's also the option of preposting. 11:38
moritz_: ah. no. en->cn, of course.
masak is too sloppy with language codes
moritz_ masak: yes, I figured :-). Still I won't miss an option to make fun of you :-)
Alias masak: Preposting probably not a good idea
masak moritz_: it's ok -- I'd have done the same. :P 11:39
Alias masak: The core ideas are somewhat tricky and hidden, it's better to be present and able to clear up mistunderstanding and clarify things
masak Alias: nod
11:39 codyFendant joined
Alias Let me check when I'm "speaking" 11:40
11:40 pmurias left
Alias (I use air quotes because it's not a conventional presentation, it's in the internal microsoft-only track and only a 3-4 minute talk) 11:40
codyFendant hi 11:41
is there any official way to write to the authors of the perl6 book, does anyone know?
nadim_ Alias: you slacker! do you do anything else but go to conferences?
Alias nadim_: It was spontaneous
nadim_ Alias: found anything watcheable in my list? 11:42
Alias "Hey, if we sent you free tickets, plane tickets and found you a hotel, could you come to TechEd next week and talk to us"
nadim_: On the list I saw, Donnie Darko
nadim_ alright, I'd be spontaneous too
Alias Also, my HR department is bugging me to stop accumulating leave
nadim_ among 50 other
arnsholt codyFendant: Most of them hang out in here I think =)
11:42 Italian_Plumber joined
Alias Donnie Darko is one of my top 10 sci fi movies 11:43
And it's hard sci-fi mindfuck'esk
So not for all audiences
moritz_ codyFendant: there's #perl6book on freenode
Alias Don't watch the director's cut
codyFendant I never thought of Donny D as sci-fi some how.
moritz_ codyFendant: and the perl6/book project on github has a bug tracker
Alias It answers too many questions :)
nadim_ codyFendant: maybe because it is not
moritz_ codyFendant: and you can also write to [email@hidden.address] the authors read that list too, and it's not too off-topic there 11:44
Alias codyFendant: Good science fiction is "Take the world, change one thing, hit play"
codyFendant Hah. The #perl6book channel is not mentioned in the perl 6 book...
11:44 pmurias joined
codyFendant So ... if you change two things, that's not sci-fi? Got it. Maximum of one. 11:44
moritz_ codyFendant: it's not *good* sci-fi anymore :-) 11:45
Alias Indeed
For example
jnthn
.oO( I'd never considered the Perl 6 book to be sci-fi... )
Alias 1. A giant comet is coming towards the earth
codyFendant I just changed 1.5 things in my book. Please clarify if it can only be an Int
masak jnthn: Perl 6: the future. today.
Alias 2. We can easily put some oil rig workers on a never-before tried space ship and they'll be able to survive and fly to the comet and drill into it and blow it up with a nuke 11:46
1. is deep impact
nadim_ masak: you mean today. today.
Alias 1 + 2 is that other about the same time
masak nadim_: doesn't quite have the same ring to it, does it? :)
"Perl 6: today. today". nah. 11:47
codyFendant Deep Impact and ... damn, what was it. With Frodo, and Morgan Freeman.
nadim_ but is semantically correct
Alias codyFendant, heh... bruce willis
jnthn Armageddon had a similar plot. :-)
Alias That one!
codyFendant A black president! That used to be the signifier of an unimaginable future.
masak nadim_: well, sometimes you need a bit of semantic umami in there.
jnthn It's like "yeah right..." :-)
nadim_ and both were shit piles
codyFendant Hollywood did a whole lot of paired movies at that time.
Volcano/Dantes Peak
Alias nadim_: Deep Impact was ok, just wasn't massively exciting
nadim_ euuu, no; it was shit. 11:48
Alias nadim_: Being good sci-fi and a good movie in it's own right as well is hard
Inception is the last movie I can remember that came close
moritz_ 1. There is this thing called "force", and Jedis that use it. Look ma, we have star wars
codyFendant Antz/Bugs Life
Truman Show/Ed TV
Dark City/Matrix 11:49
nadim_ OMG, I forgot that perl geeks tend to have poor taste in movies
moritz_ Alias: I liked it, because it used very few assumptions. Sadly it didn't quite stick to its own assumptions
(inception, that is)
Alias moritz_, it did indeed bleed around the edges a bit
But given how ambitious it was, it got as close as I think we're likely to ever see
11:49 alc left
nadim_ codyFendant: DarkCity / Matrix on the same meaning is tasteless ;) 11:50
moritz_ codyFendant: coming back to the book, is there anything you want to tell us? or does it not fit into IRC, or are you trying to contact all authors?
Alias nadim_: Name the last good movie you saw that was in English (so there's a chance I saw it too) 11:51
pmurias nadim_: don't people in general tend to have a poor taste in everything?
phenny pmurias: 11:08Z <sorear> tell pmurias I'm redesigning STD's syml cache and I'd like your input on what mildew needs (expect breaking changes in any case)
pmurias: 11:17Z <sorear> tell pmurias in particular, I'm trying to get some kind of real search path thing going
Alias I have a friend that's so snobby now I can't recall anything he's liked in 5 years
nadim_ pmurias++
codyFendant I was just starting working through it, a couple of small things, like...
Alias ooo 11:52
District 9
Changed one thing
codyFendant They tell you to do $file.get which is the same as <FILE>?
Alias But it wasn't trying to ALSO be giant blockbuster
nadim_ Alias: The notebook (because the actress is hawt and talented)
moritz_ codyFendant: do they? 11:53
codyFendant But then they tell you to continue by using $file.lines
Alias nadim_: You have to like the movie as well
And yeah, the notebook was pretty good, as dramas go
nadim_ Alias: I was good 80% of the time
codyFendant I just think they should put in a couple of words about the difference, or the fact that you're on line 2 at the point or whatever.
Alias What else
moritz_ codyFendant: agreed
nadim_ US movies always self destroy in the last 10 mn
Alias how so 11:54
The search for the happy ending?
nadim_ completely crappy endings
Alias Fight Club?
moritz_ liked the ending of Inception
codyFendant The actress in The Notebook is Rachel McAdams. She's really good. Seen "Red Eye"? Kind of a horror/thriller set on a plane.
She's in that.
Alias moritz_, Inception also a rare movie worth watching twice 11:55
(Unless you saw the trailer, in which case your first time WAS your second time)
nadim_ khemir.net/http_share/movies_top/top_movies.html and I'll stop my noisy.
Alias This is your favourites, in order? 11:56
nadim_ noisy contribution to this channel
not ordered. you know that is impossible.
Alias So just your favourites?
nadim_ yeqp
yeap
codyFendant Something else about the book. They tell you to split a line on spaces. I accidentally had a space at the end.
Alias oh, I thought it was your "Pick me a movie from this list to watch" 11:57
moritz_ nadim_: there's a bit of mojibake on that page... you might need to fix your charset in the content-type header
codyFendant Turns out perl6 split doesn't dump trailing fields?
nadim_ sir, yes sir.
moritz_ codyFendant: no. The recommended way to do that is to use Str.comb instead
nadim_ moritz_: there is no charset in the page
Alias nadim_: So basically, you are a drama movie person, with dribblings of sci fi and action
nadim_ could say so 11:58
moritz_ codyFendant: but we can't introduce that without telling about regexes
Alias No Wall E?
moritz_ nadim_: not having a charset declaration would explain the mojibake too
nadim_ crap movie
codyFendant What does mojibake mean?
moritz_ codyFendant: characters that appear when the encoding is messed up
en.wikipedia.org/wiki/Mojibake 11:59
nadim_ like vietnamese :))
codyFendant Well one result of having a trailing field is, I get a hash with an undef key, and when it looks up the value for the key, I get Any()
Alias Dark City, Donnie Darko, Gattaca, Brazil... there's still some fairly serious sci fi there though
codyFendant That came as a bit of a surprise.
Alias But clearly the darker and creepier stuff is what you like
codyFendant Mojibake! interesting new word 12:00
pmurias sorear: the current scheme of having a search path for syml files and a way to specify where the new one are stored is enough for me
codyFendant has a certificate in Vietnamese.
takadonet morning all
nadim_ Alias: and a few animations. Chasseurs de dragons is a must see. A piece of art. 12:01
Alias nadim, lola rennt?
codyFendant Anyway, bedtime, thanks for your help on the book thing I will contact the authors some time.
masak liked "Lola rennt"
Alias Might not be dark enough for him though
nadim_ it wasn't 12:02
Alias ooo The Labirynth?
spo
www.imdb.com/title/tt0091369/
12:02 codyFendant left
Alias Dark children's sci fi'ish :) 12:02
Sting in all his 80s glory :) 12:03
dalek ok: a2ad884 | moritz++ | src/basics.pod:
[basics] be more verbose about IO.lines. Noted by codyFendant++
nadim_ OK but so old. Bowie you meant
Alias sorry, yes
nadim_ haha
Alias Have you tried the rotten tomatos method? 12:05
www.rottentomatoes.com/top/bestofrt_year.php
Just work your way down till you see something you haven't seen that looks vaguely intersting
12:07 envi^home joined
nadim_ Oh god, this start bad. 12:07
God even!
Alias You have to cross those ratings with the styles you like as well
nadim_ its about as bad as the top list at IMDB. Alias we can continue on FB, not the best channel. 12:08
Alias It doesn't much help that you don't like funny, happy, unlifting or action movies
Constrains your options a lot
nadim_ not a single one in the top 100. that's not good 12:09
12:09 Shillo joined 12:10 drbean joined
Shillo Hullo 12:10
moritz_ hi
Shillo Hey, was just looking for someone familiar with parrot internal. :) 12:11
Er, internals
moritz_ Shillo: your chances are much better in #parrot on irc.perl.org
some of us here know them a bit too, but #parrot is where the accumulated hackery is 12:12
Shillo Well, dunno. Maybe you know about this, too: I've actually ran rakudo through a profiler and saw something amazing
12:12 meppel joined
moritz_ it spends half of the time in the GC? :-) 12:12
Shillo valgrind --tool=callgrind ./perl6 -e 'for (1..1000) { my $a = $_ + 1; }'
This was the test
Not half, and not because the GC is slow
pmurias Shillo: so what's the interesting part? 12:14
Shillo I'd normally expect this to construct a call activation (assuming that the block is a real closure), perhaps fill a small hashtable
... on each loop pass
So, maybe 10-20 objects that need to be boxed and allocated
Surprise: this actually constructs over 3,000 PMCs on each loop pass
Currently building 2.7, the relnotes mention hash improvements
jnthn o_O 12:15
Shillo Maybe it will be different this time
jnthn That is...rather more than I'd have expected
Shillo jnthn: Right :)
dalek ok: a739ba4 | moritz++ | src/basics.pod:
[basics] add a note that splitting on a single space is not very robust. codyFendant++
jnthn I wonder if we can get any data on what types of PMCs they are.
Shillo Lemme rebuild and I'll regenerate a profile
12:16 meppl left
moritz_ note that iterating over a range is implemented in Perl 6 code too; it's not a primitive in that sense 12:16
Shillo Of course, I expected several function calls per pass
But this was 2-3 order of magnitude worse
moritz_ I agree, it is
jnthn Shillo: How did you get to the 3000, ooc?
Shillo: That is, this is just runtime yes - the compile time was factored out?
Shillo Number of calls to allocate PMC was 4,000,000. I rerun with a single loop pass, that yielded around 600,000 12:17
So yes
jnthn OK, that sounds quite sound methodology
12:17 meppel is now known as meppl
Shillo You can retry yourself, just install valgrind and kcachegrind to view results 12:18
pugssvn r32046 | moritz++ | [docs] want() and wantarry() are gone 12:19
Shillo I kinda thought that profile would be needed, as perl6 is currently much slower than I'd expect
jnthn Yes, profiling can help explain a lot of why and point to the optimizations we can do.
Shillo Realtime on the range loop is around 10,000 slower than Python and Python doesn't perform any magic on the code
So I use that as a reasonable baseline for an interpreter 12:20
moritz_ what we really need is profiling at a higher level (eg Perl 6 statement level)
Shillo Well, not sure about that. I'm still amazed at the number of conses
They have to come about in some crazy way. Does something copy an entire hash table on each indexing? Or box each string characteR?
moritz_ not each character 12:21
masak there's hope for future Perl 6 performance, if for no other reason that it's so obviously abysmal as of today.
Shillo I agree, and there -has- to be something *really* easy to do about this problem, at least.
moritz_ but in Rakudo we have to box each parrot primitive, because the primitive types can't be stored in lexpads directly
jnthn It's actually worse than that too. 12:22
arnsholt There's probably some overhead in lazy ranges as well?
Shillo Yes
moritz_ yes, that too
masak arnsholt: oh yes.
Shillo The problem is box each primitive + call into range iterator + call into loop block gives 10s of allocs, not 1000s
jnthn moritz_: Because of the fact that we wrap Parrot's Integer/Float etc PMC types (that will change). 12:23
Shillo Which is why I used the word 'amazing' originally. It's 2 orders of magnitude off the mark.
moritz_ as is our performance, yes
12:24 pmurias left
arnsholt Perhaps there's some compounding as well? Large parts of Rakudo are written in Perl 6, so unoptimized compilation can probably accumulate a bit 12:24
moritz_ arnsholt: yes, that's part of it
for example each scope has it's own $/, $_ and $! variables
and a single iteration step for 1..10 probably involves at least 5 scopes 12:25
12:25 JimmyZ joined
Shillo *grumble* I think I didn't properly wipe the old build. Rebuilding... 12:27
moritz_ About higher level profiling, I think you won't get much benefit from optimizations until the *highly* dominant profile item is sorted out 12:28
I mean, the current prolific allocation just drawns every other profile contribution 12:29
moritz_ Shillo: well, a factor of 2 here and there would still be nice :-)
Shillo :) 12:30
JimmyZ parrot needs more love :)
moritz_ rakudo too
Shillo moritz_: Well, sure, that helps performance, but I meant that it won't help -measuring- performance.
baest hugs parrot and rakudo
12:31 nadim_ left
Shillo Profiling now. That'll take a few mins. I want to see if 2.7 improves anything... 12:31
moritz_ wants to see huge green bars in niner.name/rakudo/benchmarks.png 12:32
masak moritz_: if we nuke a lot of tests... :> 12:34
colomon it's supposed to be sensitive to that, isn't it?
masak I have no idea how it works, fwiw.
moritz_ masak: it measures only performance differences of test files that weren't changed between two runs
masak ooh 12:35
nine++
that's an excellent heuristic. why didn't I think of that?
gfldex you think this would help to make rakudo faster: www.fukung.net/v/15899/9e93c9cab7ef...973f31.jpg
jnthn masak: The scripts are in niner.name/rakudo/ 12:36
moritz_ masak: because you're involved in way too many projects :-)
masak gfldex: wouldn't hurt to try.
12:36 synth joined
moritz_ (just like me) 12:36
gfldex :)
masak moritz_: no, that's not it. :)
I generally have the ideas, but then don't act on them.
this is a case of not having the idea at all. I must be getting old or something. :) 12:37
pmichaud good morning, #perl6 12:38
masak pmichaud: \o
Shillo Hullo! 12:39
jnthn o/ pmichaud
takadonet pmichaud: morning
colomon \o
12:39 thebird left
colomon pmichaud: what's the state of the series refactor? 12:41
pmichaud 12:12 <Shillo> valgrind --tool=callgrind ./perl6 -e 'for (1..1000) { my $a = $_ + 1; }'
Shillo Profiling done. It's much, ****MUCH**** better this time
pmichaud very interesting stuff.
12:41 ruoso joined
Shillo 495266 baseline, 770836 test 12:41
colomon Shillo: you mean, the profile looks better now than it did a week or two ago? 12:42
Shillo Congrats, 2.7.0 improves this by by a full order of magnitude :)
Oh yes
moritz_ \o/
masak that's great news.
can't say I've felt that order of magnitude in my bones, though.
pmichaud you'd likely be very surprised at the number of PMCs being generated tehre :)
*there
Shillo It's still 275 per loop pass, mind you 12:43
colomon yeah, why is the benchmark graph only showing about 2% improvement?
Shillo So yeah, I'm still surprised, but no longer amazed ;)
12:43 thebird joined
pmichaud 275 doesn't surprise me too much 12:43
Shillo That is a good question
masak Shillo: it's our wish to amaze you, but preferably not in that way :)
Shillo get_new_pmc_header is 17% of the profile now, mostly called from pmc_new, but some are from new_init_int 12:44
Something else strange, 14% on hash_thaw, called from parrot_hash_visit. What is this? 12:45
moritz_ hm... maybe reading hashes from pack files?
jnthn 14% of our runtime is on hash_thaw? 12:48
Shillo Yes
However, good news;
jnthn Oh
I wonder if somewhere we're cloning things a lot that are hashes 12:49
Shillo I just did normal time w/out valgrind. startup is now 75% of the test. >
jnthn The default clone implementation is to freeze, then thaw.
pmichaud jnthn: that wouldn't surprise me. hash clones are deep
colomon "startup is now 75% of the test" \o/
Shillo 1.43 secs vs 2.00 secs (or so)
12:50 _madmax_ left
Shillo Yes, this is a lot better than the last time. Lemme try to 10,000. That will take a while... 12:50
pmichaud Shillo: what are you using to view the valgrind output, ooc? 12:51
Shillo kcachegrind
I'm open to better options, mind you. Wouldn't mind something that can draw a better call tree
pmichaud kcachegrind is good -- I'm just trying to duplicate on my system (so far so good)
colomon Can't use global $_ in "my" 12:52
12:52 uniejo left
colomon ??????? 12:52
line in question is my $a = $_ + 1;
Shillo ???
moritz_ colomon: perl 5?
colomon doh! moritz_++ 12:53
Shillo Uh... :>
colomon geez, that's a mistake I haven't made any time recently. most be tired than I think.
12:53 javs joined
colomon huh. I've just updated to latest, and my 10,000 times loop run shows no performance improvement over the last time I ran it. 12:54
pmichaud speaking of profiling -- here's a parsing/compiling profile I put together last night (this one is profiling time to compile src/NQP/Actions.pm in nqp-rx)
gist.github.com/534606 # profile results
colomon pmichaud: better than 10% of the time is spent in <ws>? 12:55
pmichaud yes, or things that ws calls that aren't being profiled
but that doesn't surprise me too much, since most of a program is whitespace
12:55 bjarneh joined
pmichaud it's not so much that <ws> is slow, as much as the fact that it gets called a lot 12:56
colomon wonders if switching spaces to tabs would significantly improve the performance. :(
pmichaud no, likely not
anyway, I'm thinking of running this on core.pm and seeing what happens :-P 12:57
colomon you sure? seems like it would remove nearly 75% of the whitespace...
Shillo Reimplement <ws> in assembly.... ;) 12:58
12:58 wamba left
pmichaud well, I can go look at the code generated for <ws> and see why it might be taking so long 12:58
moritz_ pmichaud: does <ws> cache like STD.pm does?
pmichaud yes 12:59
Shillo Got profile up to 10,000
colomon pmichaud: I assume the code for <ws> is pretty good already -- it certainly is called a lot! -- but it seems like a clear example where some love might make a significant difference.
pmichaud the cache is in the calls to MARKED
Shillo hash_thaw is now 4% of the time. So it -was- the startup
runops_fast_core is 3%. Everything above that is pmc alloc, gc, delete and hash writes and lookups 13:00
Oh, 4% on fill_params
colomon Shillo: are you still seeing a big performance improvement in the 10,000 version? I'm not seeing any since pmichaud++'s Range iterator patch from a few days ago. 13:01
might even be a touch slower.
Shillo I last checked before range iterator patch
So I'm not sure what caused it 13:02
At 10,000 passes: 3,250,000 calls to Parrot_pmc_new
colomon Shillo: that's almost certainly what you're timing, range iterator changes.
pmichaud well, and numeric math changes
(which were part of range iterator changes, iirc) 13:03
Shillo Well, it aparently causes a lot fewer allocs for some reason. Anyway: major Pmc_new callers: PMCProxy_instantiate, pcc_build_sig_object_from_op, Sub_invoke, make_prop_hash and Class_instantiate
colomon pmichaud: you needed to make changes for the operators you were calling, but the old range iterator was already calling fast versions (after my post-R* changes)
pmichaud colomon: okay 13:04
colomon (that is, it was using < and I made sure < was fast. you switched to cmp and then had to optimize cmp.)
Shillo And Proxy_Insantiate is called from Parrot_new_p_pc
pmichaud colomon: but I'm thinking some of those changes may have also affected &infix:<+> speed.
Shillo Wait, new_p_pc makes PMC from... what? 13:05
pmichaud Shillo: a constant key, probably
e.g., new $P0, ['Something']
13:06 amkrankruleuen joined
colomon pmichaud: it's been nine months since there were any changes to infix:<+>(Int, Int). I really think all the speedup came from switching your lovely PIR range iterator. 13:08
pmichaud colomon: okay, I'll accept that then. It might also be parrot improvements.
13:08 orafu joined
Shillo Checking hash_get calls. Major item is NameSpace_get_pmc_keyed_str, pointer_keyed_str and oo_find_vtable_override 13:09
Was PIC removed from Parrot?
moritz_ urks. It's a day before the release, and the number of "Non-zero exit status" tests has increased
Shillo: yes. It was i386 only
Shillo pmichaud: A thing to keep in mind, I think that simpler implementation of range operator will become faster if Parrot gets function calls right 13:10
mathw moritz_: ouch
Shillo pmichaud: And it needs to, given the number of single-expression methods that perl6 seems to encourage.
moritz_ pmichaud: should I fudge nil.t, or are you planning to fix rakudo before the release?
pmichaud moritz_: I'm planning to fix it today. 13:11
moritz_ ok, then I'll stand back
pmichaud I have nil.t running, but the fix causes other spectests to fail, so I'm having to fix the fix (and the other tests)
Shillo pmichaud: Also, about reading kcachegrind, not sure if you noticed, but the timings are not cumulative up the call tree
moritz_ the last Nil change also required some changes sprinkled all over the test suite 13:12
Shillo So a function can show at the bottom of the profile but can still be a problem if it calls some other, VERY popular function.
pmichaud moritz_: yes, and I have a few more.
13:12 pmurias joined
pmichaud Shillo: noted, thanks! 13:13
moritz_ Shillo++ # not only complaining about slowness, but actually doing something
colomon Shillo++ indeed
moritz_ if everybody who complained on twitter, reddit and perlmonks was that enthusiastic... :-) 13:14
Shillo Well, just had to share. The main problems, currently, seem to be filling pads (causing gc to blow up), namespace lookups and, far below that, vtable lookups 13:16
masak Shillo++
13:17 envi^home left
pmichaud I'm a bit surprised at namespace lookups 13:17
colomon Shillo: is that for the 1,000 version or the 10,000 version?
Shillo Would it be very hard to inherit from parrot hash and make an object that has $/, $_ and whatever else is mandatory stored efficiently?
colomon: 10,000
colomon woah. I was thinking namespace lookups would all be at startup 13:18
Shillo pmichaud: Could be, actually
pmichaud what's the namespace lookup?
(I have the 10,000 callgrind results on my screen also) 13:19
Shillo Everything is so dominated by pads and GC blowup that it's all in single percentages
13:19 javs_ joined
Shillo Clock parrot_hash_get_bucket 13:19
Then doubleclick on the first item on the caller lost
list
That's parrot_hash_get
You see namespace lookups at the first two items on the caller list of parrot_hash_get. Itself, that's a fast function, but hash_get_bucket isn't 13:20
pmichaud oh 13:21
I bet those are isa checks.
Shillo It could still be startup time, mind you. Lemme run 100,000
But that could take an hour or whatever.
pmichaud at 10,000 it's 1,853,264 calls
at 1 it's 200,877 calls 13:22
Shillo That helps :)
13:22 pmurias left
pmichaud so I'm pretty sure that ~1.6 million calls are non-startup 13:22
jnthn 1.6 million hash lookups?!
pmichaud sure
Shillo 160 calls per pass.
jnthn Still rather too many. 13:23
13:23 javs left
Shillo jnthn: It's still just 10% of the runtime 13:23
13:23 envi^home joined
Shillo Almost everything else is consing and gcing. 13:24
pmichaud ultimately those are coming from Parrot_oo_get_class_str
looks like about 35 calls to Parrot_Class_isa per iteration
jnthn pmichaud: eww, and we know that ain't too great. 13:25
pmichaud: Well, expect that to change drastically with the new metamodel-y stuff.
13:25 thebird left
moritz_ expects it to change 13:25
sounds like the best thing since sliced bread :-) 13:26
colomon pmichaud: would it be possible to write a special version of the range iterator which always did Int cmp, without multi dispatch? sounds like that might be a biggish win.... 13:28
pmichaud colomon: well, Ranges aren't required to be ints 13:29
more to the point, I'd be wary of assuming the bulk of the expense is still in the range iterator here
colomon pmichaud: right, that's why a special version.
actually, now that I think about, those timings I did implied it wouldn't be better than a .2s improvement (in the 10,000 case) 13:31
so that's maybe not worth pursuing.
pmichaud one could measure that by iterating over a 10000 element array instead of a 10000 element range
that would give some indication as to how much of the expense is in the range generation versus the 10,000 iterations
13:33 javs_ left, perlygatekeeper joined
Shillo Heh, 100,000 test segfaulted. :) 13:33
pmichaud that's probably the gc recursion limit.
Shillo Access not within mapped region at address 0xBE655FFC, at 0x4196D47: Parrot_Object_mark (object.c:3534) 13:34
pmichaud maybe 50,000
or even 20,000
Shillo Lemme try something else...
13:35 thebird joined, timbunce joined
Shillo time ./perl6 -e 'my $a = [1..10000]; for $a { my $x = $_ + 1; }' <-- 3.56 user 13:36
pmichaud jnthn: I wonder if we'd get a huge win by caching (Parrot) cache objects in our calls to isa
Shillo time ./perl6 -e 'for (1..10000) { my $a = $_ + 1; }' <-- 7.48 user
pmichaud Shillo: the first does only one iteration
Shillo Oh, oops. 13:37
13:37 foodoo left
pmichaud try for $a.list 13:37
or my @a = 1..10000; for @a { ... }
jnthn pmichaud: Caching...what?
:-)
pmichaud jnthn: right now we do things like $I0 = isa $P0, ['Something']
which means that Parrot goes through a lot of calls to find the class object for ['Something'] 13:38
jnthn pmichaud: Yeah. We could do with eliminating those.
pmichaud: String isa in general needs to die.
pmichaud ooooh! ooooh!
jnthn It's going to hurt us in more ways that performance some day.
pmichaud has a killer idea
jnthn I'm very happy to start killing it.
Shillo Ah, yes, used .list, got 8.95s user
pmichaud jnthn: we could come up with x_fast_isa opcode 13:39
and it can cache things for us
Shillo jnthn: Still, just to keep things in perspective, hash lookups were only 10% profile
In that one example
jnthn Shillo: Yeah, but time spent in isa checks is more than just hash lookup I guess. 13:40
pmichaud Shillo: how are you determining the 10% number, ooc?
Parrot_hash_get_bucket? 13:41
Shillo Yep
Or rather, by its placement on the list: everything above it is not related to hash lookups 13:42
pmichaud Parrot_pmc_new might have some hash lookups
hmmm, maybe not 13:43
anyway, would I be correct in saying that we still seem to be paying a lot for gc?
Shillo Oh, niiiice, found something cool 13:44
In kcachegrind, click on calee_map
That's tab, top right
pmichaud yes
13:45 Holy_Cow joined 13:47 javs_ joined
pmichaud fwiw, it might be worthwhile to compare for 1..00001 { ... } and for 1..10000 { ... } 13:47
just to make sure that we're more apples-to-apples in startup cost and compilation
I suspect the cost of "00001" isn't quite the same as the cost of "1". (Yes, they should be trivially different, in reality there could be a difference with the way our constants are currently handled) 13:48
or compare for 1..1000 with for 1..9999
anyway, probably not a significant difference, but worth noting 13:49
masak I'm building an offline mirror of the perl6 RT queue, so I can do queries on it. here's a simple summary that I can get out of it now: gist.github.com/534779
it'd be interesting to hear if people have suggestions for other pieces of data one could extract. 13:50
jnthn Who closed most? :-) 13:52
(moritz probably :-)
masak I'll see if I can get that out. shouldn't be too difficult.
jnthn number of tickets submitted by month? 13:53
masak ooh
jnthn e.g. to see how fast we accumulate them over time
pmichaud number of open tickets by month, too.
or by week
masak yes, I want to move towards a timeline-y interface.
pmichaud or by day
jnthn yeah
masak let me get back to you on that in a day or so :)
13:54 timbunce_ joined
masak my ultimate dream is to build an interactive js interface, and do my 1024 talk using that :) 13:54
13:54 timbunce left, timbunce_ is now known as timbunce
jnthn masak: Do you have a plan for when to do the 1024 talk? :-) 13:55
pmichaud ooooh, I see a very nice optimization possibility in <ws>
jnthn \o/
13:55 javs_ left
jnthn I may have one for the binder but I need to do $dayjob bits first. :-) 13:55
masak jnthn: I was thinking next YAPC::EU, but maybe I'll get to do it earlier to a smaller audience.
jnthn Nice
Yes, it could make a nice ::EU one
In Rigaaaa! :D
masak \o/ 13:56
13:57 timbunce left, pmurias joined
pmurias ruoso: ping 13:57
jnthn It'll be nice to see it in summer. :-)
13:58 ash_ left
pmichaud foolishly tries to run a parse/compile profile on core.pm. Expect epic fail. 14:02
...wonder how long that will take, too. :-)
masak yes, moritz_++ wins among the *human* entities that close tickets :) gist.github.com/534779
then jnthn++, then pmichaud++, the [Coke]++ 14:03
s/the>>/then/
14:03 sftp joined
Shillo OK, I've compared number of calls to PMC_new in 1..10,000 run and 1..1 run (substracted the number of calls, divided by 10,000) 14:03
None of the differences looks divisible by 10,000 and the numbers -could- be duplicated, but here's a quick breakdown: 14:04
14:04 hercynium joined
Shillo Parrot_sub_invoke 69, PMCProxy_Instantiate 40, build_sig_object_from_op 60, make_prop_hash 7, alloc_context 15, build_call_from_varargs 15, autobox_pmc 10 14:04
PerlJam just saw that valgrind stuff from earlier and finds it interesting how many "events" happen in rakudo as compared with perl5, python, and ruby 14:05
pmichaud afk for a bit 14:06
wait....
build_sig_object_from_op occurs 60 times per loop iteration?
PerlJam 10.5 million for perl5, ~16 million for ruby, ~30 million for both python, and ~19 BILLION for rakudo 14:07
s/both//
pmichaud okay, 60x looks about right, on second thought
I was thinking something else
Shillo 716932 calls
14:07 pnu joined
Shillo in the 10,000 run :) 14:08
pmichaud right
that's consistent with Parrot_sub_invoke being about 69
which also seems about right-ish
Shillo 69 sub calls still seems a bit excessive for a simple for loop 14:09
pmichaud those are Parrot sub calls
so, let's evaluate what's happening
masak correction: moritz_ wins, among humans and bots alike. the RT system doesn't close tickets, what was I thinking? :) gist.github.com/534779
pmichaud for 1..10000 { my $x = $_ + 1; } is really
14:09 Italian_Plumber left
pmichaud (1..10000).map( { my $x = $_ + 1; } ).eager 14:09
so .map first calls .iterator on the Range 14:10
and then it starts to go through all of the elements of the iterator
it has to call .munch(1) on the iterator to get each argument to pass to the block
Shillo I assume .iterator() is just a single call (not 1 per loop) 14:11
pmichaud right, but .munch is one per loop
Shillo Yep
pmichaud and .munch then has to make a variety of calls to produce the elements of the range
it has to call .succ and &infix:<cmp>
each of which also result in a variety of subcalls
Shillo I'm kinda tempted to try and figure out how long does a sub call take in rakudo or parrot 14:12
pmichaud so, just the fact of doing the iteration itself is likely reponsible for about 12 subcalls per iteration
note that we're talking Parrot subs here, not Rakudo subs
14:12 drbean left
pmichaud (it's not always a 1-1 mapping) 14:12
14:13 blogometer joined
blogometer Hello, Perl 6. 14:13
I see you are ready to build and run on my MacBook now.
pmichaud then within the loop, we have calls to &infix:<=> and &infix:<+>
Shillo Is it ever? I.e. does rakudo generate sub-calling boilerplate?
[particle] each rakudo scope is a parrot sub, for example
blogometer I've waited so long, and now you're here. I'm so happy!
Shillo [particle]: I saw that
14:14 plobsing joined
Shillo Actually, does perl6 spec fundamentally preclude inlining? I.e. is it OK to ever prevent CALLER:: from working? 14:14
pmichaud it's not precluded, but it's also not a trivial optimization
and then problem isn't simply CALLER:: -- it's also the need to create lexpads for the nested blocks 14:15
(or closures)
Shillo But do you need lexpads if it's okay to not be able to introspect lexical scopes? 14:16
(I mean, in that case, stuffing things into the registers becomes an option)
pmichaud as long as it's not a true closure, yes. 14:17
but in the case of the for statement... it's a closure
i.e., it's an argument to .map()
so it's not inlinable
Shillo Actually most LISPs flatten (map (lambda ..., but there scopes can be flattened if the closure isn't captured 14:18
Although, there (lambda..) can't get a reference to itself, and the optimizer knows that map doesn't store closure 14:19
Which is why I asked my question as I did: aside from CALLER::, is there any other reason to make a closure if closure consumer isn't storing it? 14:20
pmichaud ...but the closure consumer (map) is storing it
Shillo By storing I mean outside its own variables. Yeah, it means that compiler needs to treat map specially 14:21
map in LISP is usually a macro, but Common LISP cheats
Part of the standard is that you can't override certain symbols, map among them. 14:22
pmichaud anyway, the other reason for needing the lexpad is because of nested blocks
again, optimizable, but only with a fair bit of analysis 14:23
e.g.:
if 1 { my $a = 5; { say $a; } }
14:23 ash_ joined
pmichaud we can't inline the block to the 'if' unless we can also determine that it's perfectly safe to inline the nested block 14:23
14:25 Italian_Plumber joined
Shillo Better example: for @a { my $x = $_ + 1; @*B.push( { $^a + $x } } <-- this you can't actually inline 14:25
pmichaud right
gfldex is there a way to define a method as not mutating the object it works with, nor any other object?
like in c++ with void foo () const {} 14:26
14:26 xinming_ joined
Shillo And you need to look into the nested block to see that $x is used. Or (which is what I intend to do in my pet compiler project), go upscope from any ref to lexicals and mark the symbols as need-to-malloc 14:26
Pet project: learning LLVM and type inference. Might end up with a working compiler for a pet language at some point, but don't count on it.
14:28 Alias_ joined
pmichaud afk for a bit 14:28
Shillo Laters!
masak jnthn++'s presentation and mine are now online! www.presentingperl.org/ye2010/
14:30 azert0x joined, jferrero left
Shillo Anyway, laters, all, and thanks for your time! :) 14:30
Juerd What a weird logo
"resenting erl"
juerd.nl/i/609555ee94a732cda67530080a416134.png
Who let a Perl coder design a logo? :) 14:31
14:31 Shillo left
masak doesn't resent erl at all 14:31
Juerd I don't know erl :) 14:32
masak it's a rogramming language :)
ruoso pmurias, pong 14:33
Juerd Any rogrammers here, then?
masak robably.
PerlJam ro-ro-ro your grammer, gently down the parse 14:34
[particle] more unsters than rogrammers
masak what's your oint, sir?
Juerd Are the slides of this resentation available in a more readable form?
PerlJam (I thought "gently down the arse" wouldn't quite come out right ;)
Juerd I can't make out the text in the video.
PerlJam: :)
masak Juerd: if you're referring to mine, then yes. feather.perl6.nl/~masak/ 14:35
Juerd PerlJam: down the arse is *in*, indeed, not out.
masak jnthn's should be up too. hold on.
jnthn.net/articles.shtml
Juerd \o/
14:36 dudulz joined 14:43 wtw left 14:46 estrabd left 14:47 estrabd joined 14:48 plobsing left
jnthn ooh, my talk video is up? \o/ 14:48
14:49 JimmyZ left 14:50 pyrimidine joined
pmichaud jnthn: do you have a twitter id? 14:51
jnthn yes 14:52
jnthnwrthngtn
masak: Seems that being the person who writes the tests gives a large advantage in ticket closing. ;-) 14:54
moritz_++
masak indeed, moritz_++
pmichaud lolitweeted: twitter.com/pmichaud/status/21496165520
masak RTs
jnthn I'm a little surprised I've closed so many directly though. :-) 14:57
masak would be fun and a bit frivolous to pair up the most common submitter/closer pairs, too... 15:00
jnthn hehe 15:01
masak jnthn: I have a feeling many of the bugs you close were submitted by me, for example.
15:02 foodoo joined
jnthn Statistically, that's likely :P 15:04
15:04 molaf joined 15:06 kiffin left 15:07 dudulz left
jnthn masak: It's too bad we don't have a status where it's "fixed, awaiting tests", so we could work out the top fixer as well as the top closer. :-) 15:08
masak jnthn: I might be able to tease that out of the data. :) 15:09
15:09 blogometer left
jnthn
.oO( Is it cruel to tease data? )
15:09
15:11 blogometer joined
masak jnthn: the data started it! 15:13
15:14 justatheory left 15:16 azert0x left 15:17 Clem_Chong joined 15:25 blogometer left
masak jnthn is getting sweet re-tweets on Twitter. 15:26
jnthn re-sweet 15:27
15:28 timbunce joined, rlb3_ joined 15:33 amkrankruleuen left 15:34 alester joined 15:35 amkrankruleuen joined 15:38 blogometer joined
Clem_Chong Hello,I am new. 15:39
15:40 jferrero joined
masak Clem_Chong: welcome! 15:40
15:41 masak left
takadonet Clem_Chong: how are you? 15:48
15:52 timbunce left, risou joined 15:55 tylercurtis joined
pmichaud "Twitter is over capacity." I blame jnthn++ 15:58
15:59 Clem_Chong left 16:00 charan joined, rgrau___ joined 16:02 rgrau__ left 16:04 rgrau___ is now known as rgrau
TimToady I can't believe you guys spent that much time discussing AOP and never mentioned .wrap 16:08
16:11 ash_ left
jnthn pmichaud: :P 16:11
16:13 djburiedalive joined 16:14 patrickas joined, djburiedalive left
TimToady sorear: re syml, another consideration is whether you can write the directory in question; I'm inclined to think we'll end up with meshed global and private databases 16:15
patrickas ola
TimToady nadim: AOP is supposed to be done with .wrap, though we don't yet have a good interface for "find me all the methods named .perl" 16:17
patrickas TimToady: is ( 1 , -2 , 4 ...^ -32) supposed to result in '2, -4, 8, -16' or '2, -4, 8, -16, 32'
pmichaud well, it should probably be 1, -2, 4, -8, 16 :-) 16:18
(note negatives are switched :-)
pmurias ruoso: sorry, for pinging and forgetting to mark that i went to lunch
jnthn Foo.^methods.grep(* eq 'perl')>>.wrap({ ... })
pmurias ruoso: how is the evaluation of my project 16:19
?
patrickas sorry wrong copy pasta
TimToady that only finds the methods of Foo
patrickas (2, -4, 8 ...^ -32)
should 32 be the last item or -16
jnthn TimToady: ...oh, you want to do it on all objects? 16:20
TimToady: er, all types...
TimToady that was the request last night
jnthn TimToady: Yeah, we don't have a way to do that. But I'd rather that we didn't either.
TimToady this is more like AOP
and that is what .wrap was put in for
jnthn Right.
But just going and wrapping every method that happens to be named perl seems like some bizzare form of monkey typing. :-) 16:21
TimToady though we might well want to pull the declarative pessimization trick
jnthn We might well want to say that this isn't in 6.0.0 too. :-)
TimToady which is a good reason to make sure all .perl methods "do the same thing"
jnthn (.wrap is fine, but "find everything with a perl method" is less so) 16:22
TimToady we don't have .wrap yet?
jnthn No no
I'm not arguing against .wrap
Just against being able to find every type in the system
PerlJam patrickas: I would think it would have to be -16
jnthn .wrap is fine - we do have it at least partially in Rakudo.
pmurias jnthn: AOP is a more crafty and fancy form of monkey typing 16:24
mathw o/ 16:26
pmurias TimToady: do we need AOP much?
TimToady we need to make it possible 16:28
diakopter blinks back into participation 16:29
PerlJam so, AOP is a "hard thing"? :)
mathw reads about AOP 16:32
I see how .wrap helps 16:33
charan hey evry1
pmichaud TimToady: could we do something to make '<?before>' special to the regex compiler? 16:34
either declare it to be non-overridable, or come up with a syntax that means the same thing but is much more optimizable? 16:35
TimToady sure, we can say it's a macro like .WHAT 16:36
pmichaud that'd be fine
TimToady though it's mainly .HOW that must be a macro 16:37
pmichaud and similar for ?after (which really does need to be a macro, in order to reverse the ast)
TimToady sure
pmichaud okay, great.
that has the potential to greatly improve rakudo parse speed
16:38 rlb3_ left
TimToady I'm fine with macroizing things into "keywords" as we discover the need; we're just against assuming everything as a keyword to make life easy for implementors 16:38
pmichaud wfm 16:39
16:39 bjarneh left
TimToady helps us discover the true primitives 16:39
also, if <?before> participates in LTM, it doesn't really have to be rematched most of the time 16:40
pmichaud right... nqp currently doesn't get <?before> to participate in LTM
TimToady though STD still does the rematch
pmichaud I can do that, but it still ends up requiring two extra method calls to handle a <?before>, when in many cases it's not needed. 16:41
TimToady well, you've got a decent parallel nfa prototype in STD now, thanks to sorear++
pmichaud agreed
and that may obviate the need altogether
let me see if I can quickly get <?before> to at least participate in LTM
that might not be too hard, and would be a win for other <?rule> forms.
16:42 justatheory joined
pmichaud (and yes, it's an open question as to when it's just more efficient to start porting the nfa prototype :-) 16:42
TimToady how efficient the automata will be depends greatly on how fast the primitives are that it is using. STD's isn't a big win, but that's because Perl 5 isn't designed for that kind of noodliness. 16:43
diakopter +++++++++++++++++++++
pmichaud my guess at the moment is that I want to hold on nfa porting until jnthn++ is a little farther along on object metamodel stuff. 16:44
for a variety of reasons
diakopter +
Juerd diakopter?
diakopter sorry
TimToady I believe he is expressing slight agreement :)
jnthn Or owns a cat.
pmichaud either that or trying to get back into his modem's command mode
jnthn :-)
diakopter '+' was evening out the prior msg
pmichaud that's not what my wife usually means by "evening out" :-P 16:45
jnthn pmichaud: Is there anything specific you want to know along those lines?
pmichaud jnthn: no, not really.
I'm just waiting to see how it turns out. 16:46
jnthn pmichaud: As my prototype comes along I get increasingly concrete ideas. :-)
OK. :-)
pmichaud I know that a lot of PGE (and nqp) design was driven somewhat by knowledge of Parrot's underlying model; I expect this may end up being the same.
PerlJam jnthn: does your head get heavier and heavier?
jnthn pmichaud: I'm still pondering the Parrot mapping of this stuff.
PerlJam: Yes, but I drink lots of beer, which makes the rest of me heavier and makes sure I stay well balanced. 16:47
[particle] ++
pmichaud ...you're saying the beer doesn't go to your head? ;-)
[particle] all the dead brain cells make room for more concrete
jnthn pmichaud: Well...not immediately. :-)
pmichaud: What I've got so far is essentially a small core and everything else defined in a kind of "setting". 16:48
pmichaud jnthn: that sounds like what we want :) 16:49
jnthn pmichaud: Where "everything" is "really not a lot yet" :-)
github.com/jnthn/6model/blob/master...Setting.pm is what I have so far.
pmichaud: The various reprs there just know how to store a single natively typed value. So those are essentially describing the boxed forms of int/str/num. 16:50
moritz_ backs
erm, back :-)
jnthn moritz_: who are you backing? :-)
PerlJam jnthn: what does the knowhow declarator imply? 16:51
jnthn PerlJam: It's a "pure prototype"
PerlJam: It's also where the meta-model bottoms out.
16:51 pmurias left
jnthn e.g. that's where we tie the "can introspect everything" knot. 16:52
A pure prototype knows rather little.
TimToady except for knowing all the methods named .perl :P
jnthn It can dispatch methods and have attributes.
But that's about it.
What I'm working towards is defining ClassHOW in there. Once we have that, we can haz exciting things like inheritance. :-) 16:53
16:53 pmurias joined
jnthn It means that just the knowhow and reprs need to be ported though. 16:54
16:54 justatheory left, charan left 16:57 isBEKaml joined
mathw has done some bits of release prep, and hopes to not run out of time finishing off tomorrow, get those patches in! 16:57
pmichaud we likely need to update ChangeLog and the release announcement 16:58
oh!
mathw yes
which I've been lookin gat
might've missed some things
pmichaud nm... I think I did commit the release announcement draft
mathw yes
pmichaud lately I've been forgetting 'git push' :-)
mathw lol 16:59
is it better than th eone that I've just been trying to finish?
pmichaud mathw: just a reminder that we plan to only announce tomorrow's release to perl6-comiler
*perl6-compiler
mathw yes I saw
TimToady what, you don't want to confuse the market? :) 17:00
17:00 envi^home left
jnthn No, just the meercat. 17:00
pmichaud TimToady: our market is confused enough already, I fear. So are the product marketers. And the product engineers. :-) 17:01
mathw pmichaud: have I got commit access yet?
pmichaud mathw: github id?
mathw mathw
17:01 dakkar left
pmichaud until I get a cla, the commit access will be temporary for the release :) 17:01
mathw yup 17:02
I'll sort it out... whenever I remember to
there ar esome instructions for that somewhere I believe
17:02 alester left
pmichaud they're out of date, I think. 17:02
dalek ok: 84be67a | moritz++ | src/images/cover.jpg:
[cover] correct masak's last name
pmichaud mathw: you're now a committer for the rakudo repo 17:03
mathw thanks
I will confine my activities purely to the release
pmichaud wfm
mathw unfortunately I lack the ability to go in and fix all the bugs with a gentle sprinkling of code 17:04
after the way today's gone I'd just introduce more :(
so I shall now go and spend the evening being very silly with friends, which should cheer me up :)
bye
isBEKaml OHHAI,#perl6! :-) 17:05
17:06 ash_ joined 17:07 thebird left, ash_ left
pugssvn r32047 | lwall++ | [caps.t] old-school cclass warning suppression 17:07
r32048 | lwall++ | [STD] disallow foo:$x form of name extender as too confusing, esp inside quotes, e.g. "$x:$y" 17:09
r32048 | delete xlex field that is redundant with inlex
tylercurtis jnthn: are you going to end up wrapping representations in Perl 6 classes? Will it be possible to write new representations in Perl 6/NQP? 17:14
jnthn representations are "low level"-y things. Those are the place where we really do get down to the VM level. 17:15
tylercurtis: However, it will be possible to write a "forwarder" REPR that knows how to forward to methods on an object.
And then people would write their own in Perl 6. 17:16
But I don't plan on wrapping the current ones in any sense.
tylercurtis is a little relieved that only most of his plans for Bennu would be better implemented as a native backend for Rakudo.
jnthn They're not available as type names.
Well, maybe they're enum-ish
I've gone with strings for now.
17:17 leprevost joined, leprevost left
jnthn We don't need to go looking it up on every object creation, so that's not a big deal. 17:17
17:18 risou_ joined 17:19 macroron joined 17:20 risou left
isBEKaml There was a wonderful discussion with chromatic++ lastnight about rakudo/parrot interaction and porting to other VMs. Too bad I crashed early. :/ 17:22
(backlogging)
pmichaud isBEKaml: that's right.... sleep is not an option here. :-) 17:23
17:28 wamba joined
isBEKaml Then I'll be sure to stay more alive! :) 17:30
17:30 Mowah joined
isBEKaml pmichaud: What I understand from the discussion is, in essence, porting to other VMs is not top priority but making it easy to port to other VMs is. Right? 17:30
17:31 risou_ left
pmichaud isBEKaml: I'm not sure that's exactly right. 17:31
We know that we want Rakudo to eventually run on more than just Parrot as it exists today
pmurias tylercurtis: the paper with object having a message pointer representations seems very similiar to how smop implements things 17:32
pmichaud so, making Rakudo multiplatform is a priority but it's by no means our top priority (or even very close to the top) 17:33
17:33 sftp left
pmurias tylercurtis: look at search.cpan.org/~pmurias/SMOP-0.6/l...1_base.pod 17:33
pmichaud making Rakudo run faster *is* a high priority, though, and exploring other VMs might be a way to make progress on that goal
isBEKaml pmichaud: We all want that. that's why I said "Not top priority". :)
dalek ok: 6d89859 | moritz++ | src/basics.pod:
[basics] grammar nit by wolverian++
isBEKaml pmichaud: Optimisations *is* the need at this time. Porting can wait until we have everything in place to do that. 17:35
s/(Optimisation)s/\1/
pmichaud ...except that porting is really a form of optimization, the way we're approaching it. 17:36
we know that in many ways Rakudo as-it-exists-today is in response to what our platform (Parrot) provides.
isBEKaml right. 17:37
pmichaud by looking at what we would want/need from other platforms, we can determine how we would want to optimize Rakudo when it's multi-platform, and use that to feed into Parrot design/development to make it faster
also, prototyping features on other platforms is proving to be faster than prototyping them on Parrot
isBEKaml then that means porting should be an early goal (should never be left until late)
pmichaud right, porting is an early goal, and atm there are a total of two people working on it, afaik 17:38
so we're making progress, but it's not the majority of our current efforts
isBEKaml so we have an idea what exactly is needed to port to the target platform and drive parrot development towards it.
17:39 jaldhar joined
tylercurtis pmurias: slightly different from P&W in that in P&W, the vtable is before the object, so, if you can allocate sizeof(vtable *) more than you need for an object, you can easily wrap any object from an alternate object system and pretend it's the same by passing around a pointer to just the object data. Whether that actually really provides much benefit I don't know. 17:40
pmichaud I should rephrase that.
Porting is not an early goal, but knowing what we might want/need in order to port is.
tylercurtis pmurias: I'll look at it some more in a bit.
pmichaud so, since there's a nice opportunity to test NQP on a different backend while also redesigning a core object metamodel (for Parrot), we're taking advantage of that opportunity. But as yet we've made no decision that says that what we do now will be the basis for porting Rakudo to other platforms. 17:41
(it will be very nice if it is, but that's not something we're committed to yet)
isBEKaml pmichaud: so we concur with the second point I made early on "Making it easy to port to other VMs" though not necessarily top priority, more as a driving force for development.
pmichaud it's a driving force for exploration, I think. 17:42
anyway, we're putting some limited resources towards that end, at any rate.
17:42 sftp joined
dalek kudo: 7f39959 | pmichaud++ | docs/announce/2010.08:
Update release contributors.
17:43
kudo: 72f5b8b | pmichaud++ | src/Perl6/Grammar.pm:
Refactor handling of $*QSIGIL in token variable to avoid 'return ()'.
kudo: e260f09 | pmichaud++ | build/Makefile.in:
Add 'make parsetrace' target for internal profiling/debugging.
isBEKaml pmichaud++ # thanks for taking the time to explain Rakudo's goals atm. 17:45
pmichaud ♥ git. 17:46
Two people who have made my life far simpler and more fun: Larry Wall (Perl, patch, rn) and Linus Torvalds (Linux, git)
17:47 lue left, jaldhar left
pmichaud ...although TimToady is losing points with Perl 6... while definitely more fun, it's also more complicated :-P 17:47
huf you're just saying that because you have to write it ... ;)
pmichaud no, it's an explicit Perl goal 17:48
"Perl exists to torment the implementors on behalf of the users"
I don't remember seeing that mentioned in the original call for pumpkings :-)
17:48 sftp left
isBEKaml I can only hope we don't turn into a bunch of grouchos. :P 17:48
TimToady obviously, it'll be funner later when you can stop implementing and start using.
dalek kudo: 56c8464 | pmichaud++ | docs/ROADMAP:
Move "port to other VMs" to a priority 3 level -- I think priority 2 overstates it a bit.
17:49
pmichaud yeah, when we're finished. :-P
actually, it's funner now. I'm already getting ready to set up a hotkey to open rakudo instead of my calculator :)
rakudo's REPL makes for a much better bc than bc
gist.github.com/535620 # An initial guess at where rakudo spends its time compiling src/gen/core.pm 17:53
now time to do some optimizing :)
17:53 ruoso left
pmichaud well, walk first. then lunch. 17:53
then I should probably go ahead and get Nil fixed.
[particle] obviously whitespace is significant in perl6 17:54
jnthn Wow, ws is a pig. :-)
pmichaud I looked through the ws generated code and found a couple of places where I can improve the codegen
Tene OBVIOUSLY we just need to strip all unnecessary whitespace from the core!!
pmichaud ws is big largely because it's called so often 17:55
jnthn Aye
Heh. We spend more time failing than we do passing.
I guess real LTM will help us with that?
pmichaud maybe
the real cost is the <-quoteescape> in quoted strings. 17:56
jnthn We seem to fail that rule a lot too.
pmichaud right
TimToady LTM in the nibbler might help with that one
moritz_ that's only parsing time, not compilation time, right?
pmichaud well, it includes the time needed to generate PAST 17:57
since that's done as part of the parse
[particle] ww is called a lot, too, while you're looking at ws
pmichaud ww gets called from ws
although it really shouldn't be that slow.
TimToady STD hardwires the ww there
well, it uses before/after
pmichaud STD uses before/after?
(for ww?) 17:58
<ww> in Rakudo/NQP is a handwritten PIR sub
TimToady | \h+ <![\#\s\\]> { @*MEMOS[$¢.pos]<ws> = $startpos; } # common case
| <?before \w> <?after \w> :::
pmichaud ah
in rakudo/nqp, <ww> will definitely be faster.
TimToady it almost always falsifies on the <?before \w> I think 17:59
except between a prefix and an ident 18:00
but yeah, if Cursor actualy defined ww, it might be faster yet 18:01
18:01 mberends joined
TimToady in fact, it never gets to that alternative unless there's a \w, since it's using LTM there 18:01
bbl & 18:03
pmichaud I bet I can improve quote_expr a bit.
18:04 sftp joined, Mowah left
pmichaud afk, walk 18:05
18:06 macroron left, lue joined 18:09 tadzik joined
sorear good * #perl6 18:09
tadzik hello 18:10
18:10 hugme joined, ChanServ sets mode: +v hugme 18:16 Mowah joined 18:18 rgrau left
pyrimidine pmichaud: is <?after> or <!after> implemented in nqp-rx? 18:18
moritz_ it is not 18:21
pyrimidine moritz_: ok, thx. I recall running into this a while back
sorear pmurias: How does mildew use the syml search path + syml output path? 18:23
18:25 molaf left
pmichaud pyrimidine: I can re-implement the slow, cheating form of !after though. 18:25
er, ?after
er <.after>
er... :-)
pyrimidine pmichaud: ok 18:26
it's not pressing, though
s/pressing/a pressing issue/
was looking at trying to implement a few bioinformatics-related grammars, like a GenBank grammar 18:27
18:29 tadzik left
dalek p-rx: d304887 | pmichaud++ | src/Regex/Cursor-builtins.pir:
Add debugging/profiling to <ww> builtin.
18:30
p-rx: 1408049 | pmichaud++ | src/cheats/hll-grammar.pir:
Add debugging/profiling for <EXPR>.
p-rx: f49a206 | pmichaud++ | tools/analyze-parse:
Add analyze-parse, a simple Perl script for summarizing --parsetrace output.
18:32 Mowah left, blogometer left
sorear Juerd: Do you have an alt contact we can use when feather dies and kicks you off IRC? 18:32
TimToady: "meshed" global and private? 18:33
18:34 tadzik joined 18:35 Mowah joined, nimiezko joined
tadzik parrot.org/languages has been a bit cleaned up, didn't it? 18:36
18:38 blogometer joined, djburiedalive joined
sorear caught up 18:39
jnthn pmichaud: It would let us remove a hack in Rakudo's grammar too 18:41
18:42 djburiedalive left 18:43 alester joined 18:47 patrickas left
pugssvn r32049 | sorear++ | [STDeco] Fix whitespace remover 18:50
18:51 tylercurtis left 19:06 cono joined 19:07 HarryS joined
moritz_ TimToady++ # www.perlmonks.org/?node_id=855886 19:14
19:32 tylercurtis joined
[particle] sorear: [email@hidden.address] 19:32
19:32 simcop2387 left
pmichaud my addition: www.perlmonks.org/?node_id=855892 19:33
19:33 simcop2387 joined
PerlJam pmichaud: you don't have a perlmonks account? 19:35
you posted anonymonkly. 19:36
pyrimidine well, at least he left 'Pm' 19:37
pmichaud huh
I *was* logged in when I started.
pyrimidine maybe it's got use.perl-syndrome 19:38
pmichaud because it even said I had 10 votes left today
I was getting various timeouts from perlmonks.org in writing that, though. maybe it lost my login in the process.
ah, my reply to anonymous monk is now "best node of the year" :-) (the previous best dropped off the list :-) 19:40
pugssvn r32050 | kyle++ | perl util/purge-empty-dirs.pl ; svn commit 19:44
19:46 wamba left 19:49 hercynium left 19:59 Italian_Plumber left
pugssvn r32051 | sorear++ | [STDeco] Run builds of required submodules in the same process. No more $^X hacks, no more depending on an installed Perl, no more depending on the ability to write to %INC. 20:07
20:11 Italian_Plumber joined, jferrero left 20:14 Italian_Plumber left, patrickas joined
patrickas rakudo: say ('a' | 1 ~~ Str) 20:15
p6eval rakudo 56c846: OUTPUT«0␤»
patrickas rakudo: say ( any('a' , 1) ~~ Str)
p6eval rakudo 56c846: OUTPUT«0␤»
patrickas am I doing something wrong or is it a bug ?
pmichaud rakudo: say 'a' ~~ Str 20:16
p6eval rakudo 56c846: OUTPUT«1␤»
pmichaud rakudo say ('a'|1) ~~ Str
rakudo: say ('a'|1) ~~ Str
p6eval rakudo 56c846: OUTPUT«0␤»
pmichaud rakudo: say ('a'|'b') ~~ Str
p6eval rakudo 56c846: OUTPUT«0␤»
pmichaud looks like it might be a bug.
rakudo: say Str.ACCEPTS('a'|1) 20:17
p6eval rakudo 56c846: OUTPUT«0␤»
pmichaud oh
well, Str doesn't ACCEPT a junction
and I'm not sure it should autothread there.
jnthn It shouldn't.
Otherwise you break type checking.
And that would be sad. 20:18
:-)
pmichaud so how would one check to see if a junction does Str, ooc?
(if an element of a junction does ... )
jnthn Oh...hm 20:19
.does probably is on the Junction too, but maybe not.
Of course, you can write a sub junc_accepts($item, $what) { $item ~~ $what } 20:22
Or along those lines.
patrickas I'll go back to $a ~~ Str || $b ~~ Str ... berk!
20:25 djburiedalive joined
TimToady whoops, missed the phone call, if there was one... 20:32
pmichaud still is one
(I was 20 mins late myself)
pmurias tylercurtis: in smop the RI pointer is before the data 20:35
tylercurtis pmurias: By "before the data" I mean, that your pointer to an object is always to the data of the object, and to get to the vtable, you have to do negative indexing from that pointer. 20:36
pmurias that shouldn't make a difference for anything 20:38
20:38 pyrimidine left
tylercurtis Like I said, I'm doubtful of its usefulness. 20:38
pmurias the other difference is that SMOP has stuff for reference counting in the RI 20:39
and a DUMP entry for debugging
DUM 20:41
gfldex std: class A { method foo(){}; }; say A.^can('foo') == A.^can('foo'); 20:42
p6eval std 32051: OUTPUT«ok 00:02 116m␤»
20:43 perlygatekeeper left 20:44 Mowah left
tylercurtis Another apparent difference is that the method dispatch doesn't appear to ever be looked up as a normal method in SMOP, which does certainly seem like it should simplify bootstrapping. 20:45
20:46 djburiedalive left 20:54 justatheory joined, kuzuha_ joined 20:57 isBEKaml_ joined, dwiereng1 joined, krunen_ joined, imarcust1is joined, hsb_ joined 20:58 simcop2387 left, blogometer left, isBEKaml left, blogometer joined, flatwhatson joined, larsen joined 20:59 simcop2387 joined, shade_ joined
pmurias tylercurtis: normal method you mean looked up in a vtable? 21:00
pmurias reboots 21:01
21:01 pmurias left, foodoo left 21:03 pmurias joined
tylercurtis pmurias: Well, SMOP's MESSAGE function is looked up. But in P&W, message dispatch, unless the message is "lookup" and the receiver's vtable is the vtable vtable, works by sending the lookup message to the receiver's vtable to get the function pointer for the method, then calling that method with the receiver and the arguments. 21:05
pmurias what's the difference? 21:07
21:07 achromic joined
pmurias if i used something different from a vtable as a vtable, a method call would use lookup on the object? 21:08
21:09 blogometer left, justatheory left, Guest23195 left
pmurias tylercurtis: could you remind me what's the link to the P&W paper? 21:09
tylercurtis piumarta.com/software/cola/objmodel2.pdf 21:10
21:11 NOTevil joined 21:13 whiteknight joined
tylercurtis Well, SMOP's dispatch(ignoring casts) is basically obj->MESSAGE(interp, obj, ident, capture). P&W's is (ident == s_lookup && obj->vt[-1] == vtable_vt) ? vtable_lookup(obj, arg) : send(obj->vt[-1], s_lookup, ident)(obj, arg1, arg2, ... argn) 21:14
pmurias any reason's why P&W is better? 21:17
tylercurtis Not really. The P&W dispatching seems like it allows a subset of the behavior SMOP's dispatching allows. 21:18
dalek p-rx: aa0e12b | pmichaud++ | src/cheats/hll-grammar.pir:
Add debugging/profiling to quote_EXPR.
21:24
p-rx: e0d2bec | pmichaud++ | src/PAST/Compiler-Regex.pir:
Optimize quantified+ratcheted character lists a bit, such as \h* and \v+ .
p-rx: a56f707 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap files.
21:25 blogometer joined 21:26 jferrero joined 21:31 simcop2387 left 21:33 masak joined
masak lol ahoj 21:33
21:33 simcop2387 joined
mathw hi 21:33
masak I'm spent. what about you, #perl6? 21:34
mathw Mi estas laca 21:35
masak :)
我很累
mathw mi tatpi lo nu klama lo zdani be mi 21:36
:P
masak you've got to be kidding me.
look, 'tired' is not that difficult a concept. 21:37
mathw no I put more detail in that
masak oh good.
phew.
mathw 'mi tatpi' would have sufficed
'lo nu klama lo zdani be mi' is the event of travelling to the home of me
masak how does the event relate to the 'mi tatpi' part? 21:38
mathw that slot of tatpi is the cause of the tiredness
jnthn ...which language? :_)
mathw jnthn: lojban
it's completely useless, and lots of fun
well, not completely useless, I'm working on a story in which a crazy computer does a lot of babbling in it
jnthn Was gonna say. That doesn't look like Esperanto...
masak jnthn: it's the one I told you about.
mathw saves having to make up my own language
masak jnthn: the one with lots of positionals. 21:39
mathw it's *all* positionals
jnthn Yes, I'm just not used to seeing it. :-)
masak it's quite well-sounding, at least in my head.
mathw prolog for artificial language geeks
masak but I don't plan to learn it anytime soon.
mathw yeah sometimes I say things out loud and I'm surprised how plausible it sounds 21:40
anyway
I also need to put a bit more effor tinto my Esperanto
patrickas rakudo: say ( 'z'.ord - 'A'.ord + 1 ) 21:41
p6eval rakudo 56c846: OUTPUT«58␤»
patrickas rakudo: say ('A' ... 'z').elems
p6eval rakudo 56c846: OUTPUT«58␤»
mathw Mi estas laca ĉar mi iris mian domon?
masak that's correct, I think.
mathw looks okay to me
masak not idiomatic, but correct.
"Mi estas laca, ĉar mi iris hejmen." 21:42
patrickas rakudo: say 'Z'.succ
p6eval rakudo 56c846: OUTPUT«AA␤»
masak unless you really meant to say 'house' and not 'home', 'hejmen' is better.
mathw masak: oh I've fallen over that one before. Sigh.
21:45 achromic left
masak std: my $1 21:48
p6eval std 32051: OUTPUT«===SORRY!===␤Can't declare a numeric variable at /tmp/exQhHR4Ui2 line 1:␤------> my $1⏏<EOL>␤Parse failed␤FAILED 00:01 112m␤»
jnthn masak: Google is ETOOHELPFUL when googling for hejmen...
pugssvn r32052 | sorear++ | [STDeco] Manage the syml-cache using File::Spec, don't try to build paths by hand 21:49
jnthn masak: On the upside, I did find a sound file showing me how to pronounce it. :-)
masak: (Which is turns out is as I'd guessed. :-))
mathw must remember to hear it in his head in Esperanto rather than in Lojban
masak jnthn: it's easy -- it's pronounced just like it sounds. :P
jnthn :P
masak also the spelling is easy. things are written just as they are spelled. 21:50
it's ingenious, if you ask me.
only an eye doctor could dream up such a scheme.
21:51 Holy_Cow left 21:52 tylercurtis left 21:56 nimiezko left
masak 'night, #perl6 22:02
sorear night masak!
22:02 masak left
avar d/w 21 22:05
22:06 mulander left, amkrankruleuen left 22:13 achromic joined
pugssvn r32053 | sorear++ | [viv] Add an option to select syml cache root 22:16
22:21 Grrrr left
dukeleto perl6: { grammar Bob { regex TOP { \d+ } }; grammar Bob { regex TOP { \s+ } } 22:25
p6eval pugs: OUTPUT«*** ␤ Unexpected end of input␤ expecting "}"␤ at /tmp/etcdykbfqG line 2, column 1␤»
..rakudo 56c846: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'Bob'␤»
dukeleto is that a bug in Rakudo? 22:26
shouldn't the first Bob grammar only exist within the lexical scope it lives in ?
sorear no
dukeleto it seems like grammars are global, and that doesn't seem quite right to my feeble brain 22:27
sorear packages default to our scope
you can say my grammar if you want
dukeleto sorear: it still happens with subs
perl6: sub { grammar Bob { regex TOP { \d+ } }; grammar Bob { regex TOP { \s+ } }
p6eval rakudo 56c846: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'Bob'␤»
..pugs: OUTPUT«*** ␤ Unexpected end of input␤ expecting "}"␤ at /tmp/r5b95IrJTV line 2, column 1␤»
sorear dukeleto: grammars default to our scope
dukeleto sorear: my grammar is very useful, thanks
sorear: good to know, thanks!
sorear putting something in a sub doesn't change that
dukeleto sorear: thank you for the edification 22:29
22:29 tylercurtis joined
dukeleto sorear: do you know if there are tests that verify that in the spec suite? 22:30
22:30 Grrrr joined, jferrero left 22:37 blogometer left 22:43 pmurias left 22:45 justatheory joined 22:47 dwiereng1 left
pugssvn r32054 | sorear++ | [STDeco] Convert Makefile to use ExtUtils::Command and not depend on POSIX utilities 22:51
22:54 justatheory left
Juerd sorear: See juerd.nl for several ways to contact me. 22:54
22:56 tadzik left
dalek ecza: 44a4616 | sorear++ | / (4 files):
Track STD 31914 -> 32053
23:00
gfldex std: class Foo { multi method bar(){}; }; use MONKEY_TYPING; augment class Foo { multi method bar(Str $s){say $s}; }; 23:02
p6eval std 32054: OUTPUT«Compiled lib/MONKEY_TYPING.pm6␤ok 00:02 120m␤»
gfldex rakudo: class Foo { multi method bar(){}; }; use MONKEY_TYPING; augment class Foo { multi method bar(Str $s){say $s}; }; 23:03
p6eval rakudo 56c846: OUTPUT«===SORRY!===␤A method named 'bar' already exists in class 'Foo'. It may have been supplied by a role.␤»
23:04 lest_away is now known as lestrrat 23:07 blogometer joined, hercynium joined 23:09 patrickas left 23:11 azert0x joined
pugssvn r32055 | sorear++ | [STDeco] Don't use a separate stamp, since dmake chokes on dot files 23:14
r32055 | Move the space stripper out to tools/compact_pmc to avoid quoting complexities
diakopter trying dmake snap 23:19
heh; no `svn` found; fixing. 23:20
sjohnson yo dia long time no see 23:21
diakopter yo 23:22
23:22 _madmax_ joined
sorear diakopter: dmake snap won't work since there's no ExtUtils::Command for cp -r 23:27
and snap wants to copy all of lib/
diakopter: plain dmake succeeds in r32055? 23:28
diakopter it got to ok USER PID CORE.setting
so I guess so, yeah
sorear the first or second time?
diakopter er
I think you're asking ... yes 23:29
second
23:29 justatheory joined
sorear wonderful. 23:29
diakopter sorear: you could bundle a snapshot of File::Copy::Recursive 23:31
it's not that huge
23:34 meppl left 23:37 justatheory left 23:41 ruoso joined 23:43 s_mosher joined 23:46 hsb_ is now known as hsb 23:52 tbourdon_ joined, cozmic joined, intenz joined
s_mosher rakudo: my @x = ( for <a|b|c d|e|f> { <1 2 3> Z=> .split('|') } ) ; +@x; 23:54
p6eval rakudo 56c846: ( no output )
23:55 intenz left
s_mosher rakudo: my @x = ( for <a|b|c d|e|f> { <1 2 3> Z=> .split('|') } ) ; say +@x; 23:55
p6eval rakudo 56c846: OUTPUT«6␤»
s_mosher Is that right? I was expecting 2. Or do I misunderstand the context w.r.t. auto-flattening? 23:56
TimToady it would be 2 in slice context
but this isn't that
sorear assigning to an array always autoflattens
TimToady (and rakudo doesn't do slice context yet)
s_mosher see I'm not clear on identifying contexts yet 23:57
does the context from assignment really propagate deep into the for? 23:58
TimToady no, the two parcels come out and decide lazily at the time they are bound or assigned
s_mosher ah 23:59
that makes more sense
is there something less ugly than:
rakudo: my @x = ( for <a|b|c d|e|f> { $(<1 2 3> Z=> .split('|')) } ) ; say +@x;
p6eval rakudo 56c846: OUTPUT«2␤»