Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-08-18

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 Psyche^ joined #perl6
00:07 daemon joined #perl6
00:11 sorear interesting that Pm no longer uses feathe
00:12 Tene How is that interesting?
00:13 sorear it means people don't tend to trust feather anymore
00:14 sorear the person who theoretically is supposed to be available to manage feather, uses it for IRC
00:14 sorear so I can't even use proper channels to complain
00:15 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 Tene Juerd using IRC on feather is a problem, however.
00:18 sorear TimToady: What's the right way to handle Any.WHICH in a compacting environment?
00:20 TimToady compacting?
00:20 TimToady are you asking for a small serializable repr for type objects?
00:21 sorear no
00:21 sorear I mean that Mono is allowed to move objects at any time for any reason
00:22 sorear so an (address space, address) pair is unsuitable
00:22 TimToady then (symbol-generator-space, symbol) will have to do, I imagine
00:23 TimToady or (unlikely-to-collide-type-space, unique-derivable-value)
00:24 TimToady which is the spirit of the ObjAt type, even if "at" is meaningless
00:25 TimToady even a sufficiently large, sufficiently random number is usually good enough for an identity
00:26 pmichaud_ I still use feather -- my connection to feather died.
00:26 pmichaud_ in the middle of the conversation.
00:26 pmichaud_ so I had to connect with a different client.
00:27 pmichaud_ (my connection to feather is still dead)
00:28 TimToady pugs repo is timing out
00:28 jnthn pmichaud_: Just discovered that some nqp tests use a plan/ok and others don't. :-)
00:28 jnthn pmichaud_: Also, I have 05-comments.t failing with parrot-nqp
00:28 jnthn pmichaud_: Do you get that also?
00:29 jnthn (thought something was screwed up in the cross-compiler, then found I got it on Parrot NQP too...)
00:30 TimToady sorear: of course, value types are immutable and don't care if they get moved, since their .WHICH is their value
00:30 TimToady does Mono not provide any sort of object identity?
00:31 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 cotto_work joined #perl6
00:31 ruoso joined #perl6
00:31 wolverian for a moment I thought I was missing a lot of tests. :)
00:32 sorear TimToady: it provides a reference equality operator and a reference -> int32 hash code function
00:33 TimToady hmm, 32 bits seems a bit skimpy
00:33 sorear you think hash tables with >4G buckets are going to be important soon?
00:34 sorear 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
00:35 TimToady don't care about numeric, only unique
00:36 TimToady or unique enough
00:37 TimToady and performance, if you use a symbol generator, it's a multi-thread bottleneck
00:37 TimToady in such a case, random numbers may be more performant
00:37 TimToady assuming enough available multi-threaded entropy, of course
00:38 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
00:39 sorear if not, then I think the sane thing to do is to use lazy symbol generation
00:39 sorear the first time WHICH is called on an object, create an ObjAt object and bind it to the object
00:39 sorear perhaps using weak references so that the ObjAt can be collected
00:41 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"
00:42 pmichaud_ jnthn: 05-comments.t passes for me, last I checked.
00:42 * pmichaud_ checks.
00:42 sorear to which I realize... I don't know
00:42 pmichaud_ yes, it passes for me.
00:43 jnthn pmichaud_: OK, I'll try and fathom what's going on.
00:43 jnthn pmichaud_: Thanks.
00:43 pmichaud_ is feather still up?  I seem to be unable to reach it from here.
00:44 TimToady can't see it from here
00:46 pmichaud_ http://twitter.com/TimToady/status/21444365173   # I could never get along with this guy :-)
00:47 jnthn ;-)
00:48 plobsing joined #perl6
00:49 pmichaud_ just converting Nil to be undefined is having some interesting implications for the code :)
00:49 pmichaud_ nothing serious yet, but definitely interesting.
00:49 drbean joined #perl6
00:50 * sorear is vaguely bothered by the current definition of Nil
00:51 sorear 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...
00:51 sorear TimToady: How are .WHICH values compared?
00:51 TimToady eqv or ===, shouldn't matter, since .WHICH is always supposed to return a value type
00:52 sorear How is === defined?
00:52 TimToady $a.WHICH === $b.WHICH  :)
00:52 TimToady or eqv
00:53 TimToady one can see either eqv or === as the more primitive notion...
00:53 sorear 1 === 1 -> 1.WHICH === 1.WHICH -> 1 === 1 -> ...
00:53 TimToady hence the smiley
00:54 sorear How does eqv interact with user-defined types?
00:54 TimToady I tend to think of eqv as more primitive, at least here
00:56 TimToady 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 TimToady of course, a really stupid way to implement eqv would be to serialize both halves and then use eq
00:57 TimToady you're like to do it piecemeal such that it will falsify rapidly without all that work
00:58 TimToady 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...
00:58 TimToady eqv is snapshot equivalence; two objects that are eqv right now might not be in the future
00:59 sorear what is the point of WHERE?
00:59 TimToady no much, just spec the api if it is ever wanted
00:59 TimToady *not much
00:59 TimToady in any case, probably relatively meaningless under NUMA (or compacting GC)
01:00 TimToady === is not snapshot equivalence, but comparing the "essence" of an object that determines its eternal identity
01:00 jnthn ...and before I stay up eternally...goodnight o/ :-)
01:00 TimToady \o
01:01 TimToady so unless you want identity theft, it's better if .WHICH values don't collide accidentally
01:03 TimToady non-serializability of ObjAt is not a problem insofar as the .WHICH of such an object does not participate in eqv
01:04 TimToady since the main point of eqv is to be able to compare objects with different identities
01:08 dalek joined #perl6
01:10 TimToady ohh, featheration
01:10 dalek niecza: b4ad6c2 | sorear++ | /:
01:10 dalek niecza: Resolve lexicals as a separate pass before to_anf
01:10 dalek niecza: review: http://github.com/sorear/niecza/commit/b4ad6c2c41b5c40d5fc389512de52d62cc842296
01:10 dalek niecza: a6dcd31 | sorear++ | /:
01:10 dalek niecza: Add a storage class for ro names like classes
01:10 dalek niecza: review: http://github.com/sorear/niecza/commit/a6dcd3140cd01872dbc03c7e17fd685723eb36e2
01:10 dalek niecza: 2fa3d4e | sorear++ | /:
01:10 dalek niecza: Handle type objects as true-readonlies
01:10 dalek niecza:
01:10 dalek niecza: -36K testsuite (and 13s -> 9s)
01:10 dalek niecza: review: http://github.com/sorear/niecza/commit/2fa3d4e3e96e70bce4afeed7d16760ae2dac9893
01:10 dalek niecza: c766146 | sorear++ | /:
01:10 dalek niecza: Handle named subs as readonlies
01:10 dalek niecza:
01:10 dalek niecza: -20K testsuite
01:10 dalek niecza: review: http://github.com/sorear/niecza/commit/c766146e11414d716ac35c3526d399cde5bacc44
01:10 pmichaud joined #perl6
01:10 dukeleto joined #perl6
01:11 PerlJam joined #perl6
01:11 Util joined #perl6
01:12 dalek joined #perl6
01:12 Infinoid joined #perl6
01:13 pugssvn joined #perl6
01:15 redicaps joined #perl6
01:15 Juerd joined #perl6
01:19 pugssvn r32028 | lwall++ | [STD] add clone as reasonable method to use .= on
01:35 _madmax_ joined #perl6
01:39 ShaneC joined #perl6
01:47 ash_ joined #perl6
01:56 justatheory joined #perl6
01:59 justatheory joined #perl6
02:00 drbean joined #perl6
02:09 dalek nqp-rx: a528b79 | pmichaud++ | build/PARROT_REVISION:
02:09 dalek nqp-rx: Bump PARROT_REVISION to 2.7.0 release.
02:09 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a528b79a3d6c29fff335547af5c57a8bcba5d66b
02:10 alc joined #perl6
02:11 dalek rakudo: 67778a6 | pmichaud++ | build/PARROT_REVISION:
02:11 dalek rakudo: Bump PARROT_REVISION to Parrot 2.7.0 release, freeze until Rakudo release.
02:11 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/67778a6944dd250c341f701e5e44ea91d10a998a
02:12 rcfox I'm having some trouble with a grammar.
02:12 rcfox http://gist.github.com/533111
02:13 rcfox I'm trying to parse sentences based on the lexical categories of the words.
02:13 rcfox Some words might be a noun in some case, or a verb in other cases, etc.
02:13 sorear you're aware rules don't backtrack, right?
02:13 rcfox :\
02:13 rcfox I am not.
02:14 rcfox How does STD work then?
02:14 sorear when you say rule you are giving an explicit instruction to turn off backtracking
02:14 sorear the basic form is "regex"
02:14 rcfox Oh.
02:15 rcfox I thought they were the same thing.
02:16 rcfox And that fixed it.
02:16 rcfox Thanks!
02:31 rcfox Hm, so pinging Wordnet for every word that I haven't recorded a lexical category for seems to be a bad idea.
02:32 rcfox 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);
02:32 p6eval pugs: OUTPUT«*** No compatible multi variant found: "&foo"␤    at /tmp/joV6FWb8zg line 1, column 62-75␤»
02:32 p6eval ..rakudo 037f68: OUTPUT«5␤»
02:40 alc joined #perl6
02:44 Eevee joined #perl6
02:55 dalek nqp-rx: 8b38129 | pmichaud++ | src/ (4 files):
02:55 dalek nqp-rx: Refactor cursor_debug output a bit to allow some simple profiling.
02:55 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/8b3812939b1196b7ba80565c6bacafd5b490aadd
02:58 japhb joined #perl6
02:58 rcfox In case anyone's interested, here's my English parser: http://github.com/rcfox/Perl-6-English-Parser
02:59 tylercurtis joined #perl6
03:02 nperez rcfox, how successful is it?
03:02 nperez If I split an infinitive will it gripe? :)
03:02 rcfox nperez: I haven't thrown a whole lot at it yet.
03:02 rcfox http://github.com/rcfox/Perl-6-English-Parser/blob/master/t/01-basics.t
03:03 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
03:03 nperez fancy
03:03 rcfox But it does figure out which version of the words to use based on context though.
03:03 rcfox ie: 'dog' can be a noun or a verb.
03:04 Holy_Cow joined #perl6
03:04 nperez that's slick
03:04 rcfox The problem with looking up the words on WordNet is that it's really slow.
03:05 molaf joined #perl6
03:05 nperez Maybe cache a database?
03:05 rcfox Yeah, I'm planning to do that.
03:06 sorear I can't help but think Perl6 grammars are the wrong tool for the job
03:09 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 rcfox I don't expect to parse every conceivable sentence with it. It's just a toy. :P
03:10 drbean joined #perl6
03:11 ingy rcfox: have a look at pegex
03:11 sorear have a look at marpa too ;)
03:11 ingy super fast adaptation of p6r for other langs
03:12 rcfox "MARPA is the non-profit trade association that represents the Parts Manufacturer Approval (PMA) community."
03:12 ingy yeah, what's marpa?
03:13 sorear #10
03:13 sorear http://search.cpan.org/dist/Marpa/
03:15 ingy i wonder if marpa has a test suite I can borrow...
03:16 rcfox I've used this before: http://search.cpan.org/perldoc?Parse::Yapp
03:28 leprevost joined #perl6
03:34 estrabd joined #perl6
03:59 dalek niecza: 1ad3b55 | sorear++ | / (3 files):
03:59 dalek niecza: Binder support for named parameters
03:59 dalek niecza: review: http://github.com/sorear/niecza/commit/1ad3b55cfb5c54f193a006d821388636885ae5e6
03:59 dalek niecza: a5cebf1 | sorear++ | Niecza/Actions.pm:
03:59 dalek niecza: Implement parsing of named parameters
03:59 dalek niecza: review: http://github.com/sorear/niecza/commit/a5cebf10dd812432c3aaa6e4c2327f486a80153d
03:59 dalek niecza: 055d9ad | sorear++ | / (3 files):
03:59 dalek niecza: Codegen support for named and flat arguments
03:59 dalek niecza: review: http://github.com/sorear/niecza/commit/055d9ad19fc3b0c9d2c3a34b7b2b4087eb7f5cce
03:59 sorear Infinoid++ 2 second response time, wow
04:01 agentzh joined #perl6
04:04 am0c joined #perl6
04:07 jhuni joined #perl6
04:08 rgrau__ joined #perl6
04:24 am0c joined #perl6
05:18 alc joined #perl6
05:19 drbean joined #perl6
05:26 lue joined #perl6
05:28 Guest23195 joined #perl6
05:38 dalek niecza: 5eb127a | sorear++ | / (4 files):
05:38 dalek niecza: Implement named arguments
05:38 dalek niecza: review: http://github.com/sorear/niecza/commit/5eb127af3d7d60f28335d422658354926527bbaf
05:39 rcfox Does longest-token matching work?
05:39 rcfox In Rakudo, that is.
05:41 sorear No.
05:50 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 sorear For the purposes of STD's orientation code
05:53 wtw joined #perl6
05:55 sorear in particular, I think that $INC{'STD/CursorBase.pm'} will always return a native path
06:00 Italian_Plumber joined #perl6
06:09 pugssvn r32029 | sorear++ | [CursorBase] Find uniprops more robustly
06:09 pugssvn r32029 | No longer depends on $PERL6LIB or any other environment variable; simply
06:09 pugssvn r32029 | relies on the file being alongside an uninstalled CursorBase.pmc or in
06:09 pugssvn r32029 | the File::ShareDir otherwise.
06:23 uniejo joined #perl6
06:39 jfried joined #perl6
06:41 masak joined #perl6
06:41 masak oh hai, #perl6!
06:42 masak rakudo: subset Foo of Mu where Str | Int; my $foo = Foo.new; say $foo.WHAT
06:42 p6eval rakudo 67778a: OUTPUT«Mu()␤»
06:43 moritz_ good morning
06:44 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␤»
06:45 masak tylercurtis: aye, that's part of the problem.
06:46 masak tylercurtis: or at least a symptom.
06:46 masak I don't think subset types should be instantiable.
06:51 masak jnthn: I'd argue that one can't actually polish things 'shiniLY'. that's one reason we have both adjectives and adverbs. :P
06:52 sorear hi masak!
06:53 masak o/
06:53 sorear TimToady: what considerations do I need to consider when redoing syml/ ?
06:53 simcop2387 joined #perl6
06:54 * 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:05 Tene joined #perl6
07:06 * tylercurtis is also opposed to subset types being instantiable.
07:07 tylercurtis Good night, #perl6.
07:07 sorear good night
07:07 sorear The main choices I see are:
07:07 sorear * .syml files live alongside .pm files
07:07 sorear * There is one syml database in each @*PERL6LIB root
07:08 sorear * There is one global syml database which STD can find (perhaps in $HOME/.perl6/std)
07:08 foodoo joined #perl6
07:16 TiMBuS http://code.google.com/p/gerrit/ has anyone seen or tried this?
07:18 TiMBuS a few people are migrating to it from github because it works better than pull requests
07:26 [particle] joined #perl6
07:27 nadim_ joined #perl6
07:31 nadim_ moring, is there a method (by which I mean an URL with an example) that shows how to globally override .perl?
07:33 nadim_ I, and I guess other Dat::Dump* authors, want to port a dumper module to p6
07:34 Tene nadim_: Please don't do that.
07:34 rcfox http://perlcabal.org/syn/S12.html#Open_vs_Closed_Classes
07:35 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 Tene There's no need to take your dumping function and stomp all over other classes.
07:35 nadim_ Tene: please is polite and nice but not a reason. and yes there are reasons
07:36 Tene erm, what?  What are your reasons?
07:36 moritz_ you can't globally override methods, because they are defined in many different places
07:37 nadim_ Tene: I'd ask what's the reason not to do it then
07:37 nadim_ moritz_: this is going to send us back to the time where we couldn't override some core function in p5. bad!
07:38 Tene nadim_: because .perl already means something.  If you're wanting to do something else, call it something else.
07:39 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?
07:40 mathw Good morning
07:40 nadim_ morning
07:41 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.
07:41 Tene I don't see how those two are tied together at all?
07:41 nadim_ Tene: that was a valid example or it could be that I want the format to be different
07:42 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
07:42 Tene You do not need to stomp on all uses of .perl just to write a function that serializes.
07: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
07:44 nadim_ in anycase, this is more about the possibility to override core functionality (as much as possible)
07:44 nadim_ I'd be hard pressed to find a single p5 dev that never wanted to override print
07:46 nadim_ I'd rather see an universal, clean, method than a proliferation of hacks
07:47 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.
07:48 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?
07:48 Tene rakudo: Array.WHAT.^methods.perl.say
07:48 p6eval rakudo 67778a: OUTPUT«[{ ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ...
07:48 p6eval ..}, { …
07:49 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,
07:49 p6eval ..acosh…
07:49 Tene Oh, that's not helpful. :P
07:49 Tene rakudo: Array.WHAT.^methods(:local).join(', ').say
07:49 p6eval rakudo 67778a: OUTPUT«at_pos, splice, new, perl, delete␤»
07:49 Tene Also not helpful.
07:49 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.
07:50 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.
07:50 sorear nadim_: eval $x.perl === $x
07:50 mathw Tene: as long as it does, does it matter which exact one it is?
07:50 Tene mathw: not as far as I can tell from the specs.
07:51 sorear nadim_: if you want to break Perl, you certainly can; augment class Mu { method perl() { ... } }
07:51 sorear but I *strongly* recommend using a different name
07:51 sorear .perl is taken
07:51 sorear you wouldn't call a new arithmetic operator +
07:52 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
07:53 nadim_ 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 nadim_ and temporary
07:54 nadim_ 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?
07:54 Tene If you *really* want it in the method 'perl', I'd suggest adding multi variants to the method.
07:55 Tene 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
07:55 nadim_ Tene: I have nothing agains using a function. I just want to know how I can override .perl would it be necessary
07:55 Tene Then call .perl(:lang<json>)
07:55 sorear nadim_: I already told you.
07:55 rcfox nadim_: http://perlcabal.org/syn/S12.html#Open_vs_Closed_Classes
07:55 sorear Tene: that's spelled .json
07:56 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
07:57 rcfox .perl *means* give me Perl code for this.
07:57 sorear .deparse(:lang<json>) I could go along with
07:57 Tene sorear: Sure.  Like I said, I agree.
07:58 Tene Huh.  No instances of 'add_method' in the specs.
07:59 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.
07:59 sorear Not ours.
07:59 Tene nadim_: We're just making sure you understand what you're breaking, exactly. :)
07:59 nadim_ The one thing that defines our community is that we don't want someone to hold your hand all the time.
08:00 rcfox nadim_: Listen!
08:00 Tene nadim_: We've answered your question more than once, I thought?  What is still unanswered?
08:00 rcfox We're telling you you can break Perl.
08:02 moritz_ btw I don't see why a dumper needs to be a method
08:02 [particle] joined #perl6
08:02 moritz_ you can do the same with multi subs equally fine
08:02 jhuni joined #perl6
08:02 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 mmmpork joined #perl6
08:03 moritz_ and have the benefit of not needing to introduce methods to everybody's objects, just in the namespace you import into
08:03 alc joined #perl6
08:03 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
08:03 sorear nadim_: I apologize for the popular reaction here; I for one beleive rope is a great thing to share
08:03 Grrrr joined #perl6
08:03 drbean joined #perl6
08:04 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?
08:05 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.
08:07 sorear Heh.  S29:798 is completely wrong
08:07 moritz_ not surprising for S29
08:07 sorear it calls .perl the replacement for perl5 CORE::dump
08:08 nadim_ hehe!
08:08 Tene heh
08:08 moritz_ std: my $1
08:08 p6eval std 32029: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't declare a numeric variable at /tmp/vYcoWRBLB2 line 1:␤------> [32mmy $1[33m⏏[31m<EOL>[0m␤Parse failed␤FAILED 00:01 112m␤»
08:09 thebird joined #perl6
08:11 pugssvn r32030 | sorear++ | [S29] An entry for CORE::dump's *actual* purpose
08:13 nadim_ anyone having a link to the haskell/pretty discussion (was it here or via mail?) I can't seem to find it.
08:14 moritz_ we had a discussion in here some days ago, in the context of dumping match objects
08:15 Grrrr joined #perl6
08:17 sorear nadim_: it was on one of the haskell lists, long ago
08:17 sorear 2-3 years
08:17 sorear not a perl6 forum
08:17 nadim_ ah, a few days ago or 2-3 years ago?
08:17 sorear not less than 6mo
08:17 sorear not more than 4y
08:17 moritz_ turns out we were talking about different things :-)
08:18 sorear Haskell has a deparser interface, Show
08:18 sorear 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
08:18 nadim_ I agree
08:19 mathw Show is mostly useful for debugging
08:19 mathw I always thought
08:20 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 #perl6
08:28 pugssvn r32031 | sorear++ | [S02] Split .pretty's role off from .perl, includes a lot of conjectural ideas for .pretty functionality
08:29 uniejo joined #perl6
08:29 azawawi joined #perl6
08:29 azawawi hi
08:29 phenny azawawi: 17 Aug 19:34Z <sorear> tell azawawi make dist should probably be retired
08:34 _madmax_ joined #perl6
08:38 sorear azawawi: would you complain if I pulled out make dist entirely?
08:39 azawawi sorear: no problem if you provide me with an alternative :)
08:40 sorear azawawi: http://search.cpan.org/~pmurias/STD-0.05/
08:41 azawawi sorear: will see it. thx
08:41 * azawawi tests it
08:42 dakkar joined #perl6
08:42 autin joined #perl6
08:43 drbean_ joined #perl6
08:45 ash_ joined #perl6
08:46 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 {}"␤»
08:46 nadim_ rakudo: class A {}; class B is A {}; say A.perl;
08:46 p6eval rakudo 67778a: OUTPUT«A␤»
08:47 nadim_ yup we definitely need a .pretty or .show
08:47 sorear mm?
08:47 sorear you wanted to see more?
08:48 nadim_ yes, I am reading about the introspection in S12
08:48 nadim_ but I need to see more without typing too much code (keepin mind that this would be a typical debug session)
08:49 azawawi sorear: STD works perfectly even on win32. I will re-use it. Thanks (pmurias++).
08:51 pugssvn r32032 | sorear++ | [STDeco] Simplify build again, removing quite a few outdated optimizations
08:52 nadim_ sorear: I wonder if information about where roles are coming from are kept somewhere. That is an interresting information piece.
09:06 pugssvn r32033 | sorear++ | [STDeco] Retire make dist and associated Makefile complexity - Dist::Zilla::Plugin::STD does the same job better
09:08 sorear moritz_: what command does 'std: ' use?
09:09 moritz_ http://github.com/moritz/Mu/blob/master/misc/evalbot/evalbot.pl#L188
09:09 moritz_ tryfile
09:09 sorear in a snap?
09:10 moritz_ in a snap
09:10 sorear I see
09:10 * moritz_ should put all the build scripts into svn
09:20 kiffin joined #perl6
09:21 pugssvn r32034 | sorear++ | [STDeco] Move rarely used tools to a subdirectory and kick vill out of src/perl6 entirely.
09:22 moritz_ sorear++ # kennel cleaning
09:25 pugssvn r32035 | moritz++ | [bench] ignore sql data file
09:25 pugssvn r32036 | moritz++ | remove outdated build script
09:26 pugssvn r32037 | sorear++ | [STDeco] Fix snap & snaptest for new build
09:29 pugssvn r32038 | moritz++ | [lib] remove more pugs fossiles
09:31 Infinoid left #perl6
09:36 justatheory joined #perl6
09:37 pugssvn r32039 | moritz++ | [utils] update URL in IRC log fetcher
09:37 pugssvn r32040 | moritz++ | [util] remove more outdated tools
09:40 hexagon06 joined #perl6
09:42 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:43 M_o_C joined #perl6
09:46 pugssvn r32042 | moritz++ | remove empty dirs and parrot_pge_tests, which are maintained elsewhere
09:50 sorear moritz_: Think we could conspire to free Mu from the shackles of svn.pugscode.org?
09:50 sorear std: 2 + 2
09:50 p6eval std 32032: OUTPUT«ok 00:01 114m␤»
09:50 moritz_ sorear: I'd love to
09:51 daxim hopefully, then, with a git conversion worthy the praise of nothingmuch
09:52 moritz_ since the pugs repo has no branches, that's easy
09:53 moritz_ http://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 #perl6
09:53 moritz_ daxim: http://commitbit.pugscode.org/admin/project/Pugs/people
09:54 moritz_ 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
09:55 moritz_ daxim: you don't have a commit bit?
09:55 moritz_ same login as pugs svn
09:55 daxim ah ah
09:55 daxim . o O (what was the damn password)
09:56 moritz_ just grep for pugs in .subversion/auth/
09:56 moritz_ or I can re-send you the password, if you want
09:56 moritz_ anyway, that data comes from an sqlite3 database, to which I also have access
09:56 daxim that helped moritz_++
09:57 daxim anyway, see http://conferences.yapceurope.org/gpw2010/talk/2544
09:58 moritz_ daxim: I didn't attend that talk
09:58 daxim then follow the outline from http://padre.perlide.org/trac/wiki/GitMigration
09:58 moritz_ and I don't see a link to slides or to a video
10:00 meppl joined #perl6
10:01 Italian_Plumber joined #perl6
10:01 moritz_ anyway, there are other questions that need to be answered first
10:01 moritz_ like, if we want to split the repo or not
10:01 moritz_ how to handle handing out commit bits
10:02 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:03 daxim 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
10:04 moritz_ because some of the projects in the pugs repo rely on the spectests being in the same repo
10:04 moritz_ and they would need to have an alternative way of obtaining it first
10:04 masak traditionally, the wonderful thing about the Pugs repo was the liberal handing-out of commitbits. but maybe that time is past.
10:05 moritz_ I don't see why it should.
10:05 daxim svn's model made that necessary, with git people can publish their changes without approval
10:06 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.
10:06 moritz_ anyway, I don't see drawbacks of liberal commit bit policies, even for DCVS
10:06 daxim the linux kernel is doomed, then. shub-internet help us
10:07 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.
10:07 moritz_ for example that there are several people working basically full time on merging stuff for linux
10:07 daxim hey, you guys want to migrate
10:07 masak migrate while keeping the good bits.
10:08 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 moritz_ and their commits get lost, in the sense that nobody knows where to find them
10:09 moritz_ 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 moritz_ and since the number of people feeling responsible for the repo is rather low, that's a dangerous route
10:09 moritz_ I'd rather have everybody feel responsible for the integration
10:16 Grrrr joined #perl6
10:23 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 sorear re. #p5p discussion
10:23 sorear crossposting here in case any rakudodevs want to object
10:23 sorear Perl6 CPAN design for reals
10:24 timbunce joined #perl6
10:24 masak sorear: it's on Wednesday next week, rather than Tuesday as usual?
10:25 sorear masak: #phasers was today, so I looked at my clock.  (it's 3am)
10:25 sorear Alias: sorry, Tue
10:26 masak sorear: doesn't work that way :P
10:30 pugssvn r32043 | sorear++ | [CursorBase] Factor out the syml-cache to one file section
10:33 jnthn afternoon, #perl6
10:35 sorear hello jnthn
10:36 sorear 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.
10:39 masak 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
10:39 masak jnthn: :)
10:52 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:52 sorear :(
10:57 Italian_Plumber joined #perl6
11:08 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.
11:11 masak jnthn: the 'shiny' in 'to polish sth shiny' ought to qualify as a sort of resultative complement, methinks.
11:14 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 #perl6
11:16 sorear std: 2+2
11:16 p6eval std 32044: OUTPUT«ok 00:01 114m␤»
11:17 * sorear out.
11:17 * sorear wants to see pmurias' thoughts before much more anyway
11:17 masak jnthn: not always. cf 'scared stiff', 'elected chairman', 'painted red'.
11:17 sorear phenny: tell pmurias in particular, I'm trying to get some kind of real search path thing going
11:17 phenny sorear: I'll pass that on when pmurias is around.
11:17 arnsholt Those are predicatives to the object, probably, not complements
11:18 jnthn masak: Oh, troo.
11:19 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. ;-)
11:20 masak jnthn: neither 'painted shiny' nor 'painted shinily' are gramatically incorrect. it's just that the latter makes no sense to me.
11:21 masak er, s:g/painted/polished/
11:21 masak good thing moritz_++ implemented the :g adverb :)
11:22 jnthn masak: It made enough sense for you to correct it. :P
11:22 jnthn But yes, it shoulda been an adjective, not an adverb. :-)
11:22 arnsholt Probably because the adverb (like in the second example) often tend to describe the process
11:22 masak right.
11:22 masak 'in a shiny way'.
11:22 arnsholt And I'm not sure what polishing something in a shiny manner is ^^
11:23 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. :-)
11:23 masak clothes with those blue diode lights in them.
11:24 arnsholt But I'm a bit curious why English doesn't use the "polish something shiny" construction
11:24 arnsholt Possibly more restricted use of object predicatives
11:27 masak arnsholt: I think I'd use it without hesitation. I'm not a native speaker, though.
11:27 masak arnsholt: I think it's analogous to 'paint something red'.
11:27 arnsholt Yeah, which is why I'm not sure why the polish version isn't as normal
11:28 jnthn I didn't write it to deliberately be awkward. :-)
11:28 arnsholt Could just be lexical, I suppose
11:28 jnthn It didn't feel weird to me. :-)
11:28 masak arnsholt: that's just a cop-out. :P
11:29 * 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 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" =)
11:30 * masak .oO( base 12... )
11:31 thebird joined #perl6
11:31 masak oh wait :)
11:31 jnthn masak: That sound skinda neat. :-)
11:31 masak no, I can't find such an underlying representation.
11:31 jnthn s/sk/k/
11:32 masak jnthn: it is. that's how I became aware of complements in the first place :)
11:33 arnsholt Yeah, it's a quite sane way to do it
11:33 arnsholt Unlike complex synthetic morphology =)
11:34 rcfox joined #perl6
11:35 Alias sorear: Backl
11:37 pmurias joined #perl6
11:37 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
11:37 Alias It's no wonder I've never been at one of these
11:37 masak :)
11:37 moritz_ I kinda expected en->ch to produce "er rennt schnell" :-)
11:37 Alias I'll be at Microsoft TechEd on the Gold Coast that week
11:38 masak Alias: there's also the option of preposting.
11:38 masak moritz_: ah. no. en->cn, of course.
11:38 * masak is too sloppy with language codes
11:38 moritz_ masak: yes, I figured :-). Still I won't miss an option to make fun of you :-)
11:38 Alias masak: Preposting probably not a good idea
11:39 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
11:39 masak Alias: nod
11:39 codyFendant joined #perl6
11:40 Alias Let me check when I'm "speaking"
11:40 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:41 codyFendant hi
11:41 codyFendant is there any official way to write to the authors of the perl6 book, does anyone know?
11:41 nadim_ Alias: you slacker! do you do anything else but go to conferences?
11:41 Alias nadim_: It was spontaneous
11:42 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"
11:42 Alias nadim_: On the list I saw, Donnie Darko
11:42 nadim_ alright, I'd be spontaneous too
11:42 Alias Also, my HR department is bugging me to stop accumulating leave
11:42 nadim_ among 50 other
11:42 arnsholt codyFendant: Most of them hang out in here I think =)
11:42 Italian_Plumber joined #perl6
11:43 Alias Donnie Darko is one of my top 10 sci fi movies
11:43 Alias And it's hard sci-fi mindfuck'esk
11:43 Alias So not for all audiences
11:43 moritz_ codyFendant: there's #perl6book on freenode
11:43 Alias Don't watch the director's cut
11:43 codyFendant I never thought of Donny D as sci-fi some how.
11:43 moritz_ codyFendant: and the perl6/book project on github has a bug tracker
11:43 Alias It answers too many questions :)
11:43 nadim_ codyFendant: maybe because it is not
11:44 moritz_ codyFendant: and you can also write to perl6-compiler@perl.org, 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"
11:44 codyFendant Hah. The #perl6book channel is not mentioned in the perl 6 book...
11:45 pmurias joined #perl6
11:45 codyFendant So ... if you change two things, that's not sci-fi? Got it. Maximum of one.
11:45 moritz_ codyFendant: it's not *good* sci-fi anymore :-)
11:45 Alias Indeed
11:45 Alias For example
11:45 jnthn .oO( I'd never considered the Perl 6 book to be sci-fi... )
11:45 Alias 1. A giant comet is coming towards the earth
11:45 codyFendant I just changed 1.5 things in my book. Please clarify if it can only be an Int
11:45 masak jnthn: Perl 6: the future. today.
11:46 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 Alias 1. is deep impact
11:46 nadim_ masak: you mean today. today.
11:46 Alias 1 + 2 is that other about the same time
11:46 masak nadim_: doesn't quite have the same ring to it, does it? :)
11:47 masak "Perl 6: today. today". nah.
11:47 codyFendant Deep Impact and ... damn, what was it. With Frodo, and Morgan Freeman.
11:47 nadim_ but is semantically correct
11:47 Alias codyFendant, heh... bruce willis
11:47 jnthn Armageddon had a similar plot. :-)
11:47 Alias That one!
11:47 masak nadim_: well, sometimes you need a bit of semantic umami in there.
11:47 codyFendant A black president! That used to be the signifier of an unimaginable future.
11:47 jnthn It's like "yeah right..." :-)
11:47 nadim_ and both were shit piles
11:47 codyFendant Hollywood did a whole lot of paired movies at that time.
11:47 codyFendant Volcano/Dantes Peak
11:47 Alias nadim_: Deep Impact was ok, just wasn't massively exciting
11:48 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
11:48 Alias Inception is the last movie I can remember that came close
11:48 moritz_ 1. There is this thing called "force", and Jedis that use it. Look ma, we have star wars
11:48 codyFendant Antz/Bugs Life
11:48 codyFendant Truman Show/Ed TV
11:49 codyFendant Dark City/Matrix
11:49 nadim_ OMG, I forgot that perl geeks tend to have poor taste in movies
11:49 moritz_ Alias: I liked it, because it used very few assumptions. Sadly it didn't quite stick to its own assumptions
11:49 moritz_ (inception, that is)
11:49 Alias moritz_, it did indeed bleed around the edges a bit
11:49 Alias But given how ambitious it was, it got as close as I think we're likely to ever see
11:50 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?
11:51 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?
11:51 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)
11:51 phenny pmurias: 11:17Z <sorear> tell pmurias in particular, I'm trying to get some kind of real search path thing going
11:51 Alias I have a friend that's so snobby now I can't recall anything he's liked in 5 years
11:51 nadim_ pmurias++
11:51 codyFendant I was just starting working through it, a couple of small things, like...
11:52 Alias ooo
11:52 Alias District 9
11:52 Alias Changed one thing
11:52 codyFendant They tell you to do $file.get which is the same as <FILE>?
11:52 Alias But it wasn't trying to ALSO be giant blockbuster
11:52 nadim_ Alias: The notebook (because the actress is hawt and talented)
11:52 moritz_ codyFendant: do they?
11:53 codyFendant But then they tell you to continue by using $file.lines
11:53 Alias nadim_: You have to like the movie as well
11:53 Alias And yeah, the notebook was pretty good, as dramas go
11:53 nadim_ Alias: I was good 80% of the time
11:53 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.
11:53 Alias What else
11:53 moritz_ codyFendant: agreed
11:53 nadim_ US movies always self destroy in the last 10 mn
11:54 Alias how so
11:54 Alias The search for the happy ending?
11:54 nadim_ completely crappy endings
11:54 Alias Fight Club?
11:54 * moritz_ liked the ending of Inception
11:54 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.
11:54 codyFendant She's in that.
11:55 Alias moritz_, Inception also a rare movie worth watching twice
11:55 Alias (Unless you saw the trailer, in which case your first time WAS your second time)
11:55 nadim_ http://khemir.net/http_share/movies_top/top_movies.html and I'll stop my noisy.
11:56 Alias This is your favourites, in order?
11:56 nadim_ noisy contribution to this channel
11:56 nadim_ not ordered. you know that is impossible.
11:56 Alias So just your favourites?
11:56 nadim_ yeqp
11:56 nadim_ yeap
11:56 codyFendant Something else about the book. They tell you to split a line on spaces. I accidentally had a space at the end.
11:57 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
11:57 codyFendant Turns out perl6 split doesn't dump trailing fields?
11:57 nadim_ sir, yes sir.
11:57 moritz_ codyFendant: no. The recommended way to do that is to use Str.comb instead
11:57 nadim_ moritz_: there is no charset in the page
11:57 Alias nadim_: So basically, you are a drama movie person, with dribblings of sci fi and action
11:58 nadim_ could say so
11:58 moritz_ codyFendant: but we can't introduce that without telling about regexes
11:58 Alias No Wall E?
11:58 moritz_ nadim_: not having a charset declaration would explain the mojibake too
11:58 nadim_ crap movie
11:58 codyFendant What does mojibake mean?
11:58 moritz_ codyFendant: characters that appear when the encoding is messed up
11:59 moritz_ http://en.wikipedia.org/wiki/Mojibake
11:59 nadim_ like vietnamese :))
11:59 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()
11:59 Alias Dark City, Donnie Darko, Gattaca, Brazil... there's still some fairly serious sci fi there though
11:59 codyFendant That came as a bit of a surprise.
11:59 Alias But clearly the darker and creepier stuff is what you like
12:00 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
12:00 * codyFendant has a certificate in Vietnamese.
12:00 takadonet morning all
12:01 nadim_ Alias: and a few animations. Chasseurs de dragons is a must see. A piece of art.
12:01 Alias nadim, lola rennt?
12:01 codyFendant Anyway, bedtime, thanks for your help on the book thing I will contact the authors some time.
12:01 * masak liked "Lola rennt"
12:01 Alias Might not be dark enough for him though
12:02 nadim_ it wasn't
12:02 Alias ooo The Labirynth?
12:02 Alias spo
12:02 Alias http://www.imdb.com/title/tt0091369/
12:02 Alias Dark children's sci fi'ish :)
12:03 Alias Sting in all his 80s glory :)
12:03 dalek book: a2ad884 | moritz++ | src/basics.pod:
12:03 dalek book: [basics] be more verbose about IO.lines. Noted by codyFendant++
12:03 dalek book: review: http://github.com/perl6/book/commit/a2ad88426ebec06bff3cd3a6c713fbe600364a91
12:03 nadim_ OK but so old. Bowie you meant
12:03 Alias sorry, yes
12:03 nadim_ haha
12:05 Alias Have you tried the rotten tomatos method?
12:05 Alias http://www.rottentomatoes.com/top/bestofrt_year.php
12:05 Alias Just work your way down till you see something you haven't seen that looks vaguely intersting
12:07 envi^home joined #perl6
12:07 nadim_ Oh god, this start bad.
12:07 nadim_ God even!
12:07 Alias You have to cross those ratings with the styles you like as well
12:08 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
12:08 Alias Constrains your options a lot
12:09 nadim_ not a single one in the top 100. that's not good
12:09 Shillo joined #perl6
12:10 drbean joined #perl6
12:10 Shillo Hullo
12:10 moritz_ hi
12:11 Shillo Hey, was just looking for someone familiar with parrot internal. :)
12:11 Shillo Er, internals
12:11 moritz_ Shillo: your chances are much better in #parrot on irc.perl.org
12:12 moritz_ 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 #perl6
12:12 moritz_ it spends half of the time in the GC? :-)
12:12 Shillo valgrind --tool=callgrind ./perl6 -e 'for (1..1000) { my $a = $_ + 1; }'
12:12 Shillo This was the test
12:12 Shillo Not half, and not because the GC is slow
12:14 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
12:14 Shillo ... on each loop pass
12:14 Shillo So, maybe 10-20 objects that need to be boxed and allocated
12:14 Shillo Surprise: this actually constructs over 3,000 PMCs on each loop pass
12:14 Shillo Currently building 2.7, the relnotes mention hash improvements
12:15 jnthn o_O
12:15 Shillo Maybe it will be different this time
12:15 jnthn That is...rather more than I'd have expected
12:15 Shillo jnthn: Right :)
12:15 dalek book: a739ba4 | moritz++ | src/basics.pod:
12:15 dalek book: [basics] add a note that splitting on a single space is not very robust. codyFendant++
12:15 dalek book: review: http://github.com/perl6/book/commit/a739ba40d458aa0b51ba907a156c5bc4b63c0b82
12:15 jnthn I wonder if we can get any data on what types of PMCs they are.
12:15 Shillo Lemme rebuild and I'll regenerate a profile
12:16 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
12:16 Shillo But this was 2-3 order of magnitude worse
12:16 moritz_ I agree, it is
12:16 jnthn Shillo: How did you get to the 3000, ooc?
12:16 jnthn Shillo: That is, this is just runtime yes - the compile time was factored out?
12:17 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 Shillo So yes
12:17 jnthn OK, that sounds quite sound methodology
12:18 Shillo You can retry yourself, just install valgrind and kcachegrind to view results
12:19 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
12:19 jnthn Yes, profiling can help explain a lot of why and point to the optimizations we can do.
12:19 Shillo Realtime on the range loop is around 10,000 slower than Python and Python doesn't perform any magic on the code
12:20 Shillo 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)
12:20 Shillo Well, not sure about that. I'm still amazed at the number of conses
12:20 Shillo They have to come about in some crazy way. Does something copy an entire hash table on each indexing? Or box each string characteR?
12:21 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.
12:21 Shillo I agree, and there -has- to be something *really* easy to do about this problem, at least.
12:21 moritz_ but in Rakudo we have to box each parrot primitive, because the primitive types can't be stored in lexpads directly
12:22 jnthn It's actually worse than that too.
12:22 Shillo Yes
12:22 arnsholt There's probably some overhead in lazy ranges as well?
12:22 moritz_ yes, that too
12:22 masak arnsholt: oh yes.
12:22 Shillo The problem is box each primitive + call into range iterator + call into loop block gives 10s of allocs, not 1000s
12:23 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.
12:23 moritz_ as is our performance, yes
12:24 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
12:24 moritz_ for example each scope has it's own $/, $_ and $! variables
12:25 moritz_ and a single iteration step for 1..10 probably involves at least 5 scopes
12:25 JimmyZ joined #perl6
12:27 Shillo *grumble* I think I didn't properly wipe the old build. Rebuilding...
12:28 Shillo 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:29 Shillo 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 :-)
12:30 Shillo :)
12:30 JimmyZ parrot needs more love :)
12:30 moritz_ rakudo too
12:30 Shillo moritz_: Well, sure, that helps performance, but I meant that it won't help -measuring- performance.
12:30 * baest hugs parrot and rakudo
12:31 Shillo Profiling now. That'll take a few mins. I want to see if 2.7 improves anything...
12:32 * moritz_ wants to see huge green bars in http://niner.name/rakudo/benchmarks.png
12:34 masak moritz_: if we nuke a lot of tests... :>
12:34 colomon it's supposed to be sensitive to that, isn't it?
12:34 masak I have no idea how it works, fwiw.
12:34 moritz_ masak: it measures only performance differences of test files that weren't changed between two runs
12:35 masak ooh
12:35 masak nine++
12:35 masak that's an excellent heuristic. why didn't I think of that?
12:35 gfldex you think this would help to make rakudo faster: http://www.fukung.net/v/15899/9e93c9cab7ef7f12c3a8d7b3d2973f31.jpg
12:36 jnthn masak: The scripts are in http://niner.name/rakudo/
12:36 moritz_ masak: because you're involved in way too many projects :-)
12:36 masak gfldex: wouldn't hurt to try.
12:36 synth joined #perl6
12:36 moritz_ (just like me)
12:36 gfldex :)
12:36 masak moritz_: no, that's not it. :)
12:36 masak I generally have the ideas, but then don't act on them.
12:37 masak this is a case of not having the idea at all. I must be getting old or something. :)
12:38 pmichaud good morning, #perl6
12:38 masak pmichaud: \o
12:39 Shillo Hullo!
12:39 jnthn o/ pmichaud
12:39 takadonet pmichaud: morning
12:39 colomon \o
12:41 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; }'
12:41 Shillo Profiling done. It's much, ****MUCH**** better this time
12:41 pmichaud very interesting stuff.
12:41 ruoso joined #perl6
12:41 Shillo 495266 baseline, 770836 test
12:42 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 :)
12:42 Shillo Oh yes
12:42 moritz_ \o/
12:42 masak that's great news.
12:42 masak can't say I've felt that order of magnitude in my bones, though.
12:42 pmichaud you'd likely be very surprised at the number of PMCs being generated tehre :)
12:42 pmichaud *there
12:43 Shillo It's still 275 per loop pass, mind you
12:43 colomon yeah, why is the benchmark graph only showing about 2% improvement?
12:43 Shillo So yeah, I'm still surprised, but no longer amazed ;)
12:43 thebird joined #perl6
12:43 pmichaud 275 doesn't surprise me too much
12:43 Shillo That is a good question
12:43 masak Shillo: it's our wish to amaze you, but preferably not in that way :)
12:44 Shillo get_new_pmc_header is 17% of the profile now, mostly called from pmc_new, but some are from new_init_int
12:45 Shillo 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?
12:48 jnthn 14% of our runtime is on hash_thaw?
12:48 Shillo Yes
12:48 Shillo However, good news;
12:48 jnthn Oh
12:49 jnthn 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. >
12:49 jnthn The default clone implementation is to freeze, then thaw.
12:49 pmichaud jnthn: that wouldn't surprise me.  hash clones are deep
12:49 colomon "startup is now 75% of the test"  \o/
12:49 Shillo 1.43 secs vs 2.00 secs (or so)
12:50 Shillo Yes, this is a lot better than the last time. Lemme try to 10,000. That will take a while...
12:51 pmichaud Shillo: what are you using to view the valgrind output, ooc?
12:51 Shillo kcachegrind
12:51 Shillo I'm open to better options, mind you. Wouldn't mind something that can draw a better call tree
12:51 pmichaud kcachegrind is good -- I'm just trying to duplicate on my system (so far so good)
12:52 colomon Can't use global $_ in "my"
12:52 colomon ???????
12:52 colomon line in question is my $a = $_ + 1;
12:52 Shillo ???
12:52 moritz_ colomon: perl 5?
12:53 colomon doh!  moritz_++
12:53 Shillo Uh... :>
12:53 colomon geez, that's a mistake I haven't made any time recently.  most be tired than I think.
12:53 javs joined #perl6
12:54 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)
12:54 pmichaud http://gist.github.com/534606  # profile results
12:55 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
12:55 pmichaud but that doesn't surprise me too much, since most of a program is whitespace
12:55 bjarneh joined #perl6
12:56 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.  :(
12:56 pmichaud no, likely not
12:57 pmichaud 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...
12:58 Shillo Reimplement <ws> in assembly.... ;)
12:58 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?
12:59 pmichaud yes
12:59 Shillo Got profile up to 10,000
12:59 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.
12:59 Shillo hash_thaw is now 4% of the time. So it -was- the startup
12:59 pmichaud the cache is in the calls to MARKED
13:00 Shillo runops_fast_core is 3%. Everything above that is pmc alloc, gc, delete and hash writes and lookups
13:00 Shillo Oh, 4% on fill_params
13:01 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 colomon might even be a touch slower.
13:01 Shillo I last checked before range iterator patch
13:02 Shillo So I'm not sure what caused it
13:02 Shillo At 10,000 passes: 3,250,000 calls to Parrot_pmc_new
13:02 colomon Shillo: that's almost certainly what you're timing, range iterator changes.
13:02 pmichaud well, and numeric math changes
13:03 pmichaud (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
13:03 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)
13:04 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.)
13:04 Shillo And Proxy_Insantiate is called from Parrot_new_p_pc
13:04 pmichaud colomon: but I'm thinking some of those changes may have also affected &infix:<+> speed.
13:05 Shillo Wait, new_p_pc makes PMC from... what?
13:05 pmichaud Shillo: a constant key, probably
13:05 pmichaud e.g.,   new $P0, ['Something']
13:06 amkrankruleuen joined #perl6
13:08 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 #perl6
13:09 Shillo Checking hash_get calls. Major item is NameSpace_get_pmc_keyed_str, pointer_keyed_str and oo_find_vtable_override
13:09 Shillo Was PIC removed from Parrot?
13:09 moritz_ urks. It's a day before the release, and the number of "Non-zero exit status" tests has increased
13:09 moritz_ Shillo: yes. It was i386 only
13:10 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
13:10 Shillo pmichaud: And it needs to, given the number of single-expression methods that perl6 seems to encourage.
13:10 moritz_ pmichaud: should I fudge nil.t, or are you planning to fix rakudo before the release?
13:11 pmichaud moritz_: I'm planning to fix it today.
13:11 moritz_ ok, then I'll stand back
13:11 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)
13:11 Shillo pmichaud: Also, about reading kcachegrind, not sure if you noticed, but the timings are not cumulative up the call tree
13:11 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.
13:12 pmichaud moritz_: yes, and I have a few more.
13:12 pmurias joined #perl6
13:13 pmichaud Shillo: noted, thanks!
13:13 moritz_ Shillo++ # not only complaining about slowness, but actually doing something
13:13 colomon Shillo++ indeed
13:14 moritz_ if everybody who complained on twitter, reddit and perlmonks was that enthusiastic... :-)
13:16 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 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?
13:17 Shillo Would it be very hard to inherit from parrot hash and make an object that has $/, $_ and whatever else is mandatory stored efficiently?
13:17 Shillo colomon: 10,000
13:18 colomon woah.  I was thinking namespace lookups would all be at startup
13:18 Shillo pmichaud: Could be, actually
13:18 pmichaud what's the namespace lookup?
13:19 pmichaud (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 #perl6
13:19 Shillo Clock parrot_hash_get_bucket
13:19 Shillo Then doubleclick on the first item on the caller lost
13:19 Shillo list
13:19 Shillo That's parrot_hash_get
13:20 Shillo 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:21 pmichaud oh
13:21 pmichaud I bet those are isa checks.
13:21 Shillo It could still be startup time, mind you. Lemme run 100,000
13:21 Shillo But that could take an hour or whatever.
13:21 pmichaud at 10,000  it's 1,853,264 calls
13:22 pmichaud at 1 it's 200,877 calls
13:22 Shillo That helps :)
13:22 pmichaud so I'm pretty sure that ~1.6 million calls are non-startup
13:22 jnthn 1.6 million hash lookups?!
13:22 pmichaud sure
13:22 Shillo 160 calls per pass.
13:23 jnthn Still rather too many.
13:23 Shillo jnthn: It's still just 10% of the runtime
13:23 envi^home joined #perl6
13:24 Shillo Almost everything else is consing and gcing.
13:24 pmichaud ultimately those are coming from Parrot_oo_get_class_str
13:24 pmichaud looks like about 35 calls to Parrot_Class_isa  per iteration
13:25 jnthn pmichaud: eww, and we know that ain't too great.
13:25 jnthn pmichaud: Well, expect that to change drastically with the new metamodel-y stuff.
13:25 * moritz_ expects it to change
13:26 moritz_ sounds like the best thing since sliced bread :-)
13:28 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:29 pmichaud colomon: well, Ranges aren't required to be ints
13:29 pmichaud more to the point, I'd be wary of assuming the bulk of the expense is still in the range iterator here
13:29 colomon pmichaud: right, that's why a special version.
13:31 colomon 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 colomon so that's maybe not worth pursuing.
13:31 pmichaud one could measure that by iterating over a 10000 element array instead of a 10000 element range
13:31 pmichaud that would give some indication as to how much of the expense is in the range generation versus the 10,000 iterations
13:33 perlygatekeeper joined #perl6
13:33 Shillo Heh, 100,000 test segfaulted. :)
13:33 pmichaud that's probably the gc recursion limit.
13:34 Shillo Access not within mapped region at address 0xBE655FFC, at 0x4196D47: Parrot_Object_mark (object.c:3534)
13:34 pmichaud maybe 50,000
13:34 pmichaud or even 20,000
13:34 Shillo Lemme try something else...
13:35 thebird joined #perl6
13:35 timbunce joined #perl6
13:36 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
13:36 Shillo time ./perl6 -e 'for (1..10000) { my $a = $_ + 1; }' <-- 7.48 user
13:36 pmichaud Shillo: the first does only one iteration
13:37 Shillo Oh, oops.
13:37 pmichaud try    for $a.list
13:37 pmichaud or   my @a = 1..10000;  for @a { ... }
13:37 jnthn pmichaud: Caching...what?
13:37 jnthn :-)
13:37 pmichaud jnthn: right now we do things like    $I0 = isa $P0, ['Something']
13:38 pmichaud 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.
13:38 jnthn pmichaud: String isa in general needs to die.
13:38 pmichaud ooooh!  ooooh!
13:38 jnthn It's going to hurt us in more ways that performance some day.
13:38 * pmichaud has a killer idea
13:38 jnthn I'm very happy to start killing it.
13:38 Shillo Ah, yes, used .list, got 8.95s user
13:39 pmichaud jnthn: we could come up with   x_fast_isa  opcode
13:39 pmichaud and it can cache things for us
13:39 Shillo jnthn: Still, just to keep things in perspective, hash lookups were only 10% profile
13:39 Shillo In that one example
13:40 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?
13:41 pmichaud Parrot_hash_get_bucket?
13:41 Shillo Yep
13:42 Shillo 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
13:43 pmichaud hmmm, maybe not
13:43 pmichaud anyway, would I be correct in saying that we still seem to be paying a lot for gc?
13:44 Shillo Oh, niiiice, found something cool
13:44 Shillo In kcachegrind, click on calee_map
13:44 Shillo That's tab, top right
13:44 pmichaud yes
13:45 Holy_Cow joined #perl6
13:47 javs_ joined #perl6
13:47 pmichaud fwiw, it might be worthwhile to compare    for 1..00001 { ... }     and    for 1..10000 { ... }
13:47 pmichaud just to make sure that we're more apples-to-apples in startup cost and compilation
13:48 pmichaud 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 pmichaud or compare  for 1..1000 with   for 1..9999
13:49 pmichaud 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: http://gist.github.com/534779
13:50 masak it'd be interesting to hear if people have suggestions for other pieces of data one could extract.
13:52 jnthn Who closed most? :-)
13:52 jnthn (moritz probably :-)
13:52 masak I'll see if I can get that out. shouldn't be too difficult.
13:53 jnthn number of tickets submitted by month?
13:53 masak ooh
13:53 jnthn e.g. to see how fast we accumulate them over time
13:53 pmichaud number of open tickets by month, too.
13:53 masak yes, I want to move towards a timeline-y interface.
13:53 pmichaud or by week
13:53 pmichaud or by day
13:53 jnthn yeah
13:53 masak let me get back to you on that in a day or so :)
13:54 timbunce_ joined #perl6
13:54 masak my ultimate dream is to build an interactive js interface, and do my 1024 talk using that :)
13:55 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>
13:55 jnthn \o/
13:55 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.
13:55 jnthn Nice
13:55 jnthn Yes, it could make a nice ::EU one
13:55 jnthn In Rigaaaa! :D
13:56 masak \o/
13:57 pmurias joined #perl6
13:57 pmurias ruoso: ping
13:57 jnthn It'll be nice to see it in summer. :-)
14:02 * pmichaud foolishly tries to run a parse/compile profile on core.pm.  Expect epic fail.
14:02 pmichaud ...wonder how long that will take, too.  :-)
14:02 masak yes, moritz_++ wins among the *human* entities that close tickets :) http://gist.github.com/534779
14:03 masak then jnthn++, then pmichaud++, the [Coke]++
14:03 masak s/the>>/then/
14:03 sftp joined #perl6
14:03 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:04 Shillo None of the differences looks divisible by 10,000 and the numbers -could- be duplicated, but here's a quick breakdown:
14:04 hercynium joined #perl6
14:04 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:05 * 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:06 pmichaud afk for a bit
14:06 pmichaud wait....
14:06 pmichaud build_sig_object_from_op   occurs 60 times per loop iteration?
14:07 PerlJam 10.5 million for perl5, ~16 million for ruby, ~30 million for both python, and ~19 BILLION for rakudo
14:07 PerlJam s/both//
14:07 pmichaud okay, 60x looks about right, on second thought
14:07 pmichaud I was thinking something else
14:07 Shillo 716932 calls
14:07 pnu joined #perl6
14:08 Shillo in the 10,000 run :)
14:08 pmichaud right
14:08 pmichaud that's consistent with Parrot_sub_invoke being about 69
14:08 pmichaud which also seems about right-ish
14:09 Shillo 69 sub calls still seems a bit excessive for a simple for loop
14:09 pmichaud those are Parrot sub calls
14:09 pmichaud so, let's evaluate what's happening
14:09 masak correction: moritz_ wins, among humans and bots alike. the RT system doesn't close tickets, what was I thinking? :) http://gist.github.com/534779
14:09 pmichaud for 1..10000 { my $x = $_ + 1; }  is really
14:09 pmichaud (1..10000).map( { my $x = $_ + 1; } ).eager
14:10 pmichaud so .map first calls .iterator on the Range
14:10 pmichaud and then it starts to go through all of the elements of the iterator
14:10 pmichaud it has to call .munch(1)  on the iterator to get each argument to pass to the block
14:11 Shillo I assume .iterator() is just a single call (not 1 per loop)
14:11 pmichaud right, but .munch is one per loop
14:11 Shillo Yep
14:11 pmichaud and .munch then has to make a variety of calls to produce the elements of the range
14:11 pmichaud it has to call .succ and &infix:<cmp>
14:11 pmichaud each of which also result in a variety of subcalls
14:12 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
14:12 pmichaud note that we're talking Parrot subs here, not Rakudo subs
14:12 pmichaud (it's not always a 1-1 mapping)
14:13 blogometer joined #perl6
14:13 blogometer Hello, Perl 6.
14:13 blogometer I see you are ready to build and run on my MacBook now.
14:13 pmichaud then within the loop, we have calls to  &infix:<=> and &infix:<+>
14:13 Shillo Is it ever? I.e. does rakudo generate sub-calling boilerplate?
14:13 [particle] each rakudo scope is a parrot sub, for example
14:13 blogometer I've waited so long, and now you're here. I'm so happy!
14:13 Shillo [particle]: I saw that
14:14 plobsing joined #perl6
14:14 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
14:15 pmichaud and then problem isn't simply CALLER:: -- it's also the need to create lexpads for the nested blocks
14:15 pmichaud (or closures)
14:16 Shillo But do you need lexpads if it's okay to not be able to introspect lexical scopes?
14:16 Shillo (I mean, in that case, stuffing things into the registers becomes an option)
14:17 pmichaud as long as it's not a true closure, yes.
14:17 pmichaud but in the case of the for statement... it's a closure
14:17 pmichaud i.e., it's an argument to .map()
14:17 pmichaud so it's not inlinable
14:18 Shillo Actually most LISPs flatten (map (lambda ..., but there scopes can be flattened if the closure isn't captured
14:19 Shillo Although, there (lambda..) can't get a reference to itself, and the optimizer knows that map doesn't store closure
14:20 Shillo 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
14:21 Shillo By storing I mean outside its own variables. Yeah, it means that compiler needs to treat map specially
14:21 Shillo map in LISP is usually a macro, but Common LISP cheats
14:22 Shillo 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
14:23 pmichaud again, optimizable, but only with a fair bit of analysis
14:23 pmichaud e.g.:
14:23 pmichaud if 1 { my $a = 5;  { say $a; } }
14:23 ash_ joined #perl6
14:23 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:25 Italian_Plumber joined #perl6
14:25 Shillo Better example: for @a { my $x = $_ + 1; @*B.push( { $^a + $x } } <-- this you can't actually inline
14:25 pmichaud right
14:25 gfldex is there a way to define a method as not mutating the object it works with, nor any other object?
14:26 gfldex like in c++ with void foo () const {}
14:26 xinming_ joined #perl6
14:26 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 Shillo 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 #perl6
14:28 pmichaud afk for a bit
14:28 Shillo Laters!
14:28 masak jnthn++'s presentation and mine are now online! http://www.presentingperl.org/ye2010/
14:30 azert0x joined #perl6
14:30 Shillo Anyway, laters, all, and thanks for your time! :)
14:30 Juerd What a weird logo
14:30 Juerd "resenting erl"
14:31 Juerd http://juerd.nl/i/609555ee94a732cda67530080a416134.png
14:31 Juerd Who let a Perl coder design a logo? :)
14:31 Shillo left #perl6
14:31 * masak doesn't resent erl at all
14:32 Juerd I don't know erl :)
14:32 masak it's a rogramming language :)
14:33 ruoso pmurias, pong
14:33 Juerd Any rogrammers here, then?
14:33 masak robably.
14:34 PerlJam ro-ro-ro your grammer, gently down the parse
14:34 [particle] more unsters than rogrammers
14:34 masak what's your oint, sir?
14:34 Juerd Are the slides of this resentation available in a more readable form?
14:34 PerlJam (I thought "gently down the arse" wouldn't quite come out right ;)
14:34 Juerd I can't make out the text in the video.
14:34 Juerd PerlJam: :)
14:35 masak Juerd: if you're referring to mine, then yes. http://feather.perl6.nl/~masak/
14:35 masak jnthn's should be up too. hold on.
14:35 Juerd PerlJam: down the arse is *in*, indeed, not out.
14:35 masak http://jnthn.net/articles.shtml
14:35 Juerd \o/
14:36 dudulz joined #perl6
14:47 estrabd joined #perl6
14:48 jnthn ooh, my talk video is up? \o/
14:50 pyrimidine joined #perl6
14:51 pmichaud jnthn: do you have a twitter id?
14:52 jnthn yes
14:52 jnthn jnthnwrthngtn
14:54 jnthn masak: Seems that being the person who writes the tests gives a large advantage in ticket closing. ;-)
14:54 jnthn moritz_++
14:54 masak indeed, moritz_++
14:54 pmichaud lolitweeted:  http://twitter.com/pmichaud/status/21496165520
14:54 * masak RTs
14:57 jnthn I'm a little surprised I've closed so many directly though. :-)
15:00 masak would be fun and a bit frivolous to pair up the most common submitter/closer pairs, too...
15:01 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 #perl6
15:04 jnthn Statistically, that's likely :P
15:04 molaf joined #perl6
15:06 kiffin left #perl6
15:08 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:09 masak jnthn: I might be able to tease that out of the data. :)
15:09 jnthn .oO( Is it cruel to tease data? )
15:11 blogometer joined #perl6
15:13 masak jnthn: the data started it!
15:17 Clem_Chong joined #perl6
15:26 masak jnthn is getting sweet re-tweets on Twitter.
15:28 jnthn re-sweet
15:28 timbunce joined #perl6
15:28 rlb3_ joined #perl6
15:34 alester joined #perl6
15:35 amkrankruleuen joined #perl6
15:38 blogometer joined #perl6
15:39 Clem_Chong Hello,I am new.
15:40 jferrero joined #perl6
15:40 masak Clem_Chong: welcome!
15:48 takadonet Clem_Chong: how are you?
15:52 risou joined #perl6
15:55 tylercurtis joined #perl6
15:58 pmichaud "Twitter is over capacity."   I blame jnthn++
16:00 charan joined #perl6
16:00 rgrau___ joined #perl6
16:08 TimToady I can't believe you guys spent that much time discussing AOP and never mentioned .wrap
16:11 jnthn pmichaud: :P
16:13 djburiedalive joined #perl6
16:14 patrickas joined #perl6
16:14 djburiedalive left #perl6
16:15 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
16:17 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'
16:18 pmichaud well, it should probably be  1, -2, 4, -8, 16   :-)
16:18 pmichaud (note negatives are switched :-)
16:18 pmurias ruoso: sorry, for pinging and forgetting to mark that i went to lunch
16:18 jnthn Foo.^methods.grep(* eq 'perl')>>.wrap({ ... })
16:19 pmurias ruoso: how is the evaluation of my project
16:19 pmurias ?
16:19 patrickas sorry wrong copy pasta
16:19 TimToady that only finds the methods of Foo
16:19 patrickas (2, -4, 8 ...^ -32)
16:19 patrickas should 32 be the last item or -16
16:20 jnthn TimToady: ...oh, you want to do it on all objects?
16:20 jnthn TimToady: er, all types...
16:20 TimToady that was the request last night
16:20 jnthn TimToady: Yeah, we don't have a way to do that. But I'd rather that we didn't either.
16:20 TimToady this is more like AOP
16:20 TimToady and that is what .wrap was put in for
16:20 jnthn Right.
16:21 jnthn 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
16:21 jnthn We might well want to say that this isn't in 6.0.0 too. :-)
16:21 TimToady which is a good reason to make sure all .perl methods "do the same thing"
16:22 jnthn (.wrap is fine, but "find everything with a perl method" is less so)
16:22 TimToady we don't have .wrap yet?
16:22 jnthn No no
16:22 jnthn I'm not arguing against .wrap
16:22 jnthn Just against being able to find every type in the system
16:22 PerlJam patrickas: I would think it would have to be -16
16:22 jnthn .wrap is fine - we do have it at least partially in Rakudo.
16:24 pmurias jnthn: AOP is a more crafty and fancy form of monkey typing
16:26 mathw o/
16:26 pmurias TimToady: do we need AOP much?
16:28 TimToady we need to make it possible
16:29 * diakopter blinks back into participation
16:29 PerlJam so, AOP is a "hard thing"?  :)
16:32 * mathw reads about AOP
16:33 mathw I see how .wrap helps
16:33 charan hey evry1
16:34 pmichaud TimToady: could we do something to make '<?before>'  special to the regex compiler?
16:35 pmichaud either declare it to be non-overridable, or come up with a syntax that means the same thing but is much more optimizable?
16:36 TimToady sure, we can say it's a macro like .WHAT
16:36 pmichaud that'd be fine
16:37 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)
16:37 TimToady sure
16:37 pmichaud okay, great.
16:37 pmichaud that has the potential to greatly improve rakudo parse speed
16:38 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:39 pmichaud wfm
16:39 TimToady helps us discover the true primitives
16:40 TimToady 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
16:40 TimToady though STD still does the rematch
16:41 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++
16:41 pmichaud agreed
16:41 pmichaud and that may obviate the need altogether
16:41 pmichaud let me see if I can quickly get <?before> to at least participate in LTM
16:41 pmichaud that might not be too hard, and would be a win for other <?rule>  forms.
16:42 justatheory joined #perl6
16:42 pmichaud (and yes, it's an open question as to when it's just more efficient to start porting the nfa prototype :-)
16:43 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 +++++++++++++++++++++
16:44 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 pmichaud for a variety of reasons
16:44 diakopter +
16:44 Juerd diakopter?
16:44 diakopter sorry
16:44 TimToady I believe he is expressing slight agreement :)
16:44 jnthn Or owns a cat.
16:44 pmichaud either that or trying to get back into his modem's command mode
16:44 jnthn :-)
16:44 diakopter '+' was evening out the prior msg
16:45 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?
16:45 pmichaud jnthn: no, not really.
16:46 pmichaud I'm just waiting to see how it turns out.
16:46 jnthn pmichaud: As my prototype comes along I get increasingly concrete ideas. :-)
16:46 jnthn OK. :-)
16:46 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.
16:46 PerlJam jnthn: does your head get heavier and heavier?
16:46 jnthn pmichaud: I'm still pondering the Parrot mapping of this stuff.
16:47 jnthn 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] ++
16:47 pmichaud ...you're saying the beer doesn't go to your head?  ;-)
16:47 [particle] all the dead brain cells make room for more concrete
16:47 jnthn pmichaud: Well...not immediately. :-)
16:48 jnthn pmichaud: What I've got so far is essentially a small core and everything else defined in a kind of "setting".
16:49 pmichaud jnthn: that sounds like what we want :)
16:49 jnthn pmichaud: Where "everything" is "really not a lot yet" :-)
16:49 jnthn http://github.com/jnthn/6model/blob/master/common/NQP/NQPSetting.pm is what I have so far.
16:50 jnthn 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
16:50 moritz_ erm, back :-)
16:50 jnthn moritz_: who are you backing? :-)
16:51 PerlJam jnthn: what does the knowhow declarator imply?
16:51 jnthn PerlJam: It's a "pure prototype"
16:51 jnthn PerlJam: It's also where the meta-model bottoms out.
16:52 jnthn e.g. that's where we tie the "can introspect everything" knot.
16:52 jnthn A pure prototype knows rather little.
16:52 TimToady except for knowing all the methods named .perl  :P
16:52 jnthn It can dispatch methods and have attributes.
16:52 jnthn But that's about it.
16:53 jnthn What I'm working towards is defining ClassHOW in there. Once we have that, we can haz exciting things like inheritance. :-)
16:53 pmurias joined #perl6
16:54 jnthn It means that just the knowhow and reprs need to be ported though.
16:57 isBEKaml joined #perl6
16:57 * mathw has done some bits of release prep, and hopes to not run out of time finishing off tomorrow, get those patches in!
16:58 pmichaud we likely need to update ChangeLog and the release announcement
16:58 pmichaud oh!
16:58 mathw yes
16:58 mathw which I've been lookin gat
16:58 mathw might've missed some things
16:58 pmichaud nm... I think I did commit the release announcement draft
16:58 mathw yes
16:58 pmichaud lately I've been forgetting 'git push'  :-)
16:59 mathw lol
16:59 mathw is it better than th eone that I've just been trying to finish?
16:59 pmichaud mathw: just a reminder that we plan to only announce tomorrow's release to perl6-comiler
16:59 pmichaud *perl6-compiler
16:59 mathw yes I saw
17:00 TimToady what, you don't want to confuse the market?  :)
17:00 jnthn No, just the meercat.
17:01 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?
17:01 pmichaud mathw: github id?
17:01 mathw mathw
17:01 pmichaud until I get a cla, the commit access will be temporary for the release :)
17:02 mathw yup
17:02 mathw I'll sort it out... whenever I remember to
17:02 mathw there ar esome instructions for that somewhere I believe
17:02 pmichaud they're out of date, I think.
17:02 dalek book: 84be67a | moritz++ | src/images/cover.jpg:
17:02 dalek book: [cover] correct masak's last name
17:02 dalek book: review: http://github.com/perl6/book/commit/84be67a13e7d23ed20cf106d86318fa48ce6d435
17:03 pmichaud mathw: you're now a committer for the rakudo repo
17:03 mathw thanks
17:03 mathw I will confine my activities purely to the release
17:03 pmichaud wfm
17:04 mathw unfortunately I lack the ability to go in and fix all the bugs with a gentle sprinkling of code
17:04 mathw after the way today's gone I'd just introduce more :(
17:04 mathw so I shall now go and spend the evening being very silly with friends, which should cheer me up :)
17:04 mathw bye
17:05 isBEKaml OHHAI,#perl6! :-)
17:06 ash_ joined #perl6
17:07 pugssvn r32047 | lwall++ | [caps.t] old-school cclass warning suppression
17:09 pugssvn r32048 | lwall++ | [STD] disallow foo:$x form of name extender as too confusing, esp inside quotes, e.g. "$x:$y"
17:09 pugssvn r32048 | delete xlex field that is redundant with inlex
17:14 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:15 jnthn representations are "low level"-y things. Those are the place where we really do get down to the VM level.
17:15 jnthn tylercurtis: However, it will be possible to write a "forwarder" REPR that knows how to forward to methods on an object.
17:16 jnthn And then people would write their own in Perl 6.
17:16 jnthn But I don't plan on wrapping the current ones in any sense.
17:16 * tylercurtis is a little relieved that only most of his plans for Bennu would be better implemented as a native backend for Rakudo.
17:16 jnthn They're not available as type names.
17:16 jnthn Well, maybe they're enum-ish
17:16 jnthn I've gone with strings for now.
17:17 leprevost joined #perl6
17:17 jnthn We don't need to go looking it up on every object creation, so that's not a big deal.
17:18 risou_ joined #perl6
17:19 macroron joined #perl6
17:22 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 isBEKaml (backlogging)
17:23 pmichaud isBEKaml: that's right.... sleep is not an option here.  :-)
17:28 wamba joined #perl6
17:30 isBEKaml Then I'll be sure to stay more alive! :)
17:30 Mowah joined #perl6
17:30 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:31 pmichaud isBEKaml: I'm not sure that's exactly right.
17:31 pmichaud We know that we want Rakudo to eventually run on more than just Parrot as it exists today
17:32 pmurias tylercurtis: the paper with object having a message pointer representations seems very similiar to how smop implements things
17:33 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 pmurias tylercurtis: look at http://search.cpan.org/~pmurias/SMOP-0.6/lowdoc/01_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
17:33 isBEKaml pmichaud: We all want that. that's why I said "Not top priority". :)
17:33 dalek book: 6d89859 | moritz++ | src/basics.pod:
17:33 dalek book: [basics] grammar nit by wolverian++
17:33 dalek book: review: http://github.com/perl6/book/commit/6d89859881be2315c80b8206eb2116175264ddae
17:35 isBEKaml pmichaud: Optimisations *is* the need at this time. Porting can wait until we have everything in place to do that.
17:35 isBEKaml s/(Optimisation)s/\1/
17:36 pmichaud ...except that porting is really a form of optimization, the way we're approaching it.
17:36 pmichaud we know that in many ways Rakudo as-it-exists-today is in response to what our platform (Parrot) provides.
17:37 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
17:37 pmichaud also, prototyping features on other platforms is proving to be faster than prototyping them on Parrot
17:37 isBEKaml then that means porting should be an early goal (should never be left until late)
17:38 pmichaud right, porting is an early goal, and atm there are a total of two people working on it, afaik
17:38 pmichaud so we're making progress, but it's not the majority of our current efforts
17:38 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 #perl6
17:40 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.
17:40 pmichaud Porting is not an early goal, but knowing what we might want/need in order to port is.
17:40 tylercurtis pmurias: I'll look at it some more in a bit.
17:41 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 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.
17:41 pmichaud (it will be very nice if it is, but that's not something we're committed to yet)
17:42 pmichaud it's a driving force for exploration, I think.
17:42 pmichaud anyway, we're putting some limited resources towards that end, at any rate.
17:42 sftp joined #perl6
17:43 dalek rakudo: 7f39959 | pmichaud++ | docs/announce/2010.08:
17:43 dalek rakudo: Update release contributors.
17:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7f39959a48034297b3f4efd8598c7e9c2ba127bb
17:43 dalek rakudo: 72f5b8b | pmichaud++ | src/Perl6/Grammar.pm:
17:43 dalek rakudo: Refactor handling of $*QSIGIL in token variable to avoid 'return ()'.
17:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/72f5b8b40d5ec0708effdf0322c1fd3dd243af11
17:43 dalek rakudo: e260f09 | pmichaud++ | build/Makefile.in:
17:43 dalek rakudo: Add 'make parsetrace' target for internal profiling/debugging.
17:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e260f09467d5a261074fad32558683387742c7ae
17:45 isBEKaml pmichaud++ # thanks for taking the time to explain Rakudo's goals atm.
17:46 * pmichaud ♥ git.
17:46 pmichaud Two people who have made my life far simpler and more fun:  Larry Wall (Perl, patch, rn)  and Linus Torvalds (Linux, git)
17:47 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 ... ;)
17:48 pmichaud no, it's an explicit Perl goal
17:48 pmichaud "Perl exists to torment the implementors on behalf of the users"
17:48 pmichaud I don't remember seeing that mentioned in the original call for pumpkings  :-)
17:48 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.
17:49 dalek rakudo: 56c8464 | pmichaud++ | docs/ROADMAP:
17:49 dalek rakudo: Move "port to other VMs" to a priority 3 level -- I think priority 2 overstates it a bit.
17:49 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/56c8464a155a642ebf1411f1fb179cb126d9dc97
17:49 pmichaud yeah, when we're finished.  :-P
17:49 pmichaud actually, it's funner now.  I'm already getting ready to set up a hotkey to open rakudo instead of my calculator :)
17:49 pmichaud rakudo's REPL makes for a much better bc than bc
17:53 pmichaud http://gist.github.com/535620    # An initial guess at where rakudo spends its time compiling src/gen/core.pm
17:53 pmichaud now time to do some optimizing :)
17:53 pmichaud well, walk first.  then lunch.
17:53 pmichaud then I should probably go ahead and get Nil fixed.
17:54 [particle] obviously whitespace is significant in perl6
17:54 jnthn Wow, ws is a pig. :-)
17:54 pmichaud I looked through the ws generated code and found a couple of places where I can improve the codegen
17:54 Tene OBVIOUSLY we just need to strip all unnecessary whitespace from the core!!
17:55 pmichaud ws is big largely because it's called so often
17:55 jnthn Aye
17:55 jnthn Heh. We spend more time failing than we do passing.
17:55 jnthn I guess real LTM will help us with that?
17:55 pmichaud maybe
17:56 pmichaud the real cost is the  <-quoteescape>   in quoted strings.
17:56 jnthn We seem to fail that rule a lot too.
17:56 pmichaud right
17:56 TimToady LTM in the nibbler might help with that one
17:56 moritz_ that's only parsing time, not compilation time, right?
17:57 pmichaud well, it includes the time needed to generate PAST
17:57 pmichaud since that's done as part of the parse
17:57 [particle] ww is called a lot, too, while you're looking at ws
17:57 pmichaud ww gets called from ws
17:57 pmichaud although it really shouldn't be that slow.
17:57 TimToady STD hardwires the ww there
17:57 TimToady well, it uses before/after
17:57 pmichaud STD uses before/after?
17:58 pmichaud (for ww?)
17:58 pmichaud <ww> in Rakudo/NQP is a handwritten PIR sub
17:58 TimToady | \h+ <![\#\s\\]> { @*MEMOS[$¢.pos]<ws> = $startpos; }   # common case
17:58 TimToady | <?before \w> <?after \w> :::
17:58 pmichaud ah
17:58 pmichaud in rakudo/nqp, <ww> will definitely be faster.
17:59 TimToady it almost always falsifies on the <?before \w> I think
18:00 TimToady except between a prefix and an ident
18:01 TimToady but yeah, if Cursor actualy defined ww, it might be faster yet
18:01 mberends joined #perl6
18:01 TimToady in fact, it never gets to that alternative unless there's a \w, since it's using LTM there
18:03 TimToady bbl &
18:03 pmichaud I bet I can improve quote_expr a bit.
18:04 sftp joined #perl6
18:05 pmichaud afk, walk
18:06 lue joined #perl6
18:09 tadzik joined #perl6
18:09 sorear good * #perl6
18:10 tadzik hello
18:10 hugme joined #perl6
18:16 Mowah joined #perl6
18:18 pyrimidine pmichaud: is <?after> or <!after> implemented in nqp-rx?
18:21 moritz_ it is not
18:21 pyrimidine moritz_: ok, thx.  I recall running into this a while back
18:23 sorear pmurias: How does mildew use the syml search path + syml output path?
18:25 pmichaud pyrimidine: I can re-implement the slow, cheating form of !after though.
18:25 pmichaud er, ?after
18:25 pmichaud er <.after>
18:25 pmichaud er... :-)
18:26 pyrimidine pmichaud: ok
18:26 pyrimidine it's not pressing, though
18:26 pyrimidine s/pressing/a pressing issue/
18:28 pyrimidine was looking at trying to implement a few bioinformatics-related grammars, like a GenBank grammar
18:30 dalek nqp-rx: d304887 | pmichaud++ | src/Regex/Cursor-builtins.pir:
18:30 dalek nqp-rx: Add debugging/profiling to <ww> builtin.
18:30 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/d304887d85dbd1e8c99cb0a4177bc2d375dc2c9c
18:30 dalek nqp-rx: 1408049 | pmichaud++ | src/cheats/hll-grammar.pir:
18:30 dalek nqp-rx: Add debugging/profiling for <EXPR>.
18:30 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/140804974b8ff46b661d9544dc4d7cdcfc1adfe9
18:30 dalek nqp-rx: f49a206 | pmichaud++ | tools/analyze-parse:
18:30 dalek nqp-rx: Add analyze-parse, a simple Perl script for summarizing --parsetrace output.
18:30 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/f49a206d9df329c321a882e63f5a968a51db4a86
18:32 sorear Juerd: Do you have an alt contact we can use when feather dies and kicks you off IRC?
18:33 sorear TimToady: "meshed" global and private?
18:34 tadzik joined #perl6
18:35 Mowah joined #perl6
18:35 nimiezko joined #perl6
18:36 tadzik http://parrot.org/languages has been a bit cleaned up, didn't it?
18:38 blogometer joined #perl6
18:38 djburiedalive joined #perl6
18:39 * sorear caught up
18:41 jnthn pmichaud: It would let us remove a hack in Rakudo's grammar too
18:42 djburiedalive left #perl6
18:43 alester joined #perl6
18:50 pugssvn r32049 | sorear++ | [STDeco] Fix whitespace remover
19:05 BooK left #perl6
19:06 cono joined #perl6
19:07 HarryS joined #perl6
19:14 moritz_ TimToady++ # http://www.perlmonks.org/?node_id=855886
19:32 tylercurtis joined #perl6
19:32 [particle] sorear: juerd@juerd.nl
19:33 pmichaud my addition:  http://www.perlmonks.org/?node_id=855892
19:33 simcop2387 joined #perl6
19:35 PerlJam pmichaud: you don't have a perlmonks account?
19:36 PerlJam you posted anonymonkly.
19:37 pyrimidine well, at least he left 'Pm'
19:37 pmichaud huh
19:37 pmichaud I *was* logged in when I started.
19:38 pyrimidine maybe it's got use.perl-syndrome
19:38 pmichaud because it even said I had 10 votes left today
19:38 pmichaud I was getting various timeouts from perlmonks.org in writing that, though.  maybe it lost my login in the process.
19:40 pmichaud ah, my reply to anonymous monk is now "best node of the year"  :-)  (the previous best dropped off the list :-)
19:44 pugssvn r32050 | kyle++ | perl util/purge-empty-dirs.pl ; svn commit
20:07 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:11 Italian_Plumber joined #perl6
20:14 patrickas joined #perl6
20:15 patrickas rakudo: say ('a' | 1 ~~ Str)
20:15 p6eval rakudo 56c846: OUTPUT«0␤»
20:15 patrickas rakudo: say ( any('a' , 1) ~~ Str)
20:15 p6eval rakudo 56c846: OUTPUT«0␤»
20:15 patrickas am I doing something wrong or is it a bug ?
20:16 pmichaud rakudo:  say 'a' ~~ Str
20:16 p6eval rakudo 56c846: OUTPUT«1␤»
20:16 pmichaud rakudo say ('a'|1) ~~ Str
20:16 pmichaud rakudo:  say ('a'|1) ~~ Str
20:16 p6eval rakudo 56c846: OUTPUT«0␤»
20:16 pmichaud rakudo:  say ('a'|'b') ~~ Str
20:16 p6eval rakudo 56c846: OUTPUT«0␤»
20:16 pmichaud looks like it might be a bug.
20:17 pmichaud rakudo:  say Str.ACCEPTS('a'|1)
20:17 p6eval rakudo 56c846: OUTPUT«0␤»
20:17 pmichaud oh
20:17 pmichaud well, Str doesn't ACCEPT a junction
20:17 pmichaud and I'm not sure it should autothread there.
20:17 jnthn It shouldn't.
20:17 jnthn Otherwise you break type checking.
20:18 jnthn And that would be sad.
20:18 jnthn :-)
20:18 pmichaud so how would one check to see if a junction does Str, ooc?
20:18 pmichaud (if an element of a junction does ... )
20:19 jnthn Oh...hm
20:19 jnthn .does probably is on the Junction too, but maybe not.
20:22 jnthn Of course, you can write a sub junc_accepts($item, $what) { $item ~~ $what }
20:22 jnthn Or along those lines.
20:22 patrickas I'll go back to $a ~~ Str || $b ~~ Str ... berk!
20:25 djburiedalive joined #perl6
20:32 TimToady whoops, missed the phone call, if there was one...
20:32 pmichaud still is one
20:32 pmichaud (I was 20 mins late myself)
20:35 pmurias tylercurtis: in smop the RI pointer is before the data
20:37 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:38 pmurias that shouldn't make a difference for anything
20:38 tylercurtis Like I said, I'm doubtful of its usefulness.
20:39 pmurias the other difference is that SMOP has stuff for reference counting in the RI
20:39 pmurias and a DUMP entry for debugging
20:41 pmurias DUM
20:42 gfldex std: class A { method foo(){}; }; say A.^can('foo') == A.^can('foo');
20:42 p6eval std 32051: OUTPUT«ok 00:02 116m␤»
20:45 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:54 justatheory joined #perl6
20:54 kuzuha_ joined #perl6
20:57 isBEKaml_ joined #perl6
20:57 dwiereng1 joined #perl6
20:57 krunen_ joined #perl6
20:57 imarcust1is joined #perl6
20:57 hsb_ joined #perl6
20:58 blogometer joined #perl6
20:58 flatwhatson joined #perl6
20:58 larsen joined #perl6
20:59 simcop2387 joined #perl6
20:59 shade_ joined #perl6
21:00 pmurias tylercurtis: normal method you mean looked up in a vtable?
21:01 * pmurias reboots
21:03 pmurias joined #perl6
21:05 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:07 pmurias what's the difference?
21:07 achromic joined #perl6
21:08 pmurias if i used something different from a vtable as a vtable, a method call would use lookup on the object?
21:09 Guest23195 left #perl6
21:09 pmurias tylercurtis: could you remind me what's the link to the P&W paper?
21:10 tylercurtis http://piumarta.com/software/cola/objmodel2.pdf
21:11 NOTevil joined #perl6
21:13 whiteknight joined #perl6
21:14 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:17 pmurias any reason's why P&W is better?
21:18 tylercurtis Not really. The P&W dispatching seems like it allows a subset of the behavior SMOP's dispatching allows.
21:24 dalek nqp-rx: aa0e12b | pmichaud++ | src/cheats/hll-grammar.pir:
21:24 dalek nqp-rx: Add debugging/profiling to quote_EXPR.
21:24 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/aa0e12b6ad8e50fba4ba280771930558dcfb3090
21:24 dalek nqp-rx: e0d2bec | pmichaud++ | src/PAST/Compiler-Regex.pir:
21:24 dalek nqp-rx: Optimize quantified+ratcheted character lists a bit, such as \h* and \v+ .
21:24 dalek nqp-rx: This seems to improve Rakudo's compilation of core.pm by about 2%.
21:24 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e0d2becce4ece27646b2d47658c2776e8d559d2d
21:24 dalek nqp-rx: a56f707 | pmichaud++ | src/stage0/ (4 files):
21:24 dalek nqp-rx: Update bootstrap files.
21:24 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a56f707a2d951e2a595268a1c82c4a1c266e3d48
21:25 blogometer joined #perl6
21:26 jferrero joined #perl6
21:33 masak joined #perl6
21:33 masak lol ahoj
21:33 simcop2387 joined #perl6
21:33 mathw hi
21:34 masak I'm spent. what about you, #perl6?
21:35 mathw Mi estas laca
21:35 masak :)
21:35 masak 我很累
21:36 mathw mi tatpi lo nu klama lo zdani be mi
21:36 mathw :P
21:36 masak you've got to be kidding me.
21:37 masak look, 'tired' is not that difficult a concept.
21:37 mathw no I put more detail in that
21:37 masak oh good.
21:37 masak phew.
21:37 mathw 'mi tatpi' would have sufficed
21:37 mathw 'lo nu klama lo zdani be mi' is the event of travelling to the home of me
21:38 masak how does the event relate to the 'mi tatpi' part?
21:38 mathw that slot of tatpi is the cause of the tiredness
21:38 jnthn ...which language? :_)
21:38 mathw jnthn: lojban
21:38 mathw it's completely useless, and lots of fun
21:38 mathw well, not completely useless, I'm working on a story in which a crazy computer does a lot of babbling in it
21:38 masak jnthn: it's the one I told you about.
21:38 jnthn Was gonna say. That doesn't look like Esperanto...
21:38 mathw saves having to make up my own language
21:39 masak jnthn: the one with lots of positionals.
21:39 mathw it's *all* positionals
21:39 jnthn Yes, I'm just not used to seeing it. :-)
21:39 masak it's quite well-sounding, at least in my head.
21:39 mathw prolog for artificial language geeks
21:39 masak but I don't plan to learn it anytime soon.
21:40 mathw yeah sometimes I say things out loud and I'm surprised how plausible it sounds
21:40 mathw anyway
21:40 mathw I also need to put a bit more effor tinto my Esperanto
21:41 patrickas rakudo: say ( 'z'.ord - 'A'.ord + 1 )
21:41 p6eval rakudo 56c846: OUTPUT«58␤»
21:41 patrickas rakudo: say ('A' ... 'z').elems
21:41 p6eval rakudo 56c846: OUTPUT«58␤»
21:41 mathw Mi estas laca ĉar mi iris mian domon?
21:41 masak that's correct, I think.
21:41 masak not idiomatic, but correct.
21:41 mathw looks okay to me
21:42 masak "Mi estas laca, ĉar mi iris hejmen."
21:42 patrickas rakudo: say 'Z'.succ
21:42 p6eval rakudo 56c846: OUTPUT«AA␤»
21:42 masak unless you really meant to say 'house' and not 'home', 'hejmen' is better.
21:42 mathw masak: oh I've fallen over that one before. Sigh.
21:48 masak std: my $1
21:48 p6eval std 32051: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't declare a numeric variable at /tmp/exQhHR4Ui2 line 1:␤------> [32mmy $1[33m⏏[31m<EOL>[0m␤Parse failed␤FAILED 00:01 112m␤»
21:48 jnthn masak: Google is ETOOHELPFUL when googling for hejmen...
21:49 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. :-)
21:49 jnthn masak: (Which is turns out is as I'd guessed. :-))
21:49 * mathw must remember to hear it in his head in Esperanto rather than in Lojban
21:49 masak jnthn: it's easy -- it's pronounced just like it sounds. :P
21:49 jnthn :P
21:50 masak also the spelling is easy. things are written just as they are spelled.
21:50 masak it's ingenious, if you ask me.
21:50 masak only an eye doctor could dream up such a scheme.
22:02 masak 'night, #perl6
22:02 sorear night masak!
22:04 avar d/w 21
22:13 achromic joined #perl6
22:16 pugssvn r32053 | sorear++ | [viv] Add an option to select syml cache root
22:25 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␤»
22:25 p6eval ..rakudo 56c846: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'Bob'␤»
22:26 dukeleto is that a bug in Rakudo?
22:26 dukeleto shouldn't the first Bob grammar only exist within the lexical scope it lives in ?
22:26 sorear no
22:27 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
22:27 sorear you can say my grammar if you want
22:27 dukeleto sorear: it still happens with subs
22:27 dukeleto perl6: sub { grammar Bob { regex TOP { \d+ } }; grammar Bob { regex TOP { \s+ } }
22:27 p6eval rakudo 56c846: OUTPUT«===SORRY!===␤Illegal redeclaration of symbol 'Bob'␤»
22:27 p6eval ..pugs: OUTPUT«*** ␤    Unexpected end of input␤    expecting "}"␤    at /tmp/r5b95IrJTV line 2, column 1␤»
22:27 sorear dukeleto: grammars default to our scope
22:27 dukeleto sorear: my grammar is very useful, thanks
22:27 dukeleto sorear: good to know, thanks!
22:27 sorear putting something in a sub doesn't change that
22:29 dukeleto sorear: thank you for the edification
22:29 tylercurtis joined #perl6
22:30 dukeleto sorear: do you know if there are tests that verify that in the spec suite?
22:30 Grrrr joined #perl6
22:45 justatheory joined #perl6
22:51 pugssvn r32054 | sorear++ | [STDeco] Convert Makefile to use ExtUtils::Command and not depend on POSIX utilities
22:54 Juerd sorear: See juerd.nl for several ways to contact me.
23:00 dalek niecza: 44a4616 | sorear++ | / (4 files):
23:00 dalek niecza: Track STD 31914 -> 32053
23:00 dalek niecza: review: http://github.com/sorear/niecza/commit/44a4616714da5027338ab5c5fe91ff8f4cf107af
23:02 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␤»
23:03 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:07 blogometer joined #perl6
23:07 hercynium joined #perl6
23:11 azert0x joined #perl6
23:14 pugssvn r32055 | sorear++ | [STDeco] Don't use a separate stamp, since dmake chokes on dot files
23:14 pugssvn r32055 | Move the space stripper out to tools/compact_pmc to avoid quoting complexities
23:19 diakopter trying dmake snap
23:20 diakopter heh; no `svn` found; fixing.
23:21 sjohnson yo dia long time no see
23:22 diakopter yo
23:22 _madmax_ joined #perl6
23:27 sorear diakopter: dmake snap won't work since there's no ExtUtils::Command for cp -r
23:27 sorear and snap wants to copy all of lib/
23:28 sorear diakopter: plain dmake succeeds in r32055?
23:28 diakopter it got to   ok USER PID CORE.setting
23:28 diakopter so I guess so, yeah
23:28 sorear the first or second time?
23:28 diakopter er
23:29 diakopter I think you're asking ... yes
23:29 diakopter second
23:29 justatheory joined #perl6
23:29 sorear wonderful.
23:31 diakopter sorear: you could bundle a snapshot of File::Copy::Recursive
23:31 diakopter it's not that huge
23:41 ruoso joined #perl6
23:43 s_mosher joined #perl6
23:52 tbourdon_ joined #perl6
23:52 cozmic joined #perl6
23:52 intenz joined #perl6
23:54 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 #perl6
23:55 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␤»
23:56 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
23:56 TimToady but this isn't that
23:56 sorear assigning to an array always autoflattens
23:56 TimToady (and rakudo doesn't do slice context yet)
23:57 s_mosher see I'm not clear on identifying contexts yet
23:58 s_mosher 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
23:59 s_mosher ah
23:59 s_mosher that makes more sense
23:59 s_mosher is there something less ugly than:
23:59 s_mosher rakudo: my @x = ( for <a|b|c d|e|f> { $(<1 2 3> Z=> .split('|')) } ) ; say +@x;
23:59 p6eval rakudo 56c846: OUTPUT«2␤»

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo