»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:00 rurban1 joined 00:01 rurban left
segomos ow 00:01
00:20 woolfy left 00:23 mtj_ left 00:27 mtj_ joined 00:31 xenoterracide joined 00:39 doesthiswork joined 00:40 doesthiswork left 00:57 araujo joined 01:04 hoverboard left 01:23 klapperl left 01:25 klapperl joined 02:03 lustlife joined
TimToady rosettacode.org/wiki/Forest_fire#Perl_6 <-- a much faster forest fire 02:03
masak morning, #perl6 02:04
lue 02:08
TimToady build it, and they will come 02:10
masak TimToady: how was 北京? are you back from .cn? 02:13
TimToady it was a lot of fun, and we met a lot of nice people 02:14
and yes, we're back home
02:14 BenGoldberg joined
TimToady or I wouldn't be posting to RC, since I couldn't make it work from .cn 02:14
masak huh. 02:15
02:15 Ben_Goldberg joined
masak is still in .cn, but business has transitioned to leisure somewhere along the way :) 02:15
TimToady not RC itself, but apparently CloudFlare is a problem
masak oh, that makes more sense.
02:18 Ben_Goldberg left 02:19 Ben_Goldberg joined 02:28 xragnar_ joined, xragnar is now known as Guest73366, Guest73366 left, xragnar_ is now known as xragnar 02:30 telex left
JimmyZ visiting github is a problem too in cn :) 02:30
masak :/
TimToady I was able to get there some of the time 02:31
masak while here, one realizes that GFW is not always as simple as shutting you off. there's also (a) slow you down to a crawl, and (b) provide intermittent contact.
TimToady yes, I saw both of those behaviors
02:32 telex joined
JimmyZ yes, it most slows you by block the sub domains 02:32
02:32 autark left
masak I've always assumed that the underlying reasons were political, but lately I've been wondering if they're not largely commercial. 02:33
JimmyZ so people will think it's the website's issue
02:33 autark joined
TimToady yeah, I think that's certainly true wrt google 02:33
masak Baidu and YouKu and Weibo florish within China, and they might not have done so to the same extent had Google and YouTube and Twitter/Facebook worked.
s/might/would/ 02:34
02:35 segomos is now known as tony-o
dalek osystem: 2f6df3b | segomos++ | META.list:
Update META.list

add web::scraper
02:38
02:38 dayangkun left 02:39 dayangkun joined
JimmyZ well, it's political, baidu works well because contents can be deleted from there. but can't from google youtube github etc 02:39
02:40 tony-o is now known as segomos
masak ...for a definition of "works well" which is definitely set by the Chinese authorities :) 02:42
JimmyZ :)
masak I'll concede that it's impressive, the scale of what they're doing. 02:43
JimmyZ hehe
bonsaikitten it's quite amusing because it's all "voluntary" 02:47
but, eh, you wouldn't want to lose your website operator license, eh? EH? :D 02:48
02:53 Ben_Goldberg left, Ben_Goldberg joined 02:55 Ben_Goldberg left, Ben_Goldberg joined 03:06 hoverboard joined 03:09 plobsing joined, anaeem1__ left 03:10 anaeem1 joined 03:15 dayangkun left 03:20 BenGoldberg is now known as \Ben\, Ben_Goldberg is now known as BenGoldberg, \Ben\ is now known as Ben_Goldberg, anaeem1 left 03:21 anaeem1 joined 03:25 anaeem1 left 03:27 havenwood joined 03:31 xenoterracide left, xenoterracide joined 03:33 dayangkun joined 03:47 xenoterracide left 03:48 kaare_ joined 03:54 ziyang joined 03:55 kivutar joined 04:08 havenwood left 04:11 BenGoldberg_ joined 04:12 MayDaniel left, BenGoldberg left, BenGoldberg_ is now known as BenGoldberg 04:13 Ben_Goldberg left, logie_ left 04:14 logie_ joined 04:24 SamuraiJack_ joined 04:30 Psyche^_ joined 04:34 Psyche^ left 04:37 cooper left 04:38 cooper joined, cooper left, cooper joined 04:40 kaare_ left 04:44 anaeem1 joined
dalek ast: c8a5683 | (Andrew Egeler)++ | S06-other/main-usage.t:
Fix main-usage tests

The order of arguments to is_run look wrong here.
04:57
05:06 kaare_ joined 05:11 BenGoldberg left 05:17 thou left 05:27 kivutar left 05:41 ziyang left 05:48 rurban1 left 06:02 Pleiades` left 06:03 vendethiel left, vendethiel joined 06:07 Pleiades` joined 06:11 AW3i joined 06:12 isacloud_ left 06:13 isacloud__ joined 06:16 kaleem joined 06:48 rurban joined 06:51 havenwood joined, darutoko joined 06:53 AW3i left, rurban left
sergot morning ! 07:00
07:00 lizmat left 07:05 telex left 07:06 telex joined
timotimo morning 07:06
07:10 Ven_ joined 07:14 lustlife left 07:16 lustlife joined 07:23 ribasushi left 07:27 ribasushi joined 07:28 zakharyas joined, denis_boyun_ joined 07:30 AW3i joined
Woodi hallo :) 07:30
timotimo guten morgen woodi
07:32 sftp left
Woodi pmurias: about Graal: just got such impression: Graal is api to messing with already preprocessed code, just like reflections/MOP. other purpose but infrastructurally it's looks like MOP 07:34
07:35 sftp joined 07:37 lizmat joined 07:38 dmol joined
Woodi also I had shocking/horroring dream... err... backlog... so many native things around so I unconsciously assumed scalars are 1 to 4 bytes, generally, for not collection-like things... but now they are 8 bytes smaller! so how big they realy are ???!! ;) 07:40
timotimo might be huge 07:41
Woodi yea, strings are scalars too :)
just wonder about overhead
timotimo can't find the code for the scalar container right now
Woodi btw. this morning I was reading about en.wikipedia.org/wiki/Flyweight_pattern maybe it can help sometimes ? this trade some state for "outside" calculations 07:43
timotimo hmm. 07:46
07:46 raiph joined
timotimo if we move stuff away behind a pointer so that it can be shared, we get a little indirection every time we access that 07:46
(unless we access a bunch of them in sequence) 07:47
07:48 woolfy joined
raiph www.youtube.com/playlist?list=PLRu...FwobZHdXdK # A freshly curated list of decent Perl 6 videos on YouTube 07:50
Ven_ raiph++ # was looking at some yesterday ! 07:51
timotimo oh, cool!
hmm. i could use my lovely voice to make some perl6 videos, too 07:52
07:53 havenwood left
raiph I've omitted a lot of videos with poor audio, video, presentation style, etc. or that are basically redundant or have too many aspects that are out of date, etc. 07:53
timotimo that's excellent work! 07:54
now that you've got an overview, do you know what in particular is missing?
raiph sleep?
timotimo hahaha :)
i meant in terms of videos 07:55
Ven_ .oO( Just understood the TimToady joke ... )
07:56 sftp left
lizmat Files=801, Tests=31029, 189 wallclock secs ( 8.24 usr 3.58 sys + 1263.37 cusr 89.76 csys = 1364.95 CPU) 07:59
yeah, under 190 seconds!
08:00 sftp joined
moritz still gets the non-zero wait status for lots of S17 tests (and one advent test) in m-spectest 08:01
08:02 molaf left 08:04 hoverboard left
lizmat moritz: is this about t/spec/S17-concurrency/lock.t ? 08:04
or about thread.t ? 08:05
raiph timotimo: I'll think about that tomorrow
timotimo thank you kindly :)
Ven_ kinda would like more recent perl 6 videos - but then again, one only has so much time
timotimo well, videos about what exactly? :) 08:06
lizmat jnthn: seems like the thread.t failure is related to changes in ++
Ven_ timotimo: Perl 6 ;)
timotimo you know as well as i do that perl 6 is a very big topic :) 08:07
raiph Ven: have you seen perlcabal.org/syn/S07.html#Levels_of_laziness ? 08:08
Ven_ that was a way to say "really, anything you have to say about it" -- I'm pretty sure you could talk about how irc logs are made and still make an interesting talk :)
timotimo ah, so you haven't seen any of my talks then!
dalek ast: 84c6f41 | (Elizabeth Mattijsen)++ | S17-concurrency/thread.t:
Skip possibly faulty test on moar
08:09
Ven_ raiph: I have ! (I don't know how much I remember from the synopses, but I've read them all). I just know that on some parts (esp. parts like that), the spec might not match the implem.
raiph k
Ven_ timotimo: perl6casts.org o/ 08:10
Can you consider breaking that could never have worked, a breaking change ? 08:11
For example, let's say I had "my Int $a; onlytakesbool($a);" in a sub that's never executed when perl6 didnt check that, does it count as a breaking change ? 08:12
masak p6: class Foo { has $.color }; my $foo = Foo.new :color<blue>; say $foo.color 08:13
camelia rakudo-jvm e49859: OUTPUT«(timeout)»
..rakudo-parrot e49859, rakudo-moar e49859, niecza v24-109-g48a8de3: OUTPUT«blue␤»
masak wow, I'm a little surprised that doesn't TTIAR.
timotimo p6: class Foo { has $.color }; my $foo = Foo.new() :color<blue>; say $foo.color
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859, niecza v24-109-g48a8de3: OUTPUT«blue␤»
timotimo that's how adverbs do
08:14 molaf joined, slavik left 08:15 lustlife left
masak right. so it happens to work in this particular case. it wouldn't work for positional arguments, though. 08:15
08:15 lustlife joined
masak that's why I was only "a little surprised" :) enough to make me do a double take. 08:15
timotimo yeah
what surprises me a little bit is this:
jnthn morning o/ 08:16
timotimo r: class Foo { method do_it($a, $b, *%foo) { say $a; say $b; say %foo } }; Foo.new.do_it(1, 2) :hi :bye
masak jnthn! \o/
camelia rakudo-parrot e49859, rakudo-moar e49859: OUTPUT«1␤2␤("hi" => Bool::True, "bye" => Bool::True).hash␤»
..rakudo-jvm e49859: OUTPUT«1␤2␤("bye" => Bool::True, "hi" => Bool::True).hash␤»
timotimo did you know about this feature, masak? 08:17
masak backlogs over PYTHONLOVER's "WHY CANT I SLAP PEOPLE WITH FISH!!]" outburst, and laughs
timotimo: guess I did.
timotimo: ...but I've never used it.
jnthn lizmat: The thread.t failure is a race of some kind, and it could occur occasionally before; we've got somewhat more efficient now and so the probability of the race taking place is way higher.
timotimo me neither
it has a quite big chance to WAT the reader IMO
Ven_ Why is the order nonderministic ?
and basically, :delete is a named argument to access_pos ? 08:18
08:18 fhelmberger joined
jnthn Ven_: %foo is a hash, thus non-determinism. 08:18
masak Ven_: the order is nondeterministic because if it weren't, hash lookup wouldn't be efficient.
Ven_: yes, basically, :delete is a named argument
Ven_ fair enough! 08:19
masak there's a certain beauty to it.
timotimo see the irclog for a very small implementation of an ordered hash
like two to four months ago
lizmat :delete is just short for (delete => True)
Ven_ that's a log of backlog
timotimo you can search through it :)
jnthn lizmat: Oh...I see the problem.
lizmat: The test is too fragile.
lizmat yes, that's why I skipped it 08:20
we've had this discussion before
jnthn lizmat: No, as in, there's a one-line change that makes it fine.
08:20 woolfy left
lizmat ah? 08:20
which would be?
jnthn -my $seen;
Ven_ I do agree :). Yesterday I created a little file to do some perl6, and really, `multi MAIN` is the future :D.
jnthn +my $seen = 0;
timotimo i agree, it's very, very nice to have 08:21
jnthn lizmat: It races to vivify, but between the multi-dispatcher deciding on the candidate and the chosen one being invoked, the thing changes.
Ven_ r: sub MAIN('update', $key, Bool $:delete) {}
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤In signature parameter, placeholder variables like $:delete are illegal␤you probably meant a named parameter: ':$delete'␤at /tmp/tmpfile:1␤--…»
Ven_ well I typo, but really cool.
jnthn lizmat: If we initialize the var it works out consistently fine here. 08:22
lizmat ok, will change
timotimo aye, the way it does type intuition from strings is really really helpful, too
dalek ast: adda017 | (Elizabeth Mattijsen)++ | S17-concurrency/thread.t:
Initializing prevents the race to initialize, jnthn++
08:23
lizmat sightseeing and commuting&
jnthn lizmat: have fun 08:24
08:24 lizmat left, havenwood joined 08:27 slavik joined 08:36 rurban joined 08:37 havenwood left 08:40 rurban left 08:41 virtualsue joined
Ven_ (the concurrency bug was basically autoviviying int to 0 ?) 08:48
09:06 lustlife left
dalek rl6-bench: ad5af18 | (Timo Paulssen)++ | perl6/rc-forest-fire:
bless doesn't like the whatever star any more.
09:13
09:13 denis_boyun_ left
jnthn
.oO( video killed the whatever star... )
09:14
09:15 AW3i left 09:21 lustlife joined 09:31 rindolf joined 09:32 havenwood joined 09:37 havenwood left, rurban joined 09:42 plobsing left, rurban left 09:45 lustlife left 09:57 sjn_ is now known as sjn 10:00 lustlife joined 10:01 raiph left 10:12 woosley left 10:13 denis_boyun_ joined
dalek kudo/varopt: 5cb47e4 | jnthn++ | src/Perl6/Optimizer.nqp:
Make $*LEVEL in optimizer an attribute.

Saves a bunch of contextual lookups.
10:18
kudo/varopt: f392d69 | jnthn++ | src/Perl6/Optimizer.nqp:
Avoid duplicating QAST::Node.unique(...) logic.
kudo/varopt: 95889b7 | jnthn++ | src/Perl6/Optimizer.nqp:
Toss a JVM-only optimization.

It's covered by the much more general lexical-to-local lowering, which we should just make work on the JVM.
10:24 AW3i joined 10:31 AW3i left 10:33 havenwood joined 10:37 havenwood left 10:39 rurban joined 10:42 lustlife left, lustlife joined 10:43 rurban left 11:03 rindolf left 11:06 segomos left 11:12 segomos joined
dalek kudo/varopt: d37f507 | jnthn++ | src/Perl6/Optimizer.nqp:
Bring in var tracking code from NQP's optimizer.

Will need various tweaks and extensions for use with full-blown Perl 6, but it'll provide a known-good starting point.
11:27
kudo/varopt: e359997 | jnthn++ | src/Perl6/Optimizer.nqp:
Break optimizer up into a few classes.

Having it as a single 1,200-line class was already getting hard to manage, so before adding more to it start breaking a few things out. This breaks symbol handling and junction optimization out into two separate classes.
11:34 havenwood joined 11:38 jtpalmer_ left, havenwood left 11:44 jtpalmer joined
Ven_ RT 121626 11:45
Ven_ -- how's that you write it
dalek kudo/varopt: c24dea0 | jnthn++ | src/Perl6/Optimizer.nqp:
Break error/warning reports out of main optimizer.
11:47
jnthn Death to the God object!
RT#121626
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121626
jnthn Ven_: ^^
Ven_ jnthn: Thanks ! 11:48
tadzik hah 11:51
someone says's something just for synopsebot to reply :)
Ven_ I figured out he'd feel a little alone these days :) 11:52
11:54 fhelmberger left 11:56 fridim_ joined
masak jnthn: having a God object pain threshold as low as 1,200 LoC probably makes you fairly unique in some way. :) jnthn++ 11:59
jnthn masak: Well, the better sign is if you compute method usage/attribute usage and find disjoint sets :) 12:03
masak: Though I guess that one is more SRP-ish 12:04
(as in, you can find smaller violations) 12:05
IllvilJa tadzik: just uninstalled the Ubuntu packaged rakudo, and cloning/configuring/building rakudobrew-moar as you sugested. Wish me good luck :-).
masak jnthn: I suppose God objects tend to break SRP ;) 12:07
jnthn masak: Oh, totally. Just on an epic scale. 12:08
IllvilJa God roles is the answer. Then you incorporate ALL your code (almost) in the role, then let your God object use it. That way you can claim you use roles to improve your code :-). 12:09
12:09 fridim_ left
tadzik IllvilJa: I wish you luck :) 12:10
dalek kudo/varopt: 99671e9 | jnthn++ | src/Perl6/Optimizer.nqp:
Start bringing in variable decl/use tracking.
12:15
12:15 anaeem1__ joined 12:17 anaee____ joined 12:18 hdsw joined 12:19 anaeem1 left 12:21 anaeem1__ left 12:23 djanatyn1 joined 12:24 lee_ joined, djanatyn left, Grrrr joined 12:29 hdsw left 12:34 havenwood joined 12:35 xenoterracide joined, Alina-malina left
sergot r: sub a($b?, *%c) { say $b; say %c; } 12:38
camelia ( no output )
sergot r: sub a($b?, *%c) { say $b; say %c; }; a(1, abc => 123);
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«1␤("abc" => 123).hash␤»
sergot r: sub a($b?, *%c) { say $b; say %c; }; a(abc => 123);
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«(Any)␤("abc" => 123).hash␤»
12:39 havenwood left
sergot r: sub a($b?, *%c) { say $b; say %c; }; a(); 12:39
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«(Any)␤().hash␤»
IllvilJa tadzik: is there some good way to control where rakudobrew will finally install the executables? 12:40
12:40 rurban joined
IllvilJa Or will it always put perl6 under ..../moar-HEAD/install/bin/perl6? 12:41
12:42 xfix joined
tadzik IllvilJa: not really 12:42
IllvilJa: but they'll be copied to .rakudobrew/bin
or: should be
12:45 rurban left
IllvilJa Actually, my intent was to create a system-wide install of the rakudo perl6, and thought it was a better idea to use ~/Installs/rakudo as an intermediate staging directory than ~/.rakudo. 12:48
My thought was that the rakudobrew script somehow allowed me to specify perl6 to live under /usr/local or so.
Now it installed everything under ~/Installs/moar-HEAD/install which is a bit unwieldy to use in the path (even if technically possible). 12:49
(Nothing is copied to be directly under ~/Installs/rakudo though). 12:50
dalek kudo/varopt: 319509a | jnthn++ | src/Perl6/Actions.nqp:
Immediate blocks don't need a $*DISPATCHER.

This also saves the takedispatcher instruction in all of them. Adds up 34KB saving on CORE.setting.moarvm, and a some thousands less QAST nodes during compilation. Also means less instructions to execute at runtime.
jnthn Whoa, 2 grammar fails in one commit message 12:51
12:52 anaee____ left
IllvilJa Also, I'm trying to get a system wide install of Rakudo with a working panda so having one in my home directory is not a perfect solution (but it might do for a while). 12:52
Also, it seems like there is no 'panda' installed anywhere. 12:54
action realize he is just sitting there whining. 12:55
IllvilJa realize he is just sitting there whining.
(and can't even handle irc ;-) )
12:56 guru joined 12:57 guru is now known as Guest47525, Guest47525 is now known as ajr_ 12:58 xenoterracide left
dalek kudo-star-daily: ba09fd4 | coke++ | log/ (5 files):
today (automated commit)
13:06
rl6-roast-data: 3d9e9f5 | coke++ | / (5 files):
today (automated commit)
13:07 kaare_ left
[Coke] .seen lue? 13:07
yoleaux I haven't seen lue? around.
[Coke] .seen lue
yoleaux I saw lue 02:08Z in #perl6: <lue> .oO( rosettacode.org/wiki/Smokey_bear#Perl_6 )
[Coke] ... telling me Z time is unhelpful. what happened to "x hours ago?"
tadzik IllvilJa: hmm 13:08
slow down :)
does 'rakudobrew build-panda help?'
13:18 mtk joined 13:21 mtk left
dalek kudo/varopt: 806c867 | jnthn++ | src/Perl6/Actions.nqp:
Don't make container if we immediately bind a var.

For example, in `my $a := 42;`, the container would be immediately discarded, so don't bother allocating it at all.
13:23
kudo/varopt: 5bc6b91 | jnthn++ | src/Perl6/Optimizer.nqp:
Make use of PseudoStash poison lowers.

Not trying to do any of them yet, but this will be needed before we safely can.
13:26 gtodd left 13:28 kbaker_ joined 13:35 rindolf joined, havenwood joined 13:39 kaleem left 13:40 havenwood left 13:45 kivutar joined
Ven_ r: sub MAIN(Str $filename where *.IO ~~ :e) {} # :o) 13:45
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«Usage:␤ /tmp/tmpfile <filename> ␤»
Ven_ oh my god :D
IllvilJa tadzik: it helped! 13:46
13:46 Gothmog_ left
IllvilJa Now panda is there under ~/Installs/panda/bin 13:46
PerlJam What does "PseudoStash poison lowers" mean?
13:46 Gothmog_ joined
IllvilJa If I get time, I'll look into getting rakudo + panda packaged for ubuntu. 13:46
IllvilJa is having wild fantasies for the future... 13:47
jnthn PerlJam: OUTER:: and friends prevent certain optimizations
PerlJam: Generally, late-bound things.
Ven_ that's amazing
tadzik IllvilJa: how about rakudobrew rehash? 13:48
does this put stuff in bin?
Ven_ well I guess ~~ :e can be .f
PerlJam so, OUTER:: poisons and PseudoStash is an antidote?
jnthn Ven_: "where .IO.f" may well do it 13:49
IllvilJa tadzik: Hm... what is that supposed to do?
masak jnthn: no, you need a * or a {}
jnthn: otherwise you don't get thunk semantics.
jnthn r: sub foo($x where .say) { }; foo('lol')
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«lol␤» 13:50
tadzik IllvilJa: put stuff in .rakudobrew/bin
so you have one path for all executables
13:50 dwarring left
masak jnthn: hm. 13:50
jnthn masak: I...think you do ;)
masak yeah, maybe you do.
Ven_ jnthn: once perl6 is fast enough, I'll never be able to write scripts in something else :p
masak don't mind me, I'm obviously on vacation :P
jnthn Ven_: Well, working on that. :) 13:51
Ven_ right you are
IllvilJa tadzik: Apparently I need to do it like that, even if the "create a system-wide perl6 with panda" part of my brain revolts... Maybe I should delete the directory and rebuild everything from scratch. 13:52
13:52 bluescreen10 joined
IllvilJa (Computers are good at repeating automated rebuild of software, so that is not much of an issue ;-) ) 13:52
tadzik IllvilJa: well, rakudobrew was not designed to be a systemwide thing 13:54
IllvilJa Ok, rebuilding rakudobrew, in ~/.rakudobrew... 13:55
13:55 rurban joined
IllvilJa tadzik: an conveniently packaged rakudo + panda, as easily installed as perl5, would be a good holy grail to shoot for in the future :-). I suppose it is already part of the vision. 13:55
(Just wished we already were there...)
tadzik it's called Star :) 13:56
IllvilJa There is no rakudo star in ubuntu's packager ;-).
tadzik there is nothing in ubuntu package list :D
all that is is ancient
IllvilJa Anyway, it would make it easier when creating software based on perl 6 eventually, to have it more or less installed with the OS. 13:57
When ancient is good enough, installing softwared based on it is a breeze.
13:57 anaeem1_ joined
IllvilJa Perl 5 software often works like that: install OS, use (ancient but still good enough) system perl 5 interpreter and then run that perl 5 app using that interpreter. 13:58
THAT is the vision I have for perl 6 :-D
tadzik IllvilJa: I have a plan for that part
MoarVM is basically bundlable
IllvilJa :-) 13:59
tadzik I wrote a game, and when I put moarvm+rakudo+nqp with it, and xz'd it, it was like 2 Megabytes
IllvilJa Plans are good
tadzik 20MB uncompressed
IllvilJa Sounds like a way to do it.
tadzik but still, you could just copy it over somewhere and launch it
IllvilJa 2Mb compressed is nothing in these days.
tadzik I just need to write a tool for bundling :)
IllvilJa tar?
13:59 btyler joined
IllvilJa (sorry, could not resist) 13:59
14:00 thou joined
tadzik no, there's more to it :) 14:01
but mostly just adjusting paths, env vars and generating launchers 14:04
14:06 mtk joined
tadzik I may do that today 14:06
I'll just need volunteers to try it out on systems with no moarakudo instlaled :0 14:07
Ven_ I volunteer ! 14:09
tadzik ok :)
14:11 jnap joined
IllvilJa tadzik: one more thing: when doing that line for building rakudobrew, it do not install perl 6 under ~/rakudobrew/bin but under ~/.rakudobrew/moar-HEAD/install/bin (and under ~/.rakudobrew/moar-HEAD/languages 14:14
I suspect that is a bug, right?
(Typo: it showed up under ~/.rakudobrew/moar-HEAD/install/languages/perl6 as well). 14:15
Is the easy fix to just copy ~/.rakudobrew/moar-HEAD/install/bin/perl6 to ~/.rakudobrew/bin safe in the longer run? 14:16
I just did it :-) 14:17
Let's see if I can build panda with that quickfix in place!
Hm. Emitted errors. Delete .rakudobrew and redo the install... (Brute force automation is a bliss ;-) ) 14:19
I'll stick to add ~/.rakudobrew/moar-HEAD/install/bin to my PATH instead 14:20
[Coke] rakudo.parrot has 190 failing tests as of yesterday. 14:22
189 today: gist.github.com/coke/10472931 14:23
should parrot even be running those?
14:23 jnap1 joined
[Coke] bets they are not. 14:24
tadzik IllvilJa: sounds like a bug 14:25
14:25 jnap left
IllvilJa Yes. But for now I just work around it :-). 14:25
jnthn [Coke]: Does the test thing use t/harness?
[Coke]: There's a "# conc" mark on the concurrency tests which should exclude Parrot from running them. 14:26
14:28 havenwood joined
Ulti is there an idiots guide to building Rakudo to generate the .msi used in star? 14:28
Ven_ wants to know too 14:29
Ulti if not is there a half arsed expert guide that I can attempt to follow and write the idiots guide to? 14:30
[Coke] jnthn: nope. uses spec's test_summary, which knows about some stuff, but not conc.
jnthn++
Ulti though the new visual studio already confuses me with its weird flat theme
jnthn [Coke]: ah. There we go then.
dalek kudo/varopt: 48983c2 | jnthn++ | src/Perl6/Optimizer.nqp:
Further analysis to prepare for variable opts.

Track EVAL, getlexouter, and calls.
14:33
kudo/varopt: 8584dbe | jnthn++ | src/Perl6/Optimizer.nqp:
Eliminate $! and $/ when trivially unused.

Where "trivially unused" holds in many of the simple operators in the setting. This saves two Scalar allocations for many of them.
Ven_ can't stop reading $! as !$ 14:34
jnthn r: say !$! 14:35
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«True␤»
jnthn [Coke]: Has today's run already started, ooc? 14:37
14:37 mattp__ left 14:38 mattp__ joined
jnthn %kill 14:39
oops
14:40 pmurias joined
dalek osystem: 2d7be29 | (Andrew Egeler)++ | META.list:
Add Digest::HMAC
14:40
IllvilJa tadzik: this 'moar' thing. is it a new VM? or is it a repackaged/redesigned/readjusted (bastardized perhaps?) parrot? 14:43
parrot VM that is
The workaround of adding ~/.rakudobrew/moar-HEAD/install/bin to my PATH works nicely, panda is happily bootstrapping itself. 14:44
14:46 darutoko- joined
JimmyZ r: say !$ 14:46
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Non-declarative sigil is missing its name␤at /tmp/tmpfile:1␤------> say !⏏$␤ expecting any of:␤ argument lis…»
tadzik IllvilJa: a new thing
JimmyZ r: say !(my $)
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«True␤»
JimmyZ r: say !(my $!) 14:47
camelia rakudo-parrot e49859, rakudo-jvm e49859, rakudo-moar e49859: OUTPUT«Potential difficulties:␤ Redeclaration of symbol $!␤ at /tmp/tmpfile:1␤ ------> say !(my $!⏏)␤True␤»
14:48 darutoko left 14:49 Alina-malina joined
timotimo tadzik: did you see froggs' work on generating binaries that link against libmoar and that have the bytecode needed in them? 14:50
IllvilJa tadzik: but it is supposed to be parrot-compatible?
(or apparently, it is, I guess) 14:51
timotimo it's not supposed to be parrot-compatible
IllvilJa ok 14:52
timotimo jnthn: which pieces of the whole would you like me to benchmark?
tadzik IllvilJa: nope
timotimo: nope :)
I'd like to though
timotimo me, too
i don't think he pushed the stuff anywhere
14:53 bjz joined, ajr_ left
jnthn timotimo: For now do master/master/nom :) 14:54
timotimo master, master, omnomnom
14:54 guru joined
[Coke] jnthn: hours ago, yes. 14:54
14:55 plobsing joined, guru is now known as Guest82747, bjz_ left, Guest82747 is now known as ajr_
[Coke] up through jvm, S05 (last impl) 14:55
[Coke] ponders creating something like modules.perl6.org for javascript at work. 14:57
14:57 cooper left
[Coke] shame we don't quite have github for stuff. 14:57
pmurias [Coke]: for internal stuff? 14:58
jnthn [Coke]: ok, great. Means if I merge something today I can tell if breakage is from it or from yesterdays, if yesterdays causes some 14:59
[Coke] aye.
jnthn: the roast page also shows you the commit we used to run stuff now.
so that should also help. 15:00
(warning: until I reorder the columns, you have to scroll to the right)
jnthn [Coke]: oh, also good to know. Thanks! 15:02
[Coke]++
15:02 cooper joined
timotimo jnthn: do i need to set =master? are all things sufficiently fudged currently? 15:05
for the benchmarks that is
want me to benchmark nqp, too? 15:06
i don't think i have any reason to
jnthn timotimo: I think most of the movement will be in Rakudo tbh.
timotimo: Shoudln't have regressed stuff anywhere 15:08
timotimo i forgot how long the benchmark for rakudo takes. so i'll just estimate 1 hour until you get results 15:09
jnthn timotimo: It'll be on a graph against p5/2014.03?
timotimo ok 15:10
jnthn Well, if that's convenient for you to do :)
But it's what'll be informativeist :)
uh...whatever :)
timotimo it is 15:11
15:18 denis_boyun_ left
jnthn worried he'd have to do a lot of work on var analysis before he could get spectests to pass and a measurable win, but managed to get something helpful without too much trouble. 15:19
It ain't doing lex -> loc yet
dalek kudo/varopt: c173b85 | jnthn++ | src/Perl6/Optimizer.nqp:
Optimize away $_ when it's trivially unused.

This includes optimizing away the getlexouter and bind instructions that go with it.
15:21
15:21 ajr_ left
timotimo I've now successfully connected my voice recognition system with my IRC client 15:21
That means that my hurting wrist is not going to impede my chatting experience anymore
Although every time I want to send a message I have to say click transfer and then hit return 15:22
15:23 daxim_ left
tadzik IllvilJa: ah, I found the bug :) 15:25
IllvilJa: but: did rakudobrew rehash not have helped?
15:25 treehug88 joined
tadzik rakudobrew switch moar would have also fixed that, probably :) 15:26
timotimo oh my connecting to my desktop computer via SSH during the benchmark run was not such a good idea 15:27
15:28 ajr_ joined
timotimo This is surprisingly fun though 15:28
tadzik IllvilJa: I I fixed it :) 15:29
er, I think I fixed it
for future uses
IllvilJa So if I delete .rakudobrew and reinstall it, it will put perl6 at the right place? 15:30
(I got the command line in place, both for deleting and reinstalling :-), just awaiting your confirmation) 15:31
tadzik it's not necessary 15:32
try ''akudobrew switch moar
that should do the trick
IllvilJa Yay! 15:33
It did!
tadzik :)
IllvilJa Thanks!
tadzik I made it do that automagically after you build your first rakudo
if you want to try rakudo-jv or rakudo-parrot after that, you'll have to switch to them manually
s/jv/jvm/
IllvilJa Ok. 15:34
tadzik argh stupid paypal
IllvilJa Hm. JVM = we can run perl6 on Java Virtual Machine?
timotimo yes indeed
you must be new here :D 15:35
IllvilJa I've been absent for a couple of years.
tadzik :)
yes we can
IllvilJa Cool!
tadzik although moarvm is generally superior to it
IllvilJa Ok!
timotimo Only for short running programs though
15:35 daxim_ joined
timotimo And also you've chosen a great time to come back, because right now we are doing some performance improvements 15:36
And a very big portion of syntax and features are already in place
jnthn: t.h8.lv/p6bench/2014-04-11-rakudo_opt.html 15:39
15:40 havenwood left
segomos is moar's memory handling not good? whats the reason for jvm being better on long running processes? 15:40
timotimo very good wins across the board 15:41
segomos: jvm has a JIT compiler
15:42 kivutar left
segomos so not a reliability thing 15:42
jnthn Moar typically (always?) uses a good bit less memory
timotimo: Looking now :)
timotimo I am very glad to see that the any equals benchmark is also seeing improvements
IllvilJa Checked out moarvm.org (and wikipedia embryo of a page :-) ). Impressive stuff! 15:45
timotimo on moarvm we usually get better performance than parrot and better performance than JVM (until the JIT kicks in)
but our handling of strings on moarvm is pretty poor at the moment 15:46
jnthn timotimo: Yeah. Important to remember that the scale is a log one too.
timotimo t.h8.lv/p6bench/2014-03-09-every_perl.html - check out this month old (and thus ver yout of date) benchmark result
15:47 webart joined
timotimo It hurts 15:47
In some cases we get a two times improvement so that is very good 15:49
15:49 plobsing left
timotimo Especially the optimization of array and hash assignment seems to be extremely fruitful 15:49
15:49 kivutar joined
timotimo jnthn: did you want benchmarks of the other backends as well? 15:51
jnthn timotimo: Maybe you'll have time for some later today after I merge the initial bits of varopt? 15:52
timotimo: Got one important opt about to land in moar also. 15:53
timotimo i can
and all of that will happen today? 15:54
color me excited!
15:55 PZt left 15:57 kivutar left
jnthn I'm going to merge (ff) varopt now, but keep the branch 15:59
Basically, the stuff I've done so far is quite comfortable to reason about and I'm happy that it's unlikely to have fallout.
But the next steps could be riskier.
It will have performance fallout.
(Of the good kind.) 16:00
timotimo So, should I immediately start the benchmarks? 16:01
For all of the three back ends?
jnthn Let me do the merge first.
timotimo Obviously
dalek p: f34d909 | jnthn++ | tools/build/MOAR_REVISION:
Get Moar with REPL fix, [invoke&multi]spec opt.
16:03
kudo/varopt: 452c89d | jnthn++ | tools/build/NQP_REVISION:
NQP bump for Moar improvements.
16:05
16:05 zakharyas left
dalek kudo/nom: 5cb47e4 | jnthn++ | src/Perl6/Optimizer.nqp:
Make $*LEVEL in optimizer an attribute.

Saves a bunch of contextual lookups.
16:05
16:05 dalek left 16:06 dalek joined, ChanServ sets mode: +v dalek, webart left
jnthn OK, there we go. 16:07
timotimo all right
jnthn Hm, wonder if I shoulda tried those on other backends... :)
timotimo i can stay on master/master/nom, aye? 16:08
jnthn Yes
Make sure you do a build of latest Moar also
timotimo ... huh?
bench will build MOAR_REVISION and NQP_REVISION unless i tell it otherwise
jnthn Ah, then fine. :) 16:09
I meant "don't use a cached Moar build" :)
But I see the tool won't, so it's all good.
16:09 PZt joined
jnthn Just that on, say, while_empty, the change I just did in Moar gives 8%-9% better. 16:09
timotimo this will take a while.
jnthn timotimo: Sure. Will it include NQP too? 16:11
timotimo i can do that if you want me to
will it be worth it?
jnthn Well, the recent improvements should be closing the gap between NQP and Rakudo, in theory. 16:12
Having NQP on the graphs too will give us an idea of how well we're doing in that regard.
timotimo i can put the old nqps in it 16:13
that'll be very cheap
16:15 ajr_ left 16:16 guru joined 16:17 guru is now known as Guest92057, Guest92057 is now known as ajr_
jnthn oh, duh... 16:18
$_ opt isn't as effective as it shoulda been due to a thinko. 16:19
timotimo i'ven't started the benchmarks yet 16:20
only just built the rakudos
i can wait for another patch :)
jnthn Working on it, but I'll need to re-spectest
timotimo That's okay I have patience 16:24
jnthn Yeah, worth it provided spectest is clean 16:25
while_empty is within a factor of 10 of NQP with this. 16:26
timotimo yay!
16:26 Rotwang joined
timotimo Out of curiosity, what was the factor before the patch that I am now waiting for 16:27
16:28 denis_boyun joined, ajr_ left
jnthn Before this one patch, it was around 12 or so; now it's 9.3 16:28
timotimo \o/
jnthn Before varopt it was closer to 20 16:29
16:30 xinming__ joined
dalek kudo/varopt: c27ec40 | jnthn++ | src/Perl6/Optimizer.nqp:
Both var and contvar are fine for $_ deletion.
16:33
16:33 xinming left
dalek kudo/nom: c27ec40 | jnthn++ | src/Perl6/Optimizer.nqp:
Both var and contvar are fine for $_ deletion.
16:34
timotimo here we go
jnthn Seems good.
timotimo While the benchmarks of doing their thing I think I will be doing some chores 16:38
jnthn could do with a walk also :) 16:42
bbiab
dalek rl6-roast-data: 16afd8c | coke++ | / (2 files):
move notes to end of CSV columns
rl6-roast-data: d9689c6 | coke++ | perl6_pass_rates.csv:
fix typo
16:43
rl6-roast-data: c5a40c1 | coke++ | perl6_pass_rates.csv:
move -headers-, also.

  *facepalm*
[Coke] there. now the impl's sha1 is more obvious. 16:44
timotimo jnthn: while building JVM, i get NPEs during the compilations of the built-in modules 16:46
like Test for example
dalek ast: 36637c8 | coke++ | test_summary:
respect new flag in rakudo's specttest.data
16:47
vendethiel jnthn: do your changes work correctly with MY:: and stuff? 16:52
timotimo yeah, MY is a pseudopackage
pseudopackages cause an abort of optimization
though OUTER and MY could potentially be supported
16:53 virtualsue left 16:56 rurban left
vendethiel nqp-parrot and rakudo-jvm are faster than perl5 on "zero"? 16:57
timotimo you may be reading the graph the wrong way around?
vendethiel well my mouse double-clicks right now so I Can't quite take a screenshot, but t.h8.lv/p6bench/2014-03-09-every_perl.html first graph seems to say so ? 16:58
timotimo bigger bars means faster
otherwise: it's probably caused by startup time being removed from the timings
16:58 hoverboard joined
timotimo oh, interesting 16:58
vendethiel The JVM's JIT is really something 17:00
timotimo the jit isn't supposed to kick in that fast
anyway, benchmark 29 of 43 is running now on moarvm
after that i think only parrot remains
vendethiel where do you expect nqp to be "in the end" ? 5-10x faster than rakudo ?
timotimo well, if we get rakudo to be as fast as nqp, that'd be amazing 17:01
obviously we want to end up faster than perl5 ;)
vendethiel "35244x slower than fastest" well ! 17:02
timotimo watch out, "fastest" is the *global* maximum
rather than on the same x-coordinate
vendethiel I know - here it happens to be the same
timotimo OK
yeah, in some cases we're pretty terrible at the moment 17:03
vendethiel rc-forest-fire is getting some good stuff out of the jvm's jit
timotimo it does
17:06 ajr joined, ajr is now known as Guest37434, Guest37434 is now known as ajr_
jnthn timotimo: Oh :( 17:22
timotimo: Saveed the stack trace?
vendethiel: Yeah, it notes those and gets suitably unhappy about doing optimization anywhere down the lexical chain if it sees one of those. 17:23
vendethiel: In the future we can look at special cases, though.
17:25 kbaker_ left
timotimo no stack trace emitted 17:36
but i have the stuff in backscroll
oh, i don't have a rakudo-parrot/2014.03 17:38
huh
no rakudo-jvm/2014.03 either
TimToady std: say map(* + 1): 1,2,3 X 4,5,6 17:39
camelia std e347792: OUTPUT«ok 00:01 124m␤»
TimToady n: say map(* + 1): 1,2,3 X 4,5,6
timotimo why are so many timing files apparently missing? :\
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Interaction between semiargs and args is not understood at /tmp/5lgcEa0IHn line 1 (EOF):␤------> say map(* + 1): 1,2,3 X 4,5,6⏏<EOL>␤␤Unhandled exception: Check failed␤␤ at /home/p6ev…»
TimToady that syntax is also supposed to work
timotimo t.h8.lv/p6bench/2014-04-11-rakudo_opt.html ← F5 for great justice
TimToady m: say map(* + 1): 1,2,3 X 4,5,6
camelia rakudo-moar e49859: OUTPUT«===SORRY!=== Error while compiling /tmp/TwOojBzyKp␤Two terms in a row␤at /tmp/TwOojBzyKp:1␤------> say map(* + 1)⏏: 1,2,3 X 4,5,6␤ expecting any of:␤ postfix␤ infix stopper␤ infix…»
timotimo something apparently went quite wrong 17:40
jnthn yeah, the parrot measurements are missing?
timotimo yeah, they didn't run
jnthn ooc, does Moar build with the cgoto interp by default on platforms that can? 17:41
timotimo ah, parrot failed to build because i had MAKEFLAGS=-j4
i'll fill in the missing data in the coming ... time 17:42
TimToady snickers
[Coke] timotimo: if that's broken on parrot, can you open a ticket?
(I worked very hard at one point to make sure that didn't fail. :P)
moritz on the JVM, Test.pm compilation fails 17:43
===SORRY!===
java.lang.NullPointerException
17:43 denis_boyun___ joined
moritz rakudo 2014.03.01-126-gc27ec40 17:43
timotimo [Coke]: it seems like make itself is b0rking 17:44
17:44 zakharyas joined
timotimo as in "oh god there's stuff that shouldn't be there in the job pipeline gaaaaah" 17:44
dalek rl6-roast-data: 0677e75 | coke++ | / (6 files):
today (automated commit)
17:45 denis_boyun left
[Coke] timotimo: ah, i thought you meant just the -j4. 17:45
timotimo [Coke]: now pass_rates.csv starts with <<<<<<< HEAD :)
[Coke] huh. apparently there was an invalid free in yesterday's parrot run that is resolved today. 17:46
timotimo: dammit.
jnthn timotimo: Graphs show improvemnets all over. Nice. :)
timotimo aye, quite nice
dalek rl6-roast-data: 8d82fbb | coke++ | perl6_pass_rates.csv:
fix mergo
[Coke] timotimo: fixed.
17:48 denis_boyun___ left
jnthn moritz: --ll-exception will give more clues; I'll have a closer look after dinner 17:56
17:57 rurban joined 17:58 benabik left, benabik joined
timotimo parrot still takes about 100 seconds to parse core.setting 18:00
this is amazing.
retupmoca tadzik: ping
18:01 rurban left
tadzik retupmoca: pong 18:03
18:03 treehug8_ joined
retupmoca tadzik: I opened yet another panda PR for you 18:03
18:04 hummeleB1 joined
timotimo retupmoca++ 18:05
18:05 treehug88 left
tadzik I think it's wrong though :) 18:06
it saves meta of non-ecosystem over the ecosystem ones
where non-ecosystem may just be an older version of the ecosystem one
retupmoca line 49: if ecosystem exists, it pulls it out of the non-ecosystem hash
%non-ecosystem{$mod<name>}:delete;
tadzik ah! 18:07
indeed
then I like it :) 18:08
retupmoca \o/
18:08 colomon left
tadzik maybe the panda-project creation needs some local sub to reduce duplication, but it's fine as it is :) 18:09
dalek nda: 7ead09e | (Andrew Egeler)++ | lib/Panda/Ecosystem.pm:
Allow non-ecosystem dependencies

If a module is installed, we can now use it as a dependency without needing it in the ecosystem. This allows you to use panda to install private modules that never see the ecosystem, or to test a set of modules before adding them to the ecosystem.
nda: 2693bbc | tadzik++ | lib/Panda/Ecosystem.pm:
Merge pull request #77 from retupmoca/master

Allow non-ecosystem dependencies
retupmoca tadzik++ 18:10
tadzik retupmoca++
18:11 kaare_ joined, kurahaupo joined, kbaker_ joined 18:12 klapperl_ joined 18:15 klapperl left
timotimo Stage parse : 21.366 - what 18:15
what is this
jnthn o.O 18:16
timotimo oh
parallel builds
combined with the new behavior of printing the stage name before and the number afterwards ... :)
jnthn ahaha
18:17 colomon joined
timotimo gist.github.com/anonymous/f585a7e823163e7aa596 18:20
./perl6-p --target=pir --output=src/gen/RESTRICTED.setting.pir src/RESTRICTED.setting
===SORRY!===
Lexical '$_' not found
make: *** [RESTRICTED.setting.pbc] Error 1
gist.github.com/anonymous/cdbefe6af93dcab4d6f0 18:22
18:26 anaeem1_ left, anaeem1 joined
arnsholt timotimo: Oh, that's my fault. Sorry =) 18:27
timotimo ah! :) 18:28
18:31 anaeem1 left 18:38 zakharyas left
timotimo t.h8.lv/p6bench/2014-04-11-rakudo_opt.html - at least it has rakudo-parrot/2014.03 now 18:39
18:45 bluescreen100 joined
timotimo so it seems like rakudo is now usually 40-600 slower than perl5 in our microbenchmarks 18:48
18:49 bluescreen10 left, darutoko- left 18:51 raiph joined 18:52 average joined 18:57 rurban joined
raiph 7 videos of jnthn about P6 from 2008 were hosted on blip.tv 18:58
it looks like they've been deleted from there
anyone know if there are other copies anywhere?
(i've looked on youtube)
jnthn timotimo: ah, I think I may know what's up with Parrot/JVM. 18:59
timotimo jnthn: is this already the tomorrow when you'll think about what videos i could produce? or is it still the same day you said that? :)
raiph .oO ( Am I awake? Is timotimo? ) 19:00
timotimo er, that wasn't meant to go to jnthn, that was meant for raiph 19:02
jnthn timotimo: It's the day I forgot the conversation you're referring to apparently :P
Oh...
:)
19:02 rurban left
jnthn So my memory hasn't gone bad after all :P 19:02
timotimo japhb: i'd love to have a little widget that would allow the user to hide/show data lines from all graphs at the same time 19:04
and then arrange them into a little matrix and give the user toggle buttons for "all in this row" and "all in this column", too
and also, it would be so fantastic if you could transfer (temporarily, if need be) data points from one graph to another by clicking two graphs in sequence
so that you could compare the native vs non-native tests, for example
that could well be doable just with javascript, no? did you try playing around with that library you're using yet? 19:05
dalek kudo/varopt: f128025 | jnthn++ | src/Perl6/Optimizer.nqp:
Fix op name-o.
19:07
kudo/varopt: aeda9d0 | jnthn++ | src/Perl6/Optimizer.nqp:
p6bindsig poisons lowering.

Unbreaks the Parrot build/test, at least.
jnthn Trying a JVM build at the moment also.
[Coke] pokes pmurias - how goes rakudo.js? 19:08
moritz jnthn: I'm a bit confused; did you fast-forward-merge varopt into nom, and now commit again to nom?
(if yes, nothing wrong with it, just a bit unusual) 19:09
timotimo there was a fastforward, aye
but future commits are going to go into varopt again
jnthn moritz: I comitted on varopt; will merge into nom
timotimo except for these fixes above, i think
jnthn moritz: I'm doing other bits on varopt yet; I merged the bits I figured could be stable quickly. 19:10
timotimo jnthn: currently making measurements for nqp-jvm/2014.03, after that i shall do rakudo-parrot and rakudo-jvm current
jnthn moritz: The branch is now digging into the other stuff.
JVM looks happier too.
dalek kudo/nom: f128025 | jnthn++ | src/Perl6/Optimizer.nqp:
Fix op name-o.
19:11
kudo/nom: aeda9d0 | jnthn++ | src/Perl6/Optimizer.nqp:
p6bindsig poisons lowering.

Unbreaks the Parrot build/test, at least.
jnthn There they are in nom
19:15 Alula left
timotimo nqp-jvm is going to take quite some time still 19:16
what with it being jvm and all :) 19:17
jnthn: want me to spectest either parrot or jvm with your latest changes? 19:21
jnthn timotimo: Yes, please 19:24
timotimo which one? :)
19:24 cooper left
jnthn Both? :) 19:24
Or we can just look at the daily tomorrow... :) 19:25
timotimo well, jvm tends to fail after a few tests anyway
so i'm doing parrot first in any case
uh oh
===SORRY!=== Error while compiling t/spec/S02-literals/char-by-name.rakudo.parrot
Unrecognized character name LINE FEED (LF)
is that expected?
jnthn yeah I set a Parrot one off and let it run through S02 and it just failed Unicode-y things 19:26
Due to met not having libicu
*me
timotimo OK.
jnthn That may be an icu missing thing
timotimo i think i should have libicu
> say "\c[SNOWMAN]"
19:27 cooper joined, jnap1 left
timotimo a few S05 ones explode, too 19:29
34/43 for nqp-jvm/2014.03 ... 19:33
19:37 rurban joined, cooper left 19:38 rindolf left
timotimo gist.github.com/anonymous/c9755350cb880d7137c1jnthn, this is patrick^Wparrot 19:39
tadzik :D
www.wattix.com/blog/chilligan/thisispatrick.jpeg
19:40 cooper joined 19:41 rurban left, xfix left
dalek ast: f6606d2 | (David Warring [email@hidden.address] | integration/advent2013-day19.t:
fixed test plan @parrot
19:49
timotimo hmmm. how much longer until fantastic performance is reached, i wonder...
19:53 Alula joined
[Coke] do we have 19:53
do we have anything resembling perl5's Tk? 19:54
19:54 xfix joined
timotimo resembling in what way? 19:55
would IUP be close enough for your tastes?
[Coke] yes, something like that would be fine. 20:04
timotimo well, IUP is something we do have. not that i've really tried it yet
[Coke] danke.
benabik … Indiana University of Pennsylvania? 20:05
timotimo i briefly looked at perl's Tk thing at some point and was pleased to see that it's a very abstract, but thoroughly thin layer over the Tcl module, which itself is hardly complex either
[Coke] does tadzik/perl6-Term-ANSIColor work on windows? 20:06
timotimo no 20:07
but there's a thingie that wraps programs that want to do ANSI escape codes and makes them work
work with windows console thingies
vendethiel windows console can very well do color
I just think nobody knows how :p
20:08 SamuraiJack_ left
[Coke] will get his stuff working on mac first and go from there. 20:08
is rakudo-moar at the point where I can install modules with panda now? 20:09
timotimo it has been for a while now :) 20:11
20:17 politico joined, politico left
timotimo t.h8.lv/p6bench/2014-04-11-rakudo_opt.html ← F5 for rakudo-parrot 2014.03 vs current 20:23
jnthn timotimo: Some imrpovements for on Parrot too, then. Nice. :) 20:26
timotimo yup
not nearly as impressive as the moarvm improvements, but there was much more work put into moar especially when compared to the cross-backend improvements 20:28
jnthn Aye 20:29
[Coke] timotimo: danke. needed a moar recent moar, it seems. 20:31
jnthn MOAR_REVISION/NQP_REVISION at HEAD should be fine.
[Coke] ==> Successfully installed JSON::Tiny
==> Fetching panda 20:32
didn't I just fetch panda already?
retupmoca fetching it from the local folder into the .work folder, I'd guess
tadzik yeah 20:33
[Coke] gist.github.com/coke/10499446 - boom 20:35
that's with a very fresh rakudo-moar install.
... running it a second time works? huh 20:37
20:37 rurban joined 20:39 Rotwang left
tadzik :o 20:41
raiph anyone speak japanese well enough to explain matz's tweet reply (google translate says 'Appeal') to miyagawa's inevitable reply ('Perl 6') to nikkei_Linux's tweet?
twitter.com/miyagawa/status/453790701889662976
Is matz asking "what's the appeal?" Or that sounds appealing? ??? 20:42
20:42 rurban left
vendethiel raiph: what's the original tweet :p ? 20:43
raiph running the first tweet in the link above thru translate.google gives:
Do you want to make any new language in a series of Matsumoto? The "programming language to learn while making" May Nikkei Linux In Part 2, we are looking for ideas for the language that you make from the next time. The idea is to (half-angle @) [email@hidden.address] or direct @ yukihiro_matz! # ruby 20:44
PerlJam "I approve" perhaps? 20:45
raiph Would be useful to hear a human translation of that too
.oO ( mebbe need to cast a miyagawa summon-to-#perl6 spell ) 20:46
moritz t/spec/integration/advent2013-day19.rakudo.parrot (Wstat: 0 Tests: 11 Failed: 0) Parse errors: Bad plan. You planned 20 tests but ran 11. 20:48
20:48 Alula_ joined
moritz that's the only p-spectest failure I get 20:48
20:48 Alula left
TimToady I read it more as "I will undertake." 20:48
vendethiel (what does that mean ? I prolbaly didnt get the first tweet then ...) 20:49
TimToady well, I took the google translation to mean "Do you want to write the next Ruby?"
vendethiel you're good at google translate lang 20:51
.oO( use google translate; mon $variable = 'salut'.changer('a' => 'b') )
timotimo brrr, rakudo-jvm benchmarks take ages
jnthn Turns out lex => loc is a whole lot trickier in Perl 6. 20:52
20:52 ajr_ left
timotimo the jastcompiler merge is not yet in, right? 20:52
jnthn timotimo: It is, I think.
timotimo jnthn: what makes you say that? i thought we already knew? ;)
jnthn timotimo: Yeah, it's just that now I'm looking at it I'm seeing it's even more "fun" than first imagined. :) 20:53
timotimo oh my
jnthn The immediate fun being if you lower params and it's a multi-candidate and it needs a bind check, the binder can't find the lexicals.
Thing is that at present if we fail to bind, we use failover to the full-blown binder to produce errors. 20:54
moritz well, don't lower params then :-) 20:55
jnthn moritz: Yeah, that's the immediate thing to avoid. 20:56
moritz: However, we'd kinda like to given spesh would rather like that.
20:58 guru joined, guru is now known as Guest60342 21:00 dayangkun left
moritz jnthn: so, teach the binder to bind to locals? 21:01
jnthn moritz: If it could see them they'd not be locals... 21:02
That's the point of the opt.
dylanwh binder full of locals
moritz uh, uhm... 21:04
jnthn In reality, for many common cases running the full-blown binder just to generate an error message is overkill. 21:05
It was just the easiest thing to do.
moritz also, this is where specialized calling conventions might come in, no? 21:06
I remember some C compilers or linkers that pass arguments in registers instead of on the stack 21:07
and fun like that :-)
21:12 kbaker_ left
timotimo 15/43 benchmarks 21:12
21:12 raiph left 21:17 dayangkun joined
japhb timotimo: I'm quite backlogged, but I notice you highlighted me talking about some fun with the benchmark graphs. Could you turn your various feature requests into GH issues for perl6-bench? I don't want to lose all your good ideas. 21:21
Also, if y'all haven't seen this, it's fun: alexnisnevich.github.io/untrusted/ (a text adventure game that you solve with snippets of code) -- mind you, it's JavaScript, but that would be a blast to convert to Perl 6. 21:22
21:23 btyler left, klapperl joined 21:24 klapperl_ left
jnthn japhb: btw, just to say that p6bench in its current form is proving really great at the moemnt, with all the performance-related work going on :) 21:25
japhb jnthn: Excellent! Really glad to hear it's worth the time I put into it, you know? :-) 21:28
Now to find a bit more of said time ... 21:29
21:29 denis_boyun_ joined
timotimo aye, the infrastructure is great 21:30
i just wish for more bells and whistles, now that the base thing already works pretty well ;)
japhb Heh. AFK again for a bit.
dalek p: 6344535 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
Support contvar lexicals on MoarVM.

Will ease lowering of lexicals in Perl6::Optimizer.
21:33
jnthn ugh. Trying to do it even for contvars gives me lots of spectest fail. 21:34
cognominal I probably lack background and probably missed much in the backlog, but I am baffled by jnthn vocabulary. What means poisoning, and lowering a variable? 21:36
21:38 rurban joined
vendethiel cognominal: this is just an attempt at killing something, really 21:38
timotimo poisoning means "consider any optimization attempt impossible" 21:39
vendethiel Murdering perl 6 bad performance, I mean
cognominal and lowering a variable?
timotimo for example, if we see an "eval", nothing we've believed in will stay the way it is
vendethiel move it from a scope to another one ?
timotimo not quite
in this case we're turning lexical variables into local variables 21:40
that's possible only if nothing "nested" can access these variables by name
an optimization closely related to that is inlining blocks at the QAST level
vendethiel still scope-related \_(ツ)_/
cognominal ok, that makes sense. This avoid to look for the variable value again and again.
timotimo when a block doesn't define its own lexical variables, it can just be turned into a Stmts node instead 21:41
jnthn Well, it's also a memory use opt
It menas closures won't close over things they needn't too
timotimo yes, and the lexpads we're creating end up smaller
jnthn But yeah, it enables easier block inlines
timotimo that should also be reflected in the serialized bytecode
or at least in load time or something
cognominal so the nice thing is that an optimisation open the path for another. 21:42
jnthn ah, I wasn't detecting EVAL properly...
cognominal: That's ver, very often the way
*very
cognominal: This also opens the way to escape analysis.
cognominal: Or helps.
timotimo right, locals are way easier to escape-analyze than lexicals are
jnthn Way easier. :)
Also spesh doesn't know how to analyze lexicals yet.
21:43 rurban left
timotimo Alot easier? :) 21:43
jnthn :D 21:44
Hm, this spectest run looks a bit better.
timotimo ... 25/43 benchmarks ...
jnthn Not perfect though.
cognominal I suppose that allocating $_ and $/, $! in most blocks costs a lot so doing away with that when possible would be nice. 21:45
jnthn cognominal: That's one of the things I did earlier today for some very simple cases. 21:46
It's actually really hard to get rid of them, though. 21:47
Because they are all contextual.
cognominal nice.
jnthn You can do it if the block makes no method or sub calls, for example. 21:48
Which means a lot of the operators get it.
But seeing how to do it for, say, at_pos, postcircumfix, etc which of course need to call stuff is harder.
timotimo ... 28/43 ... 21:55
21:58 treehug8_ left
jnthn such slow...so wait... 22:00
22:01 bluescreen100 left 22:02 lustlife left
timotimo hm. you were right btw. jastcompiler is already in nqp master 22:02
i'm really paying double for the jvm. first, it has a high startup time, but also it gets very fast towards the end, meaning it'll do a bunch more runs than the other backends 22:03
22:05 djanatyn1 is now known as djanatyn
japhb bak again 22:06
timotimo heyo japhb :) 22:07
japhb So for all the optimization going on, I don't see things happening in #moarvm (since the spesh merge, that is), which indicates the more recent stuff is either NQP or Rakudo ... what's been getting optimized? 22:08
heyo timotimo :-)
timotimo the optimizer is learning a few tricks, the core setting has seen a few micro-optimizations and hash and array access have learnt a new trick
dalek kudo/varopt: 3fc1e57 | jnthn++ | src/Perl6/Optimizer.nqp:
Initial attempt at some basic lexical lowering.

Causes a number of spectest regressions in its current state; also is MoarVM-specific for now.
timotimo so far we've been accessing hashes and arrays for writing by returning a container that knew how to autovivify and then we could assign to that container 22:09
jnthn japhb: Yeah, optimizing the Rakudo and NQP bits of the stack of late. :)
timotimo that was pretty expensive, even if we could already see from the used syntax that it was going to be an assignment
... 33/43 ...
jnthn japhb: Reading the bytecode dumps while working on spesh was helpful in pointing out some things.
japhb: Also looking at various C-level profiles to see where we spent effort, etc. 22:10
japhb: There's stuff to do up and down the stack, and sometimes doing things better higher up lets things lower down make a better job.
japhb Yeah, definitely makes sense
22:11 telex left
jnthn japhb: In other news, I submitted a talk on Perl 6 to some web conf and now will really, really have to do the async sockets. :) 22:12
22:12 telex joined
japhb What's the rough estimate of how much improvement we have overall? Or are the optimizations so specific that its "If you do precise thing Q, it will get a ton faster -- otherwise about the same"? 22:13
async sockets \o/
jnthn japhb: Well, I've been optimizing common things.
japhb jnthn: I figured you probably would, but sometimes we discover that Precise Thing Q may not be overwhelmingly common, but it *is* overwhelmingly slow, and that can be fixed. 22:14
jnthn japhb: Multi-method dispatch got a ton cheaper. Same for multi-sub dispatches we can't inline.
japhb Oooh, nice.
jnthn japhb: That affects almost everything.
japhb Yeah, I bet. 22:15
jnthn japhb: Also a lot of the basic operators were allocating and not using $_, $!, and $/ like every block normally does. They no longer do.
Basic array and hash assignment no longer has to do the WHENCE thing, which saves a closure clone and attr bind and invocation on every single time you assign to to an array/hash for the first time, if it's a simple assignment.
japhb wow 22:16
jnthn The underlying thing that let me do the multi-dispatch opt is also rather spesh friendly.
Can't take advantage of it there *yet*. 22:17
But know the steps to get there.
Put it together and we'll then be able to have Moar doing inlining of multis based on runtime type info.
japhb Very nice indeed.
jnthn++ # And whoever else who helped!
jnthn Also, SSA turned out to be as nice a representation to have for spesh as I'd hoped. I'm happy with how it's working out in practice. 22:18
japhb grins at news of Stuff Going Right 22:20
timotimo i'm also pleasantly surprised by how fast the specializer already seems to be 22:22
22:22 colomon left
timotimo though it's still dropping things on the floor here and there 22:22
jnthn Well, for how young the codebase is there, it's doing well to cope with having all of Rakudo's spectest thrown at it. 22:23
When I was building it I had it building the CFG/SSA and then re-codegening every single invocation to make sure it was fairly robust. :) 22:24
The code to only do it on a threshold came after.
22:29 dmol left
timotimo i agree that robustness should be our #1 priority in the early days 22:29
22:33 lizmat joined
jnthn grabs a beer, starts to write a blog post 22:34
22:37 woolfy joined
lizmat jnthn++ 22:37
timotimo oooh 22:38
jnthn: the benchmarks are ready for you to consume in just a minute :)
jnthn omg this beer is *awesome*!
japhb So is the optimization work planned to continue through the weekend, or is this a real good time to rebuild all my rakudos? :-)
jnthn japhb: No, I'm going to slow down on the opts a bit now and focus more on making sure we can release a Moar Star and, hopefully, JVM Star this month. 22:39
japhb (awesome beer)++ # More efficient fuel for the jnthn beer-to-code conversion system
timotimo t.h8.lv/p6bench/2014-04-11-rakudo_opt.html - they're just one f5 away
japhb jnthn: excellent
jnthn www.ratebeer.com/beer/great-divide-...out/85174/ # the beer, for the curious :)
timotimo japhb: maybe jnthn will have a few more optimizations that i can do :)
22:39 rurban joined
timotimo i've already started on letting the moarvm specializer try to handle named parameters in addition to positionals 22:40
since it takes about 2h, i'll have to decide now whether i want to go to sleep early or run the 2014.03 jvm benchmarks ... 22:41
jnthn Yeah, looking at these I can see that the JVM backend needs to learn about multispec and needs me to finish the bind lowering.
timotimo interesting. i fed nqp-moarvn into the comparison, but it seems to be missing 22:42
i wonder what i did wrong?
japhb timotimo: Why do the graphs have a different rev for r-m than r-p and r-j?
oh, hmmm
jnthn japhb: 'cus I busted the r-p/r-j build 22:43
timotimo japhb: r-p and r-j required a little fix to be built
jnthn japhb: The only difference is that one fix.
japhb Oh, gotcha.
22:44 rurban left
japhb But we're missing the updated n-m then 22:44
(which is what timotimo originally said)
22:47 pmurias left 22:50 average left 22:52 rurban joined 22:54 Guest60342 left 22:57 rurban left 23:00 BenGoldberg joined 23:02 woolfy1 joined, woolfy left
timotimo it's not important 23:03
23:07 japhb_ left 23:08 kurahaupo left
TimToady gets a slightly gleeful, slightly wistful smile on every graph where the blue p5 line rides higher than the p6 lines, especially when he thinks of the early p6-folk telling him "We like your language design, but we don't like your coding." :) 23:09
vendethiel you must be smiling a lot then :P. 23:11
'twill come to an end, though -- jnthn's dealing with your smile !
TimToady 'course, it's also partly my own fault the p6 lines are lower :)
vendethiel (would the other part be beer :P ?)
TimToady dunno, there's probably equal parts of beer contributing to P5 and P6 23:12
23:14 denis_boyun_ left
timotimo i'm amazed that in some benchmarks, rakudo-jvm only ever almost reaches rakudo-moar 23:16
even when fully warmed up 23:17
jnthn Oh, once I teach Rakudo JVM the lessons I've taught Rakudo on Moar, I think it'll catch up. Especially since I figured out how to make multispec and indy place well together ;)
*play
timotimo \o/ 23:18
and then MoarVM can play catch-up again, too! 23:19
23:22 kaare_ left 23:24 havenwood joined 23:30 Bryanstein left 23:47 woolfy1 left, Bryanstein joined 23:56 average joined
average hey, just wanna ask a small question 23:56
this image i.imgur.com/MdrKshO.png
on the how-to-help page on rakudo that link is given rakudo.org/how-to-help/ 23:57
y u no ssl ? y nossla ?
*nossla
*nossl
damn keyboard
anyhow, it's easy to change the link to rt.perl.org/Public
would this be ok, if the link would be changed to that ? 23:58
timotimo the point is that it leads to a pre-defined query
i've contacted the rt admins before about this, didn't get an answer and forgot about it
oh, huh
that link *is* meant to go exactly there 23:59
i don't have the rights to change the page i believe
average timotimo: yes, but, is that ok ? I mean.. logging into the RT over simple HTTP can cause credential leakage ..