Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2011-09-02

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:03 Alias joined #perl6
00:03 felher Whats the preffered idiom to do something x times? 'for ^x { do_something() }'?
00:05 donri 5.times do something end  # nowait
00:10 molaf joined #perl6
00:13 [Coke] nom: for ^5 { say 1}
00:13 TimToady you mean rakudo: now
00:13 donri that sucker be merged eh
00:14 TimToady not a merge, a replacement
00:14 TimToady rakudo: say 1 for ^5
00:14 p6eval rakudo 2bac6a: OUTPUT«1␤1␤1␤1␤1␤»
00:15 TimToady rakudo: ^5 ==> map: say 1
00:15 p6eval rakudo 2bac6a: OUTPUT«===SORRY!===␤Confused at line 1, near "^5 ==> map"␤»
00:15 * [Coke] missed the party, being all $DAYJOBby with cold fusion and sql and jquery, oh my.
00:16 donri rakudo: class it{}; say it is so True
00:16 p6eval rakudo 2bac6a: OUTPUT«===SORRY!===␤Confused at line 1, near "say it is "␤»
00:19 felher k, so i'll stick with for ^x. :)
00:19 [Coke] whoops. I've been testnig nom branch last few days.
00:20 [Coke] Can we send an email to the dev list or get a blog post or something?
00:23 [Coke] should we able to just checkout master in an existing clone, or do we need to reclone?
00:29 benabik You should be able to check it out in an existing clone.
00:34 * [Coke] sees lots of updates to t/spectest.data that don't actually show the error message. do we not want those anymore?
00:40 [Coke] (rant: no updates to master's RSS feed in google reader)
00:41 [Coke] ... so, I'm confused.
00:41 [Coke] https://github.com/rakudo/rakudo/commits/master does not look like nom.
00:41 [Coke] is it just the eval robot that was updated?
00:46 PerlJam [Coke]: must be
00:46 PerlJam master may actually go away.
00:46 PerlJam I don't know what pm decided.
00:48 uasi joined #perl6
01:10 drbean joined #perl6
01:12 uasi joined #perl6
01:15 uasi joined #perl6
01:33 wolfman2000 joined #perl6
01:55 Sarten-X joined #perl6
02:01 woosley joined #perl6
02:01 pmichaud I've still been waiting to hear from jnthn++.  But I may simply make a decision for him.
02:01 pmichaud s/for/without/
02:15 jevin joined #perl6
03:06 lue Hm. "master" suggests to me "mainstream --- use this if you're not a hardcore rakudo dev", but I wouldn't mind too much if it disappeared (no more "hey, it's not nom anymore, it's master!!")
03:26 DarthGandalf joined #perl6
03:26 pmichaud yeah, I'm inclined to not have a master, at least for a while.
03:28 lue "There's no such thing as 'mainstream' right now, at least not until we're Perl 6"
03:28 Su-Shee joined #perl6
03:32 zappepcs_ joined #perl6
03:33 odoacre joined #perl6
03:34 lue .oO(would current master become "beta" or "ng" (or some other -Ofun name?))
03:35 benabik b: say 'hello'
03:35 p6eval b a55346: OUTPUT«hello␤»
03:35 sorear good * #perl6
03:35 sorear lue: no "beta".
03:35 sorear lue: beta is -Ono-fun
03:35 sorear lue: because people are conditioned to think beta = leading-edge
03:37 lue ah, yes, forgot about that.
03:39 sorear phenny: tell mberends Separate solutions for separate problems.
03:39 phenny sorear: I'll pass that on when mberends is around.
03:43 sorear phenny: tell masak Str per se is immutable but there's... something... between Str and Cursor that is mutable.  See also <cut>.
03:43 phenny sorear: I'll pass that on when masak is around.
03:44 zappepcs_ joined #perl6
03:45 sorear seen colomon
03:45 aloha colomon was last seen in #perl6 8 hours 23 mins ago saying "\o".
03:46 sorear o/ colomon
03:47 zappepcs_ joined #perl6
03:56 ZaphrodZenovka left #perl6
03:56 kfo joined #perl6
04:01 ZapZ joined #perl6
04:16 satyavvd joined #perl6
04:22 Trashlord joined #perl6
05:06 am0c joined #perl6
05:09 dhaivat joined #perl6
05:10 dhaivat When's Perl6 gonna be done? I'm sick of using PHP for work.
05:24 moritz good morning
05:25 moritz dhaivat: when is Perl 5 gonna be done? or C++? or Java?
05:25 mberends joined #perl6
05:25 sorear morning moritz
05:26 mberends morning moritz and hi, pre-thanks sorear
05:26 phenny mberends: 03:39Z <sorear> tell mberends Separate solutions for separate problems.
05:27 mberends sorear: did yesterday's discussion leave you with something to work with, or a bikeshed color scheme?
05:32 sorear yes
05:33 mberends :)
05:34 plobsing moritz: they just formally approved a new version of the fortran standard last year. apparently it can take over 50 years for a language to be "done".
05:35 moritz .oO( lisp )
05:36 TimToady we're not really interested in "done", so much as "competitive"
05:36 plobsing lisp is not a language. it is a philosophy.
05:38 lue "done" implies there's a fixed, concrete end-goal. From where I stand, there isn't one.
05:39 mberends "practical" is what I want
05:53 mberends in my view we will have succeeded when Ubuntu includes some Perl 6 based GUI apps in the place of the current Python based ones.
05:56 lue in my view we'll have succeeded when emerge uses P6 instead of python+bash :)
06:08 benabik We'll have succeeded when people spent time talking about how they use P6 instead of talking about when we'll have succeeded.
06:09 dhaivat lue: what's emerge?
06:09 sorear lue: Ada is done.
06:09 lue it's the package manager for gentoo, a linux distro.
06:09 sorear although they might be designing a successor, I dunno
06:16 koban` joined #perl6
06:17 koban` left #perl6
06:17 sorear dhaivat: The point is that your question is ill-defined because "done" is ill-defined.
06:18 sorear dhaivat: If you ask a well-defined question about a definable concept like speed, memory usage, library support, etc, we can try to make forecasts.
06:19 sorear of course this is a volunteer project.  we don't have HR or employment contracts, and the amount of work being done on Perl 6 fluctuates wildly from month to month, which means any forecasts will be of only approximate utility
06:24 mberends joined #perl6
06:25 wayland76 joined #perl6
06:27 Tedd1 joined #perl6
06:35 ralfradio joined #perl6
06:36 wayland joined #perl6
07:02 cognominal___ joined #perl6
07:07 birdwindupbird joined #perl6
07:08 jevin joined #perl6
07:09 dark_x joined #perl6
07:11 araujo joined #perl6
07:11 agentzh joined #perl6
07:27 mj41 joined #perl6
07:38 wamba joined #perl6
07:42 saaki joined #perl6
07:49 bbkr mberends: FYI Lion 10.7.1 upgrade installed. No detailed changelog from Apple is available except "we fixed many, many things, worship us now".
07:55 daxim joined #perl6
07:56 rhr joined #perl6
08:00 moritz rakudo: augment class IO::Socket::INET { method foo() { } }
08:00 p6eval rakudo 2bac6a: OUTPUT«===SORRY!===␤augment not allowed without 'use MONKEY_TYPING' at line 1, near "{ method f"␤»
08:00 moritz rakudo: use MONKEY_TYPING; augment class IO::Socket::INET { method foo() { } }
08:00 p6eval rakudo 2bac6a:  ( no output )
08:04 mberends bbkr: thanks! Some installation suggestions - mono (for Niecza), valgrind, JSON.pm. Also you may like some mberends/.profile bits stolen from Debian :)
08:10 bbkr mberends: which JSON.pm - from P5?
08:10 mberends yes, so it varies per installed p5 version I suppose
08:14 bbkr installation started: p5-json p5-json-xs mono mono-basic valgrind. JSON is common for all P5 versions. I'm not sure if you need also valgrind-devel
08:15 mberends 'git pull' has also slowed down again from bbrk.org - is this another ssh problem? It works, but the delay is about 35 seconds.
08:17 mberends valgrind-devel is probably only for devs who are changing valgrind. I think valgrind does use libc-devel on Debian.
08:20 mberends Debian valgrind depends on libc6-dbg
08:21 bbkr Yes, I know about git slowdowns. I'll try to figure out what is causing it.
08:22 mberends it's only a minor matter
08:27 mls morning perl6!
08:27 phenny mls: 01 Sep 16:52Z <pmichaud> tell mls  would you be able to do the same sort of callgraph analysis for compilation of Rakudo ng's setting?
08:27 phenny mls: 01 Sep 16:53Z <pmichaud> tell mls  it would be really useful to be able to compare the differences between ng and master
08:28 mls ok, generating...
08:49 ab5tract joined #perl6
08:50 flussence lue: it's funny you should mention portage... one of their GSoC projects was a libbash to make it easier to write a package manager in other languages. turns out it's also a million times faster than calling the shell too.
08:51 wayland_ joined #perl6
08:52 tadzik hello #perl6
08:53 moritz o/
09:10 orafu joined #perl6
09:17 mls phenny, tell pmichaud http://www4.informatik.uni-erlang​en.de/~mlschroe/Setting_ng.out.gz
09:17 phenny mls: I'll pass that on when pmichaud is around.
09:35 Mowah_ joined #perl6
09:37 fhelmberger joined #perl6
09:43 mls wow, the number of calls to as_post has grown quite a bit
09:43 tadzik flussence: ping
09:45 moritz I wonder if that's related to how we store literals
09:48 tadzik flussence: I guess we've come to the conclusion that Pod AST is not neceserilly HTML-friendly (see Lists in Pod). I thought about Markdown parsing today, and wondered if we want some sort of unified AST for Documents generally. Then we can write a Pod -> DocAST compiler and generate HTML easily from whatever we can compile to DocAST. So that'd work for Markdown as well, and whatever we want
09:52 mberends tadzik: +1 good thinking
09:56 daxim compare with the parsing work done by rjbs on pod and autarch on markdown resulting in events
09:56 daxim sometimes, an ast is inconvenient
09:57 tadzik I think having a HTML emmiter for every possible format on earth is inconvenient
09:57 mls moritz: could be the PAST::Want nodes
09:58 mls unfortunately the pir seems to have no annotations, so kcachegrind doesn't show the file/line
10:00 mls (the compiler should auto-generate annotations for subs that don't have any...)
10:00 moritz speaking of annotations... somehow in nom all reported files seem to be the current script, never modules
10:01 tadzik oh, speaking of which. We're not really into installing .pirs anymore, are we?
10:02 mls (manually intserting .annotate statements...)
10:03 moritz tadzik: you mean we should be installing .pbcs instead?
10:03 tadzik moritz: I don't know, but we don't install e.g. Test.pir, do we?
10:05 tadzik I think there's a reason for that
10:05 tadzik also, IoC doesn't work when installed with pirs
10:06 tadzik https://gist.github.com/1188309
10:08 espadrine joined #perl6
10:11 wamba joined #perl6
10:11 nebuchadnezzar joined #perl6
10:15 flussence tadzik: maybe we should just have a docbookxml emitter, and let that figure out how to convert to other formats :)
10:16 MayDaniel joined #perl6
10:37 bbkr_ mberends: do you want mono LTS 2.6.7 or latest stable 2.10.5?
10:39 daxim joined #perl6
10:40 tadzik flussence: if it's good enough? I mean, I don't know, never used it. And I'm much more towards the AST than a stringy format
10:40 tadzik maybe a sensemaking docbookxml emmiter is the first step
10:43 uasi joined #perl6
10:44 bbkr_ mberends: and bad news - valgrind is not yet released for Lion
10:45 uasi joined #perl6
10:50 mberends bbkr_: mono latest stable please :)  2.6.7 has the old  Boehm GC whilst 2.10.x has generational. sorear++ mostly uses latest mono
10:52 bbkr_ mberends: no problem. i see 2 packages - MRE and MDK. do you need both?
10:53 mberends bbkr_: I think MDK is to develop mono itself, if so then not required
10:53 mberends bbkr_: the Mono C# compiler might be in a separate 'mcs' package
10:56 espadrine mberends: Do you know whether Boehm is still actively developed btw?
10:56 espadrine /me wonders if they think about implementing more advanced features in it.
10:57 lateau_ joined #perl6
10:58 mberends espadrine: I think the Boehm main code is very mature and stable, but other people are producing experimental derivatives from it for SMP, NUMA etc.
10:59 flussence_ joined #perl6
11:03 mberends espadrine: Hans Boehm is quite active with other memory management projects nowadays. http://www.hpl.hp.com/personal/Hans_Boehm/gc/
11:03 mls does pbc_merge really strip the annotations?
11:04 thelazydeveloper joined #perl6
11:05 Trashlord joined #perl6
11:08 aduitsis joined #perl6
11:11 bbkr_ mberends: please check if mono MRE is installed correctly. 2.10.5 version, mcs is present, i'm not sure if anything else is required
11:13 mberends bbkr_: starting Niezca build...
11:13 thelazydeveloper left #perl6
11:17 woosley joined #perl6
11:18 mberends bbkr_: Niecza built ok and passed all tests :)
11:18 bbkr_ \o/
11:32 fhelmberger joined #perl6
11:48 pmichaud good morning, #perl6
11:48 phenny pmichaud: 09:17Z <mls> tell pmichaud http://www4.informatik.uni-erlang​en.de/~mlschroe/Setting_ng.out.gz
11:49 mberends \o pmichaud
11:49 cognominal joined #perl6
11:52 flussence uh oh, my graph data contains negative values...
11:53 JimmyZ joined #perl6
11:54 mberends pmichaud: moving pir::time__N calls around in lib/Test.pm works, and produces timings between 5% and 95% lower than the currently committed version, but clutters Test.pm with timing code. Some may find this undesirable, justifying it depends on how much we want the feature.
11:55 mberends some tests execute in 16 microseconds on the OS X server :)
11:55 tadzik wow, Rakudo is fast! :P
11:55 flussence I've been computing fails from ($plan - $pass - $skip - $todo)... looks like that's wrong. https://github.com/flussence/spe​cgraphs/commit/1474e65a16#diff-0
11:56 flussence (maybe I should just omit them altogether and consider any test not accounted for a fail)
11:57 pmichaud seems to me that fails should be counted directly
11:57 pmichaud not computed
11:59 flussence I'm doing it using TAP::Parser::Aggregator - didn't see an option to account for fails in the .pod, maybe I just missed it...
11:59 pmichaud mls: ping
12:10 mtk joined #perl6
12:30 MayDaniel joined #perl6
12:41 daniel-s joined #perl6
12:48 donri joined #perl6
12:52 wamba joined #perl6
12:57 bluescreen10 joined #perl6
13:06 mtk joined #perl6
13:07 pmichaud mberends: could I get a diff of your Test.pm with the additional pir::time__N calls, so I can see how cluttered it is?
13:07 mberends ok
13:10 pmichaud gotta run a few errands -- bbiaw
13:11 pmichaud (mberends:  I don't need the diff immediately -- just whenever you get a chance)
13:11 mberends about to paste it anyway, but no hurry here
13:12 mberends http://pastebin.com/tDqSx0gZ
13:31 apejens joined #perl6
13:32 im2ee joined #perl6
13:34 im2ee Hello perl's world! :)
13:34 mls pmichaud: hi!
13:37 mberends pmichaud: if the pir::time__N clutter is unwelcome I can work around it by making tools/test_summary.pl switch in its own Test.pm instead of the standard one in lib/, perhaps even by simply tweaking PERL6_LIB. There would be a bit of maintenance skew, but nothing serious.
13:47 tadzik hello im2ee
13:48 * [Coke] learns how to say "I don't know" in chinese.
13:49 JimmyZ [Coke]: ;)
13:50 tadzik now as you long as you act as a very dumb person, you can perfectly resemble a native chinese speaker :)
13:51 Holy_Cow joined #perl6
13:51 Holy_Cow left #perl6
13:52 aduitsis joined #perl6
13:55 JimmyZ there are hundreds of dialects in china, but I can only say two of them
13:55 JimmyZ s/say/say && understand/
13:57 mberends pmichaud: either way I plan to add some reporting to tools/test_summary.pl in a --view option. Current thoughts are a menu, sort by test time, speedup/slowdown since earlier test or % change, view in 'less'.
14:15 molaf joined #perl6
14:16 mkramer left #perl6
14:35 woosley joined #perl6
14:37 sftp joined #perl6
14:49 ggoebel joined #perl6
14:52 DerHartmut joined #perl6
14:53 DerHartmut Hi together
14:53 moritz hello
15:11 scorpil joined #perl6
15:17 woosley left #perl6
15:37 im2ee joined #perl6
16:04 Aridai joined #perl6
16:04 scorpil joined #perl6
16:29 im2ee joined #perl6
16:29 dark_x joined #perl6
16:56 mls pmichaud: the as_post calls showing up highest in the profile are just PAST::Block, PAST::Stmts, PAST::Stmt. Nothing suspicious.
16:57 scorpil left #perl6
17:02 im2ee <.space> in tokens is the same what \s in p5? :)
17:04 PerlJam im2ee: yes
17:04 im2ee PerlJam, thanks :)
17:05 PerlJam well, <.space> is the same as \s in Perl 6.  Perl 6's \s differes slightly from Perl 5's \s
17:05 uasi joined #perl6
17:05 im2ee Ok. :)
17:22 lucs joined #perl6
17:26 mj41 joined #perl6
17:33 pmichaud back again
17:36 pmichaud It's not the as_post calls that concern me so much (although if we have a lot more as_post for PAST::Block|Stmts|Stmt than for the others, *that* would be odd)
17:36 pmichaud apparently we create 3x as many PCT::Node objects in nom as we do in ng
17:36 pmichaud and that's probably why the past->post stage of compilation is taking so much longer
17:37 pmichaud in ng, we end up creating 465,609 PCT::Node objects (calls to 'new').  in nom, that number is 1,198,256
17:39 mls Yes, that's also what the profiles say. There are twice as many objects created for nom, thus it takes twice as long.
17:40 mls (probably not twice, but 3x many object. It takes twice as long because the parsing time stays constant)
17:41 pmichaud I'd like to be able to get profiles for ng and nom where we compile the setting using --target=past instead of --target=pir
17:41 pmichaud that would remove the creation of POST nodes out of the profile
17:42 pmichaud but _really_ I'd like to be able to generate these profiles myself :)
17:42 moritz mls: could you share your parrot patches?
17:42 mls Sure, I'll upload the (ugly) patch...
17:43 pmichaud mls: how does your way of creating the profiles differ from Parrot's profiling runcore option, other than it seems to work in places where the profiling runcore doesn't and is apparently a ton faster?
17:43 mls It's not that different. I looked at the parrot profile code, but it seems to print a line for every op instead of incrementing counters.
17:44 mls (And I also use the TSC instead of doing a syscall. Highly unportable, but fast)
17:45 mls (That's for counting cycles, op counting is portable, of course)
17:45 pmichaud I think it would be very valuable to get your code in as a runcore option
17:46 pmichaud even if it's only available for certain platforms to begin with
17:46 mls Yes, it shouldn't be that hard to integrate. It'll only report ops for platforms with no TSC.
17:46 pmichaud what do the numbers under "Incl." and "Self" represent?
17:46 tadzik TSC?
17:47 pmichaud oh, it's "ops" and "cycles"
17:47 pmichaud cooool
17:47 pmichaud what are "cycles"?
17:47 mls http://en.wikipedia.org/wiki/Time_Stamp_Counter
17:48 pmichaud hmmmmm
17:48 moritz what you get from (mutual) recursion, I thikn
17:48 pmichaud I think there must be something wrong, then.
17:48 mls what's wrong?
17:48 pmichaud should that be "ops" and "ticks" instead of "ops" and "cycles"?
17:49 pmichaud (to avoid the pun with "cycles" as used in callgraph cycle detection?)
17:49 mls Yes, ticks is probably the better name.
17:49 pmichaud okay, I'll use "ticks" here.
17:49 pmichaud The profile seems to indicate that the lineof function is responsible for the greatest number of ticks
17:49 mls ops
17:50 sorear good * #perl6
17:50 mls Hi sorear!
17:50 pmichaud when I switch to displaying ticks instead of ops, lineof jumps way to the top
17:51 pmichaud (in the ng profile)
17:51 mls In my kcachegrind it's the other way round.
17:51 mls Oh, ng.
17:51 mls looking...
17:52 mls Yes, it's number one both for ops and ticks
17:52 cotto_work mls: where's your patch?
17:52 pmichaud currently lineof is implemented using a linear search, which is O(n**2).  I switched it to be a binary search so that it's O(n*log(n))  but saw hardly _any_ impact on overall performance.
17:52 mls working on it...
17:52 mls Yes, that's to be expected
17:53 pmichaud and I put in some other tracing code into lineof to find out why it's taking a long time there.... and it still didn't seem to be a source of slowdown
17:53 pmichaud so I'm curious why it appears so high in the profile
17:53 mls lineof isn't slow
17:53 mls You should look at 'Incl.'
17:54 mls (Speaking of lineof, I've also optimized it a bit. I store the position of the last match, because the lineof queries seem to be done in ascending order most of the time
17:54 PerlJam Are you guys still looking at the same kcachegrind file that mls posted yesterday?
17:54 pmichaud yeah, I thought about doing that approach also.
17:54 pmichaud PerlJam: yes, and a new one posted this morning for ng that I'm using as comparison.
17:55 mls you can do that on top of the binary search
17:55 pmichaud I'll apply my binary search patch so we can get that artificial slowdown out of the profiles.
17:56 mls But lineof is not the responsible for the slowness. I once patched it to just return 0, and the compilation was just a couple of seconds faster
17:56 mls (back to patch creation...)
17:57 pmichaud right, so I'm wondering why it shows up high on the ticks count
17:57 pmichaud according to the profile, it's 25% of the ticks
17:57 mls Just for "Self"
17:57 pmichaud no, in Incl
17:57 pmichaud (looking at ng here)
17:57 mls Checking...
17:58 pmichaud main has 296,492,734,685 Incl. ticks.   lineof has 55,251,168,511 Incl. ticks
17:58 pmichaud oh, sorry, 16% of the ticks.  Still.
17:58 pmichaud (mental calculation error)
17:59 mls ticks have to be taken with a grain of salt
17:59 mls (not the animal ;) )
17:59 mls cause other processes interfere with the measurement
17:59 pmichaud like gc?
17:59 mls it's like gettimeofday() etc.
18:00 mls Yes, gc as well.
18:00 pmichaud yeah, so it looks like we can't really use ticks as a good measure of where things are slow.
18:00 mls Well, it's better than nothing
18:01 pmichaud sure, but it also means it can lead us down false optimization paths
18:01 PerlJam It's too bad you can't get actual timings.
18:01 PerlJam (except on a gross scale)
18:02 pmichaud PerlJam: yeah, this is one of those areas where I've been disappointed with parrot profiling.  figuring out where things are slow is really hard.
18:02 pmichaud not that profiling is easy, mind you :)
18:02 frettled joined #perl6
18:02 TimToady let's add threading and make it even harder!  :)
18:03 * pmichaud makes a little noose out of threads for TimToady++
18:03 mls If the parrot run takes a long time, chances are that influences like gc will not matter much
18:03 PerlJam TimToady: it gets easier if you first project into 10 dimensions and then back out again.
18:04 pmichaud but I wonder why lineof gets such a disproportionate amount of the cost
18:04 mls if gc always hits the same function, it's probably the function's fault
18:04 PerlJam mls: you have some statistical evidence to back up that claim?  :)
18:04 mls ;)
18:04 mls Did you do your lineof optimization in ng?
18:04 pmichaud actually, if gc is a function of number of ops executed, then lineof gets hit more often simply because it's executing so many ops (even though those ops are fast)
18:05 pmichaud the lineof optimization goes in Parrot
18:05 mls gc gets triggered by PMC allocation
18:05 tadzik pardon me, what's lineof()?
18:05 pmichaud well, that can't be it then.  when lineof is called, it's not allocating PMCs
18:05 mls (gc = parrot's garbage collection, right?)
18:05 tadzik mls: right
18:05 pmichaud yes, gc == parrot's garbage collection
18:05 mls yes, so it's not a gc issue.
18:06 mkramer joined #perl6
18:06 pmichaud lineof() is the function in HLLCompiler that calculates line numbers for source
18:06 buubot_backup joined #perl6
18:06 pmichaud i.e., given a string of source code and a position offset, determine the line number of the offset
18:06 tadzik whoa
18:06 mls I can re-run the ng profiling to see if anything changes
18:06 mls but first, i'll upload the patch...
18:07 tadzik do we need that for anything besides annotations?
18:07 pmichaud tadzik: error messages, but those are rare
18:07 pmichaud at least, they're rare when compiling the setting
18:07 tadzik aye
18:07 TimToady tadzik: the main reason for lineof() is actually reliability
18:07 pmichaud and I'm fairly certain that lineof itself isn't eating up 16% of compilation time
18:07 TimToady it's very, very difficult to enforce line number counting in a parser
18:07 tadzik I thought that's it, but I didn't think that'd be so expensive in action
18:08 pmichaud tadzik: right, which is why I think it's a profiler artifact and not reality
18:08 tadzik may be
18:08 TimToady but we can always be pretty sure of the current parser position
18:08 pmichaud and I'm trying to figure out the source of the artifact
18:08 TimToady I don't suppose there's anything in the profiling code that calls lineof() surreptitiously?
18:09 pmichaud doesn't seem likely.
18:09 pmichaud the profiler is in C, while lineof() is PIR.
18:09 pmichaud and lineof() is strictly compile-time.
18:10 pmichaud that's a good thought, though, so I'll explore it a bit.
18:10 PerlJam I bet someone could build a chart of the necessary timing information for each parrot op and then marry that with mls' data to figure out where the real slow-down is.
18:10 PerlJam It would take a bit of work to do it by hand though
18:11 pmichaud PerlJam: I think it's not so simple.
18:11 pmichaud PerlJam: remember that parrot ops sometimes call into PIR.
18:11 pmichaud so "timing information for each parrot op" gets convoluted really quick.
18:12 PerlJam well, how about "timing for each parrot-level sub" instead?
18:12 cotto_work Yeah.  Dealing with nested runloops took a lot of thought.
18:12 pmichaud "timing for each parrot-level sub" is also somewhat convoluted.  See gc.
18:12 pmichaud If GC occurs in the middle of a sub, do we charge the sub with the cost of GC?
18:12 PerlJam pmichaud: it would have to be stastical
18:12 PerlJam with large error bars I guess
18:13 pmichaud what might be really helpful is if the profiler could treat GC as a separate subcall
18:13 pmichaud so then if, for example, GC is occurring within lineof, it shows lineof as a caller and charges the expense of the GC to the phantom GC sub instead of lineof itself
18:14 pmichaud (the Incl. total would still include the cost of the GC, but we'd be able to separate the GC cost from the "actual work" cost)
18:15 PerlJam I haven't seen mls' patch, but it sounds like he could intercept GC calls and do something special.
18:16 pmichaud maybe.  I suspect the profiling patch works at the level of intercepting things at the level of op dispatch.  GC takes place in another area, iiuc.
18:17 mls yes
18:18 mberends joined #perl6
18:19 plobsing joined #perl6
18:19 kaare_ joined #perl6
18:19 PerlJam isn't there an op to force a GC run?
18:19 PerlJam Couldn't you call it periodically so that GC runs are more predictable?
18:19 cotto_work collect iirc
18:21 mls diff: http://www4.informatik.uni-erlange​n.de/~mlschroe/parrotprofile.diff
18:21 pmichaud we probably could, yes.  but based on what mls++ said above, I doubt that gc is occurring during lineof
18:21 mls Use: parrot -R slow will dump the valgrind data to stderr
18:22 mls not very confty, but it works for now
18:22 PerlJam I wonder how much the GC system knows about the state of parrot when it's called?  Maybe the GC system itself could be instrumented for profiling such that the results could be subtracted from the cachegrind stuff
18:22 cotto_work mls: do you mind if I start a branch on parrot.git with that?
18:22 mls no, go ahead
18:23 mls the patch is now in public domain ;)
18:23 pmichaud cotto_work++ cotto_work++  a branch with that is exactly what we need
18:24 plobsing mls: why do you manually handle the annotations and then call PackFile_Annotations_lookup?
18:24 pmichaud just a sec, I'm about to commit my binary search patch
18:24 mls see the discussion on #parrot
18:24 plobsing mls when?
18:25 cotto_work mls: what's the difference between this profiler and the one in parrot now?
18:25 plobsing oic, it handles the sub lines. sorry
18:25 rlb3 joined #perl6
18:25 mls Didn't you suggest the null annotations?
18:25 cotto_work is it just sub-level?
18:26 plobsing yes. I didn't put 2 and 2 together
18:27 pmichaud binary search patch pushed.
18:30 mls (for reference: that was my lineof patch: https://gist.github.com/1189409)
18:32 pmichaud I think we can get a bit better if we simply cache lastline and not lastpos
18:32 pmichaud and compare  linepos[lastline] against pos
18:33 rlb3 left #perl6
18:33 pmichaud if linepos[lastline] < pos, then we start from lastline.
18:33 mls You need to check that lastline is in bounds first
18:33 pmichaud in bounds?
18:34 mls lastline < elems(linepos)
18:34 pmichaud it has to be, if we're caching
18:34 pmichaud well, I suppose it could be elems(linepos) exactly
18:35 mls yes
18:35 pmichaud which would be "out of bounds".  but that's still a pretty easy check.
18:35 pmichaud it gives us a better start position for 'line'  (or 'lo' in the binary search)
18:35 cotto_work mls: I'll push as soon as I've verified a clean(ish) build.  Thanks!
18:36 mls I hope it works also on 64bit builds, I've just tested 32bits
18:36 cotto_work mls: I'd appreciate it if you'd send a quick note to parrot-dev about what it does.
18:36 cotto_work I believe pmichaud can answer that question. ;)
18:37 cotto_work and pushed
18:37 pmichaud well, I'm waiting for the branch to arrive :)
18:37 pmichaud because then it's easy to do in nom
18:37 pmichaud just --gen-parrot=branchname
18:38 ab5tract joined #perl6
18:38 mls I think I stored lastpos so that lookups between lastpos and linepos[lastline] also are fast
18:39 mls i.e. if you lookup the same value twice, the second lookup is fast
18:39 pmichaud I suspect "look up the same value twice" almost never happens, though.
18:39 pmichaud well, it might happen, now that I think about it.
18:40 mls well, you can just subtrace one from lastline
18:40 mls then you also don't run into problems with elems(linepos)
18:40 pmichaud might run into problems on line 0, though.
18:40 pmichaud so still need the check.
18:40 mls ;) yes, but that's a simple == 0 check
18:41 pmichaud well, checking against elems() isn't hard either, since we have to get that value anyway
18:41 donri joined #perl6
18:41 pmichaud I'll add a 'lastline' patch here shortly
18:42 mls subtracting one will help the "lookup same value" case
18:42 mls but implement it any way you like ;)
19:06 mkramer joined #perl6
19:13 jevin joined #perl6
19:18 mls cotto_work: mail sent.
19:21 mls ok, weekend ;)
19:28 lue hello Camelialand o/
19:32 tadzik o/
19:32 sorear hello
19:33 TimToady nom: my @x; @x[0][0] = 42;
19:33 TimToady rakudo: my @x; @x[0][0] = 42;
19:33 p6eval rakudo 2bac6a: OUTPUT«Cannot assign to a non-container␤  in <anon> at /tmp/Dcv4MRlqCV:1␤  in <anon> at /tmp/Dcv4MRlqCV:1␤␤»
19:33 TimToady is there an eta on autoviv in nom?
19:34 PerlJam TimToady: when it's ready.   ;)
19:34 TimToady is there an etr then?
19:36 birdwindupbird joined #perl6
19:37 diakopter niecza: my @x; @x[0][0] = 42; # i wonder
19:37 p6eval niecza v9-8-gd3b0031:  ( no output )
19:39 PerlJam TimToady: I have vague recollections that autoviv would be fixed within a few weeks but only jnthn/pmichaud would really know.
19:39 PerlJam (the vague recollection is tied to jnthn in my head)
19:42 wayland76 joined #perl6
19:50 pmichaud actually, I'm the autoviv guy, I think.
19:50 pmichaud I can fix it tonight, np.
19:52 mkramer left #perl6
19:54 cexsum joined #perl6
19:57 pmichaud mls / cotto_work:   the profiler seems to work fine on my 64-bit box.  mls++ cotto_work++
19:58 mberends \o/
19:58 pmichaud the sub-profiler branch is behind master by about 58 commits, though.
19:58 pmichaud https://github.com/parrot/par​rot/branches/mls/sub-profiler
19:58 pmichaud afk, lunch
20:00 lue is nom still in the nom branch ?
20:05 sorear afaik yes
20:07 saaki joined #perl6
20:18 cotto_work pmichaud: thanks for noticing.  I thought I pulled before branching.  looks like an easy merge.
20:29 bluescreen10 joined #perl6
20:46 sorear I've finished reading the C# overloading resolution spec, and I kindof like it better than Perl 6's current multimethod resolution
20:46 sorear it's certainly a simpler definition
20:49 PacoLinux_ joined #perl6
20:51 wolfman2000 joined #perl6
20:51 moritz sorear: is it symmetric in the arguments?
20:52 itz joined #perl6
20:54 sorear moritz: yes
20:55 sorear both the C# and Perl6 models start with a poset of possible functions
20:55 sorear C#: Pick the unique greatest element, or error.
20:56 moritz isn't that what Perl 6 does too? :-)
20:56 moritz I mean, for some definition of "greatest element", that already takes "is default" into account
20:57 sorear Perl6: Assign the elements of the poset into a list of buckets using a specific greedy topological sort, such that every element is put into the least bucket consistent with the partial order.  Then find the first bucket which contains a usable candidate, or error if there are more than one in the same bucket
20:57 sorear moritz: no
20:57 sorear the Perl6/Rakudo algorithm seems like it's trying to implement that, but it doesn't really
20:58 moritz how is that "greatest element" defined in C#?
20:58 flussence .oO( maybe we should just copy the css selector specificity algorithm )
20:59 sorear candidate which is better than all other valid candidates
20:59 sorear let me try and find a specific example of a case where they differ
21:00 mberends sorear: does this document whhat you're describing? http://msdn.microsoft.com/en-us/l​ibrary/aa691336%28v=VS.71%29.aspx
21:01 sorear mberends: It appears to be equivalent
21:01 sorear mberends: except too short
21:03 sorear I'm reading §14.4.2 of ISO/IEC 23270:2006(E)
21:04 colomon joined #perl6
21:04 sorear which is identical to the section of the same number in Ecma-334
21:04 sorear about 4 pages
21:04 moritz so they count number of subclasses, right?
21:05 sorear moritz: ...number of subclasses?
21:05 moritz erm, depth of inheritance hierarchies
21:05 sorear mberends: ah, yes, if you count subsections it's the same
21:05 sorear moritz: yes
21:05 moritz is that like manhattan sort?
21:06 * moritz -> sleep
21:06 sorear I cannot find any references to a concept called "Manhattan sort" on google
21:12 mberends I guess it relates to "manhattan distance" in "Taxicab geometry" http://en.wikipedia.org/wiki/Manhattan_distance
21:14 im2ee Have a nice day/night. Bye! :)
21:14 mberends o/ im2ee
21:15 im2ee \o :)
21:15 cognominal joined #perl6
21:17 wooden joined #perl6
21:19 mberends "manhattan distance" is a kind of hop count if the blocks are equal sized, so you could sort by that. I'm not sure whether such a distance applies to the number of arguments that need implicit conversion.
21:19 cotto_work iirc the calculation done by Parrot takes conversions into account
21:21 sorear they don't *count* anything.
21:21 sorear it's a purely relational analysis.
21:23 mberends true, jnthn++ calls it "topological sort" in one of his talks
21:24 TimToady p6 used to use manhattan distance, but it was rejected as to much bad dwimmery
21:24 TimToady *too much
21:26 * jnthn back from $trip
21:26 jnthn Exhausted, but that's nothing sleep won't fix :)
21:26 mberends o/
21:26 pmichaud jnthn: o/
21:27 jnthn (And yes, that was the last trip for a while. I can actually get back to doing stuff again...like, writing code. :-))
21:27 jnthn o/ pmichaud
21:27 pmichaud jnthn: I have a quick (and should be easy-ish) question for you, if you're awake enough for it :)
21:27 jnthn pmichaud: I feel surprisingly awake, which may or may not be a good sign. ;-)
21:28 tadzik lolitsjnthn!
21:28 pmichaud we're going to move master->ng, but considering leaving 'nom' branch as 'nom' (and not having a 'master' branch at all)
21:28 jnthn That feels like it'll surprise too many people.
21:28 pmichaud we'll set git so that a repo clone defaults to 'nom'
21:28 jnthn I still think it'll surprise too many people.
21:28 jnthn What's the motivation?
21:28 jnthn I know "master" is just a convention.
21:29 jnthn But...people get used to conventions.
21:29 pmichaud well, for one it means we don't have confusion regarding 'master'
21:29 pmichaud it also means we don't have to tell folks to re-clone their repos
21:30 jnthn Will folks get a relatively decent message telling them they need to do that?
21:30 sorear rakudo: role A {}; role B does A {}; role C {}; class X does A does C {}; multi f(A) { "A" }; multi f(C) { "C" }; say f(X)
21:30 p6eval rakudo 2bac6a: OUTPUT«Ambiguous dispatch to multi 'f'. Ambiguous candidates had signatures:␤:(A)␤:(C)␤␤  in sub f at /tmp/KWmDLA9A9S:1␤  in <anon> at /tmp/KWmDLA9A9S:1␤  in <anon> at /tmp/KWmDLA9A9S:1␤␤»
21:30 pmichaud I've drafted two messages, depending on which way we go
21:30 sorear rakudo: role A {}; role B does A {}; role C {}; class X does A does C {}; multi f(A) { "A" }; multi f(B) { "B" }; multi f(C) { "C" }; say f(X)
21:30 p6eval rakudo 2bac6a: OUTPUT«C␤»
21:30 sorear I hope at least one person in #perl6 agrees that this is wrong.
21:30 pmichaud http://pmichaud.com/sandbox/nom2.txt # assuming we keep 'nom' as 'nom'
21:30 pmichaud oops
21:30 pmichaud http://pmichaud.com/sandbox/nom-2.txt # assuming we keep 'nom' as 'nom'
21:30 sorear adding a candidate which cannot be used changes the ambiguous overloading detection
21:31 pmichaud http://pmichaud.com/sandbox/nom.txt # assuming we rename 'nom' as 'master'
21:31 sorear with C#'s rules, which are similar enough that they could be trivially adopted, this problem does not exist.
21:32 jnthn sorear: The ambiguity for the first one looks correct. Looking at the second one...
21:32 pmichaud discussion of the branch rename: http://irclog.perlgeek.de/​perl6/2011-08-31#i_4352409
21:32 sorear jnthn: C# rules will treat both of them as ambiguous.
21:32 sorear jnthn: they are also much simpler to specify.
21:33 jnthn sorear: I dont' realy see how that's relevant.
21:33 sorear jnthn: how what is relevant?
21:33 jnthn What C# does.
21:33 jnthn sorear: Have you tried asking nom?
21:33 TimToady simpler is potentially relevant :)
21:33 sorear jnthn: because I'm going to change the perl 6 spec to follow the C# spec.  it's simply better.
21:33 jnthn sorear: No, you're not.
21:34 sorear right, I have to fight you first.
21:34 jnthn Again, did you check what nom thinks?
21:34 sorear nom: role A {}; role B does A {}; role C {}; class X does A does C {}; multi f(A) { "A" }; multi f(B) { "B" }; multi f(C) { "C" }; say f(X)
21:34 pmichaud note that "rakudo:" in p6eval is now nom.
21:34 jnthn ah
21:34 * jnthn looks a little more
21:34 pmichaud and there is no "nom:" target   (but there needs to be)
21:35 jnthn sorear: oh, I see what's going on.
21:35 jnthn I think. I need to draw out the DAG normally to really be sure.
21:35 jnthn Anyway, in the second example, B and C end up tied, with A narrower.
21:36 jnthn Note that the candidate ordering is *static*.
21:36 jnthn I don't know whether the C# one is.
21:36 jnthn (Yes, it is in so far as it decides everything at compile time. But that's orthogonal to whether the list is statically sortable.)
21:37 jnthn So arguments along the lines of "the one with B could never be called" aren't really relevant. At sort time - which is once ever - it is relevant.
21:38 jnthn I'd also be extremely reluctant to change semantics that so far have suited many real world cases, when I'm looking at an example here that seems relatively contrived.
21:38 jnthn pmichaud: Checking the release announces.
21:39 pmichaud jnthn: note that if we leave 'nom' as 'nom' and discover that people are really confused by it, we can still do 'nom'->'master' later (with no additional work)
21:39 jnthn pmichaud: I'm having trouble saying exactly why, but something makes me uncomfy about not having a "master"
21:39 pmichaud jnthn: does it help to know that p5 doesn't have a 'master' ?
21:39 jnthn pmichaud: Well, but then we'd be deferring the re-clone.
21:39 pmichaud I mean "no additional work" relative to making that decision today.
21:39 jnthn pmichaud: Well, it's a fact I wasn't aware of :)
21:40 jnthn Ah, in that case you're correct.
21:41 jnthn pmichaud: When do we need to decide by?
21:42 pmichaud sooner is better -- I'd like to get some sort of announcement out, well, yesterday.
21:42 jnthn pmichaud: I know masak++ had some discomfort about the "no master" issue, and he may have actual reasoned arguments rather than my knee-jerk discomfort. :)
21:42 pmichaud when I asked masak++ about it, it was primarily the "most people expect a 'master'" argument
21:43 pmichaud I'm not sure who 'most people' will be in this case, though.
21:43 pmichaud also, I suspect that when projects grow to a certain size, the argument for having 'master' as default might break down.
21:43 pmichaud although it definitely depends on workflow
21:44 pmichaud also, I'm highly persuaded by TimToady++'s strong opposition to a rename.
21:45 jnthn Ah, OK, you already discussed with with masak.
21:45 pmichaud well, only briefly.  I had some followup questions there too but we've been missing each other on #perl6
21:45 jnthn Got a link to TimToady++'s reasons for not wanting to do a rename?
21:45 jnthn What will happen to people who have a checkout of "master" today?
21:46 pmichaud http://irclog.perlgeek.de/​perl6/2011-08-31#i_4352409
21:46 jnthn Who just "git pull"?
21:46 pmichaud they'll get a note that master no longer exists
21:46 pmichaud which is definitely better than it trying to do a merge with a new master
21:46 pmichaud (a new nom-based master)
21:46 pmichaud at least, that's what I suspect will happen.  Let me try it out.
21:48 jnthn pmichaud: I'm probably 0 on "no master", but -1 on "call it nom". Largely the "we think it's cute today" argument. :-) Yes, it is cute, but I think a name that better indicates its role as the current actively developed head may be better. "bleed" in Perl 5 does that, for example. (iiuc the Perl 5 approach, anyway...)
21:49 jnthn otoh, it is what people get by default...I can just imagine dozens of "why is it called nom?" questions needing answering int he future ;)
21:49 sorear -1 to giving anything a long-term name with the word "new" in it
21:49 jnthn Well, yeah. The "n" in "nom" is for "new" :)
21:49 sorear anyone remember New Executables?
21:49 jnthn Or New York? :)
21:49 pmichaud for developer names, I don't mind occasional cuteness.  -Ofun and all that.
21:49 molaf joined #perl6
21:50 jnthn (Yes, OK, it *is* newer than my York... :))
21:50 jnthn pmichaud: Cute is nice. I like cute things. I just worry it'll be tiresome to explain style of cute. :)
21:50 pmichaud explain to _who_, exactly?
21:51 aloha positive: nothing; negative: nothing; overall: 0.
21:51 jnthn pmichaud: People who show up here and ask "why is it called nom?" :)
21:51 jnthn Maybe I overestimate the risk of that.
21:53 pmichaud Attempting to pull when master is removed gives:
21:53 TimToady I'm not opposed to having 'master' be an alias for whatever the current "approved" version, but I just really like for major versions to have permanent names too...and "nom" feels like one of those permanent names to me
21:53 pmichaud pmichaud@kiwi:~/ren$ git pull
21:53 pmichaud Your configuration specifies to merge with the ref 'master'
21:53 pmichaud from the remote, but no such ref was fetched.
21:54 TimToady "We are now in the Nom Era."
21:54 pmichaud afaik git doesn't have a way to alias branch names in the way we want
21:54 sahadev joined #perl6
21:55 TimToady "That was back in the [Alpha|Ng] Era..."
21:55 sorear nomic?  nomous?
21:55 sorear and is that pronounced like "gnome"?
21:55 TimToady it's pronounce by eating heartily
21:56 jnthn :)
21:56 TimToady and how do you pronounce "gnome" anyway?
21:56 tadzik gnołm
21:56 * jnthn treats the "g" as silent, fwiw.
21:58 sahadev hello all. is this how to read input by paragraphs?   for $*IN.lines(nl => "\n\n") -> $para { say $para }
21:58 * TimToady pronounces the "g"
21:58 TimToady for the softward, not for the garden gnome :)
21:58 TimToady *ware
21:58 tadzik sahadev: looks neat, does it work?
21:58 sahadev that still reads my input by line.
21:58 jnthn TimToady: Oh, I'd always figured they should be said the same ;)
21:58 * TimToady also pronounces the 'k' on Knuth :)
21:58 tadzik okay then
21:59 sahadev tadzik: no. i was hoping someone here would correct my error if there was any.
21:59 jnthn pmichaud: I think I object less to the "no master" thing that I initially did.
21:59 jnthn s/that/than
21:59 tadzik sahadev: I have a feeling nl is NYI in Rakudo
22:00 sahadev oh, well.
22:00 jnthn pmichaud: tbh, if people do "git clone" and they get the Right Thing, then that's "enough". And we have a fairly tight commit policy, and tend to take patches over fork requests, so it's not so many people we'll need to point out that "no, you don't do git push origin master" to
22:00 TimToady perl6: for $*IN.lines(nl => "\n\n") -> $para { .say; exit }
22:00 lue I personally like the idea of "no master", and if you want to avoid *new*, rename s/nom/jom (jnthn's object model) perhaps
22:00 p6eval niecza v9-8-gd3b0031: OUTPUT«Potential difficulties:â�¤  $para is declared but not used at /tmp/cU5Mbc8Dww line 1:â�¤------> [32mfor $*IN.lines(nl => "\n\n") -> [33mâ��[31m$para { .say; exit }[0mâ�¤â�¤Unhandled exception: Excess arguments to CORE TextReader.lines, unused named nlâ�¤  at /home/p…
22:00 p6eval ..pugs: OUTPUT«*** No such method in class Scalar: "&lines"␤    at /tmp/xh2tOz4BNT line 1, column 5-30␤»
22:00 p6eval ..rakudo 2bac6a: OUTPUT«Any()␤»
22:01 jnthn lue: oh no! :P
22:01 TimToady niecza++ is much more careful about complaining about NYI stuff than rakudo is
22:02 jnthn TimToady: For one, I didn't know nl existed. :) But also Niecza fails for the wrong reason.
22:02 TimToady well, the first message is not a failure
22:02 jnthn TimToady: Unexpected arguments to methods should be ignored.
22:02 jnthn er, *named* arguments
22:02 jnthn Due to implcit *%_
22:02 jnthn Which is why Rakudo ignores it.
22:03 lue .oO(perhaps I'd like getting rid of master because I'm a whovian.)
22:03 jnthn lue: :)
22:04 pmichaud jnthn: (less objection to no master)  okay, noted.
22:04 pmichaud if we want to call the branch something other than 'nom', we can do that.  But I think TimToady++ is somewhat correct about too much renaming taking place, and that would be another instance of it.
22:04 pmichaud otoh, if we don't want this to be known as the "nom era", we need a new name for it.
22:04 TimToady jnthn: maybe niecza was expecting it :)
22:05 lue I can't come up with any real reason why I'd like it gone (much like jnthn in the other direction), except that it gets rid of the only stable-implying branch name, which better communicates the wobbly nature of implementing P6.
22:05 jnthn TimToady: Maybe ;)
22:05 pmichaud I have to agree that rakudo gets the above one correct, with the exception of not warning about unused $para
22:05 jnthn pmichaud: Unless nl is spec, and NYI :)
22:05 TimToady niecza: for $*IN.lines(blurgh => "\n\n") -> $para { .say; exit }
22:05 p6eval niecza v9-8-gd3b0031: OUTPUT«Potential difficulties:â�¤  $para is declared but not used at /tmp/2keHW6reGQ line 1:â�¤------> [32mfor $*IN.lines(blurgh => "\n\n") -> [33mâ��[31m$para { .say; exit }[0mâ�¤â�¤Unhandled exception: Excess arguments to CORE TextReader.lines, unused named blurghâ�¤  at…
22:05 TimToady heh
22:05 jnthn :)
22:06 pmichaud for $*IN.lines(nl => "\n\n") -> $para { $para.say; exit }
22:06 pmichaud rakudo: for $*IN.lines(nl => "\n\n") -> $para { $para.say; exit }
22:06 p6eval rakudo 2bac6a: OUTPUT«Land der Berge, Land am Strome,␤»
22:06 pmichaud rakudo gets it right.
22:06 pmichaud well, not really.
22:06 pmichaud should be a paragraph and not a line
22:06 jnthn Right
22:06 TimToady and \n\n is wrongish for paragraph mode anyway
22:06 jnthn I'm trusting nl actually is in the spec and I just missed it :)
22:07 pmichaud yes, there's a :$nl argument to lines in the spec.
22:08 jnthn ok
22:08 TimToady perl6: for $*IN.lines(nl => /\n\n+/) -> $para { .say; exit }
22:08 p6eval pugs: OUTPUT«*** No such method in class Scalar: "&lines"␤    at /tmp/a8kxHHNShe line 1, column 5-31␤»
22:08 p6eval ..rakudo 2bac6a: OUTPUT«Any()␤»
22:08 p6eval ..niecza v9-8-gd3b0031: OUTPUT«Potential difficulties:â�¤  $para is declared but not used at /tmp/JwgDK3baEm line 1:â�¤------> [32mfor $*IN.lines(nl => /\n\n+/) -> [33mâ��[31m$para { .say; exit }[0mâ�¤â�¤Unhandled exception: Excess arguments to CORE TextReader.lines, unused named nlâ�¤  at /home/…
22:09 TimToady that's a more correct definition
22:11 Limbic_Region joined #perl6
22:12 lue in any case, put my vote down for "master" removal.
22:12 * TimToady looks around for a handy putdown...
22:14 pmichaud lue: noted
22:14 * diakopter hands TimToady a put handmedown
22:14 pmichaud I'll make a decision (and the related switches) tonight, likely.
22:18 Limbic_Region Um - been away for some time now - have there been any major changes in status of Rakudo/Parrot in say - the last 18 months?
22:18 Limbic_Region oh, and salutations all btw
22:19 tadzik yes, hello
22:29 TimToady yes, we've done yet another 80% of the work :)
22:30 Limbic_Region TimToady - you are well into the next 80% I imagine?
22:31 diakopter well much of that 80% is rework at each cycle
22:31 sahadev left #perl6
22:32 sorear Limbic_Region: 18 months you say?  Did you leave before or after ng landed?
22:33 Limbic_Region sorear - I never really left but I have had almost no visibility to anything going on - so, no - I don't remember ng landing
22:34 TimToady decommuting &
22:35 TimToady o/ # L_R btw
22:35 Limbic_Region for those of you who know me and care - last July I lost my Mother.  I have lost about 90 pounds in an effort to get back in shape (I run 2 miles in under 16 minutes now).  My oldest daughter - Jasmine, started Kindergarten and several promotions at work have left with me almost no time for distractions
22:35 sorear "almost no visibility to" is unidiomatic US or UK English.  I wonder where you're from.
22:35 * Limbic_Region is US based
22:35 sorear anyway, yes, everything has changed.  Except the things that haven't.
22:36 Limbic_Region well, that clears everything up - next you will be telling me MAD has been changed names to MUD
22:36 Limbic_Region :P
22:36 donri joined #perl6
22:36 sorear MAD has been essentially forgotten.
22:36 * Limbic_Region assumed as much
22:36 sorear TimToady tells me it's only dormant, not dead
22:37 Limbic_Region without champions who refuse to give up or without communities that reach critical mass to carry on without champions - it happens
22:37 sorear most of #perl6 now looks to STD::P5 as the way forwards for source compat
22:39 sorear Limbic_Region: as far as I'm concerned, the largest change in the Perl 6  community has been my entrance. :D
22:40 Limbic_Region sorear - awesome - how long you been on-board?
22:40 sorear Limbic_Region: about 18 months.
22:41 sorear Limbic_Region: about 12 months ago I started writing an implementation of Perl 6
22:41 * Limbic_Region assumed when you mentioned ng
22:42 sorear insufficient context to interpret statement
22:42 sorear niecza: say "Hi"
22:42 p6eval niecza v9-8-gd3b0031: OUTPUT«Hi␤»
22:42 * Limbic_Region googled and filled in the blanks
22:42 sorear niecza: sub foo() { }
22:42 p6eval niecza v9-8-gd3b0031: OUTPUT«Potential difficulties:â�¤  &foo is declared but not used at /tmp/pd0vsvqunG line 1:â�¤------> [32msub foo[33mâ��[31m() { }[0mâ�¤â�¤Â»
22:43 pmichaud okay, switching lineof() to use a binary search causes it to drop out of the profiling for the most part
22:43 sorear niecza: say "foobar" ~~ / foo | foobar /
22:43 p6eval niecza v9-8-gd3b0031: OUTPUT«#<match from(0) to(6) text(foobar) pos([].list) named({}.hash)>␤»
22:43 sorear niecza: say ~ "foobar" ~~ / foo | foobar /
22:43 p6eval niecza v9-8-gd3b0031: OUTPUT«#<match from(0) to(6) text(foobar) pos([].list) named({}.hash)>␤»
22:43 sorear hmm
22:44 sorear niecza: say ~ do "foobar" ~~ / foo | foobar /
22:44 p6eval niecza v9-8-gd3b0031: OUTPUT«foobar␤»
22:44 sorear niecza: my $s = times[0]; loop (my $x = 0; $x < 1e8; ++$x) { }; say (times[0] - $start) / 1e8;
22:45 p6eval niecza v9-8-gd3b0031: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Variable $start is not predeclared at /tmp/sN7lczk79l line 1:â�¤------> [32m0; $x < 1e8; ++$x) { }; say (times[0] - [33mâ��[31m$start) / 1e8;[0mâ�¤â�¤Potential difficulties:â�¤  $s is declared but not used at /tmp/sN7lczk79l line 1:…
22:45 sorear niecza: my $s = times[0]; loop (my $x = 0; $x < 1e8; ++$x) { }; say (times[0] - $s) / 1e8;
22:45 p6eval niecza v9-8-gd3b0031: OUTPUT«(timeout)»
22:45 sorear niecza: my $s = times[0]; loop (my $x = 0; $x < 1e7; ++$x) { }; say (times[0] - $s) / 1e7;
22:45 p6eval niecza v9-8-gd3b0031: OUTPUT«6.136384E-07␤»
22:46 jnthn pmichaud: Was it quite high before?
22:46 pmichaud jnthn: yes, but the profiling numbers were artificial somehow
22:47 pmichaud i.e., they seemed to indicate a lot of time was spent there... but optimizing it doesn't provide a substantial performance improvement
22:47 pmichaud (and direct instrumentation showed that it really wasn't as expensive as the profiling seemed to indicate anyway)
22:47 pmichaud anyway, it was  O(n**2) for computing line numbers, now it's O(n**log(n))
22:48 pmichaud and I can likely make it so that it's O(n) for most hits with some smart caching
22:48 sorear I hope you mean O(n*log(n))
22:49 pmichaud yes, n*log(n)  (thanks)
22:49 * Limbic_Region chuckles
22:57 donri sorear: you should check for ttyness before you throw around ansi escapes *braindump*
22:59 mberends donri: those ansi escapes in Niecza error messages are mostly from STD, you should take it up with TimToady
22:59 donri ah :)
23:00 sorear irssi can interpret ansi escapes
23:00 sorear if there's a big demand, I can patch p6eval to remap color codes
23:01 donri it would be cool, though this is just mild annoyance so don't go overboard :)
23:01 lue what's annoyed me is that my irc clients of choice (first Konversation and now xchat) won't interpret those escapes properly, not the fact they're there.
23:01 * sorear wonders if mIRC color codes are actually more widely supported than ANSI
23:01 lue [in short, I blame my client, not the output]
23:02 donri i think it would be best to just strip all sorts of control codes
23:02 flussence huh, I'm pretty sure xchat supports colours :/
23:02 donri but maybe that's just me
23:03 donri needs more <BLINK> though
23:04 lue not the ones from STD, though I should play around with the settings and possible modules before condemning xchat (Konversation had no such features :/)
23:04 Moukeddar joined #perl6
23:04 Moukeddar hi guys :)
23:04 sorear hello, Moukeddar
23:04 * donri uses smuxi
23:05 Moukeddar i missed you
23:05 whiteknight joined #perl6
23:05 * sorear wonders what feature ey should demo to impress Limbic_Region
23:05 Moukeddar you should probably demo the BIG RED BUTTON feature
23:07 sorear doesn't have one.
23:07 sorear yet.
23:07 Moukeddar you should make one
23:07 Moukeddar everyone loves the BIG RED BUTTON
23:09 jnthn sleep &
23:11 sorear niecza: sub infix:<§>($,$) { say '§' }; sub infix:<¤>($,$) is tighter<§> { say '¤' }; sub infix:<¶> is looser<¤> { say '¶' }; 1 § 2 ¤ 3 ¶ 4
23:11 p6eval niecza v9-8-gd3b0031: OUTPUT«¤␤Unhandled exception: Excess arguments to MAIN infix:<¶>, used 1 of 2 positionals␤  at /tmp/hPjABSfoYc line 0 (MAIN infix:<¶> @ 0) ␤  at /tmp/hPjABSfoYc line 1 (MAIN mainline @ 2) ␤  at /home/p6eval/niecza/lib/CORE.setting line 2045 (CORE C954_ANON @ 2) ␤  …
23:11 sorear niecza: sub infix:<§>($,$) { say '§' }; sub infix:<¤>($,$) is tighter<§> { say '¤' }; sub infix:<¶>($,$) is looser<¤> { say '¶' }; 1 § 2 ¤ 3 ¶ 4
23:11 p6eval niecza v9-8-gd3b0031: OUTPUT«¤␤¶␤§␤»
23:12 sorear maybe that, Limbic_Region?
23:13 Limbic_Region ?
23:13 sorear Limbic_Region: user defined precedence levels!
23:13 sorear even pugs didn't do that.
23:14 Limbic_Region if I remember correctly, Pugs was waiting on a new version of Haskell's Parsec for that before Audrey went *poof*
23:14 sorear does anyone remember what happened to Audrey?
23:18 jevin joined #perl6
23:18 Limbic_Region yes
23:23 sorear Limbic_Region: did something specific happen or just burnout?
23:24 Limbic_Region sorear - mostly personal reasons that are not appropriate to discuss in the channel but yes, burnout was a mitigating factor as well
23:25 [Coke] joined #perl6
23:26 Limbic_Region she is alive and well working for Socialtext by the way
23:28 ashleyde1 joined #perl6
23:29 cexsum joined #perl6
23:29 sorear Limbic_Region: audrey has visited #perl6 occasionally, and for the most part it's even really been her. :)
23:30 mberends_ joined #perl6
23:40 Psyche^ joined #perl6
23:52 cexsum joined #perl6
23:54 molaf_ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo